project-booster-vue 10.3.0 → 10.3.1

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.
Files changed (24) hide show
  1. package/package.json +1 -1
  2. package/src/components/projects/project-attributes/PbProjectAttributes.vue +0 -4
  3. package/src/components/projects/project-hub/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-components-projects-pb-project-hub-/360/237/246/240-features-project-attributes-showcase-with-project-attributes-1-snap.png +0 -0
  4. package/src/components/rework/alert/MPbAlert.vue +17 -13
  5. package/src/components/rework/cards/MPbCards.vue +17 -8
  6. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-align-horizontal-1-snap.png +0 -0
  7. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-align-text-1-snap.png +0 -0
  8. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-align-vertical-1-snap.png +0 -0
  9. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-degradations-1-snap.png +0 -0
  10. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-disabled-1-snap.png +0 -0
  11. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-flag-theme-1-snap.png +0 -0
  12. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-hero-1-snap.png +0 -0
  13. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-image-1-snap.png +0 -0
  14. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-image-ratio-1-snap.png +0 -0
  15. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-image-title-1-snap.png +0 -0
  16. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-min-card-ratio-1-snap.png +0 -0
  17. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-selectable-1-snap.png +0 -0
  18. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-selected-1-snap.png +0 -0
  19. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-text-1-snap.png +0 -0
  20. package/src/components/rework/cards/__snapshots__/storyshots-puppeteer-test-puppeteer-ts-image-storyshots-project-booster-rework-cards-m-pb-card-/360/237/247/254-features-title-1-snap.png +0 -0
  21. package/src/components/rework/question/MPbQuestion.vue +11 -8
  22. package/src/components/rework/styles/global.scss +8 -0
  23. package/src/components/rework/types/genericPayload.ts +1 -0
  24. package/src/components/scenario/scenarii/appointment-qualification-bathroom.json +8 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-booster-vue",
3
- "version": "10.3.0",
3
+ "version": "10.3.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -105,10 +105,6 @@
105
105
 
106
106
  <ul class="pb-project-attributes__works">
107
107
  <template v-for="[attributeId, attribute] of displayedProjectAttributes" :key="attributeId">
108
- <template v-if="attributeId === 'works'">
109
- <li v-if="isArray(attribute.value)" v-for="value in JSON.parse(attribute.value)">{{ works[value] }}</li>
110
- <li v-else>{{ works[attribute.value] }}</li>
111
- </template>
112
108
  <template v-if="attributeId === 'bathroomStyle'">
113
109
  <li v-if="isArray(attribute.value)" v-for="value in JSON.parse(attribute.value)">
114
110
  Style: {{ bathroomStyle[value] }}
@@ -103,11 +103,13 @@ const handleCloseModal = () => {
103
103
  };
104
104
 
