project-booster-vue 10.24.0 → 10.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-booster-vue",
3
- "version": "10.24.0",
3
+ "version": "10.24.2",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -87,13 +87,16 @@
87
87
  BETWEEN_1500_AND_2000_EUROS: '1500-2000 €',
88
88
  BETWEEN_2000_AND_3000_EUROS: '2000-3000 €',
89
89
  BETWEEN_3000_AND_4000_EUROS: '3000-4000 €',
90
+ BETWEEN_2000_AND_6000_EUROS: '2000-6000 €',
90
91
  BETWEEN_3000_AND_6000_EUROS: '3000-6000€',
91
92
  BETWEEN_4000_AND_5000_EUROS: '4000-5000 €',
92
93
  MORE_THAN_5000_EUROS: 'Plus de 5000 €',
93
94
  BETWEEN_5000_AND_7000_EUROS: '5000-7000€',
94
95
  MORE_THAN_6000_EUROS: 'Plus de 6000€',
96
+ BETWEEN_6000_AND_12000_EUROS: '6000-12000€',
95
97
  BETWEEN_7000_AND_10000_EUROS: '7000-10000€',
96
98
  MORE_THAN_10000_EUROS: 'Plus de 10000€',
99
+ MORE_THAN_12000_EUROS: 'Plus de 12000€',
97
100
  DO_NOT_KNOW_YET: 'Pas d\'idée de budget',
98
101
  }[attribute.value]
99
102
  "
@@ -107,30 +110,95 @@
107
110
  <template v-for="[attributeId, attribute] of displayedProjectAttributes" :key="attributeId">
108
111
  <template v-if="attributeId === 'bathroomStyle'">
109
112
  <li v-if="isArray(attribute.value)" v-for="value in JSON.parse(attribute.value)">
110
- Style: {{ bathroomStyle[value] }}
113
+ Salle de bain - Style : <span>{{ bathroomStyle[value] }}</span>
114
+ </li>
115
+ <li v-else>
116
+ Style : <span>{{ bathroomStyle[attribute.value] }}</span>
111
117
  </li>
112
- <li v-else>Style: {{ bathroomStyle[attribute.value] }}</li>
113
118
  </template>
114
- <li v-if="attributeId === 'bathTubStyle'">Type de baignoire: {{ bathTubStyle[attribute.value] }}</li>
115
- <li v-if="attributeId === 'showerType'">Type de douche: {{ showerType[attribute.value] }}</li>
119
+ <li v-if="attributeId === 'bathTubStyle'">
120
+ Baignoire - Type : <span>{{ bathTubStyle[attribute.value] }}</span>
121
+ </li>
122
+ <li v-if="attributeId === 'showerType'">
123
+ Douche - Type : <span>{{ showerType[attribute.value] }}</span>
124
+ </li>
116
125
  <template v-if="attributeId === 'furnitureType'">
117
126
  <li v-if="isArray(attribute.value)" v-for="value in JSON.parse(attribute.value)">
