@cnamts/synapse 1.0.25 → 1.0.26
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/{AutocompleteFilter-D7qBuCAP.js → AutocompleteFilter-BPR-a55G.js} +1 -1
- package/dist/{DateFilter-BitMWrMU.js → DateFilter-CknrJWs2.js} +2 -2
- package/dist/{NumberFilter-BTLUxw0a.js → NumberFilter-DJ-yNlzv.js} +1 -1
- package/dist/{PeriodFilter-B5rUIPAC.js → PeriodFilter-CiB5Oa9Z.js} +1 -1
- package/dist/{SelectFilter-l4QnRcuk.js → SelectFilter-EiafX97M.js} +1 -1
- package/dist/{TextFilter-C9hj6Qrp.js → TextFilter-BzOmpdxj.js} +1 -1
- package/dist/{apLightTheme-DnIM24Lv.js → apLightTheme-DS0Uy44H.js} +20 -16
- package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +4 -2
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +60 -289
- package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +1 -0
- package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1 -0
- package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1 -0
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +2 -4
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +50 -49
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +29 -28
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +8 -8
- package/dist/components/DatePicker/composables/useDatePickerState.d.ts +3 -3
- package/dist/components/DatePicker/composables/useDateTextField.d.ts +2 -2
- package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
- package/dist/components/DatePicker/types.d.ts +1 -2
- package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +1 -0
- package/dist/components/MonthPicker/MonthPicker.d.ts +1 -1
- package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +1 -1
- package/dist/components/NirField/NirField.d.ts +8 -4
- package/dist/components/NirField/useNirValidation.d.ts +6 -2
- package/dist/components/PeriodField/PeriodField.d.ts +102 -102
- package/dist/components/PhoneField/PhoneField.d.ts +11 -1
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +0 -3
- package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
- package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +4 -3
- package/dist/components/RatingPicker/RatingPicker.d.ts +18 -5
- package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
- package/dist/components/RatingPicker/tests/RatingPicker.a11y.spect.d.ts +1 -0
- package/dist/components/RatingPicker/useRatingFocus.d.ts +18 -0
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +4 -4
- package/dist/components/Tables/SyTable/SyTable.d.ts +4 -4
- package/dist/components/Tables/common/SyTablePagination.d.ts +152 -364
- package/dist/components/Tables/common/TableHeader.d.ts +1 -1
- package/dist/components/Tables/common/filters/DateFilter.d.ts +4 -4
- package/dist/composables/date/useDateInitializationDayjs.d.ts +3 -1
- package/dist/composables/unifyValidation/useCustomValidation.d.ts +3 -1
- package/dist/composables/unifyValidation/useValidation.d.ts +12 -6
- package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +1 -1
- package/dist/composables/validation/useValidation.d.ts +1 -0
- package/dist/design-system-v3.js +2 -2
- package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +2 -0
- package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +2 -0
- package/dist/{main-Cpx8Co6H.js → main-BsJ9ec3i.js} +9103 -9018
- package/dist/synapse.css +1 -1
- package/dist/vuetifyConfig.js +1 -1
- package/package.json +8 -7
- package/src/assets/overrides/_icons.scss +0 -13
- package/src/assets/overrides/_otp.scss +0 -1
- package/src/components/Accordion/Accordion.vue +2 -0
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -1
- package/src/components/CookiesSelection/CookiesSelection.vue +2 -1
- package/src/components/CopyBtn/CopyBtn.vue +9 -0
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +1 -1
- package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +413 -96
- package/src/components/Customs/Selects/SySelect/SySelect.vue +270 -225
- package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +245 -6
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +3 -3
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +23 -2
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +23 -5
- package/src/components/Customs/SyTabs/SyTabs.stories.ts +5 -5
- package/src/components/Customs/SyTabs/config.ts +3 -3
- package/src/components/Customs/SyTextField/SyTextField.vue +31 -4
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +1 -1
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +17 -14
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +8 -7
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +1 -1
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +1 -1
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +57 -23
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +1 -1
- package/src/components/DatePicker/composables/useDatePickerState.ts +33 -14
- package/src/components/DatePicker/composables/useDateRangeInput.ts +2 -1
- package/src/components/DatePicker/composables/useDateSelection.ts +2 -1
- package/src/components/DatePicker/composables/useDateTextField.ts +2 -2
- package/src/components/DatePicker/composables/useInputBlurHandler.ts +2 -2
- package/src/components/DatePicker/types.ts +1 -2
- package/src/components/DialogBox/DialogBox.stories.ts +8 -8
- package/src/components/DialogBox/accessibilite/Accessibility.mdx +86 -22
- package/src/components/FilterSideBar/FilterSideBar.vue +2 -1
- package/src/components/LangBtn/LangBtn.vue +2 -1
- package/src/components/NotificationBar/Notification/Notification.vue +2 -2
- package/src/components/PaginatedTable/PaginatedTable.vue +1 -1
- package/src/components/PaginatedTable/Pagination.vue +1 -1
- package/src/components/PasswordField/PasswordField.vue +7 -3
- package/src/components/PhoneField/PhoneField.vue +4 -2
- package/src/components/RangeField/RangeSlider/RangeSlider.vue +11 -18
- package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +32 -48
- package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +5 -0
- package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +48 -53
- package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +2 -1
- package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +40 -13
- package/src/components/RatingPicker/RatingPicker.stories.ts +65 -88
- package/src/components/RatingPicker/RatingPicker.vue +71 -15
- package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +28 -37
- package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +1 -1
- package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +5 -0
- package/src/components/RatingPicker/accessibilite/Accessibility.mdx +137 -9
- package/src/components/RatingPicker/tests/RatingPicker.a11y.spect.ts +123 -0
- package/src/components/RatingPicker/tests/RatingPicker.spec.ts +3 -2
- package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +40 -11
- package/src/components/RatingPicker/useRatingFocus.ts +97 -0
- package/src/components/SyTextArea/SyTextArea.vue +32 -1
- package/src/components/Tables/SyServerTable/SyServerTable.vue +1 -1
- package/src/components/Tables/SyTable/SyTable.vue +1 -1
- package/src/components/Tables/common/SyTableFilter.vue +4 -4
- package/src/components/Tables/common/SyTablePagination.vue +1 -0
- package/src/components/Tables/common/TableHeader.vue +1 -1
- package/src/components/Tables/common/filters/DateFilter.vue +2 -2
- package/src/composables/date/tests/useDateFormatDayjs.spec.ts +81 -0
- package/src/composables/date/tests/{useDateInitialization.spec.ts → useDateInitializationDayjs.spec.ts} +39 -3
- package/src/composables/date/useDateInitializationDayjs.ts +4 -1
- package/src/composables/unifyValidation/documentationValidationProps.ts +7 -7
- package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +2 -1
- package/src/composables/unifyValidation/tests/useValidation.spec.ts +22 -0
- package/src/composables/unifyValidation/useCustomValidation.ts +16 -4
- package/src/composables/unifyValidation/useValidation.ts +46 -15
- package/src/composables/unifyValidation/useVuetifyValidation.ts +2 -2
- package/src/composables/useFormFieldErrorHandling.ts +4 -1
- package/src/composables/validation/tests/useValidation.spec.ts +2 -2
- package/src/composables/validation/useValidation.ts +15 -3
- package/src/composantsVuetify/VCard/VCard.mdx +59 -0
- package/src/composantsVuetify/VCard/v-card.stories.ts +279 -0
- package/src/designTokens/tokens/amelipro/apColors2026.ts +1 -1
- package/src/designTokens/tokens/amelipro/apLightTheme.ts +3 -0
- package/src/designTokens/tokens/cnam/cnamLightTheme.ts +3 -0
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +61 -91
- package/src/stories/Accessibilite/AuditDesignSystem.mdx +5 -8
- package/src/stories/Accessibilite/AuditEtContreAudit/Exemptions-derogations.mdx +1 -1
- package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +11 -8
- package/src/stories/Accessibilite/AuditEtContreAudit/RGAA.mdx +6 -7
- package/src/stories/Accessibilite/Introduction.mdx +30 -30
- package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +168 -78
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +13 -6
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +66 -45
- package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +23 -49
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +6 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/Utilisation.mdx +7 -19
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +18 -20
- package/src/stories/Components/Components.stories.ts +52 -3
- package/dist/AutocompleteFilter-Df9i5mAl.cjs +0 -1
- package/dist/DateFilter-BJD6FMev.cjs +0 -1
- package/dist/NumberFilter-DGCzCXzI.cjs +0 -1
- package/dist/PeriodFilter-DO_ecTZW.cjs +0 -1
- package/dist/SelectFilter-CGwcKWLm.cjs +0 -1
- package/dist/TextFilter-B8nf7xoK.cjs +0 -1
- package/dist/apLightTheme-CEK4iY3f.cjs +0 -1
- package/dist/composables/date/useDateFormat.d.ts +0 -26
- package/dist/composables/date/useDateInitialization.d.ts +0 -18
- package/dist/design-system-v3.umd.cjs +0 -1
- package/dist/main-ByDPHpae.cjs +0 -1067
- package/dist/tooth-11-D3sLWv2n.cjs +0 -1
- package/dist/tooth-12-CXrLuH03.cjs +0 -1
- package/dist/tooth-13-BSfo5fpT.cjs +0 -1
- package/dist/tooth-14-DMzulx0h.cjs +0 -1
- package/dist/tooth-15-BKRFVi-9.cjs +0 -1
- package/dist/tooth-16-CpuxAbuM.cjs +0 -1
- package/dist/tooth-17-BPoahUdg.cjs +0 -1
- package/dist/tooth-18-DhHJz8sy.cjs +0 -1
- package/dist/tooth-21-Dgd5hn_X.cjs +0 -1
- package/dist/tooth-22-C2Tn19sB.cjs +0 -1
- package/dist/tooth-23-C9uaaSGb.cjs +0 -1
- package/dist/tooth-24-BrK9UGpf.cjs +0 -1
- package/dist/tooth-25-CE_EfGNp.cjs +0 -1
- package/dist/tooth-26-Ctv4i9Fy.cjs +0 -1
- package/dist/tooth-27-C5J7JkWM.cjs +0 -1
- package/dist/tooth-28-Z9oWqjo0.cjs +0 -1
- package/dist/tooth-31-BrYqmkTi.cjs +0 -1
- package/dist/tooth-32-BNNR0oCZ.cjs +0 -1
- package/dist/tooth-33-DuxvqO2J.cjs +0 -1
- package/dist/tooth-34-BCSCXMB6.cjs +0 -1
- package/dist/tooth-35-BLUXkX88.cjs +0 -1
- package/dist/tooth-36-IrKHYqlA.cjs +0 -1
- package/dist/tooth-37-BYqpdMwo.cjs +0 -1
- package/dist/tooth-38-B_eNXXdu.cjs +0 -1
- package/dist/tooth-41-Ddva4Ot8.cjs +0 -1
- package/dist/tooth-42-szcDqlM0.cjs +0 -1
- package/dist/tooth-43-B3ka6rQm.cjs +0 -1
- package/dist/tooth-44-CazyQucj.cjs +0 -1
- package/dist/tooth-45-B4HQtc8n.cjs +0 -1
- package/dist/tooth-46-BPM40gbG.cjs +0 -1
- package/dist/tooth-47-Dvr20dlh.cjs +0 -1
- package/dist/tooth-48-Bd8ljGsF.cjs +0 -1
- package/dist/tooth-51-OBpwCOF3.cjs +0 -1
- package/dist/tooth-52-aKxyHcmq.cjs +0 -1
- package/dist/tooth-53-vCwJjTOc.cjs +0 -1
- package/dist/tooth-54-DsWu2iFy.cjs +0 -1
- package/dist/tooth-55-BxC1X2Dn.cjs +0 -1
- package/dist/tooth-61-BbLvxMQi.cjs +0 -1
- package/dist/tooth-62-CmTkWczP.cjs +0 -1
- package/dist/tooth-63-DI7l_2qI.cjs +0 -1
- package/dist/tooth-64-B21sOsJh.cjs +0 -1
- package/dist/tooth-65-D2ZC2VEr.cjs +0 -1
- package/dist/tooth-71-D473PPO5.cjs +0 -1
- package/dist/tooth-72-Drh1wnNu.cjs +0 -1
- package/dist/tooth-73-DzlwYI23.cjs +0 -1
- package/dist/tooth-74-8aGvcZPg.cjs +0 -1
- package/dist/tooth-75-BFK7At_r.cjs +0 -1
- package/dist/tooth-81-BZmR-I0M.cjs +0 -1
- package/dist/tooth-82-euVfUUZV.cjs +0 -1
- package/dist/tooth-83-KV010j64.cjs +0 -1
- package/dist/tooth-84-BBg1RjhZ.cjs +0 -1
- package/dist/tooth-85-Cr-kc1wM.cjs +0 -1
- package/dist/vuetifyConfig.umd.cjs +0 -1
- package/src/composables/date/tests/useDateFormat.spec.ts +0 -67
- package/src/composables/date/useDateFormat.ts +0 -110
- package/src/composables/date/useDateInitialization.ts +0 -92
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import { computed, onMounted,
|
|
3
|
-
import { RatingEnum, useRating } from '../Rating'
|
|
2
|
+
import { computed, onMounted, toRef } from 'vue'
|
|
4
3
|
import { locales } from './locales'
|
|
5
4
|
import type { PropType } from 'vue'
|
|
6
5
|
import type { ItemType } from '@/components/Customs/Selects/SySelect/SySelect.vue'
|
|
7
|
-
|
|
6
|
+
import { useRatingFocus } from '../useRatingFocus'
|
|
8
7
|
import SySelect from '@/components/Customs/Selects/SySelect/SySelect.vue'
|
|
9
|
-
|
|
10
8
|
import { useDisplay } from 'vuetify'
|
|
9
|
+
import { RatingEnum, useRating } from '../Rating'
|
|
11
10
|
|
|
12
11
|
interface SelectItem extends ItemType {
|
|
13
12
|
text: string
|
|
@@ -44,52 +43,48 @@
|
|
|
44
43
|
const { hasAnswered, emitInputEvent } = useRating(props, emit)
|
|
45
44
|
|
|
46
45
|
const selectItems = computed<SelectItem[]>(() => {
|
|
47
|
-
|
|
46
|
+
const length = props.length ?? 10
|
|
47
|
+
|
|
48
|
+
return [...Array(length)].map((_, index) => ({
|
|
48
49
|
text: `${index + 1}`,
|
|
49
50
|
value: index + 1,
|
|
50
51
|
}))
|
|
51
52
|
})
|
|
52
53
|
|
|
54
|
+
onMounted(() => {
|
|
55
|
+
if (!isMobile.value) {
|
|
56
|
+
initFocus()
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
|
|
53
60
|
const shouldDisplayLabels = computed(() => props.itemLabels.length === 2)
|
|
54
61
|
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
const {
|
|
63
|
+
ratingElement,
|
|
64
|
+
initFocus,
|
|
65
|
+
selectAndFocus,
|
|
66
|
+
focusNextElement,
|
|
67
|
+
focusPrevElement,
|
|
68
|
+
focus,
|
|
69
|
+
} = useRatingFocus({
|
|
70
|
+
length: toRef(props, 'length'),
|
|
71
|
+
modelValue: toRef(props, 'modelValue'),
|
|
72
|
+
selectValue: emitInputEvent,
|
|
73
|
+
wrap: true,
|
|
74
|
+
})
|
|
62
75
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const prevElem = ratingElement.value?.[prevIndex]
|
|
67
|
-
prevElem?.focus()
|
|
68
|
-
}
|
|
76
|
+
defineExpose({
|
|
77
|
+
focus,
|
|
78
|
+
})
|
|
69
79
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (i === index) {
|
|
73
|
-
el.setAttribute('tabindex', '0')
|
|
74
|
-
el.focus()
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
el.setAttribute('tabindex', '-1')
|
|
78
|
-
}
|
|
79
|
-
})
|
|
80
|
+
if (!isMobile.value) {
|
|
81
|
+
initFocus()
|
|
80
82
|
}
|
|
81
|
-
|
|
82
|
-
onMounted(() => {
|
|
83
|
-
ratingElement.value[0]?.setAttribute('tabindex', '0')
|
|
84
|
-
for (let i = 1; i < ratingElement.value.length; i++) {
|
|
85
|
-
ratingElement.value[i]?.setAttribute('tabindex', '-1')
|
|
86
|
-
}
|
|
87
|
-
})
|
|
88
83
|
</script>
|
|
89
84
|
|
|
90
85
|
<template>
|
|
91
86
|
<fieldset class="sy-number-picker">
|
|
92
|
-
<legend class="d-sr-only">
|
|
87
|
+
<legend :class="isMobile ? 'd-sr-only' : 'text-h6 mb-6'">
|
|
93
88
|
<slot name="label">
|
|
94
89
|
{{ props.label }}
|
|
95
90
|
</slot>
|
|
@@ -103,11 +98,6 @@
|
|
|
103
98
|
@update:model-value="(value) => emit('update:modelValue', value)"
|
|
104
99
|
/>
|
|
105
100
|
<template v-else>
|
|
106
|
-
<legend class="text-h6 mb-6">
|
|
107
|
-
<slot name="label">
|
|
108
|
-
{{ props.label }}
|
|
109
|
-
</slot>
|
|
110
|
-
</legend>
|
|
111
101
|
<div
|
|
112
102
|
v-if="!hasAnswered"
|
|
113
103
|
class="d-inline-block"
|
|
@@ -122,19 +112,22 @@
|
|
|
122
112
|
ref="ratingElement"
|
|
123
113
|
v-ripple="!(props.readonly || hasAnswered)"
|
|
124
114
|
role="radio"
|
|
125
|
-
:
|
|
126
|
-
:aria-
|
|
115
|
+
:tabindex="-1"
|
|
116
|
+
:aria-checked="props.modelValue === index ? 'true' : 'false'"
|
|
127
117
|
class="sy-number-picker__item text-body-2 pa-0"
|
|
128
118
|
:aria-disabled="(props.readonly || hasAnswered) ? 'true' : undefined"
|
|
129
|
-
@click="
|
|
130
|
-
@
|
|
131
|
-
@
|
|
132
|
-
@
|
|
133
|
-
@
|
|
134
|
-
@
|
|
135
|
-
@
|
|
119
|
+
@click="selectAndFocus(index - 1)"
|
|
120
|
+
@keydown.enter.prevent="selectAndFocus(index - 1)"
|
|
121
|
+
@keydown.space.prevent="selectAndFocus(index - 1)"
|
|
122
|
+
@keydown.right.prevent="focusNextElement(index - 1)"
|
|
123
|
+
@keydown.left.prevent="focusPrevElement(index - 1)"
|
|
124
|
+
@keydown.up.prevent="focusPrevElement(index - 1)"
|
|
125
|
+
@keydown.down.prevent="focusNextElement(index - 1)"
|
|
136
126
|
>
|
|
137
127
|
{{ index }}
|
|
128
|
+
<span class="d-sr-only">
|
|
129
|
+
{{ locales.ariaLabel(index, props.length) }}
|
|
130
|
+
</span>
|
|
138
131
|
</div>
|
|
139
132
|
</div>
|
|
140
133
|
<div
|
|
@@ -159,15 +152,17 @@
|
|
|
159
152
|
</div>
|
|
160
153
|
<div
|
|
161
154
|
v-else
|
|
162
|
-
:aria-label="locales.ariaLabel(props.modelValue, props.length)"
|
|
163
155
|
class="mb-0 d-flex align-center"
|
|
164
156
|
>
|
|
157
|
+
<span class="d-sr-only">
|
|
158
|
+
{{ locales.ariaLabel(props.modelValue, props.length) }}
|
|
159
|
+
</span>
|
|
165
160
|
<div
|
|
166
161
|
class="sy-btn-answer text-body-2 mr-1 pa-0"
|
|
167
162
|
>
|
|
168
163
|
{{ props.modelValue }}
|
|
169
164
|
</div>
|
|
170
|
-
<span>
|
|
165
|
+
<span aria-hidden="true">
|
|
171
166
|
/ {{ props.length }}
|
|
172
167
|
</span>
|
|
173
168
|
</div>
|
|
@@ -206,7 +201,7 @@
|
|
|
206
201
|
user-select: none;
|
|
207
202
|
}
|
|
208
203
|
|
|
209
|
-
.sy-number-picker__item[disabled] {
|
|
204
|
+
.sy-number-picker__item[aria-disabled='true'] {
|
|
210
205
|
pointer-events: none;
|
|
211
206
|
opacity: 0.26;
|
|
212
207
|
|
|
@@ -15,7 +15,8 @@ describe('NumberPicker', () => {
|
|
|
15
15
|
|
|
16
16
|
expect(btns).toHaveLength(10)
|
|
17
17
|
btns.forEach((btn, i) => {
|
|
18
|
-
expect(btn.text()).
|
|
18
|
+
expect(btn.text()).toContain((i + 1).toString())
|
|
19
|
+
expect(btn.attributes('aria-checked')).toBe('false')
|
|
19
20
|
})
|
|
20
21
|
expect(wrapper.html()).toMatchSnapshot()
|
|
21
22
|
})
|
package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`NumberPicker > renders correctly 1`] = `
|
|
4
4
|
<fieldset class="sy-number-picker">
|
|
5
|
-
<legend class="d-sr-only">
|
|
6
|
-
Pourriez-vous donner une note ?
|
|
7
|
-
</legend>
|
|
8
5
|
<legend class="
|
|
9
6
|
mb-6
|
|
10
7
|
text-h6
|
|
@@ -22,7 +19,7 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
22
19
|
role="radiogroup"
|
|
23
20
|
>
|
|
24
21
|
<div
|
|
25
|
-
aria-
|
|
22
|
+
aria-checked="false"
|
|
26
23
|
class="
|
|
27
24
|
pa-0
|
|
28
25
|
sy-number-picker__item
|
|
@@ -32,9 +29,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
32
29
|
tabindex="0"
|
|
33
30
|
>
|
|
34
31
|
1
|
|
32
|
+
<span class="d-sr-only">
|
|
33
|
+
Note de 1 sur 10.
|
|
34
|
+
</span>
|
|
35
35
|
</div>
|
|
36
36
|
<div
|
|
37
|
-
aria-
|
|
37
|
+
aria-checked="false"
|
|
38
38
|
class="
|
|
39
39
|
pa-0
|
|
40
40
|
sy-number-picker__item
|
|
@@ -44,9 +44,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
44
44
|
tabindex="-1"
|
|
45
45
|
>
|
|
46
46
|
2
|
|
47
|
+
<span class="d-sr-only">
|
|
48
|
+
Note de 2 sur 10.
|
|
49
|
+
</span>
|
|
47
50
|
</div>
|
|
48
51
|
<div
|
|
49
|
-
aria-
|
|
52
|
+
aria-checked="false"
|
|
50
53
|
class="
|
|
51
54
|
pa-0
|
|
52
55
|
sy-number-picker__item
|
|
@@ -56,9 +59,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
56
59
|
tabindex="-1"
|
|
57
60
|
>
|
|
58
61
|
3
|
|
62
|
+
<span class="d-sr-only">
|
|
63
|
+
Note de 3 sur 10.
|
|
64
|
+
</span>
|
|
59
65
|
</div>
|
|
60
66
|
<div
|
|
61
|
-
aria-
|
|
67
|
+
aria-checked="false"
|
|
62
68
|
class="
|
|
63
69
|
pa-0
|
|
64
70
|
sy-number-picker__item
|
|
@@ -68,9 +74,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
68
74
|
tabindex="-1"
|
|
69
75
|
>
|
|
70
76
|
4
|
|
77
|
+
<span class="d-sr-only">
|
|
78
|
+
Note de 4 sur 10.
|
|
79
|
+
</span>
|
|
71
80
|
</div>
|
|
72
81
|
<div
|
|
73
|
-
aria-
|
|
82
|
+
aria-checked="false"
|
|
74
83
|
class="
|
|
75
84
|
pa-0
|
|
76
85
|
sy-number-picker__item
|
|
@@ -80,9 +89,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
80
89
|
tabindex="-1"
|
|
81
90
|
>
|
|
82
91
|
5
|
|
92
|
+
<span class="d-sr-only">
|
|
93
|
+
Note de 5 sur 10.
|
|
94
|
+
</span>
|
|
83
95
|
</div>
|
|
84
96
|
<div
|
|
85
|
-
aria-
|
|
97
|
+
aria-checked="false"
|
|
86
98
|
class="
|
|
87
99
|
pa-0
|
|
88
100
|
sy-number-picker__item
|
|
@@ -92,9 +104,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
92
104
|
tabindex="-1"
|
|
93
105
|
>
|
|
94
106
|
6
|
|
107
|
+
<span class="d-sr-only">
|
|
108
|
+
Note de 6 sur 10.
|
|
109
|
+
</span>
|
|
95
110
|
</div>
|
|
96
111
|
<div
|
|
97
|
-
aria-
|
|
112
|
+
aria-checked="false"
|
|
98
113
|
class="
|
|
99
114
|
pa-0
|
|
100
115
|
sy-number-picker__item
|
|
@@ -104,9 +119,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
104
119
|
tabindex="-1"
|
|
105
120
|
>
|
|
106
121
|
7
|
|
122
|
+
<span class="d-sr-only">
|
|
123
|
+
Note de 7 sur 10.
|
|
124
|
+
</span>
|
|
107
125
|
</div>
|
|
108
126
|
<div
|
|
109
|
-
aria-
|
|
127
|
+
aria-checked="false"
|
|
110
128
|
class="
|
|
111
129
|
pa-0
|
|
112
130
|
sy-number-picker__item
|
|
@@ -116,9 +134,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
116
134
|
tabindex="-1"
|
|
117
135
|
>
|
|
118
136
|
8
|
|
137
|
+
<span class="d-sr-only">
|
|
138
|
+
Note de 8 sur 10.
|
|
139
|
+
</span>
|
|
119
140
|
</div>
|
|
120
141
|
<div
|
|
121
|
-
aria-
|
|
142
|
+
aria-checked="false"
|
|
122
143
|
class="
|
|
123
144
|
pa-0
|
|
124
145
|
sy-number-picker__item
|
|
@@ -128,9 +149,12 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
128
149
|
tabindex="-1"
|
|
129
150
|
>
|
|
130
151
|
9
|
|
152
|
+
<span class="d-sr-only">
|
|
153
|
+
Note de 9 sur 10.
|
|
154
|
+
</span>
|
|
131
155
|
</div>
|
|
132
156
|
<div
|
|
133
|
-
aria-
|
|
157
|
+
aria-checked="false"
|
|
134
158
|
class="
|
|
135
159
|
pa-0
|
|
136
160
|
sy-number-picker__item
|
|
@@ -140,6 +164,9 @@ exports[`NumberPicker > renders correctly 1`] = `
|
|
|
140
164
|
tabindex="-1"
|
|
141
165
|
>
|
|
142
166
|
10
|
|
167
|
+
<span class="d-sr-only">
|
|
168
|
+
Note de 10 sur 10.
|
|
169
|
+
</span>
|
|
143
170
|
</div>
|
|
144
171
|
</div>
|
|
145
172
|
<!-- v-if -->
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { StoryObj, Meta } from '@storybook/vue3'
|
|
2
2
|
import RatingPicker from './RatingPicker.vue'
|
|
3
|
-
import SySelect from '@/components/Customs/Selects/SySelect/SySelect.vue'
|
|
4
3
|
import { VBtn, VSpacer } from 'vuetify/components'
|
|
5
4
|
import { fn } from '@storybook/test'
|
|
5
|
+
import SyTextArea from '../SyTextArea/SyTextArea.vue'
|
|
6
6
|
|
|
7
7
|
const meta = {
|
|
8
8
|
title: 'Composants/Feedback/RatingPicker',
|
|
@@ -100,6 +100,16 @@ const meta = {
|
|
|
100
100
|
},
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
|
+
freeTextLabel: {
|
|
104
|
+
description: 'Le libellé du champ de texte libre. Ajouter aria-label ou aria-labelledby au <textarea> : <textarea :aria-label="props.freeTextLabel" …> . Ce champ doit être utilisé en slot pour être pris en compte. Voir l’exemple de la story "DefaultSlot".',
|
|
105
|
+
control: 'text',
|
|
106
|
+
default: null,
|
|
107
|
+
table: {
|
|
108
|
+
type: {
|
|
109
|
+
summary: 'string | null',
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
103
113
|
},
|
|
104
114
|
} satisfies Meta<typeof RatingPicker>
|
|
105
115
|
|
|
@@ -132,9 +142,6 @@ export const Default: Story = {
|
|
|
132
142
|
}
|
|
133
143
|
},
|
|
134
144
|
parameters: {
|
|
135
|
-
a11y: {
|
|
136
|
-
disable: true,
|
|
137
|
-
},
|
|
138
145
|
sourceCode: [
|
|
139
146
|
{
|
|
140
147
|
name: 'Template',
|
|
@@ -185,9 +192,6 @@ export const TwoEmotions: Story = {
|
|
|
185
192
|
}
|
|
186
193
|
},
|
|
187
194
|
parameters: {
|
|
188
|
-
a11y: {
|
|
189
|
-
disable: true,
|
|
190
|
-
},
|
|
191
195
|
sourceCode: [
|
|
192
196
|
{
|
|
193
197
|
name: 'Template',
|
|
@@ -238,9 +242,6 @@ export const Numbers: Story = {
|
|
|
238
242
|
}
|
|
239
243
|
},
|
|
240
244
|
parameters: {
|
|
241
|
-
a11y: {
|
|
242
|
-
disable: true,
|
|
243
|
-
},
|
|
244
245
|
sourceCode: [
|
|
245
246
|
{
|
|
246
247
|
name: 'Template',
|
|
@@ -290,9 +291,6 @@ export const Stars: Story = {
|
|
|
290
291
|
}
|
|
291
292
|
},
|
|
292
293
|
parameters: {
|
|
293
|
-
a11y: {
|
|
294
|
-
disable: true,
|
|
295
|
-
},
|
|
296
294
|
sourceCode: [
|
|
297
295
|
{
|
|
298
296
|
name: 'Template',
|
|
@@ -343,9 +341,6 @@ export const ReadOnly: Story = {
|
|
|
343
341
|
}
|
|
344
342
|
},
|
|
345
343
|
parameters: {
|
|
346
|
-
a11y: {
|
|
347
|
-
disable: true,
|
|
348
|
-
},
|
|
349
344
|
sourceCode: [
|
|
350
345
|
{
|
|
351
346
|
name: 'Template',
|
|
@@ -397,9 +392,6 @@ export const HideAlert: Story = {
|
|
|
397
392
|
}
|
|
398
393
|
},
|
|
399
394
|
parameters: {
|
|
400
|
-
a11y: {
|
|
401
|
-
disable: true,
|
|
402
|
-
},
|
|
403
395
|
sourceCode: [
|
|
404
396
|
{
|
|
405
397
|
name: 'Template',
|
|
@@ -436,54 +428,42 @@ export const DefaultSlot: Story = {
|
|
|
436
428
|
'readonly': false,
|
|
437
429
|
'twoEmotions': false,
|
|
438
430
|
'hideAlert': false,
|
|
439
|
-
'modelValue':
|
|
440
|
-
'
|
|
441
|
-
|
|
431
|
+
'modelValue': 2,
|
|
432
|
+
'freeTextLabel': 'Pouvez-vous nous en dire plus ?',
|
|
433
|
+
'onUpdate:modelValue': fn() },
|
|
442
434
|
render: (args) => {
|
|
443
435
|
return {
|
|
444
|
-
components: { RatingPicker,
|
|
436
|
+
components: { RatingPicker, VBtn, VSpacer, SyTextArea },
|
|
445
437
|
setup() {
|
|
446
|
-
|
|
447
|
-
{
|
|
448
|
-
text: 'Via une recherche internet',
|
|
449
|
-
value: 'internet',
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
text: 'Via un professionnel de santé',
|
|
453
|
-
value: 'professional',
|
|
454
|
-
},
|
|
455
|
-
{
|
|
456
|
-
text: 'Via un ami',
|
|
457
|
-
value: 'friend',
|
|
458
|
-
},
|
|
459
|
-
]
|
|
460
|
-
return { args, items }
|
|
438
|
+
return { args }
|
|
461
439
|
},
|
|
462
440
|
template: `
|
|
463
|
-
|
|
464
|
-
<
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
441
|
+
<RatingPicker v-bind="args" v-model="args.modelValue">
|
|
442
|
+
<div class="mt-8">
|
|
443
|
+
|
|
444
|
+
<SyTextArea
|
|
445
|
+
id="rating-picker-comment"
|
|
446
|
+
class="w-100 pa-3"
|
|
447
|
+
:label="args.freeTextLabel"
|
|
448
|
+
rows="4"
|
|
449
|
+
/>
|
|
471
450
|
|
|
472
|
-
<
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
451
|
+
<div class="d-flex mt-4">
|
|
452
|
+
<VSpacer />
|
|
453
|
+
|
|
454
|
+
<VBtn
|
|
455
|
+
right
|
|
456
|
+
color="primary"
|
|
457
|
+
>
|
|
458
|
+
Terminé
|
|
459
|
+
</VBtn>
|
|
460
|
+
</div>
|
|
478
461
|
</div>
|
|
479
462
|
</RatingPicker>
|
|
480
|
-
|
|
463
|
+
`,
|
|
481
464
|
}
|
|
482
465
|
},
|
|
483
466
|
parameters: {
|
|
484
|
-
a11y: {
|
|
485
|
-
disable: true,
|
|
486
|
-
},
|
|
487
467
|
sourceCode: [
|
|
488
468
|
{
|
|
489
469
|
name: 'Template',
|
|
@@ -493,52 +473,49 @@ export const DefaultSlot: Story = {
|
|
|
493
473
|
v-model="ratingEmotion"
|
|
494
474
|
label="Êtes-vous satisfait de ce service ?"
|
|
495
475
|
type="emotion"
|
|
476
|
+
:free-text-label="'Pouvez-vous nous en dire plus ?'"
|
|
496
477
|
>
|
|
497
|
-
<
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
/>
|
|
502
|
-
<div class="d-flex">
|
|
503
|
-
<VSpacer/>
|
|
504
|
-
|
|
505
|
-
<VBtn
|
|
506
|
-
right
|
|
507
|
-
color="primary"
|
|
478
|
+
<div class="mt-8">
|
|
479
|
+
<label
|
|
480
|
+
for="rating-picker-comment"
|
|
481
|
+
class="d-block mb-2"
|
|
508
482
|
>
|
|
509
|
-
|
|
510
|
-
</
|
|
483
|
+
{{ freeTextLabel }}
|
|
484
|
+
</label>
|
|
485
|
+
|
|
486
|
+
<textarea
|
|
487
|
+
id="rating-picker-comment"
|
|
488
|
+
class="w-100 pa-3"
|
|
489
|
+
rows="4"
|
|
490
|
+
/>
|
|
491
|
+
|
|
492
|
+
<div class="d-flex mt-4">
|
|
493
|
+
<VSpacer />
|
|
494
|
+
|
|
495
|
+
<VBtn
|
|
496
|
+
right
|
|
497
|
+
color="primary"
|
|
498
|
+
>
|
|
499
|
+
Terminé
|
|
500
|
+
</VBtn>
|
|
501
|
+
</div>
|
|
511
502
|
</div>
|
|
512
503
|
</RatingPicker>
|
|
513
504
|
</template>
|
|
514
|
-
|
|
505
|
+
`,
|
|
515
506
|
},
|
|
516
507
|
{
|
|
517
508
|
name: 'Script',
|
|
518
509
|
code: `
|
|
519
510
|
<script setup lang="ts">
|
|
520
511
|
import { ref } from 'vue'
|
|
521
|
-
import { RatingPicker
|
|
512
|
+
import { RatingPicker } from '@cnamts/synapse'
|
|
522
513
|
import { VBtn, VSpacer } from 'vuetify/components'
|
|
523
514
|
|
|
524
|
-
const ratingEmotion = ref(
|
|
525
|
-
|
|
526
|
-
const items = [
|
|
527
|
-
{
|
|
528
|
-
text: 'Via une recherche internet',
|
|
529
|
-
value: 'internet'
|
|
530
|
-
},
|
|
531
|
-
{
|
|
532
|
-
text: 'Via un professionnel de santé',
|
|
533
|
-
value: 'professional'
|
|
534
|
-
},
|
|
535
|
-
{
|
|
536
|
-
text: 'Via un ami',
|
|
537
|
-
value: 'friend'
|
|
538
|
-
}
|
|
539
|
-
]
|
|
515
|
+
const ratingEmotion = ref(2)
|
|
516
|
+
const freeTextLabel = 'Pouvez-vous nous en dire plus ?'
|
|
540
517
|
</script>
|
|
541
|
-
|
|
518
|
+
`,
|
|
542
519
|
},
|
|
543
520
|
],
|
|
544
521
|
},
|