@cnamts/synapse 0.0.8-alpha → 0.0.9-alpha
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/dist/design-system-v3.d.ts +584 -128
- package/dist/design-system-v3.js +4176 -2694
- package/dist/design-system-v3.umd.cjs +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/assets/settings.scss +1 -1
- package/src/components/ContextualMenu/Accessibilite.mdx +14 -0
- package/src/components/ContextualMenu/Accessibilite.stories.ts +191 -0
- package/src/components/ContextualMenu/AccessibiliteItems.ts +89 -0
- package/src/components/ContextualMenu/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/SySelect/SySelect.stories.ts +7 -7
- package/src/components/Customs/SySelect/SySelect.vue +9 -4
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +2 -2
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +187 -2
- package/src/components/Customs/SyTextField/SyTextField.vue +185 -16
- package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +2 -4
- package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +18 -16
- package/src/components/Customs/SyTextField/types.d.ts +2 -2
- package/src/components/DatePicker/DatePicker.mdx +191 -0
- package/src/components/DatePicker/DatePicker.stories.ts +787 -0
- package/src/components/DatePicker/DatePicker.vue +560 -0
- package/src/components/DatePicker/DateTextInput.vue +409 -0
- package/src/components/DatePicker/tests/DatePicker.spec.ts +266 -0
- package/src/components/DialogBox/DialogBox.stories.ts +1 -1
- package/src/components/ExternalLinks/Accessibilite.mdx +14 -0
- package/src/components/ExternalLinks/Accessibilite.stories.ts +191 -0
- package/src/components/ExternalLinks/AccessibiliteItems.ts +197 -0
- package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +9 -9
- package/src/components/FileUpload/FileUpload.mdx +165 -0
- package/src/components/FileUpload/FileUpload.stories.ts +429 -0
- package/src/components/FileUpload/FileUpload.vue +195 -0
- package/src/components/FileUpload/FileUploadContent.vue +109 -0
- package/src/components/FileUpload/locales.ts +10 -0
- package/src/components/FileUpload/tests/FileUpload.spec.ts +332 -0
- package/src/components/FileUpload/tests/__snapshots__/FileUpload.spec.ts.snap +7 -0
- package/src/components/FileUpload/useFileDrop.ts +23 -0
- package/src/components/FileUpload/validateFiles.ts +39 -0
- package/src/components/NirField/NirField.stories.ts +1 -1
- package/src/components/NirField/NirField.vue +2 -1
- package/src/components/PasswordField/Accessibilite.mdx +14 -0
- package/src/components/PasswordField/Accessibilite.stories.ts +191 -0
- package/src/components/PasswordField/AccessibiliteItems.ts +184 -0
- package/src/components/PasswordField/PasswordField.vue +3 -3
- package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/PhoneField/PhoneField.vue +44 -60
- package/src/components/PhoneField/tests/PhoneField.spec.ts +0 -15
- package/src/components/RangeField/RangeField.mdx +54 -0
- package/src/components/RangeField/RangeField.stories.ts +189 -0
- package/src/components/RangeField/RangeField.vue +157 -0
- package/src/components/RangeField/RangeSlider/RangeSlider.vue +387 -0
- package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +64 -0
- package/src/components/RangeField/RangeSlider/tests/__snapshots__/rangeSlider.spec.ts.snap +27 -0
- package/src/components/RangeField/RangeSlider/tests/rangeSlider.spec.ts +100 -0
- package/src/components/RangeField/RangeSlider/tests/useDoubleSlider.spec.ts +246 -0
- package/src/components/RangeField/RangeSlider/tests/useMouseSlide.spec.ts +204 -0
- package/src/components/RangeField/RangeSlider/tests/useThumb.spec.ts +22 -0
- package/src/components/RangeField/RangeSlider/tests/useThumbKeyboard.spec.ts +233 -0
- package/src/components/RangeField/RangeSlider/tests/useTooltipsNudge.spec.ts +150 -0
- package/src/components/RangeField/RangeSlider/tests/useTrack.spec.ts +314 -0
- package/src/components/RangeField/RangeSlider/tests/vAnimateClick.spec.ts +32 -0
- package/src/components/RangeField/RangeSlider/types.ts +15 -0
- package/src/components/RangeField/RangeSlider/useMouseSlide.ts +109 -0
- package/src/components/RangeField/RangeSlider/useRangeSlider.ts +126 -0
- package/src/components/RangeField/RangeSlider/useThumb.ts +18 -0
- package/src/components/RangeField/RangeSlider/useThumbKeyboard.ts +84 -0
- package/src/components/RangeField/RangeSlider/useTooltipsNudge.ts +92 -0
- package/src/components/RangeField/RangeSlider/useTrack.ts +116 -0
- package/src/components/RangeField/RangeSlider/vAnimateClick.ts +19 -0
- package/src/components/RangeField/config.ts +7 -0
- package/src/components/RangeField/locales.ts +4 -0
- package/src/components/RangeField/tests/RangeField.spec.ts +224 -0
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +379 -0
- package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +205 -0
- package/src/components/RatingPicker/EmotionPicker/locales.ts +3 -0
- package/src/components/RatingPicker/EmotionPicker/tests/EmotionPicker.spec.ts +104 -0
- package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +66 -0
- package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +159 -0
- package/src/components/RatingPicker/NumberPicker/locales.ts +4 -0
- package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +73 -0
- package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +105 -0
- package/src/components/RatingPicker/Rating.ts +45 -0
- package/src/components/RatingPicker/RatingPicker.mdx +56 -0
- package/src/components/RatingPicker/RatingPicker.stories.ts +515 -0
- package/src/components/RatingPicker/RatingPicker.vue +122 -0
- package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +116 -0
- package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +95 -0
- package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +36 -0
- package/src/components/RatingPicker/locales.ts +3 -0
- package/src/components/RatingPicker/tests/Rating.spec.ts +104 -0
- package/src/components/RatingPicker/tests/RatingPicker.spec.ts +187 -0
- package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +108 -0
- package/src/components/SearchListField/SearchListField.mdx +74 -0
- package/src/components/SearchListField/SearchListField.stories.ts +126 -0
- package/src/components/SearchListField/SearchListField.vue +194 -0
- package/src/components/SearchListField/locales.ts +5 -0
- package/src/components/SearchListField/tests/SearchListField.spec.ts +323 -0
- package/src/components/SearchListField/types.d.ts +4 -0
- package/src/components/SelectBtnField/SelectBtnField.mdx +50 -0
- package/src/components/SelectBtnField/SelectBtnField.stories.ts +763 -0
- package/src/components/SelectBtnField/SelectBtnField.vue +283 -0
- package/src/components/SelectBtnField/config.ts +11 -0
- package/src/components/SelectBtnField/tests/SelectBtnField.spec.ts +327 -0
- package/src/components/SelectBtnField/tests/__snapshots__/SelectBtnField.spec.ts.snap +125 -0
- package/src/components/SelectBtnField/types.d.ts +11 -0
- package/src/components/index.ts +8 -1
- package/src/composables/rules/useFieldValidation.ts +172 -44
- package/src/designTokens/index.ts +3 -3
- package/src/stories/Fondamentaux/CustomisationEtThemes.mdx +52 -2
- package/src/utils/calcHumanFileSize/index.ts +12 -0
- package/src/utils/calcHumanFileSize/tests/calcHumanFileSize.spec.ts +21 -0
package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`NumberPicker > renders correctly 1`] = `
|
|
4
|
+
"<fieldset data-v-30bbac4d="" class="vd-number-picker">
|
|
5
|
+
<legend data-v-30bbac4d="" class="d-sr-only">Pourriez-vous donner une note ?</legend>
|
|
6
|
+
<legend data-v-30bbac4d="" class="text-h6 mb-6">Pourriez-vous donner une note ?</legend>
|
|
7
|
+
<div data-v-30bbac4d="" class="d-inline-block">
|
|
8
|
+
<div data-v-30bbac4d="" class="v-rating v-theme--light d-flex flex-wrap max-width-none"><label for="v-rating-0-0" class=""><span class="v-rating__hidden">Rating 0 of 10</span>
|
|
9
|
+
<!---->
|
|
10
|
+
</label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-0" type="radio" checked="" tabindex="-1" value="0">
|
|
11
|
+
<div class="v-rating__wrapper">
|
|
12
|
+
<!---->
|
|
13
|
+
<div class="v-rating__item"><label for="v-rating-0-1" class=""><span class="v-rating__hidden">Rating 1 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 1 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
14
|
+
<!----><span class="v-btn__content" data-no-activator="">1</span>
|
|
15
|
+
<!---->
|
|
16
|
+
<!---->
|
|
17
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-1" type="radio" tabindex="-1" value="1"></div>
|
|
18
|
+
<!---->
|
|
19
|
+
</div>
|
|
20
|
+
<div class="v-rating__wrapper">
|
|
21
|
+
<!---->
|
|
22
|
+
<div class="v-rating__item"><label for="v-rating-0-2" class=""><span class="v-rating__hidden">Rating 2 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 2 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
23
|
+
<!----><span class="v-btn__content" data-no-activator="">2</span>
|
|
24
|
+
<!---->
|
|
25
|
+
<!---->
|
|
26
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-2" type="radio" tabindex="-1" value="2"></div>
|
|
27
|
+
<!---->
|
|
28
|
+
</div>
|
|
29
|
+
<div class="v-rating__wrapper">
|
|
30
|
+
<!---->
|
|
31
|
+
<div class="v-rating__item"><label for="v-rating-0-3" class=""><span class="v-rating__hidden">Rating 3 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 3 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
32
|
+
<!----><span class="v-btn__content" data-no-activator="">3</span>
|
|
33
|
+
<!---->
|
|
34
|
+
<!---->
|
|
35
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-3" type="radio" tabindex="-1" value="3"></div>
|
|
36
|
+
<!---->
|
|
37
|
+
</div>
|
|
38
|
+
<div class="v-rating__wrapper">
|
|
39
|
+
<!---->
|
|
40
|
+
<div class="v-rating__item"><label for="v-rating-0-4" class=""><span class="v-rating__hidden">Rating 4 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 4 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
41
|
+
<!----><span class="v-btn__content" data-no-activator="">4</span>
|
|
42
|
+
<!---->
|
|
43
|
+
<!---->
|
|
44
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-4" type="radio" tabindex="-1" value="4"></div>
|
|
45
|
+
<!---->
|
|
46
|
+
</div>
|
|
47
|
+
<div class="v-rating__wrapper">
|
|
48
|
+
<!---->
|
|
49
|
+
<div class="v-rating__item"><label for="v-rating-0-5" class=""><span class="v-rating__hidden">Rating 5 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 5 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
50
|
+
<!----><span class="v-btn__content" data-no-activator="">5</span>
|
|
51
|
+
<!---->
|
|
52
|
+
<!---->
|
|
53
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-5" type="radio" tabindex="-1" value="5"></div>
|
|
54
|
+
<!---->
|
|
55
|
+
</div>
|
|
56
|
+
<div class="v-rating__wrapper">
|
|
57
|
+
<!---->
|
|
58
|
+
<div class="v-rating__item"><label for="v-rating-0-6" class=""><span class="v-rating__hidden">Rating 6 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 6 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
59
|
+
<!----><span class="v-btn__content" data-no-activator="">6</span>
|
|
60
|
+
<!---->
|
|
61
|
+
<!---->
|
|
62
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-6" type="radio" tabindex="-1" value="6"></div>
|
|
63
|
+
<!---->
|
|
64
|
+
</div>
|
|
65
|
+
<div class="v-rating__wrapper">
|
|
66
|
+
<!---->
|
|
67
|
+
<div class="v-rating__item"><label for="v-rating-0-7" class=""><span class="v-rating__hidden">Rating 7 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 7 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
68
|
+
<!----><span class="v-btn__content" data-no-activator="">7</span>
|
|
69
|
+
<!---->
|
|
70
|
+
<!---->
|
|
71
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-7" type="radio" tabindex="-1" value="7"></div>
|
|
72
|
+
<!---->
|
|
73
|
+
</div>
|
|
74
|
+
<div class="v-rating__wrapper">
|
|
75
|
+
<!---->
|
|
76
|
+
<div class="v-rating__item"><label for="v-rating-0-8" class=""><span class="v-rating__hidden">Rating 8 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 8 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
77
|
+
<!----><span class="v-btn__content" data-no-activator="">8</span>
|
|
78
|
+
<!---->
|
|
79
|
+
<!---->
|
|
80
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-8" type="radio" tabindex="-1" value="8"></div>
|
|
81
|
+
<!---->
|
|
82
|
+
</div>
|
|
83
|
+
<div class="v-rating__wrapper">
|
|
84
|
+
<!---->
|
|
85
|
+
<div class="v-rating__item"><label for="v-rating-0-9" class=""><span class="v-rating__hidden">Rating 9 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 9 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
86
|
+
<!----><span class="v-btn__content" data-no-activator="">9</span>
|
|
87
|
+
<!---->
|
|
88
|
+
<!---->
|
|
89
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-9" type="radio" tabindex="-1" value="9"></div>
|
|
90
|
+
<!---->
|
|
91
|
+
</div>
|
|
92
|
+
<div class="v-rating__wrapper">
|
|
93
|
+
<!---->
|
|
94
|
+
<div class="v-rating__item"><label for="v-rating-0-10" class=""><span class="v-rating__hidden">Rating 10 of 10</span><button data-v-30bbac4d="" type="button" class="v-btn v-theme--light text-primary v-btn--density-default v-btn--size-x-small v-btn--variant-outlined text-body-2 pa-0 mr-2" style="height: 36px;" aria-label="Note de 10 sur 10."><span class="v-btn__overlay"></span><span class="v-btn__underlay"></span>
|
|
95
|
+
<!----><span class="v-btn__content" data-no-activator="">10</span>
|
|
96
|
+
<!---->
|
|
97
|
+
<!---->
|
|
98
|
+
</button></label><input class="v-rating__hidden" name="v-rating-0" id="v-rating-0-10" type="radio" tabindex="-1" value="10"></div>
|
|
99
|
+
<!---->
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
<!--v-if-->
|
|
103
|
+
</div>
|
|
104
|
+
</fieldset>"
|
|
105
|
+
`;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ref, computed } from 'vue'
|
|
2
|
+
|
|
3
|
+
export interface RatingInterface {
|
|
4
|
+
emitInputEvent(event: string | number): void
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum RatingEnum {
|
|
8
|
+
EMOTION = 'emotion',
|
|
9
|
+
NUMBER = 'number',
|
|
10
|
+
STARS = 'stars',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const RATING_ENUM_VALUES = Object.values(RatingEnum)
|
|
14
|
+
|
|
15
|
+
export enum AlertTypeEnum {
|
|
16
|
+
INFO = 'info',
|
|
17
|
+
SUCCESS = 'success',
|
|
18
|
+
WARNING = 'warning',
|
|
19
|
+
ERROR = 'error',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const ALERT_TYPE_ENUM_VALUES = Object.values(AlertTypeEnum)
|
|
23
|
+
|
|
24
|
+
export function useRating(props: {
|
|
25
|
+
label: string | null | undefined
|
|
26
|
+
readonly: boolean
|
|
27
|
+
modelValue: number
|
|
28
|
+
}, emit: (event: 'update:modelValue', value: number) => void) {
|
|
29
|
+
const internalValue = ref<number>(props.modelValue)
|
|
30
|
+
|
|
31
|
+
const hasAnswered = computed(() => internalValue.value !== -1)
|
|
32
|
+
|
|
33
|
+
function emitInputEvent(value: string | number): void {
|
|
34
|
+
if (!props.readonly) {
|
|
35
|
+
internalValue.value = typeof value === 'number' ? value : parseInt(value, 10)
|
|
36
|
+
emit('update:modelValue', internalValue.value) // Emit the updated value
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
internalValue,
|
|
42
|
+
hasAnswered,
|
|
43
|
+
emitInputEvent,
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {Canvas, Meta, Controls, Source} from '@storybook/blocks';
|
|
2
|
+
import * as RatingPickerStories from './RatingPicker.stories';
|
|
3
|
+
import RatingPicker from './RatingPicker.vue';
|
|
4
|
+
|
|
5
|
+
<Meta title="Composants/Feedback/RatingPicker" component={RatingPicker}/>
|
|
6
|
+
|
|
7
|
+
# RatingPicker
|
|
8
|
+
|
|
9
|
+
L’élément `RatingPicker` permet de recueillir l’avis d’un utilisateur.
|
|
10
|
+
|
|
11
|
+
<Canvas story={{height: '150px'}} of={RatingPickerStories.Default}/>
|
|
12
|
+
|
|
13
|
+
# API
|
|
14
|
+
|
|
15
|
+
<Controls of={RatingPickerStories.Default}/>
|
|
16
|
+
|
|
17
|
+
## Utilisation de base
|
|
18
|
+
|
|
19
|
+
<Source
|
|
20
|
+
dark
|
|
21
|
+
code={`
|
|
22
|
+
<script setup lang="ts">
|
|
23
|
+
import { ref } from 'vue'
|
|
24
|
+
import { RatingPicker } from '@cnamts/synapse'
|
|
25
|
+
|
|
26
|
+
const ratingEmotion = ref(-1)
|
|
27
|
+
const ratingNumber = ref(-1)
|
|
28
|
+
const ratingStars = ref(-1)
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<template>
|
|
32
|
+
{{ ratingEmotion }}
|
|
33
|
+
<RatingPicker
|
|
34
|
+
v-model="ratingEmotion"
|
|
35
|
+
label="Êtes-vous satisfait de ce service ?"
|
|
36
|
+
type="emotion"
|
|
37
|
+
/>
|
|
38
|
+
<br>
|
|
39
|
+
{{ ratingNumber }}
|
|
40
|
+
<RatingPicker
|
|
41
|
+
v-model="ratingNumber"
|
|
42
|
+
label="Êtes-vous satisfait de ce service ?"
|
|
43
|
+
type="number"
|
|
44
|
+
/>
|
|
45
|
+
<br>
|
|
46
|
+
{{ ratingStars }}
|
|
47
|
+
<RatingPicker
|
|
48
|
+
v-model="ratingStars"
|
|
49
|
+
label="Êtes-vous satisfait de ce service ?"
|
|
50
|
+
type="stars"
|
|
51
|
+
/>
|
|
52
|
+
</template>
|
|
53
|
+
`}
|
|
54
|
+
/>
|
|
55
|
+
|
|
56
|
+
|