118
- Type de meubles: {{ furnitureType[value] }}
127
+ Meuble - Type : <span>{{ furnitureType[value] }}</span>
128
+ </li>
129
+ <li v-else>
130
+ Meuble - Type : <span>{{ furnitureType[attribute.value] }}</span>
131
+ </li>
132
+ </template>
133
+ <li v-if="attributeId === 'wcType'">
134
+ WC - Type : <span>{{ wcType[attribute.value] }}</span>
135
+ </li>
136
+
137
+ <template v-if="attributeId === 'terraceType'">
138
+ <li>
139
+ Terrasse - Style : <span>{{ terraceType[attribute.value] }}</span>
140
+ </li>
141
+ </template>
142
+ <template v-if="attributeId === 'terraceSupportType'">
143
+ <li>
144
+ Terrasse - Support : <span>{{ terraceSupportType[attribute.value] }}</span>
145
+ </li>
146
+ </template>
147
+ <template v-if="attributeId === 'terraceMaterialType'">
148
+ <li>
149
+ Terrasse - Matériau : <span>{{ terraceMaterialType[attribute.value] }}</span>
150
+ </li>
151
+ </template>
152
+
153
+ <template v-if="attributeId === 'gateType'">
154
+ <li>
155
+ Portail - Type : <span>{{ gateType[attribute.value] }}</span>
156
+ </li>
157
+ </template>
158
+ <template v-if="attributeId === 'gateMotorized'">
159
+ <li>
160
+ Portail - Motoriser : <span>{{ gateMotorized[attribute.value] }}</span>
161
+ </li>
162
+ </template>
163
+ <template v-if="attributeId === 'gateMaterialType'">
164
+ <li>
165
+ Portail - Matériau : <span>{{ gateMaterialType[attribute.value] }}</span>
166
+ </li>
167
+ </template>
168
+
169
+ <template v-if="attributeId === 'fenceType'">
170
+ <li>
171
+ Clôture - Type : <span>{{ fenceType[attribute.value] }}</span>
172
+ </li>
173
+ </template>
174
+ <template v-if="attributeId === 'fenceMaterialType'">
175
+ <li>
176
+ Clôture - Matériau : <span>{{ fenceMaterialType[attribute.value] }}</span>
177
+ </li>
178
+ </template>
179
+
180
+ <template v-if="attributeId === 'bioclimaticPergolaType'">
181
+ <li>
182
+ Pergola bioclimatique - Type : <span>{{ bioclimaticPergolaType[attribute.value] }}</span>
183
+ </li>
184
+ </template>
185
+ <template v-if="attributeId === 'bioclimaticPergolaMotorized'">
186
+ <li>
187
+ Pergola bioclimatique - Motoriser : <span>{{ bioclimaticPergolaMotorized[attribute.value] }}</span>
188
+ </li>
189
+ </template>
190
+ <template v-if="attributeId === 'bioclimaticPergolaMaterialType'">
191
+ <li>
192
+ Pergola bioclimatique - Matériau : <span>{{ bioclimaticPergolaMaterialType[attribute.value] }}</span>
119
193
  </li>
120
- <li v-else>Type de meubles: {{ furnitureType[attribute.value] }}</li>
121
194
  </template>
122
- <li v-if="attributeId === 'wcType'">Type de WC: {{ wcType[attribute.value] }}</li>
123
195
  </template>
124
196
  </ul>
125
197
 
126
198
  <div class="pb-project-attributes__section-title">Détails</div>
127
199
 
128
- <div
129
- class="pb-project-attributes__details"
130
- v-for="[attributeId, attribute] of displayedProjectAttributes"
131
- :key="attributeId"
132
- >
133
- <p v-if="attributeId === 'comment'" v-html="attribute.value"></p>
200
+ <div class="pb-project-attributes__details" v-if="getCommentAttribute">
201
+ <p v-html="getCommentAttribute"></p>
134
202
  </div>
135
203
  </m-flexy>
136
204
  </template>
