project-booster-vue 10.12.0 → 10.13.0
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/question/incremental-amount-input/IncrementalAmount.ts +1 -0
- package/src/components/question/space-input/SpaceInput.ts +10 -0
- package/src/components/rework/products/MPbProducts.vue +15 -5
- package/src/components/rework/question/MPbQuestion.vue +13 -2
- package/src/components/rework/question/city-search/MPbCitySearch.vue +98 -20
- package/src/components/rework/question/city-search/default-payload.json +15 -1
- package/src/components/rework/question/incremental-amount-input/MPbIncrementalAmountInput.vue +79 -40
- package/src/components/rework/question/incremental-amount-input/default-payload.json +1 -1
- package/src/components/rework/question/space-input/MPbSpaceInput.vue +167 -94
- package/src/components/rework/question/space-input/SpaceInput.ts +25 -0
- package/src/components/rework/question/space-input/default-payload.json +16 -1
- package/src/components/rework/styles/global.scss +12 -0
- package/src/components/rework/types/genericPayload.ts +5 -2
- package/src/components/scenario/PbScenario-Attic-Insulation.stories.mdx +245 -0
- package/src/components/scenario/PbScenario-Estimator-External-Wall-Insulation.stories.mdx +245 -0
- package/src/components/scenario/{PbScenario-Estimator-Attic-Insulation.stories.mdx → PbScenario-Estimator-Woodstore.stories.mdx} +3 -3
- package/src/components/scenario/PbScenario-Estimator-hpwa.stories.mdx +245 -0
- package/src/components/scenario/scenarii/attic-insulation.json +2485 -0
- package/src/components/scenario/scenarii/estimator-external-wall-insulation.json +2545 -0
- package/src/components/scenario/scenarii/estimator-hpwa.json +734 -517
- package/src/components/scenario/scenarii/pellet-boiler.json +379 -266
- package/src/components/scenario/scenarii/wood-stove.json +2729 -0
- package/src/types/pb/Scenario.ts +17 -0
package/package.json
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { HelpArea } from '@/components/rework/question/space-input/SpaceInput';
|
|
2
|
+
import { PayloadAction } from '@/components/rework/types/genericPayload';
|
|
1
3
|
import { ScenarioStepSkippableOptions } from '@/types/pb/Scenario';
|
|
2
4
|
|
|
3
5
|
export interface SpaceInputValidation {
|
|
@@ -11,10 +13,17 @@ export interface SpaceInputValidation {
|
|
|
11
13
|
|
|
12
14
|
export interface SpaceInputViewModel {
|
|
13
15
|
backLabel: string;
|
|
16
|
+
hideBackButton?: boolean;
|
|
14
17
|
label: string;
|
|
18
|
+
subtitle: string;
|
|
15
19
|
placeholder: string;
|
|
16
20
|
actionLabel: string;
|
|
17
21
|
validation: SpaceInputValidation;
|
|
22
|
+
forceBackButton?: boolean;
|
|
23
|
+
callToActions: PayloadAction[];
|
|
24
|
+
analytics: {
|
|
25
|
+
funnel_name: string;
|
|
26
|
+
};
|
|
18
27
|
footer?: {
|
|
19
28
|
label: string;
|
|
20
29
|
conditions: string[];
|
|
@@ -26,4 +35,5 @@ export interface SpaceInputPayload {
|
|
|
26
35
|
value: { space: string };
|
|
27
36
|
defaultDecoratorValue: string;
|
|
28
37
|
skippable?: ScenarioStepSkippableOptions;
|
|
38
|
+
helpArea?: HelpArea[];
|
|
29
39
|
}
|
|
@@ -17,12 +17,18 @@
|
|
|
17
17
|
{{ payload.viewModel.label }}
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
|
-
<div class="pb-products__body__item" v-if="product">
|
|
21
|
-
<div class="pb-products__body__item__thumbnail">
|
|
20
|
+
<div class="pb-products__body__item" v-if="product.designation">
|
|
21
|
+
<div class="pb-products__body__item__thumbnail" v-if="product?.photo">
|
|
22
22
|
<img :src="product.photo" alt="" />
|
|
23
23
|
</div>
|
|
24
24
|
<div class="pb-products__body__item__title">{{ product.designation }}</div>
|
|
25
25
|
</div>
|
|
26
|
+
<div class="pb-products__body__item" v-else>
|
|
27
|
+
<div class="pb-products__body__item__thumbnail">
|
|
28
|
+
<img :src="payload.viewModel.defaultProduct.photo" alt="" />
|
|
29
|
+
</div>
|
|
30
|
+
<div class="pb-products__body__item__title">{{ payload.viewModel.defaultProduct.designation }}</div>
|
|
31
|
+
</div>
|
|
26
32
|
|
|
27
33
|
<div class="pb-products__container--button">
|
|
28
34
|
<m-button
|
|
@@ -50,8 +56,8 @@
|
|
|
50
56
|
<script lang="ts" setup>
|
|
51
57
|
import { useStore } from 'vuex';
|
|
52
58
|
import { MButton, MLink } from '@mozaic-ds/vue-3';
|
|
53
|
-
import { ScenarioStepAnswer } from '@/types/pb/Scenario';
|
|
54
|
-
import { defineProps, PropType, onMounted, ref } from 'vue';
|
|
59
|
+
import { ScenarioProduct, ScenarioStepAnswer } from '@/types/pb/Scenario';
|
|
60
|
+
import { defineProps, PropType, onMounted, ref, Ref } from 'vue';
|
|
55
61
|
import { PayloadAction } from '../types/genericPayload';
|
|
56
62
|
import { formatEvent, EventTypeEnum } from '../services/event';
|
|
57
63
|
|
|
@@ -60,7 +66,11 @@ const emit = defineEmits(['go-back', 'step-completed']);
|
|
|
60
66
|
const store = useStore();
|
|
61
67
|
const metadata = store.getters['metaData/metaData'];
|
|
62
68
|
const refProduct = store.getters['products/getRefProduct'];
|
|
63
|
-
const product = ref({
|
|
69
|
+
const product: Ref<ScenarioProduct> = ref({
|
|
70
|
+
photo: '',
|
|
71
|
+
designation: '',
|
|
72
|
+
value: '',
|
|
73
|
+
});
|
|
64
74
|
|
|
65
75
|
const props = defineProps({
|
|
66
76
|
/**
|
|
@@ -155,8 +155,9 @@
|
|
|
155
155
|
size="l"
|
|
156
156
|
theme="primary"
|
|
157
157
|
@click="handleHelpClick(helpItem.action)"
|
|
158
|
-
>{{ helpItem.label }}</m-link
|
|
159
158
|
>
|
|
159
|
+
{{ helpItem.label }}
|
|
160
|
+
</m-link>
|
|
160
161
|
</div>
|
|
161
162
|
</div>
|
|
162
163
|
</div>
|
|
@@ -183,6 +184,15 @@
|
|
|
183
184
|
width-from-xxl="full"
|
|
184
185
|
width-from-l="full"
|
|
185
186
|
:href="notification.buttonHref"
|
|
187
|
+
v-if="notification.buttonHref"
|
|
188
|
+
:label="notification.buttonText"
|
|
189
|
+
/>
|
|
190
|
+
<m-button
|
|
191
|
+
width="full"
|
|
192
|
+
width-from-xxl="full"
|
|
193
|
+
width-from-l="full"
|
|
194
|
+
v-else-if="notification?.buttonStep"
|
|
195
|
+
@click.prevent="callAction(notification?.buttonStep, [], $emit)"
|
|
186
196
|
:label="notification.buttonText"
|
|
187
197
|
/>
|
|
188
198
|
</div>
|
|
@@ -315,7 +325,7 @@
|
|
|
315
325
|
</m-modal>
|
|
316
326
|
|
|
317
327
|
<m-modal
|
|
318
|
-
:modalTitle="helpDialog?.viewModelDialog.headerTitle"
|
|
328
|
+
:modalTitle="helpDialog?.viewModelDialog.watermark || helpDialog?.viewModelDialog.headerTitle"
|
|
319
329
|
:open="displayDialogHelp"
|
|
320
330
|
@update:open="displayDialogHelp = false"
|
|
321
331
|
class="mc-modal--overflow"
|
|
@@ -449,6 +459,7 @@ import {
|
|
|
449
459
|
} from '@/types/pb/Scenario';
|
|
450
460
|
import { useStore } from 'vuex';
|
|
451
461
|
import { EventTypeEnum, formatEvent } from '../services/event';
|
|
462
|
+
import { callAction } from '../services/navigate';
|
|
452
463
|
|
|
453
464
|
const BACK_ICON =
|
|
454
465
|
'https://storage.googleapis.com/project-booster-media/mozaic-icons/svg/Navigation_Arrow_Arrow--Left_16px.svg';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<form class="pb-city-search" @submit.prevent="handleFormValidation">
|
|
3
|
-
<
|
|
3
|
+
<div class="pb-city-search__back-button-container row-flex align-stretch">
|
|
4
4
|
<m-link
|
|
5
5
|
:left-icon="BACK_ICON"
|
|
6
6
|
:class="{
|
|
@@ -11,21 +11,16 @@
|
|
|
11
11
|
@click.once="$emit('go-back')"
|
|
12
12
|
>{{ computedPayload.viewModel.backLabel }}</m-link
|
|
13
13
|
>
|
|
14
|
-
</
|
|
14
|
+
</div>
|
|
15
15
|
<div class="pb-city-search__form">
|
|
16
16
|
<div class="pb-city-search__title">
|
|
17
17
|
{{ computedPayload.viewModel.label }}
|
|
18
18
|
</div>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
v-if="computedPayload.viewModel.image"
|
|
22
|
-
class="pb-city-search__image"
|
|
23
|
-
direction="column"
|
|
24
|
-
align-items="center"
|
|
25
|
-
>
|
|
19
|
+
<div class="pb-city-search__header" ref="pbCitySearchHeader row-flex column">
|
|
20
|
+
<div v-if="computedPayload.viewModel.image" class="pb-city-search__image row-flex column align-center">
|
|
26
21
|
<img :src="computedPayload.viewModel.image" @onloadend="updateHeaderHeight()" />
|
|
27
|
-
</
|
|
28
|
-
</
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
29
24
|
<transition name="pb-city-search__results-overlay--animate">
|
|
30
25
|
<div
|
|
31
26
|
v-if="focused || displaySuggestions"
|
|
@@ -45,7 +40,7 @@
|
|
|
45
40
|
>
|
|
46
41
|
<transition name="pb-city-search__results-container--animate">
|
|
47
42
|
<div v-if="displaySuggestions && !forceHideSuggestions" class="pb-city-search__results-container">
|
|
48
|
-
<
|
|
43
|
+
<div v-if="suggestions && suggestions.length > 0" class="pb-city-search__results row flex column">
|
|
49
44
|
<div
|
|
50
45
|
class="pb-city-search__results-item"
|
|
51
46
|
v-for="(suggestion, index) in suggestions"
|
|
@@ -57,14 +52,14 @@
|
|
|
57
52
|
>
|
|
58
53
|
{{ formatSuggestion(suggestion) }}
|
|
59
54
|
</div>
|
|
60
|
-
</
|
|
61
|
-
<div v-else-if="
|
|
55
|
+
</div>
|
|
56
|
+
<div v-else-if="searchKeyword" class="pb-city-search__results-empty-state">
|
|
62
57
|
<span v-if="loadingSuggestions">Chargement...</span>
|
|
63
58
|
<span v-else>Aucune commune correspondante</span>
|
|
64
59
|
</div>
|
|
65
60
|
</div>
|
|
66
61
|
</transition>
|
|
67
|
-
<
|
|
62
|
+
<div>
|
|
68
63
|
<m-text-input
|
|
69
64
|
type="search"
|
|
70
65
|
ref="pbCitySearchTextInput"
|
|
@@ -76,7 +71,7 @@
|
|
|
76
71
|
tabindex="1"
|
|
77
72
|
:data-cerberus="sanitizeCerberusAttribut('MPB-CITY-SEARCH', 'INPUT')"
|
|
78
73
|
/>
|
|
79
|
-
</
|
|
74
|
+
</div>
|
|
80
75
|
</div>
|
|
81
76
|
<div v-if="selectedCity" class="pb-city-search__selected-city">
|
|
82
77
|
<!-- prettier-ignore -->
|
|
@@ -84,7 +79,7 @@
|
|
|
84
79
|
Votre construction sera réalisée dans la commune de <strong>{{ selectedCity.name }}</strong>, <strong>{{ selectedCity.region }}</strong>.
|
|
85
80
|
</span>
|
|
86
81
|
</div>
|
|
87
|
-
<
|
|
82
|
+
<!-- <div class="pb-city-search__buttons-container" direction="column">
|
|
88
83
|
<m-button
|
|
89
84
|
:disabled="!selectedCity"
|
|
90
85
|
class="pb-city-search__button"
|
|
@@ -93,7 +88,29 @@
|
|
|
93
88
|
@click="handleFormValidation"
|
|
94
89
|
:data-cerberus="sanitizeCerberusAttribut('MPB-CITY-SEARCH', 'BUTTON')"
|
|
95
90
|
/>
|
|
96
|
-
</
|
|
91
|
+
</div> -->
|
|
92
|
+
|
|
93
|
+
<div class="pb-city-search__buttons-container row-flex align-center" v-if="payload">
|
|
94
|
+
<div
|
|
95
|
+
v-for="button in payload.viewModel.callToActions"
|
|
96
|
+
class="pb-city-search__buttons-container__button row-flex"
|
|
97
|
+
>
|
|
98
|
+
<m-button
|
|
99
|
+
:label="button.label"
|
|
100
|
+
@click="callAction(button)"
|
|
101
|
+
:theme="button.theme"
|
|
102
|
+
:icon="button.icon"
|
|
103
|
+
:iconPosition="button.iconPosition"
|
|
104
|
+
style="margin-left: 1rem"
|
|
105
|
+
:data-cerberus="sanitizeCerberusAttribut('MPB-SPACE-INPUT', button.label)"
|
|
106
|
+
class="js-cdl"
|
|
107
|
+
data-cdl-click-type="cdl_event"
|
|
108
|
+
:data-cdl-click-data="
|
|
109
|
+
formatEvent({ button_name: button.label, button_location: stepLocation }, EventTypeEnum.BUTTON)
|
|
110
|
+
"
|
|
111
|
+
/>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
97
114
|
</div>
|
|
98
115
|
</form>
|
|
99
116
|
</template>
|
|
@@ -113,6 +130,8 @@ import { DebouncedFunc } from 'lodash-es';
|
|
|
113
130
|
import { decorate } from '@/services/decorate';
|
|
114
131
|
import { ScenarioStepAnswer } from '@/types/pb/Scenario';
|
|
115
132
|
import { MButton, MLink } from '@mozaic-ds/vue-3';
|
|
133
|
+
import { EventTypeEnum, formatEvent } from '../../services/event';
|
|
134
|
+
import { PayloadAction } from '../../types/genericPayload';
|
|
116
135
|
|
|
117
136
|
const BACK_ICON =
|
|
118
137
|
'https://storage.googleapis.com/project-booster-media/mozaic-icons/svg/Navigation_Arrow_Arrow--Left_16px.svg';
|
|
@@ -165,6 +184,10 @@ export default defineComponent({
|
|
|
165
184
|
type: Object as PropType<Map<string, ScenarioStepAnswer[]>>,
|
|
166
185
|
default: () => new Map<string, ScenarioStepAnswer[]>(),
|
|
167
186
|
},
|
|
187
|
+
stepLocation: {
|
|
188
|
+
type: String,
|
|
189
|
+
default: '',
|
|
190
|
+
},
|
|
168
191
|
},
|
|
169
192
|
|
|
170
193
|
data: () => ({
|
|
@@ -188,6 +211,7 @@ export default defineComponent({
|
|
|
188
211
|
loadingCityInfo: false,
|
|
189
212
|
headerHeight: 0,
|
|
190
213
|
debouncedGetSuggestions: undefined as DebouncedFunc<() => Promise<void>> | undefined,
|
|
214
|
+
EventTypeEnum,
|
|
191
215
|
}),
|
|
192
216
|
|
|
193
217
|
computed: {
|
|
@@ -397,7 +421,18 @@ export default defineComponent({
|
|
|
397
421
|
selectedCityToKeyword(): string {
|
|
398
422
|
return this.selectedCity?.postalCode + ' ' + this.selectedCity?.name + ', ' + this.selectedCity?.region;
|
|
399
423
|
},
|
|
424
|
+
callAction(button: PayloadAction) {
|
|
425
|
+
if (button.nextStep.code != '__BACK__') {
|
|
426
|
+
this.$emit('step-completed', {
|
|
427
|
+
answers: null,
|
|
428
|
+
nextStep: button.code,
|
|
429
|
+
});
|
|
430
|
+
} else {
|
|
431
|
+
this.$emit('go-back');
|
|
432
|
+
}
|
|
433
|
+
},
|
|
400
434
|
sanitizeCerberusAttribut,
|
|
435
|
+
formatEvent,
|
|
401
436
|
},
|
|
402
437
|
});
|
|
403
438
|
</script>
|
|
@@ -406,6 +441,7 @@ export default defineComponent({
|
|
|
406
441
|
@import 'pb-variables';
|
|
407
442
|
|
|
408
443
|
$responsive-breakpoint: 'm';
|
|
444
|
+
@import '../../styles/global.scss';
|
|
409
445
|
|
|
410
446
|
.pb-city-search {
|
|
411
447
|
@include set-font-face('regular');
|
|
@@ -460,7 +496,7 @@ $responsive-breakpoint: 'm';
|
|
|
460
496
|
width: 100%;
|
|
461
497
|
|
|
462
498
|
@include set-from-screen($responsive-breakpoint) {
|
|
463
|
-
width:
|
|
499
|
+
width: 720px;
|
|
464
500
|
}
|
|
465
501
|
}
|
|
466
502
|
|
|
@@ -473,7 +509,7 @@ $responsive-breakpoint: 'm';
|
|
|
473
509
|
width: 384px;
|
|
474
510
|
|
|
475
511
|
@include set-from-screen($responsive-breakpoint) {
|
|
476
|
-
@include set-font-scale('
|
|
512
|
+
@include set-font-scale('07', 'l');
|
|
477
513
|
|
|
478
514
|
padding: $mu250 0 $mu050 0;
|
|
479
515
|
width: auto;
|
|
@@ -637,6 +673,48 @@ $responsive-breakpoint: 'm';
|
|
|
637
673
|
position: sticky;
|
|
638
674
|
width: 100%;
|
|
639
675
|
z-index: 1;
|
|
676
|
+
flex-direction: column;
|
|
677
|
+
|
|
678
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
679
|
+
flex-direction: row;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
button {
|
|
683
|
+
margin-left: 0 !important;
|
|
684
|
+
width: 100%;
|
|
685
|
+
|
|
686
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
687
|
+
width: auto;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
&__button {
|
|
692
|
+
width: 100%;
|
|
693
|
+
|
|
694
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
695
|
+
width: 50%;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
&:first-child {
|
|
699
|
+
justify-content: flex-start;
|
|
700
|
+
margin-top: $mu050;
|
|
701
|
+
order: 2;
|
|
702
|
+
|
|
703
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
704
|
+
margin-top: 0;
|
|
705
|
+
order: 1;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
&:last-child {
|
|
710
|
+
justify-content: flex-end;
|
|
711
|
+
order: 1;
|
|
712
|
+
|
|
713
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
714
|
+
order: 2;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
640
718
|
}
|
|
641
719
|
}
|
|
642
720
|
</style>
|
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
"label": "Dans quelle ville aura lieu les travaux ?",
|
|
5
5
|
"subtitle": "Cette information nous aide à identifier les aides dont vous pourriez profiter",
|
|
6
6
|
"placeholder": "Code postal, ville",
|
|
7
|
-
"actionLabel": "
|
|
7
|
+
"actionLabel": "Étape suivante",
|
|
8
|
+
"callToActions": [
|
|
9
|
+
{
|
|
10
|
+
"label": "Précédent",
|
|
11
|
+
"nextStep": "Code",
|
|
12
|
+
"theme": "bordered-primary-02",
|
|
13
|
+
"icon": "ArrowBack48"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"label": "Etape suivante",
|
|
17
|
+
"nextStep": "Code",
|
|
18
|
+
"icon": "ArrowNext48",
|
|
19
|
+
"iconPosition": "right"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
8
22
|
}
|
|
9
23
|
}
|
package/src/components/rework/question/incremental-amount-input/MPbIncrementalAmountInput.vue
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="pb-incremental-amount-input row-flex column align-center">
|
|
3
|
-
<div class="pb-incremental-amount-input__back-button-container row-flex align-stretch">
|
|
4
|
-
<m-link
|
|
5
|
-
icon="ArrowBack48"
|
|
6
|
-
:class="{
|
|
7
|
-
'pb-incremental-amount-input__back-button': true,
|
|
8
|
-
'pb-incremental-amount-input__back-button--hidden':
|
|
9
|
-
!showBackButton && !decorate(answers, runtimeOptions, payload.viewModel.forceBackButton),
|
|
10
|
-
}"
|
|
11
|
-
@click.once="$emit('go-back')"
|
|
12
|
-
>{{ computedPayload.viewModel.backLabel }}</m-link
|
|
13
|
-
>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
3
|
<form
|
|
17
4
|
class="pb-incremental-amount-input__form-container"
|
|
18
5
|
ref="pbDimensionsInputFormContainerObserver"
|
|
@@ -32,30 +19,40 @@
|
|
|
32
19
|
/>
|
|
33
20
|
</div>
|
|
34
21
|
|
|
35
|
-
<div class="pb-incremental-amount-input__buttons-container
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
<div class="pb-incremental-amount-input__buttons-container">
|
|
23
|
+
<div class="pb-incremental-amount-input__buttons-container__left">
|
|
24
|
+
<m-button
|
|
25
|
+
label="Précédent"
|
|
26
|
+
theme="bordered-neutral"
|
|
27
|
+
class="pb-city-search__button"
|
|
28
|
+
size="m"
|
|
29
|
+
size-from-l="l"
|
|
30
|
+
@click="$emit('go-back')"
|
|
31
|
+
v-if="!payload.viewModel.hideBackButton"
|
|
32
|
+
icon="ArrowBack48"
|
|
33
|
+
>
|
|
34
|
+
</m-button>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="pb-incremental-amount-input__buttons-container__right">
|
|
37
|
+
<m-button class="pb-city-search__button" :label="computedPayload.viewModel.actionLabel" size="m" />
|
|
38
|
+
</div>
|
|
42
39
|
</div>
|
|
43
40
|
</form>
|
|
44
41
|
</div>
|
|
45
42
|
</template>
|
|
46
43
|
|
|
47
44
|
<script lang="ts" setup>
|
|
48
|
-
import {
|
|
45
|
+
import { IncrementalAmountPayload } from '@/components/question/incremental-amount-input/IncrementalAmount';
|
|
46
|
+
import { decorate } from '@/services/decorate';
|
|
47
|
+
import { ScenarioStepAnswer } from '@/types/pb/Scenario';
|
|
48
|
+
import { MButton } from '@mozaic-ds/vue-3';
|
|
49
49
|
import cloneDeep from 'lodash.clonedeep';
|
|
50
50
|
import merge from 'lodash.merge';
|
|
51
|
-
import
|
|
52
|
-
import
|
|
53
|
-
import { ScenarioStepAnswer } from '@/types/pb/Scenario';
|
|
54
|
-
import { decorate } from '@/services/decorate';
|
|
51
|
+
import { ComputedRef, PropType, computed, onMounted, ref } from 'vue';
|
|
52
|
+
import MFlex from '../../../mozaic/flex/MFlex.vue';
|
|
55
53
|
import MQuantitySelector from '../../../mozaic/quantityselector/MQuantitySelector.vue';
|
|
56
|
-
import { IncrementalAmountPayload } from '@/components/question/incremental-amount-input/IncrementalAmount';
|
|
57
54
|
import { EmitEventName } from '../../services/emit';
|
|
58
|
-
import
|
|
55
|
+
import DEFAULT_PAYLOAD from './default-payload.json';
|
|
59
56
|
|
|
60
57
|
const BACK_ICON =
|
|
61
58
|
'https://storage.googleapis.com/project-booster-media/mozaic-icons/svg/Navigation_Arrow_Arrow--Left_16px.svg';
|
|
@@ -195,6 +192,7 @@ $responsive-breakpoint: 'm';
|
|
|
195
192
|
|
|
196
193
|
@include set-from-screen($responsive-breakpoint) {
|
|
197
194
|
padding-top: 0;
|
|
195
|
+
margin-top: $mu150;
|
|
198
196
|
}
|
|
199
197
|
|
|
200
198
|
&__back-button-container {
|
|
@@ -259,9 +257,10 @@ $responsive-breakpoint: 'm';
|
|
|
259
257
|
flex-direction: column;
|
|
260
258
|
flex-grow: 1;
|
|
261
259
|
padding: 0 $mu050;
|
|
260
|
+
width: 100%;
|
|
262
261
|
|
|
263
262
|
@include set-from-screen($responsive-breakpoint) {
|
|
264
|
-
width:
|
|
263
|
+
width: 720px;
|
|
265
264
|
}
|
|
266
265
|
}
|
|
267
266
|
|
|
@@ -280,33 +279,27 @@ $responsive-breakpoint: 'm';
|
|
|
280
279
|
padding: 0;
|
|
281
280
|
|
|
282
281
|
@include set-from-screen($responsive-breakpoint) {
|
|
283
|
-
@include set-font-scale('
|
|
282
|
+
@include set-font-scale('07', 'm');
|
|
284
283
|
|
|
285
284
|
margin-bottom: 0;
|
|
286
|
-
padding: $
|
|
285
|
+
padding: $mu050 0 $mu100 0;
|
|
287
286
|
}
|
|
288
287
|
}
|
|
289
288
|
|
|
290
289
|
&__subtitle {
|
|
291
|
-
color: $color-grey-
|
|
290
|
+
color: $color-grey-900;
|
|
292
291
|
max-width: 100%;
|
|
293
292
|
padding: 0 0 $mu250 0;
|
|
294
293
|
}
|
|
295
294
|
|
|
296
295
|
&__image {
|
|
297
|
-
padding-bottom: $mu200;
|
|
298
|
-
|
|
299
296
|
img {
|
|
300
|
-
|
|
301
|
-
|
|
297
|
+
width: 50%;
|
|
298
|
+
margin: 0 auto;
|
|
302
299
|
|
|
303
300
|
@include set-from-screen($small-responsive-breakpoint) {
|
|
304
301
|
display: block;
|
|
305
|
-
width:
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
@include set-from-screen($responsive-breakpoint) {
|
|
309
|
-
width: 90%;
|
|
302
|
+
width: 60%;
|
|
310
303
|
}
|
|
311
304
|
}
|
|
312
305
|
}
|
|
@@ -327,12 +320,58 @@ $responsive-breakpoint: 'm';
|
|
|
327
320
|
}
|
|
328
321
|
|
|
329
322
|
&__buttons-container {
|
|
323
|
+
display: flex;
|
|
330
324
|
margin-bottom: $mu100;
|
|
331
325
|
position: sticky;
|
|
332
326
|
z-index: 1;
|
|
327
|
+
flex-direction: column;
|
|
328
|
+
|
|
329
|
+
&__left,
|
|
330
|
+
&__right {
|
|
331
|
+
width: 100%;
|
|
332
|
+
|
|
333
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
334
|
+
width: 50%;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
&__left {
|
|
339
|
+
order: 2;
|
|
340
|
+
|
|
341
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
342
|
+
order: 1;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
&__right {
|
|
347
|
+
display: flex;
|
|
348
|
+
justify-content: flex-end;
|
|
349
|
+
order: 1;
|
|
350
|
+
|
|
351
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
352
|
+
order: 2;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
button {
|
|
357
|
+
width: 100%;
|
|
358
|
+
|
|
359
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
360
|
+
width: auto;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
&:first-child {
|
|
364
|
+
margin-top: $mu050;
|
|
365
|
+
|
|
366
|
+
@include set-from-screen($responsive-breakpoint) {
|
|
367
|
+
margin-top: 0;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
333
371
|
|
|
334
372
|
@include set-from-screen($responsive-breakpoint) {
|
|
335
373
|
width: 100%;
|
|
374
|
+
flex-direction: row;
|
|
336
375
|
}
|
|
337
376
|
}
|
|
338
377
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"backLabel": "Question précédente",
|
|
4
4
|
"label": "Combien de personnes vivent dans votre foyer fiscal ?",
|
|
5
5
|
"subtitle": "Cette information est utile pour le calcul des aides",
|
|
6
|
-
"actionLabel": "
|
|
6
|
+
"actionLabel": "Étape suivante",
|
|
7
7
|
"image": "https://storage.googleapis.com/project-booster-media/new-house/Estimation%20Construction%20Neuve%20-%20Localisation.png",
|
|
8
8
|
"minValue": 1,
|
|
9
9
|
"maxValue": 20,
|