front_foundation #5
@ -1,25 +1,40 @@
|
|||||||
<template>
|
<template>
|
||||||
|
|||||||
<div :class="['cell', { expanded }]" @click="toggleExpand">
|
<div :class="['cell', { expanded }]"
|
||||||
|
@click="toggleExpand"
|
||||||
|
:style="{ justifyContent: expanded ? 'flex-start' : 'center' }"> <!-- Looking for finding a way
|
||||||
|
to make this style in the toggleExpand event -->
|
||||||
|
|
||||||
<h3>{{ title }}</h3>
|
<h3>{{ title }}</h3>
|
||||||
<p>{{ description }}</p>
|
<p>{{ currentDescription }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
title: String,
|
title: String,
|
||||||
description: String
|
description: String
|
||||||
},
|
},
|
||||||
data() {
|
|
||||||
return {
|
setup(props) {
|
||||||
expanded: false
|
const expanded = ref(false);
|
||||||
|
const currentDescription = ref(props.description);
|
||||||
|
|
||||||
|
const toggleExpand = () => {
|
||||||
|
currentDescription.value = expanded.value
|
||||||
|
? "3 problèmes essentiels à résoudre pour le client"
|
||||||
|
: "FAKE DATA";
|
||||||
|
|
||||||
|
expanded.value = !expanded.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
expanded,
|
||||||
|
currentDescription,
|
||||||
|
toggleExpand
|
||||||
};
|
};
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
toggleExpand() {
|
|
||||||
this.expanded = !this.expanded;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@ -29,14 +44,21 @@
|
|||||||
|
|
||||||
.cell {
|
.cell {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column; /* Pour empiler le titre et la description */
|
flex-direction: column;
|
||||||
align-items: center; /* Centre horizontalement */
|
align-items: center;
|
||||||
justify-content: center; /* Centre verticalement */
|
justify-content: center;
|
||||||
text-align: center; /* Centre le texte */
|
text-align: center;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cell_Expanded {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.expanded {
|
.expanded {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="LeanCanvas">
|
<div class="canvas">
|
||||||
<CanvasItem
|
<CanvasItem
|
||||||
v-for="(item, index) in items"
|
v-for="(item, index) in items"
|
||||||
:key="index"
|
:key="index"
|
||||||
@ -11,60 +11,34 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import CanvasItem from "./CanvasItem.vue";
|
import { ref } from "vue";
|
||||||
|
import CanvasItem from "@/components/canvas/CanvasItem.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
CanvasItem
|
CanvasItem
|
||||||
},
|
},
|
||||||
data() {
|
setup() {
|
||||||
return {
|
const items = ref([
|
||||||
items: [
|
{ title: "1. Problème", description: "3 problèmes essentiels à résoudre pour le client", class: "Probleme" },
|
||||||
{ title: "1. Problème",
|
{ title: "2. Segments", description: "Les segments de clientèle visés", class: "Segments" },
|
||||||
description: "3 problèmes essentiels à résoudre pour le client",
|
{ title: "3. Valeur", description: "La proposition de valeur", class: "Valeur" },
|
||||||
class: "Probleme"
|
{ title: "4. Solution", description: "Les solutions proposées", class: "Solution" },
|
||||||
},
|
{ title: "5. Avantage", description: "Les avantages concurrentiels", class: "Avantage" },
|
||||||
{ title: "2. Segments",
|
{ title: "6. Canaux", description: "Les canaux de distribution", class: "Canaux" },
|
||||||
description: "Les segments de clientèle visés",
|
{ title: "7. Indicateurs", description: "Les indicateurs clés de performance", class: "Indicateurs" },
|
||||||
class: "Segments"
|
{ title: "8. Coûts", description: "Les coûts associés", class: "Couts" },
|
||||||
},
|
{ title: "9. Revenus", description: "Les sources de revenus", class: "Revenus" }
|
||||||
{ title: "3. Valeur",
|
]);
|
||||||
description: "La proposition de valeur",
|
|
||||||
class: "Valeur"
|
return { items };
|
||||||
},
|
|
||||||
{ title: "4. Solution",
|
|
||||||
description: "Les solutions proposées",
|
|
||||||
class: "Solution"
|
|
||||||
},
|
|
||||||
{ title: "5. Avantage",
|
|
||||||
description: "Les avantages concurrentiels",
|
|
||||||
class: "Avantage"
|
|
||||||
},
|
|
||||||
{ title: "6. Canaux",
|
|
||||||
description: "Les canaux de distribution",
|
|
||||||
class: "Canaux"
|
|
||||||
},
|
|
||||||
{ title: "7. Indicateurs",
|
|
||||||
description: "Les indicateurs clés de performance",
|
|
||||||
class: "Indicateurs"
|
|
||||||
},
|
|
||||||
{ title: "8. Coûts",
|
|
||||||
description: "Les coûts associés",
|
|
||||||
class: "Couts"
|
|
||||||
},
|
|
||||||
{ title: "9. Revenus",
|
|
||||||
description: "Les sources de revenus",
|
|
||||||
class: "Revenus"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
.LeanCanvas {
|
.canvas {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(10, 1fr);
|
grid-template-columns: repeat(10, 1fr);
|
||||||
grid-template-rows: repeat(6, 1fr);
|
grid-template-rows: repeat(6, 1fr);
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
<!-- src/views/CanvasView.vue -->
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<header>
|
<header>
|
||||||
@ -9,10 +8,10 @@
|
|||||||
<h1>Page Canvas</h1>
|
<h1>Page Canvas</h1>
|
||||||
<LeanCanvas />
|
<LeanCanvas />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import HeaderCanvas from '../components/canvas/HeaderCanvas.vue';
|
import HeaderCanvas from '../components/canvas/HeaderCanvas.vue';
|
||||||
import LeanCanvas from '../components/canvas/LeanCanvas.vue';
|
import LeanCanvas from '../components/canvas/LeanCanvas.vue';
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user
Il serait mieux d'afficher le contenu du lean canvas sans devoir clicker dessus, un peu comme sur ce lien.
De plus, ce n'est pas important d'afficher en gros le titre de la section, il devrait être plus discret.
https://cms.boardmix.com/images/articles/lean-canvas.png
En plus il y a des jolies couleur c'est sympa.