@@ -147,6 +215,9 @@ export default defineComponent({
147
215
 
148
216
  data() {
149
217
  return {
218
+ /**
219
+ * Bathroom appointment qualification
220
+ */
150
221
  works: {
151
222
  FURNITURES: 'Meubles',
152
223
  SHOWER: 'Douche',
@@ -189,6 +260,67 @@ export default defineComponent({
189
260
  TO_PUT: 'A poser',
190
261
  DOUBLE_BASIN: 'Suspendu',
191
262
  },
263
+
264
+ /**
265
+ * Garden appointment qualification
266
+ */
267
+ terraceType: {
268
+ RECTANGLE: 'Aluminium',
269
+ IN_L: 'Bois',
270
+ OTHER: 'Acier',
271
+ },
272
+ terraceSupportType: {
273
+ CONCRETE: 'Béton',
274
+ SOFT_GROUND: 'Sol meuble',
275
+ },
276
+ terraceMaterialType: {
277
+ WOOD: 'Bois',
278
+ COMPOSITE: 'Composite',
279
+ TILE: 'Aluminium',
280
+ MINERAL: 'Minéral',
281
+ },
282
+
283
+ gateType: {
284
+ SWING: 'Battant',
285
+ SLIDING: 'Coulissant',
286
+ },
287
+ gateMotorized: {
288
+ YES: 'Oui',
289
+ NO: 'Non',
290
+ },
291
+ gateMaterialType: {
292
+ WOOD: 'Bois',
293
+ COMPOSITE: 'Composite',
294
+ PVC: 'PVC',
295
+ },
296
+
297
+ fenceType: {
298
+ REAR_OR_SIDE: 'Clôture arrière ou latérale au logement',
299
+ FRONT: 'Clôture devant le logement',
300
+ ALL_AROUND: 'Clôture tout autour du logement',
301
+ },
302
+ fenceMaterialType: {
303
+ WOOD: 'Bois',
304
+ COMPOSITE: 'Composite',
305
+ PVC: 'PVC',
306
+ ALUMINIUM: 'Aluminium',
307
+ CONCRETE: 'Béton',
308
+ GLASS: 'Verre',
309
+ FENCE: 'Grillage',
310
+ },
311
+
312
+ bioclimaticPergolaType: {
313
+ SELF_SUPPORTING: 'Auto-portante',
314
+ ATTACHED: 'Attenante à la maison',
315
+ },
316
+ bioclimaticPergolaMotorized: {
317
+ YES: 'Oui',
318
+ NO: 'Non',
319
+ },
320
+ bioclimaticPergolaMaterialType: {
321
+ STEEL: 'Acier',
322
+ ALUMINIUM: 'Aluminium',
323
+ },
192
324
  };
193
325
  },
194
326
 
@@ -212,6 +344,13 @@ export default defineComponent({
212
344
  displayedProjectAttributes() {
213
345
  return Object.entries(this.projectAttributes);
214
346
  },
347
+
348
+ getCommentAttribute(): string | null {
349
+ const commentAttribute = Object.entries(this.projectAttributes).find(
350
+ ([attributeId]) => attributeId === 'comment',
351
+ );
352
+ return commentAttribute ? commentAttribute[1].value : null;
353
+ },
215
354
  },
216
355
  });
217
356
  </script>
@@ -261,6 +400,10 @@ $responsive-breakpoint: 'l';
261
400
  border-bottom: 1px solid $color-primary-02-200;
262
401
  width: 100%;
263
402
  }
403
+
404
+ span {
405
+ font-weight: 400;
406
+ }
264
407
  }
265
408
  }
266
409
  </style>
@@ -52,7 +52,21 @@
52
52
  :href="payload.viewModel.download.href"
53
53
  :download="payload.viewModel.download.fileName ? '' : ''"
54
54
  >
55
- <img :src="DownloadIcon" alt="download" style="width: 24px" />
55
+ <svg
56
+ aria-hidden="true"
57
+ width="24px"
58
+ height="24px"
59
+ fill="#454545"
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ viewBox="0 0 24 24"
62
+ >
63
+ <path
64
+ d="M11.29 15.71a1 1 0 001.42 0l4-4a1 1 0 00-1.42-1.42L13 12.59V3a1 1 0 00-2 0v9.59l-2.29-2.3a1 1 0 10-1.42 1.42z"
65
+ ></path>
66
+ <path
67
+ d="M19.48 13.61a1 1 0 00-1.36.4 1 1 0 00.4 1.35c.94.52 1.48 1.12 1.48 1.64 0 1.22-3.12 3-8 3s-8-1.78-8-3c0-.52.54-1.12 1.48-1.64a1 1 0 00.4-1.36 1 1 0 00-1.36-.4C2.89 14.5 2 15.71 2 17c0 2.85 4.3 5 10 5s10-2.15 10-5c0-1.29-.89-2.5-2.52-3.39z"
68
+ ></path>
69
+ </svg>
56
70
  <span class="pb-upload-document__answer__download__content__text">{{
57
71
  payload.viewModel.download.label || 'Télécharger un fichier'
58
72
  }}</span>
@@ -123,9 +137,6 @@
123
137
  </template>
124
138
 
125
139
  <script lang="ts" setup>
126
- //@ts-ignore
127
- import DownloadIcon from '@mozaic-ds/icons/svg/Media_Download_Web_24px.svg';
128
-
129
140
  import { computed, onMounted, ref, PropType } from 'vue';
130
141
  import { MButton, MLink } from '@mozaic-ds/vue-3';
131
142
  import MContainer from '../../../mozaic/grid/MContainer.vue';
@@ -427,10 +438,12 @@ $answers-apparition-duration: '0.5s';
427
438
  }
428
439
 