105
105
  const handleShowModal = (option: any) => {
106
- sendAnalyticEvent(store, EventName.CLICK, {
107
- button_name: option.viewModel.button.label || '',
108
- button_location: '',
109
- button_type: ButtonType.ACTION,
110
- });
106
+ if (props.payload.viewModel.analytics.funnel_name) {
107
+ sendAnalyticEvent(store, EventName.CLICK, {
108
+ button_name: option.viewModel.button.label || '',
109
+ button_location: props.payload.viewModel.analytics.funnel_name,
110
+ button_type: ButtonType.ACTION,
111
+ });
112
+ }
111
113
 
112
114
  if (option.viewModel.button.dialog) {
113
115
  showModal.value = true;
@@ -123,17 +125,19 @@ const handleShowModal = (option: any) => {
123
125
  * @param action
124
126
  */
125
127
  const callAction = (button: PayloadAction) => {
126
- sendAnalyticEvent(store, EventName.CLICK, {
127
- button_name: button.label || '',
128
- button_location: '',
129
- button_type: ButtonType.ACTION,
130
- });
131
-
132
- if (button.code != '__BACK__') {
128
+ if (button.nextStep.code != '__BACK__') {
133
129
  emit('step-completed', {
134
130
  answers: null,
135
- nextStep: button,
131
+ nextStep: button.code,
136
132
  });
133
+
134
+ if (props.payload.viewModel.analytics.funnel_name) {
135
+ sendAnalyticEvent(store, EventName.CLICK, {
136
+ button_name: button.label || '',
137
+ button_location: props.payload.viewModel.analytics.funnel_name,
138
+ button_type: ButtonType.ACTION,
139
+ });
140
+ }
137
141
  } else {
138
142
  emit('go-back');
139
143
  }
@@ -5,7 +5,7 @@
5
5
  disabled ? 'pb-card--disabled' : ''
6
6
  }${flattened ? 'pb-card--no-pointer-events' : ''} ${
7
7
  cardMinRatio && cardMinRatio !== 'auto' ? 'm-ratio-container--' + cardMinRatio : ''
8
- }${borderTop ? 'pb-card--border-top' : ''} ${selected ? 'select' : ''}`"
8
+ }${borderTop ? 'pb-card--border-top' : ''} ${selected ? 'select' : ''} ${image ? '' : 'no-image'}`"
9
9
  :role="!buttonLabel ? 'button' : 'article'"
10
10
  :style="`min-height: ${cardMinHeight};`"
11
11
  @click="handleCardClick"
@@ -354,10 +354,14 @@ $responsive-breakpoint: 's';
354
354
  background-color: white;
355
355
  overflow: hidden;
356
356
  position: relative;
357
- border: 2px solid #bab6bc;
357
+ border: 1px solid #bab6bc;
358
358
 
359
359
  &.select {
360
- border-color: $color-primary-01-500;
360
+ box-shadow: 0 0 0 4px #ebf5de, inset 0 0 0 2px #46a610;
361
+ }
362
+
363
+ &.no-image {
364
+ padding-right: $mu250;
361
365
  }
362
366
 
363
367
  &--border-top {
@@ -381,6 +385,16 @@ $responsive-breakpoint: 's';
381
385
  }
382
386
  }
383
387
 
388
+ &__image-container {
389
+ padding: $mu050 $mu050 0 $mu050;
390
+ position: relative;
391
+ width: 100%;
392
+
393
+ & > div {
394
+ border-radius: 5px;
395
+ }
396
+ }
397
+
384
398
  &__items-container:empty ~ &__image-container {
385
399
  height: 100%;
386
400
 
@@ -407,11 +421,6 @@ $responsive-breakpoint: 's';
407
421
  filter: grayscale(100%);
408
422
  }
409
423
 
410
- &-container {
411
- position: relative;
412
- width: 100%;
413
- }
414
-
415
424
  &-title-container {
416
425
  background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 41%, rgba(0, 0, 0, 0.7));
417
426
  background-position: center;
@@ -27,12 +27,14 @@
27
27
 
28
28
  <m-flexy class="pb-question__answers-container-flexy">
29
29
  <transition-group :class="`pb-question__answers`" :name="showMoreAnimation" tag="div">
30
- <m-flexy-col
30
+ <div
31
31
  v-for="answer in displayedAnswers"
32
32
  :key="`pb-question__answers-${answer.code}`"
33
- :width="payload.viewModel.forceOneCardPerLineOnMobile ? 'full' : '1of3'"
34
- :width-from-m="payload.viewModel.widthFromM ? payload.viewModel.widthFromM : '1of3'"
35
- :width-from-l="payload.viewModel.widthFromL ? payload.viewModel.widthFromL : '1of4'"
33
+ :class="`
34
+ ${payload.viewModel.forceOneCardPerLineOnMobile ? 'column-full' : 'column-1of3'}
35
+ ${payload.viewModel.widthFromM ? 'column-' + payload.viewModel.widthFromM : 'column-1of3'}
36
+ ${payload.viewModel.widthFromL ? 'column-' + payload.viewModel.widthFromL : 'column-1of4'}
37
+ `"
36
38
  >
37
39
  <div class="pb-question__answer">
38
40
  <component
@@ -111,7 +113,7 @@
111
113
  @click="selectAnswer(payload.code, answer)"
112
114
  />
113
115
  </div>
114
- </m-flexy-col>
116
+ </div>
115
117
  </transition-group>
116
118
  <m-flex v-if="showMoreButtonDisplayed" class="pb-question__show-more-container" justify-content="center">
117
119
  <m-button
@@ -230,7 +232,7 @@
230
232
  size-from-l="l"
231
233
  icon="ArrowNext48"
232
234
  iconPosition="right"
233
- label="Etape suivante"
235
+ label="Étape suivante"
234
236
  @click="nextStepHandler"
235
237
  :disabled="!hasAnswersSelected"
236
238
  />
@@ -1092,6 +1094,7 @@ $answers-apparition-duration: '0.5s';
1092
1094
  margin: 0 auto;
1093
1095
  max-width: 1024px;
1094
1096
  width: 100%;
1097
+ padding: 0 $mu050;
1095
1098
 
1096
1099
  &--centered {
1097
1100
  @include set-from-screen($responsive-breakpoint) {
@@ -1117,7 +1120,7 @@ $answers-apparition-duration: '0.5s';
1117
1120
  padding: $mu050;
1118
1121
 
1119
1122
  @include set-from-screen($responsive-breakpoint) {
1120
- padding: $mu100;
1123
+ padding: $mu050;
1121
1124
  }
1122
1125
 
1123
1126
  :deep(.pb-question__answer__component) {
@@ -1193,7 +1196,7 @@ $answers-apparition-duration: '0.5s';
1193
1196
  }
1194
1197
 
1195
1198
  &__sticky-footer {
1196
- margin: 0 #{-$mu050};
1199
+ margin: $mu200 #{-$mu050} 0 #{-$mu050};
1197
1200
  width: calc(100% + 2 * #{$mu050});
1198
1201
  }
1199
1202
 
@@ -16,4 +16,12 @@
16
16
  &.column-reverse {
17
17
  flex-direction: column-reverse;
18
18
  }
19
+ }
20
+
21
+ .column-1of3{
22
+ width: calc(100% / 3);
23
+ }
24
+
25
+ .column-auto{
26
+ width: auto;
19
27
  }
@@ -3,6 +3,7 @@ export interface PayloadAction {
3
3
  code: string;
4
4
  component?: string;
5
5
  label?: string;
6
+ nextStep?: any;
6
7
  payload?: {
7
8
  link: string;
8
9
  };
@@ -45,7 +45,7 @@
45
45
  "label": "Que souhaitez-vous installer ou remplacer dans votre salle de bains ?",
46
46
  "answersComponent": "MPbCard",
47
47
  "progressBar": true,
48
- "widthFromL": "1of3",
48
+ "widthFromL": "auto",
49
49
  "widthXlSize": true,
50
50
  "hideBackButton": true,
51
51
  "forceOneCardPerLineOnMobile": true,
@@ -140,7 +140,7 @@
140
140
  "SHOWER": {
141
141
  "code": "SHOWER",
142
142
  "viewModel": {
143
- "title": "Douche & colonne"
143
+ "title": "Douche"
144
144
  },
145
145
  "meta": {
146
146
  "ranking": 2
@@ -185,7 +185,7 @@
185
185
  "REPLACE_BATHTUB_TO_SHOWER": {
186
186
  "code": "REPLACE_BATHTUB_TO_SHOWER",
187
187
  "viewModel": {
188
- "title": "Une douche à la <br> place d’une baignoire"
188
+ "title": "Une douche à la place d’une baignoire"
189
189
  },
190
190
  "meta": {
191
191
  "ranking": 7
@@ -844,10 +844,11 @@
844
844
  "progressBar": true,
845
845
  "forceOneCardPerLineOnMobile": true,
846
846
  "widthXlSize": true,
847
- "widthFromL": "1of3",
847
+ "widthFromL": "auto",
848
848
  "label": "Partagez votre plan de salle de bains",
849
849
  "subtitle": "Le plan de votre salle de bains est indispensable en amont du RDV. Cela permettra à votre conseiller de préparer au mieux votre projet. Formats acceptés : .jpg .jpeg .pdf .png 56Go max."
850
850
  },
851
+
851
852
  "answers": {
852
853
  "DOWNLOAD_PLAN": {
853
854
  "code": "DOWNLOAD_PLAN",
@@ -1214,7 +1215,7 @@
1214
1215
  "IN_MORE_THAN_SIX_MONTHS": {
1215
1216
  "code": "IN_MORE_THAN_SIX_MONTHS",
1216
1217
  "viewModel": {
1217
- "title": "Plus de 6 mois"
1218
+ "title": "Dans plus de 6 mois"
1218
1219
  },
1219
1220
  "meta": {
1220
1221
  "ranking": 2
@@ -1343,7 +1344,7 @@
1343
1344
  "widthFromL": "1of3",
1344
1345
  "widthXlSize": true,
1345
1346
  "label": "Quel budget souhaitez-vous investir dans les travaux ?",
1346
- "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. "
1347
+ "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. La main d’oeuvre représente pour plus de 60% du budget total."
1347
1348
  },
1348
1349
  "answers": {
1349
1350
  "BETWEEN_5000_AND_7000_EUROS_BY_A_PROFESSIONAL": {
@@ -1385,7 +1386,7 @@
1385
1386
  "code": "MORE_THAN_6000_EUROS",
1386
1387
  "conditions": ["isAnswerContaining('LMFR_QUESTION_INSTALLATION', 'BY_MYSELF')"],
1387
1388
  "viewModel": {
1388
- "title": "Plus de 10 000€"
1389
+ "title": "Plus de 6 000€"
1389
1390
  }
1390
1391
  },
1391
1392
  "BETWEEN_5000_AND_7000_EUROS_BY_A_LEROYMERLIN_PARTNER": {