project-booster-vue 9.62.1 → 9.62.3
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 +1 -1
- package/src/components/projects/project-hub/PbProjectHub.vue +2 -0
- package/src/components/projects/projects-list/PbProjectHub.vue +2 -0
- package/src/components/rework/alert/MPbAlert.vue +47 -2
- package/src/components/rework/alert/default-payload.json +3 -7
- package/src/components/rework/question/configurations-import/MPbConfigurationsImport.vue +0 -6
- package/src/components/rework/question/upload-document/MPbUploadDocument.vue +0 -45
- package/src/components/scenario/scenarii/appointment-qualification-bathroom.json +96 -20
package/package.json
CHANGED
|
@@ -1050,6 +1050,8 @@ export default defineComponent({
|
|
|
1050
1050
|
const appointmentTypeLabel = (<Record<string, string>>{
|
|
1051
1051
|
KITCHEN_IN_STORE: 'en magasin',
|
|
1052
1052
|
KITCHEN_REMOTE: 'à distance',
|
|
1053
|
+
BATHROOM_REMOTE: 'à distance',
|
|
1054
|
+
BATHROOM_IN_STORE: 'en magasin',
|
|
1053
1055
|
})[this.appointment.appointmentType];
|
|
1054
1056
|
return `${prefix} le ${appointmenDateLabel} ${appointmentTypeLabel}`;
|
|
1055
1057
|
},
|
|
@@ -1050,6 +1050,8 @@ export default defineComponent({
|
|
|
1050
1050
|
const appointmentTypeLabel = (<Record<string, string>>{
|
|
1051
1051
|
KITCHEN_IN_STORE: 'en magasin',
|
|
1052
1052
|
KITCHEN_REMOTE: 'à distance',
|
|
1053
|
+
BATHROOM_REMOTE: 'à distance',
|
|
1054
|
+
BATHROOM_IN_STORE: 'en magasin',
|
|
1053
1055
|
})[this.appointment.appointmentType];
|
|
1054
1056
|
return `${prefix} le ${appointmenDateLabel} ${appointmentTypeLabel}`;
|
|
1055
1057
|
},
|
|
@@ -25,7 +25,12 @@
|
|
|
25
25
|
:imgSrc="options.viewModel.image"
|
|
26
26
|
>
|
|
27
27
|
<template #footer>
|
|
28
|
-
<m-button
|
|
28
|
+
<m-button
|
|
29
|
+
:label="options.viewModel.button.label"
|
|
30
|
+
@click="handleShowModal(options)"
|
|
31
|
+
size="s"
|
|
32
|
+
theme="bordered-primary-02"
|
|
33
|
+
/>
|
|
29
34
|
</template>
|
|
30
35
|
</m-card>
|
|
31
36
|
</div>
|
|
@@ -42,15 +47,38 @@
|
|
|
42
47
|
/>
|
|
43
48
|
</div>
|
|
44
49
|
</div>
|
|
50
|
+
|
|
51
|
+
<m-modal :modalTitle="titleModal" :open="showModal" @update:open="showModal = false" class="m-pb-alert__dialog">
|
|
52
|
+
<template #default>
|
|
53
|
+
<div class="m-pb-alert__dialog__iframe">
|
|
54
|
+
<iframe
|
|
55
|
+
width="560"
|
|
56
|
+
height="315"
|
|
57
|
+
:src="srcModal"
|
|
58
|
+
title="YouTube video player"
|
|
59
|
+
frameborder="0"
|
|
60
|
+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
61
|
+
allowfullscreen
|
|
62
|
+
></iframe>
|
|
63
|
+
</div>
|
|
64
|
+
</template>
|
|
65
|
+
<template #footer>
|
|
66
|
+
<m-button label="Fermer" @click.prevent="showModal = false" />
|
|
67
|
+
</template>
|
|
68
|
+
</m-modal>
|
|
45
69
|
</div>
|
|
46
70
|
</template>
|
|
47
71
|
|
|
48
72
|
<script lang="ts" setup>
|
|
49
|
-
import { MNotification, MButton, MCard } from '@mozaic-ds/vue-3';
|
|
73
|
+
import { MNotification, MButton, MCard, MModal } from '@mozaic-ds/vue-3';
|
|
50
74
|
import { PayloadAction } from '../types/genericPayload';
|
|
51
75
|
import { sanitizeCerberusAttribut } from '@/services/sanitize';
|
|
76
|
+
import { ref } from 'vue';
|
|
52
77
|
|
|
53
78
|
const emit = defineEmits(['go-back', 'step-completed']);
|
|
79
|
+
const showModal = ref(false);
|
|
80
|
+
const titleModal = ref('');
|
|
81
|
+
const srcModal = ref('');
|
|
54
82
|
|
|
55
83
|
const props = defineProps({
|
|
56
84
|
/**
|
|
@@ -64,6 +92,16 @@ const props = defineProps({
|
|
|
64
92
|
},
|
|
65
93
|
});
|
|
66
94
|
|
|
95
|
+
const handleShowModal = (option: any) => {
|
|
96
|
+
if (option.viewModel.button.dialog) {
|
|
97
|
+
showModal.value = !showModal.value;
|
|
98
|
+
titleModal.value = option.viewModel.title;
|
|
99
|
+
srcModal.value = option.viewModel.button.dialog.src;
|
|
100
|
+
} else if (option.viewModel.button.href) {
|
|
101
|
+
window.open(option.viewModel.button.href, '_blank');
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
67
105
|
/**
|
|
68
106
|
* Send action to completed step
|
|
69
107
|
* @param action
|
|
@@ -142,5 +180,12 @@ const callAction = (action: PayloadAction) => {
|
|
|
142
180
|
}
|
|
143
181
|
}
|
|
144
182
|
}
|
|
183
|
+
|
|
184
|
+
&__dialog {
|
|
185
|
+
iframe {
|
|
186
|
+
width: 100%;
|
|
187
|
+
height: 350px;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
145
190
|
}
|
|
146
191
|
</style>
|
|
@@ -17,9 +17,8 @@
|
|
|
17
17
|
"subtitle": "Découvrir nos gammes de cuisines",
|
|
18
18
|
"button": {
|
|
19
19
|
"label": "Regarder le tutoriel video",
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
"code": ""
|
|
20
|
+
"dialog": {
|
|
21
|
+
"src": "https://www.youtube.com/embed/DKft6H92S8s"
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
24
|
}
|
|
@@ -33,10 +32,7 @@
|
|
|
33
32
|
"subtitle": "Découvrir nos gammes de cuisines",
|
|
34
33
|
"button": {
|
|
35
34
|
"label": "Accéder à l’outil",
|
|
36
|
-
"href": ""
|
|
37
|
-
"nextStep": {
|
|
38
|
-
"code": ""
|
|
39
|
-
}
|
|
35
|
+
"href": "https://sdb3d.leroymerlin.fr/Page_Tunnel/tunnel-sdb.html"
|
|
40
36
|
}
|
|
41
37
|
}
|
|
42
38
|
}
|
|
@@ -74,12 +74,6 @@
|
|
|
74
74
|
</div>
|
|
75
75
|
</m-container>
|
|
76
76
|
</div>
|
|
77
|
-
<pb-sticky-footer
|
|
78
|
-
v-if="payload.skippable || payload.multiSelect"
|
|
79
|
-
ref="pbStickyFooter"
|
|
80
|
-
:bottom-offset="stickyBottomOffset"
|
|
81
|
-
>
|
|
82
|
-
</pb-sticky-footer>
|
|
83
77
|
<pb-configurations-search
|
|
84
78
|
v-model:show-dialog="showImportConfigurationDialog"
|
|
85
79
|
@import-configuration="importConfiguration"
|
|
@@ -94,51 +94,6 @@
|
|
|
94
94
|
</div>
|
|
95
95
|
</div>
|
|
96
96
|
|
|
97
|
-
<pb-sticky-footer
|
|
98
|
-
v-if="payload.skippable || payload.multiSelect"
|
|
99
|
-
ref="pbStickyFooter"
|
|
100
|
-
class="pb-upload-document__sticky-footer"
|
|
101
|
-
:bottom-offset="stickyBottomOffset"
|
|
102
|
-
:intersection-observer-delay="200"
|
|
103
|
-
>
|
|
104
|
-
<transition-group name="pb-upload-document__actions--animated" mode="out-in">
|
|
105
|
-
<div
|
|
106
|
-
v-if="payload.multiSelect && selectedDocuments?.length > 0"
|
|
107
|
-
ref="pbQuestionActionsButtonsValidate"
|
|
108
|
-
class="pb-upload-document__actions-container"
|
|
109
|
-
key="validate"
|
|
110
|
-
>
|
|
111
|
-
<m-button
|
|
112
|
-
class="pb-upload-document__actions-buttons-button"
|
|
113
|
-
size="m"
|
|
114
|
-
size-from-l="l"
|
|
115
|
-
width="full"
|
|
116
|
-
:label="payload.multiSelect.actions.VALIDATE.label"
|
|
117
|
-
@click="validMultiSelect(payload.multiSelect.actions.VALIDATE)"
|
|
118
|
-
/>
|
|
119
|
-
</div>
|
|
120
|
-
<div
|
|
121
|
-
v-if="payload.skippable && (payload.viewModel.alwaysDisplaySkippable || selectedDocuments?.length <= 0)"
|
|
122
|
-
ref="pbQuestionActionsButtonsSkip"
|
|
123
|
-
class="pb-upload-document__actions-container"
|
|
124
|
-
key="skip"
|
|
125
|
-
>
|
|
126
|
-
<m-button
|
|
127
|
-
v-for="button in payload.skippable"
|
|
128
|
-
:key="button.label"
|
|
129
|
-
class="pb-upload-document__actions-buttons-button"
|
|
130
|
-
:label="button.label"
|
|
131
|
-
:theme="button.theme ? button.theme : 'bordered'"
|
|
132
|
-
:right-icon="button.rightIcon"
|
|
133
|
-
:left-icon="button.leftIcon"
|
|
134
|
-
size="m"
|
|
135
|
-
:width="button.width"
|
|
136
|
-
:widthFromM="button.widthFromM"
|
|
137
|
-
@click="skipQuestion(button)"
|
|
138
|
-
/>
|
|
139
|
-
</div>
|
|
140
|
-
</transition-group>
|
|
141
|
-
</pb-sticky-footer>
|
|
142
97
|
<m-pb-media-upload
|
|
143
98
|
:payload="payload.viewModel.mediaPayload"
|
|
144
99
|
:store-module-name="storeModuleName"
|
|
@@ -66,8 +66,7 @@
|
|
|
66
66
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_WALL')",
|
|
67
67
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'DRY_TOWEL')",
|
|
68
68
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'WC')",
|
|
69
|
-
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'FURNITURES')"
|
|
70
|
-
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')"
|
|
69
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'BATHTUB') && isAnswerContaining('LMFR_QUESTION_WORKS', 'FURNITURES')"
|
|
71
70
|
],
|
|
72
71
|
"nextStep": {
|
|
73
72
|
"code": "LMFR_BATHROOM_BATHTUB_TYPE"
|
|
@@ -79,8 +78,7 @@
|
|
|
79
78
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_FLOOR')",
|
|
80
79
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_WALL')",
|
|
81
80
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'DRY_TOWEL')",
|
|
82
|
-
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'WC')"
|
|
83
|
-
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')"
|
|
81
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'WC')"
|
|
84
82
|
],
|
|
85
83
|
"nextStep": {
|
|
86
84
|
"code": "LMFR_BATHROOM_SHOWER_TYPE"
|
|
@@ -103,14 +101,25 @@
|
|
|
103
101
|
"conditions": [
|
|
104
102
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_FLOOR')",
|
|
105
103
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_WALL')",
|
|
106
|
-
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'DRY_TOWEL')",
|
|
107
104
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')",
|
|
105
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'DRY_TOWEL')",
|
|
108
106
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'WC') && isAnswerContaining('LMFR_QUESTION_WORKS', 'FURNITURES')"
|
|
109
107
|
],
|
|
110
108
|
"nextStep": {
|
|
111
109
|
"code": "LMFR_BATHROOM_WC_TYPE"
|
|
112
110
|
}
|
|
113
111
|
},
|
|
112
|
+
{
|
|
113
|
+
"conditions": [
|
|
114
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'FURNITURES')",
|
|
115
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'WC')",
|
|
116
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_WALL')",
|
|
117
|
+
"isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_FLOOR')"
|
|
118
|
+
],
|
|
119
|
+
"nextStep": {
|
|
120
|
+
"code": "LMFR_BATHROOM_SHOWER_TYPE_REPLACEMENT"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
114
123
|
{
|
|
115
124
|
"conditions": [
|
|
116
125
|
"isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_FLOOR') && isAnswerContaining('LMFR_QUESTION_WORKS', 'COVERING_WALL')"
|
|
@@ -132,12 +141,6 @@
|
|
|
132
141
|
"nextStep": {
|
|
133
142
|
"code": "LMFR_BATHROOM_EXIT_OPTIONS"
|
|
134
143
|
}
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
"conditions": ["isAnswerMatching('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')"],
|
|
138
|
-
"nextStep": {
|
|
139
|
-
"code": "LMFR_BATHROOM_SHOWER_TYPE"
|
|
140
|
-
}
|
|
141
144
|
}
|
|
142
145
|
]
|
|
143
146
|
}
|
|
@@ -491,6 +494,83 @@
|
|
|
491
494
|
]
|
|
492
495
|
}
|
|
493
496
|
},
|
|
497
|
+
"LMFR_BATHROOM_SHOWER_TYPE_REPLACEMENT": {
|
|
498
|
+
"code": "LMFR_BATHROOM_SHOWER_TYPE_REPLACEMENT",
|
|
499
|
+
"type": "STEP",
|
|
500
|
+
"component": "MPbQuestion",
|
|
501
|
+
"slots": {
|
|
502
|
+
"beforeContent": {
|
|
503
|
+
"display": true,
|
|
504
|
+
"component": "MPbProgress",
|
|
505
|
+
"totalStep": 13,
|
|
506
|
+
"currentStep": 1,
|
|
507
|
+
"sizeXlWidth": true,
|
|
508
|
+
"label": "Votre projet de salle de bains"
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
"payload": {
|
|
512
|
+
"viewModel": {
|
|
513
|
+
"answersComponent": "MPbCard",
|
|
514
|
+
"progressBar": true,
|
|
515
|
+
"forceOneCardPerLineOnMobile": true,
|
|
516
|
+
"widthFromL": "1of3",
|
|
517
|
+
"widthXlSize": true,
|
|
518
|
+
"label": "Quel type de douche voulez-vous installer ?"
|
|
519
|
+
},
|
|
520
|
+
"answers": {
|
|
521
|
+
"STRAIGH_TUB": {
|
|
522
|
+
"code": "STRAIGH_TUB",
|
|
523
|
+
"viewModel": {
|
|
524
|
+
"title": "Cabine",
|
|
525
|
+
"image": "https://storage.googleapis.com/project-booster-media/bathroom/shower/cabine.jpg"
|
|
526
|
+
},
|
|
527
|
+
"meta": {
|
|
528
|
+
"ranking": 1
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
"CLOSED": {
|
|
532
|
+
"code": "CLOSED",
|
|
533
|
+
"viewModel": {
|
|
534
|
+
"title": "Fermée",
|
|
535
|
+
"image": "https://storage.googleapis.com/project-booster-media/bathroom/shower/fermee.png"
|
|
536
|
+
},
|
|
537
|
+
"meta": {
|
|
538
|
+
"ranking": 2
|
|
539
|
+
}
|
|
540
|
+
},
|
|
541
|
+
"ITALIAN": {
|
|
542
|
+
"code": "ITALIAN",
|
|
543
|
+
"viewModel": {
|
|
544
|
+
"title": "Italienne",
|
|
545
|
+
"image": "https://storage.googleapis.com/project-booster-media/bathroom/shower/italienne.jpg"
|
|
546
|
+
},
|
|
547
|
+
"meta": {
|
|
548
|
+
"ranking": 3
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
"COLUMN": {
|
|
552
|
+
"code": "COLUMN",
|
|
553
|
+
"viewModel": {
|
|
554
|
+
"title": "Colonne",
|
|
555
|
+
"image": "https://storage.googleapis.com/project-booster-media/bathroom/shower/colonne.jpg"
|
|
556
|
+
},
|
|
557
|
+
"meta": {
|
|
558
|
+
"ranking": 4
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
"nextStep": {
|
|
564
|
+
"conditionals": [
|
|
565
|
+
{
|
|
566
|
+
"conditions": ["true"],
|
|
567
|
+
"nextStep": {
|
|
568
|
+
"code": "LMFR_BATHROOM_STYLE"
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
]
|
|
572
|
+
}
|
|
573
|
+
},
|
|
494
574
|
"LMFR_BATHROOM_FURNITURE_TYPE": {
|
|
495
575
|
"code": "LMFR_BATHROOM_FURNITURE_TYPE",
|
|
496
576
|
"type": "STEP",
|
|
@@ -588,7 +668,7 @@
|
|
|
588
668
|
{
|
|
589
669
|
"conditions": ["isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')"],
|
|
590
670
|
"nextStep": {
|
|
591
|
-
"code": "
|
|
671
|
+
"code": "LMFR_BATHROOM_SHOWER_TYPE_REPLACEMENT"
|
|
592
672
|
}
|
|
593
673
|
},
|
|
594
674
|
{
|
|
@@ -651,7 +731,7 @@
|
|
|
651
731
|
{
|
|
652
732
|
"conditions": ["isAnswerContaining('LMFR_QUESTION_WORKS', 'REPLACE_BATHTUB_TO_SHOWER')"],
|
|
653
733
|
"nextStep": {
|
|
654
|
-
"code": "
|
|
734
|
+
"code": "LMFR_BATHROOM_SHOWER_TYPE_REPLACEMENT"
|
|
655
735
|
}
|
|
656
736
|
},
|
|
657
737
|
{
|
|
@@ -938,9 +1018,8 @@
|
|
|
938
1018
|
"subtitle": "Réalisez un croquis de votre salle de bain actuelle avec les ouvertures et les différentes mesures.",
|
|
939
1019
|
"button": {
|
|
940
1020
|
"label": "Regarder le tutoriel video",
|
|
941
|
-
"
|
|
942
|
-
|
|
943
|
-
"code": ""
|
|
1021
|
+
"dialog": {
|
|
1022
|
+
"src": "https://www.youtube.com/embed/DKft6H92S8s"
|
|
944
1023
|
}
|
|
945
1024
|
}
|
|
946
1025
|
}
|
|
@@ -954,10 +1033,7 @@
|
|
|
954
1033
|
"subtitle": "Utilisez notre configurateur et estimez le coût des équpements choisis.",
|
|
955
1034
|
"button": {
|
|
956
1035
|
"label": "Accéder à l’outil",
|
|
957
|
-
"href": ""
|
|
958
|
-
"nextStep": {
|
|
959
|
-
"code": ""
|
|
960
|
-
}
|
|
1036
|
+
"href": "https://sdb3d.leroymerlin.fr/Page_Tunnel/tunnel-sdb.html"
|
|
961
1037
|
}
|
|
962
1038
|
}
|
|
963
1039
|
}
|