429
440
  &__answers {
430
- align-items: stretch;
431
441
  display: flex;
442
+ flex-direction: column;
432
443
  flex-wrap: wrap;
433
444
  justify-content: flex-start;
445
+ align-items: stretch;
446
+
434
447
  margin: 0 auto;
435
448
  max-width: 1024px;
436
449
  width: 100%;
@@ -492,10 +505,10 @@ $answers-apparition-duration: '0.5s';
492
505
 
493
506
  &__content {
494
507
  align-items: center;
495
- width: 21rem;
508
+ width: 20rem;
496
509
 
497
510
  &__text {
498
- margin-left: $mu100;
511
+ margin-left: $mu050;
499
512
  }
500
513
  }
501
514
  }
@@ -1519,31 +1519,22 @@
1519
1519
  "nextStep": {
1520
1520
  "conditionals": [
1521
1521
  {
1522
- "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_LEROYMERLIN_PARTNER')"],
1523
- "nextStep": {
1524
- "code": "LMFR_QUESTION_BUDGET_WITH_LEROYMERLIN_PARTNER"
1525
- }
1526
- },
1527
- {
1528
- "conditions": [
1529
- "isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_MYSELF')",
1530
- "isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_PROFESSIONAL')"
1531
- ],
1522
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'DO_NOT_KNOW_YET')"],
1532
1523
  "nextStep": {
1533
- "code": "LMFR_QUESTION_BUDGET_WITHOUT_LEROYMERLIN_PARTNER"
1524
+ "code": "LMFR_COMMENT"
1534
1525
  }
1535
1526
  },
1536
1527
  {
1537
- "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'DO_NOT_KNOW_YET')"],
1528
+ "conditions": ["true"],
1538
1529
  "nextStep": {
1539
- "code": "LMFR_COMMENT"
1530
+ "code": "LMFR_QUESTION_BUDGET"
1540
1531
  }
1541
1532
  }
1542
1533
  ]
1543
1534
  }
1544
1535
  },
1545
- "LMFR_QUESTION_BUDGET_WITH_LEROYMERLIN_PARTNER": {
1546
- "code": "LMFR_QUESTION_BUDGET_WITH_LEROYMERLIN_PARTNER",
1536
+ "LMFR_QUESTION_BUDGET": {
1537
+ "code": "LMFR_QUESTION_BUDGET",
1547
1538
  "type": "STEP",
1548
1539
  "component": "MPbQuestion",
1549
1540
  "slots": {
@@ -1567,77 +1558,69 @@
1567
1558
  "subtitle": "Il s’agit du coût total de votre projet, y compris les frais de main d’oeuvre et le coût des matériaux."
1568
1559
  },
1569
1560
  "answers": {
1570
- "BETWEEN_2000_AND_6000_EUROS": {
1561
+ "BETWEEN_1000_AND_3000_EUROS_BY_MYSELF": {
1562
+ "code": "BETWEEN_1000_AND_3000_EUROS",
1563
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_MYSELF')"],
1564
+ "viewModel": {
1565
+ "title": "De 1 000 € à 3 000 €"
1566
+ }
1567
+ },
1568
+ "BETWEEN_3000_AND_6000_EUROS_BY_MYSELF": {
1569
+ "code": "BETWEEN_3000_AND_6000_EUROS",
1570
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_MYSELF')"],
1571
+ "viewModel": {
1572
+ "title": "De 3 000 € à 6 000 €"
1573
+ }
1574
+ },
1575
+ "MORE_THAN_6000_EUROS_BY_MYSELF": {
1576
+ "code": "MORE_THAN_6000_EUROS",
1577
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_MYSELF')"],
1578
+ "viewModel": {
1579
+ "title": "Plus de 6 000 €"
1580
+ }
1581
+ },
1582
+
1583
+ "BETWEEN_2000_AND_6000_EUROS_BY_A_PROFESSIONAL": {
1571
1584
  "code": "BETWEEN_2000_AND_6000_EUROS",
1585
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_PROFESSIONAL')"],
1572
1586
  "viewModel": {
1573
1587
  "title": "De 2 000 € à 6 000 €"
1574
1588
  }
1575
1589
  },
1576
- "BETWEEN_6000_AND_12000_EUROS": {
1590
+ "BETWEEN_6000_AND_12000_EUROS_BY_A_PROFESSIONAL": {
1577
1591
  "code": "BETWEEN_6000_AND_12000_EUROS",
1592
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_PROFESSIONAL')"],
1578
1593
  "viewModel": {
1579
- "title": "6 000 € à 12 000 €"
1594
+ "title": "De 6 000 € à 12 000 €"
1580
1595
  }
1581
1596
  },
1582
- "MORE_THAN_12000_EUROS": {
1597
+ "MORE_THAN_12000_EUROS_BY_A_PROFESSIONAL": {
1583
1598
  "code": "MORE_THAN_12000_EUROS",
1599
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_PROFESSIONAL')"],
1584
1600
  "viewModel": {
1585
1601
  "title": "Plus de 12 000 €"
1586
1602
  }
1587
1603
  },
1588
- "DO_NOT_KNOW_YET": {
1589
- "code": "DO_NOT_KNOW_YET",
1590
- "viewModel": {
1591
- "title": "Je ne sais pas"
1592
- }
1593
- }
1594
- }
1595
- },
1596
- "nextStep": {
1597
- "code": "LMFR_COMMENT"
1598
- }
1599
- },
1600
- "LMFR_QUESTION_BUDGET_WITHOUT_LEROYMERLIN_PARTNER": {
1601
- "code": "LMFR_QUESTION_BUDGET_WITHOUT_LEROYMERLIN_PARTNER",
1602
- "type": "STEP",
1603
- "component": "MPbQuestion",
1604
- "slots": {
1605
- "beforeContent": {
1606
- "display": true,
1607
- "component": "MPbProgress",
1608
- "totalStep": 21,
1609
- "currentStep": 20,
1610
- "sizeXlWidth": true,
1611
- "label": "Votre projet jardin"
1612
- }
1613
- },
1614
- "payload": {
1615
- "viewModel": {
1616
- "answersComponent": "MPbCard",
1617
- "progressBar": true,
1618
- "forceOneCardPerLineOnMobile": true,
1619
- "widthFromL": "1of3",
1620
- "widthXlSize": true,
1621
- "label": "Quel budget souhaitez-vous investir dans les travaux ?",
1622
- "subtitle": "Ces tranches de budgets ne couvrent que le coût des matériaux pour votre projet. Les frais de main d’oeuvre, ou tout autre coût associé, ne sont pas couverts ici."
1623
- },
1624
- "answers": {
1625
- "BETWEEN_1000_AND_3000_EUROS": {
1626
- "code": "BETWEEN_1000_AND_3000_EUROS",
1604
+
1605
+ "BETWEEN_2000_AND_6000_EUROS_BY_A_LEROYMERLIN_PARTNER": {
1606
+ "code": "BETWEEN_2000_AND_6000_EUROS",
1607
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_LEROYMERLIN_PARTNER')"],
1627
1608
  "viewModel": {
1628
- "title": "De 1 000 € à 3 000 €"
1609
+ "title": "De 2 000 € à 6 000 €"
1629
1610
  }
1630
1611
  },
1631
- "BETWEEN_3000_AND_6000_EUROS": {
1632
- "code": "BETWEEN_3000_AND_6000_EUROS",
1612
+ "BETWEEN_6000_AND_12000_EUROS_BY_A_LEROYMERLIN_PARTNER": {
1613
+ "code": "BETWEEN_6000_AND_12000_EUROS",
1614
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_LEROYMERLIN_PARTNER')"],
1633
1615
  "viewModel": {
1634
- "title": "3 000 € à 6 000 €"
1616
+ "title": "De 6 000 € à 12 000 €"
1635
1617
  }
1636
1618
  },
1637
- "MORE_THAN_6000_EUROS": {
1638
- "code": "MORE_THAN_6000_EUROS",
1619
+ "MORE_THAN_12000_EUROS_BY_A_LEROYMERLIN_PARTNER": {
1620
+ "code": "MORE_THAN_12000_EUROS",
1621
+ "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_A_LEROYMERLIN_PARTNER')"],
1639
1622
  "viewModel": {
1640
- "title": "Plus de 6 000 €"
1623
+ "title": "Plus de 12 000 €"
1641
1624
  }
1642
1625
  },
1643
1626
  "DO_NOT_KNOW_YET": {