@cnamts/synapse 1.0.11 → 1.0.13
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/{DateFilter-QEfKOz0P.js → DateFilter-_EFzsvvM.js} +1 -1
- package/dist/{NumberFilter-C0h7gVzp.js → NumberFilter-CUxEbKJh.js} +1 -1
- package/dist/{PeriodFilter-8dVrKjju.js → PeriodFilter-D5ueqtKy.js} +1 -1
- package/dist/{SelectFilter-BI3QGbqb.js → SelectFilter-BciBNydy.js} +1 -1
- package/dist/{TextFilter-UOp1hcPp.js → TextFilter-DMN_WAQB.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +2 -0
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
- package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +4 -0
- package/dist/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
- package/dist/components/Captcha/Captcha.d.ts +68 -0
- package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
- package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
- package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
- package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
- package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
- package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
- package/dist/components/Captcha/captchaApi.d.ts +41 -0
- package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
- package/dist/components/Captcha/locales.d.ts +35 -0
- package/dist/components/Captcha/types.d.ts +2 -0
- package/dist/components/ChipList/ChipList.d.ts +2 -2
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +14 -14
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +5 -5
- package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -16
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +96 -68
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +63 -38
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +23 -27
- package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -1
- package/dist/components/DatePicker/tests/setup.d.ts +816 -520
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +10 -10
- package/dist/components/NirField/NirField.d.ts +31 -34
- package/dist/components/NirField/locales.d.ts +1 -3
- package/dist/components/PasswordField/PasswordField.d.ts +2 -0
- package/dist/components/PeriodField/PeriodField.d.ts +192 -128
- package/dist/components/PhoneField/PhoneField.d.ts +13 -17
- package/dist/components/SearchListField/SearchListField.d.ts +5 -5
- package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -8
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -8
- package/dist/components/Tables/common/SyTablePagination.d.ts +5 -5
- package/dist/components/Tables/common/types.d.ts +4 -0
- package/dist/components/Tables/common/usePagination.d.ts +3 -4
- package/dist/components/Tables/common/useTableCheckbox.d.ts +10 -6
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/validation/useFormValidation.d.ts +10 -0
- package/dist/composables/validation/useValidatable.d.ts +10 -2
- package/dist/design-system-v3.js +126 -125
- package/dist/design-system-v3.umd.cjs +265 -265
- package/dist/main-DISHlqcd.js +34217 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/assets/overrides/_forms.scss +2 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +7 -4
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +1 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +574 -112
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -1
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +6 -3
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -1
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +175 -0
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +88 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +423 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/{tests → __tests__}/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +112 -78
- package/src/components/Amelipro/AmeliproChips/__tests__/AmeliproChips.spec.ts +92 -0
- package/src/components/Amelipro/AmeliproChips/__tests__/__snapshots__/AmeliproChips.spec.ts.snap +81 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/AmeliproDialog.spec.ts +257 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +61 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/AmeliproDisclosure.spec.ts +79 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/__snapshots__/AmeliproDisclosure.spec.ts.snap +89 -0
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
- package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
- package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
- package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +81 -9
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +139 -61
- package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +10 -0
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +361 -187
- package/src/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/src/components/Captcha/Captcha.mdx +72 -0
- package/src/components/Captcha/Captcha.stories.ts +276 -0
- package/src/components/Captcha/Captcha.vue +325 -0
- package/src/components/Captcha/CaptchaAlert.vue +60 -0
- package/src/components/Captcha/CaptchaBase.vue +219 -0
- package/src/components/Captcha/CaptchaBtn.vue +35 -0
- package/src/components/Captcha/CaptchaForm.vue +58 -0
- package/src/components/Captcha/CaptchaImg.vue +41 -0
- package/src/components/Captcha/CaptchaInformation.vue +64 -0
- package/src/components/Captcha/captchaApi.ts +111 -0
- package/src/components/Captcha/icons/volumeUp.vue +11 -0
- package/src/components/Captcha/locales.ts +35 -0
- package/src/components/Captcha/readme.md +5 -0
- package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
- package/src/components/Captcha/types.ts +2 -0
- package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
- package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
- package/src/components/Customs/SyForm/SyForm.vue +17 -1
- package/src/components/Customs/SyTextField/SyTextField.vue +29 -7
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +32 -9
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +154 -18
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +2 -2
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +35 -4
- package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +107 -72
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +6 -6
- package/src/components/DatePicker/composables/useDatePickerViewMode.ts +57 -7
- package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +14 -14
- package/src/components/DatePicker/tests/navigation.regression.spec.ts +74 -0
- package/src/components/DatePicker/tests/navigation.simple.spec.ts +137 -0
- package/src/components/NirField/NirField.stories.ts +85 -2
- package/src/components/NirField/NirField.vue +55 -18
- package/src/components/NirField/locales.ts +1 -3
- package/src/components/PasswordField/PasswordField.vue +39 -7
- package/src/components/PhoneField/PhoneField.vue +43 -10
- package/src/components/RangeField/tests/RangeField.spec.ts +0 -3
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +15 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +309 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +18 -3
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
- package/src/components/Tables/SyTable/SyTable.mdx +15 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +228 -0
- package/src/components/Tables/SyTable/SyTable.vue +18 -3
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +63 -0
- package/src/components/Tables/common/SyTablePagination.vue +10 -8
- package/src/components/Tables/common/types.ts +4 -0
- package/src/components/Tables/common/usePagination.ts +11 -20
- package/src/components/Tables/common/useTableCheckbox.ts +23 -11
- package/src/components/index.ts +1 -0
- package/src/composables/validation/AvecVosComposants.mdx.old +1 -1
- package/src/composables/validation/FormValidation.stories.ts.old +5 -5
- package/src/composables/validation/useFormValidation.ts +46 -8
- package/src/composables/validation/useValidatable.ts +19 -8
- package/src/stories/Accessibilite/Introduction.mdx +1 -1
- package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +43 -0
- package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +239 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.mdx +39 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.stories.ts +261 -0
- package/dist/main-DyEOPqqn.js +0 -33329
- package/src/components/Amelipro/AmeliproCheckbox/tests/AmeliproCheckbox.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproCheckbox/tests/__snapshots__/AmeliproCheckbox.spec.ts.snap +0 -40
- package/src/components/Amelipro/AmeliproCheckboxGroup/tests/AmeliproCheckboxGroup.spec.ts +0 -46
- package/src/components/Amelipro/AmeliproChips/tests/AmeliproChips.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +0 -97
- package/src/components/Amelipro/AmeliproDialog/tests/AmeliproDialog.spec.ts +0 -24
- package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +0 -134
- package/src/components/Amelipro/AmeliproDisclosure/tests/AmeliproDisclosure.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +0 -104
- package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
- package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
- package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
- package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
- package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
- package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +0 -45
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +0 -1270
- package/src/stories/Demarrer/CreerUneIssue.mdx +0 -67
- package/src/stories/Demarrer/components.stories.ts +0 -25
|
@@ -3,12 +3,16 @@ import { provide, inject, ref, type InjectionKey, type Ref } from 'vue'
|
|
|
3
3
|
// Type pour les composants pouvant être validés
|
|
4
4
|
export interface ValidatableComponent {
|
|
5
5
|
validateOnSubmit: () => Promise<boolean> | boolean
|
|
6
|
+
clearValidation?: () => void
|
|
7
|
+
reset?: () => void
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
// Clé d'injection pour le registre des composants validables
|
|
9
11
|
const ValidatableComponentsKey: InjectionKey<{
|
|
10
12
|
register: (component: ValidatableComponent) => void
|
|
11
13
|
unregister: (component: ValidatableComponent) => void
|
|
14
|
+
clearAll: () => void
|
|
15
|
+
resetAll: () => void
|
|
12
16
|
components: Ref<ValidatableComponent[]>
|
|
13
17
|
}> = Symbol('ValidatableComponents')
|
|
14
18
|
|
|
@@ -29,23 +33,55 @@ export function useFormValidation() {
|
|
|
29
33
|
|
|
30
34
|
// Fonction pour supprimer un composant validable du registre
|
|
31
35
|
const unregister = (component: ValidatableComponent) => {
|
|
32
|
-
|
|
36
|
+
// Prefer direct reference removal
|
|
37
|
+
let index = validatableComponents.value.indexOf(component)
|
|
38
|
+
// Fallback: locate by matching validateOnSubmit reference
|
|
39
|
+
if (index === -1) {
|
|
40
|
+
index = validatableComponents.value.findIndex(c => c.validateOnSubmit === component.validateOnSubmit)
|
|
41
|
+
}
|
|
33
42
|
if (index !== -1) {
|
|
34
43
|
validatableComponents.value.splice(index, 1)
|
|
35
44
|
}
|
|
36
45
|
}
|
|
37
46
|
|
|
47
|
+
// Fonction pour nettoyer les validations de tous les composants enregistrés
|
|
48
|
+
const clearAll = () => {
|
|
49
|
+
if (validatableComponents.value.length === 0) return
|
|
50
|
+
validatableComponents.value.forEach((component) => {
|
|
51
|
+
try {
|
|
52
|
+
component.clearValidation?.()
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// no-op: un composant peut ne pas implémenter clearValidation
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const resetAll = () => {
|
|
61
|
+
if (validatableComponents.value.length === 0) return
|
|
62
|
+
validatableComponents.value.forEach((component) => {
|
|
63
|
+
try {
|
|
64
|
+
component.reset?.()
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// no-op: un composant peut ne pas implémenter reset
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
|
|
38
72
|
// Fournir le registre aux composants enfants
|
|
39
73
|
provide(ValidatableComponentsKey, {
|
|
40
74
|
register,
|
|
41
75
|
unregister,
|
|
76
|
+
clearAll,
|
|
77
|
+
resetAll,
|
|
42
78
|
components: validatableComponents,
|
|
43
79
|
})
|
|
44
80
|
|
|
45
81
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
82
|
+
* Valide tous les composants enfants enregistrés
|
|
83
|
+
* @returns Promise<boolean> - true si tous les composants sont valides
|
|
84
|
+
*/
|
|
49
85
|
const validateAll = async (): Promise<boolean> => {
|
|
50
86
|
if (validatableComponents.value.length === 0) {
|
|
51
87
|
return true
|
|
@@ -65,6 +101,8 @@ export function useFormValidation() {
|
|
|
65
101
|
return {
|
|
66
102
|
validateAll,
|
|
67
103
|
validatableComponents,
|
|
104
|
+
clearAll,
|
|
105
|
+
resetAll,
|
|
68
106
|
}
|
|
69
107
|
}
|
|
70
108
|
|
|
@@ -73,19 +111,19 @@ export function useFormValidation() {
|
|
|
73
111
|
* @returns Fonction pour s'enregistrer et se désinscrire du formulaire parent
|
|
74
112
|
*/
|
|
75
113
|
export function useValidatableComponent() {
|
|
76
|
-
// Récupérer le registre du formulaire parent
|
|
77
114
|
const formRegistry = inject(ValidatableComponentsKey, null)
|
|
78
|
-
|
|
79
|
-
// Si le composant n'est pas dans un formulaire avec useFormValidation, ne rien faire
|
|
80
115
|
if (!formRegistry) {
|
|
81
116
|
return {
|
|
82
117
|
register: () => {},
|
|
83
118
|
unregister: () => {},
|
|
119
|
+
clearAll: () => {},
|
|
120
|
+
resetAll: () => {},
|
|
84
121
|
}
|
|
85
122
|
}
|
|
86
|
-
|
|
87
123
|
return {
|
|
88
124
|
register: formRegistry.register,
|
|
89
125
|
unregister: formRegistry.unregister,
|
|
126
|
+
clearAll: formRegistry.clearAll,
|
|
127
|
+
resetAll: formRegistry.resetAll,
|
|
90
128
|
}
|
|
91
129
|
}
|
|
@@ -14,26 +14,37 @@ import { useValidatableComponent } from './useFormValidation'
|
|
|
14
14
|
* return isValid
|
|
15
15
|
* }
|
|
16
16
|
*
|
|
17
|
+
* const clearValidation = () => {
|
|
18
|
+
* // Logique de nettoyage de la validation
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* const reset = () => {
|
|
22
|
+
* // Logique de réinitialisation
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
17
25
|
* // Enregistrer le composant auprès du formulaire parent
|
|
18
|
-
* useValidatable(validateOnSubmit)
|
|
26
|
+
* useValidatable(validateOnSubmit, clearValidation, reset)
|
|
19
27
|
*/
|
|
20
|
-
export function useValidatable(
|
|
28
|
+
export function useValidatable(
|
|
29
|
+
validateMethod: () => Promise<boolean> | boolean,
|
|
30
|
+
clearValidation?: () => void,
|
|
31
|
+
reset?: () => void,
|
|
32
|
+
) {
|
|
21
33
|
const { register, unregister } = useValidatableComponent()
|
|
22
34
|
const instance = getCurrentInstance()
|
|
23
35
|
|
|
36
|
+
// Keep a stable object reference for register/unregister symmetry
|
|
37
|
+
const componentRef = { validateOnSubmit: validateMethod, clearValidation, reset }
|
|
38
|
+
|
|
24
39
|
onMounted(() => {
|
|
25
40
|
if (instance) {
|
|
26
|
-
register(
|
|
27
|
-
validateOnSubmit: validateMethod,
|
|
28
|
-
})
|
|
41
|
+
register(componentRef)
|
|
29
42
|
}
|
|
30
43
|
})
|
|
31
44
|
|
|
32
45
|
onBeforeUnmount(() => {
|
|
33
46
|
if (instance) {
|
|
34
|
-
unregister(
|
|
35
|
-
validateOnSubmit: validateMethod,
|
|
36
|
-
})
|
|
47
|
+
unregister(componentRef)
|
|
37
48
|
}
|
|
38
49
|
})
|
|
39
50
|
|
|
@@ -220,7 +220,7 @@ Pour répondre aux objectifs de mise en conformité des interfaces utilisateurs
|
|
|
220
220
|
<div>
|
|
221
221
|
<h3>Besoin d'accompagnement ?</h3>
|
|
222
222
|
<p>Si vous avez besoin d'un accompagnement sur le sujet, merci de prendre contact avec <a href="mailto:valentin.becquet@assurance-maladie.fr">valentin.becquet@assurance-maladie.fr</a>.</p>
|
|
223
|
-
<p>Pour toute remontée de problème liée à l'accessibilité, veuillez <a href="
|
|
223
|
+
<p>Pour toute remontée de problème liée à l'accessibilité, veuillez <a href="/?path=/docs/démarrer-signaler-une-anomalie--docs">signaler un problème d'accessibilité</a>.</p>
|
|
224
224
|
</div>
|
|
225
225
|
</div>
|
|
226
226
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {Meta, Story} from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as ComponentStories from './EnrichirLeDesignSystem.stories.ts';
|
|
3
|
+
import '../styles/shared.css';
|
|
4
|
+
|
|
5
|
+
<Meta title="Démarrer/Enrichir le Design System"/>
|
|
6
|
+
|
|
7
|
+
<div className="header">
|
|
8
|
+
<h1>Enrichir le Design System</h1>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
## Introduction
|
|
12
|
+
|
|
13
|
+
Le Design System de l'Assurance Maladie est un projet vivant qui évolue constamment pour répondre aux besoins des utilisateurs et aux avancées technologiques.<br/>
|
|
14
|
+
Votre contribution est essentielle pour garantir que le Design System reste pertinent, accessible et efficace.<br/>
|
|
15
|
+
Toute demande ne sera pas nécessairement intégrée, mais chaque suggestion est examinée avec attention par l'équipe du Studio Design.
|
|
16
|
+
|
|
17
|
+
<Story of={ComponentStories.InfoIntro}/>
|
|
18
|
+
|
|
19
|
+
<a id="exigences" />
|
|
20
|
+
## Exigences requises pour acceptation d'un nouveau composant ou d'une nouvelle fonctionnalité
|
|
21
|
+
|
|
22
|
+
1. Être **conforme aux exigences de la charte graphique** de la CNAM (tokens associés).
|
|
23
|
+
2. Avoir un **intérêt d'usage pour plusieurs produits** de l'Assurance Maladie (une justification métier peut être demandée).
|
|
24
|
+
3. Avoir un **intérêt d'usage ou de pertinence** par rapport aux **composants de la bibliothèque Vuetify**.
|
|
25
|
+
4. Avoir un **intérêt d'usage ou de pertinence** par rapport aux **composants existant du Design System**.
|
|
26
|
+
5. Doit permettre la **responsivité**.
|
|
27
|
+
6. Doit permettre le **respect du Référentiel général d'amélioration de l'accessibilité** (RGAA).
|
|
28
|
+
7. Doit permettre aux produits utilisateurs du composant de respecter des **bonnes pratiques d’éco-conception**.
|
|
29
|
+
8. Doit permettre la **maintenabilité du composant**.
|
|
30
|
+
9. Ne doit pas engendrer de **conflit** ou **régression** avec l'existant.
|
|
31
|
+
10. Doit se conformer aux **exigences techniques** du Design System et à son bon fonctionnement sur le Starter Kit (VueJS 3, version des plugins...).
|
|
32
|
+
|
|
33
|
+
## Créer une nouvelle demande
|
|
34
|
+
|
|
35
|
+
<Story of={ComponentStories.Optimisation}/>
|
|
36
|
+
|
|
37
|
+
<Story of={ComponentStories.AjoutFonctionnalite}/>
|
|
38
|
+
|
|
39
|
+
<Story of={ComponentStories.DeclinaisonFonctionnalite}/>
|
|
40
|
+
|
|
41
|
+
<Story of={ComponentStories.CreationComposant}/>
|
|
42
|
+
|
|
43
|
+
<Story of={ComponentStories.IntegrationComposant}/>
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText } from 'vuetify/components'
|
|
2
|
+
import SyAlert from '../../components/SyAlert/SyAlert.vue'
|
|
3
|
+
import '../styles/shared.css'
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Démarrer/Enrichir le Design System',
|
|
7
|
+
component: SyAlert,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const InfoIntro = {
|
|
11
|
+
render: () => {
|
|
12
|
+
return {
|
|
13
|
+
components: { SyAlert },
|
|
14
|
+
setup() {
|
|
15
|
+
return {}
|
|
16
|
+
},
|
|
17
|
+
template: `
|
|
18
|
+
<SyAlert type="info" variant="tonal" :closable="false">
|
|
19
|
+
<template #default>
|
|
20
|
+
Toutes les demandes d'enrichissement sont traitées au fil de l'eau en fonction de la disponibilité de l'activité.<br/>Une première estimation sur le délai de livraison de la solution sera annoncée au moment de sa qualification.
|
|
21
|
+
</template>
|
|
22
|
+
</SyAlert>
|
|
23
|
+
`,
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
tags: ['!dev'],
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const Optimisation = {
|
|
30
|
+
render: () => {
|
|
31
|
+
return {
|
|
32
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText },
|
|
33
|
+
setup() {
|
|
34
|
+
return {}
|
|
35
|
+
},
|
|
36
|
+
template: `
|
|
37
|
+
<v-expansion-panels class="mt-6">
|
|
38
|
+
<v-expansion-panel>
|
|
39
|
+
<v-expansion-panel-title>
|
|
40
|
+
<p class="text-h5 text-primary">Ajout d'une optimisation</p>
|
|
41
|
+
</v-expansion-panel-title>
|
|
42
|
+
<v-expansion-panel-text>
|
|
43
|
+
<table>
|
|
44
|
+
<thead>
|
|
45
|
+
<tr style="background-color: rgb(12 65 154 / 10%)">
|
|
46
|
+
<th style="width: 60%">Description</th>
|
|
47
|
+
<th>Action</th>
|
|
48
|
+
</tr>
|
|
49
|
+
</thead>
|
|
50
|
+
<tbody>
|
|
51
|
+
<tr>
|
|
52
|
+
<td style="padding: 10px">L'optimisation est proposée en vue d'améliorer la qualité générale du design system.<br/>
|
|
53
|
+
Elle concerne soit un composant, une fonctionnalité spécifique associée, une page de documentation, une bonne pratique.<br/>
|
|
54
|
+
L'optimisation n'est pas indispensable au bon fonctionnement du projet. Si c'est le cas, merci de compléter l'anomalie fonctionnelle de niveau majeure.</td>
|
|
55
|
+
<td style="text-align: center;">
|
|
56
|
+
<v-btn style="text-decoration: none; color: rgb(2, 156, 253);" href="https://github.com/assurance-maladie-digital/design-system-v3/issues/new?template=optimisation.md" target="_blank">
|
|
57
|
+
Créer un ticket
|
|
58
|
+
</v-btn>
|
|
59
|
+
</td>
|
|
60
|
+
</tr>
|
|
61
|
+
</tbody>
|
|
62
|
+
</table>
|
|
63
|
+
</v-expansion-panel-text>
|
|
64
|
+
</v-expansion-panel>
|
|
65
|
+
</v-expansion-panels>
|
|
66
|
+
`,
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
tags: ['!dev'],
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const AjoutFonctionnalite = {
|
|
73
|
+
render: () => {
|
|
74
|
+
return {
|
|
75
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText },
|
|
76
|
+
setup() {
|
|
77
|
+
return {}
|
|
78
|
+
},
|
|
79
|
+
template: `
|
|
80
|
+
<v-expansion-panels class="mt-2">
|
|
81
|
+
<v-expansion-panel>
|
|
82
|
+
<v-expansion-panel-title>
|
|
83
|
+
<p class="text-h5 text-primary">Ajout d'une fonctionnalité</p>
|
|
84
|
+
</v-expansion-panel-title>
|
|
85
|
+
<v-expansion-panel-text>
|
|
86
|
+
<table>
|
|
87
|
+
<thead>
|
|
88
|
+
<tr style="background-color: rgb(12 65 154 / 10%)">
|
|
89
|
+
<th style="width: 60%">Description</th>
|
|
90
|
+
<th>Action</th>
|
|
91
|
+
</tr>
|
|
92
|
+
</thead>
|
|
93
|
+
<tbody>
|
|
94
|
+
<tr>
|
|
95
|
+
<td style="padding: 10px">Le Studio Design conçoit et fabrique entièrement une nouvelle fonctionnalité dans l'API du composant. Si le besoin concerne l'enrichissement d'une fonctionnalité déjà existante, merci d'utiliser le parcours "déclinaison d'une fonctionnalité".
|
|
96
|
+
Cette demande doit être justifiée par un besoin du métier et soumise à l'accord du chef de projet du projet associée.<br/>
|
|
97
|
+
Pour être recevable, les <a style="text-decoration: none; color: rgb(2, 156, 253);" href="#exigences" target="_self">critères d'acceptabilité</a> de la nouvelle fonctionnalité sont respectés.</td>
|
|
98
|
+
<td style="text-align: center;">
|
|
99
|
+
<v-btn style="text-decoration: none; color: rgb(2, 156, 253);" href="https://github.com/assurance-maladie-digital/design-system-v3/issues/new?template=feature_new.md" target="_blank">
|
|
100
|
+
Créer un ticket
|
|
101
|
+
</v-btn>
|
|
102
|
+
</td>
|
|
103
|
+
</tr>
|
|
104
|
+
</tbody>
|
|
105
|
+
</table>
|
|
106
|
+
</v-expansion-panel-text>
|
|
107
|
+
</v-expansion-panel>
|
|
108
|
+
</v-expansion-panels>
|
|
109
|
+
`,
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
tags: ['!dev'],
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export const DeclinaisonFonctionnalite = {
|
|
116
|
+
render: () => {
|
|
117
|
+
return {
|
|
118
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText },
|
|
119
|
+
setup() {
|
|
120
|
+
return {}
|
|
121
|
+
},
|
|
122
|
+
template: `
|
|
123
|
+
<v-expansion-panels class="mt-2">
|
|
124
|
+
<v-expansion-panel>
|
|
125
|
+
<v-expansion-panel-title>
|
|
126
|
+
<p class="text-h5 text-primary">Déclinaison d'une fonctionnalité</p>
|
|
127
|
+
</v-expansion-panel-title>
|
|
128
|
+
<v-expansion-panel-text>
|
|
129
|
+
<table>
|
|
130
|
+
<thead>
|
|
131
|
+
<tr style="background-color: rgb(12 65 154 / 10%)">
|
|
132
|
+
<th style="width: 60%">Description</th>
|
|
133
|
+
<th>Action</th>
|
|
134
|
+
</tr>
|
|
135
|
+
</thead>
|
|
136
|
+
<tbody>
|
|
137
|
+
<tr>
|
|
138
|
+
<td style="padding: 10px">Le Studio Design améliore une fonctionnalité existante d'un composant.<br/>
|
|
139
|
+
Pour être recevable, les <a style="text-decoration: none; color: rgb(2, 156, 253);" href="#exigences" target="_self">critères d'acceptabilité</a> de la nouvelle fonctionnalité sont respectés.</td>
|
|
140
|
+
<td style="text-align: center;">
|
|
141
|
+
<v-btn style="text-decoration: none; color: rgb(2, 156, 253);" href="https://github.com/assurance-maladie-digital/design-system-v3/issues/new?template=feature_declinaison.md" target="_blank">
|
|
142
|
+
Créer un ticket
|
|
143
|
+
</v-btn>
|
|
144
|
+
</td>
|
|
145
|
+
</tr>
|
|
146
|
+
</tbody>
|
|
147
|
+
</table>
|
|
148
|
+
</v-expansion-panel-text>
|
|
149
|
+
</v-expansion-panel>
|
|
150
|
+
</v-expansion-panels>
|
|
151
|
+
`,
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
tags: ['!dev'],
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export const CreationComposant = {
|
|
158
|
+
render: () => {
|
|
159
|
+
return {
|
|
160
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText },
|
|
161
|
+
setup() {
|
|
162
|
+
return {}
|
|
163
|
+
},
|
|
164
|
+
template: `
|
|
165
|
+
<v-expansion-panels class="mt-2">
|
|
166
|
+
<v-expansion-panel>
|
|
167
|
+
<v-expansion-panel-title>
|
|
168
|
+
<p class="text-h5 text-primary">Création d'un composant</p>
|
|
169
|
+
</v-expansion-panel-title>
|
|
170
|
+
<v-expansion-panel-text>
|
|
171
|
+
<table>
|
|
172
|
+
<thead>
|
|
173
|
+
<tr style="background-color: rgb(12 65 154 / 10%)">
|
|
174
|
+
<th style="width: 60%">Description</th>
|
|
175
|
+
<th>Action</th>
|
|
176
|
+
</tr>
|
|
177
|
+
</thead>
|
|
178
|
+
<tbody>
|
|
179
|
+
<tr>
|
|
180
|
+
<td style="padding: 10px">Le Studio Design conçoit et fabrique entièrement le composant et la documentation associée. Il met à disposition sa maquette à destination des designers sur l'outil de maquettage Figma.<br/>
|
|
181
|
+
Pour être recevable, les <a style="text-decoration: none; color: rgb(2, 156, 253);" href="#exigences" target="_self">critères d'acceptabilité</a> du nouveau composant sont respectés.</td>
|
|
182
|
+
<td style="text-align: center;">
|
|
183
|
+
<v-btn style="text-decoration: none; color: rgb(2, 156, 253);" href="https://github.com/assurance-maladie-digital/design-system-v3/issues/new?template=component_new.md" target="_blank">
|
|
184
|
+
Créer un ticket
|
|
185
|
+
</v-btn>
|
|
186
|
+
</td>
|
|
187
|
+
</tr>
|
|
188
|
+
</tbody>
|
|
189
|
+
</table>
|
|
190
|
+
</v-expansion-panel-text>
|
|
191
|
+
</v-expansion-panel>
|
|
192
|
+
</v-expansion-panels>
|
|
193
|
+
`,
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
tags: ['!dev'],
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export const IntegrationComposant = {
|
|
200
|
+
render: () => {
|
|
201
|
+
return {
|
|
202
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText },
|
|
203
|
+
setup() {
|
|
204
|
+
return {}
|
|
205
|
+
},
|
|
206
|
+
template: `
|
|
207
|
+
<v-expansion-panels class="mt-2">
|
|
208
|
+
<v-expansion-panel>
|
|
209
|
+
<v-expansion-panel-title>
|
|
210
|
+
<p class="text-h5 text-primary">Intégration d'un composant</p>
|
|
211
|
+
</v-expansion-panel-title>
|
|
212
|
+
<v-expansion-panel-text>
|
|
213
|
+
<table>
|
|
214
|
+
<thead>
|
|
215
|
+
<tr style="background-color: rgb(12 65 154 / 10%)">
|
|
216
|
+
<th style="width: 60%">Description</th>
|
|
217
|
+
<th>Action</th>
|
|
218
|
+
</tr>
|
|
219
|
+
</thead>
|
|
220
|
+
<tbody>
|
|
221
|
+
<tr>
|
|
222
|
+
<td style="padding: 10px">Le composant est fabriqué en VueJS 3 et sur Figma par un projet puis intégré par le Studio Design dans le design system.<br/>Le Studio Design se charge de fabriquer la documentation associée.<br/>
|
|
223
|
+
Pour être recevable, les <a style="text-decoration: none; color: rgb(2, 156, 253);" href="#exigences" target="_self">critères d'acceptabilité</a> du nouveau composant sont respectés.</td>
|
|
224
|
+
<td style="text-align: center;">
|
|
225
|
+
<v-btn style="text-decoration: none; color: rgb(2, 156, 253);" href="https://github.com/assurance-maladie-digital/design-system-v3/issues/new?template=component_integration.md" target="_blank">
|
|
226
|
+
Créer un ticket
|
|
227
|
+
</v-btn>
|
|
228
|
+
</td>
|
|
229
|
+
</tr>
|
|
230
|
+
</tbody>
|
|
231
|
+
</table>
|
|
232
|
+
</v-expansion-panel-text>
|
|
233
|
+
</v-expansion-panel>
|
|
234
|
+
</v-expansion-panels>
|
|
235
|
+
`,
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
tags: ['!dev'],
|
|
239
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {Meta, Story} from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as ComponentStories from './SignalerUneAnomalie.stories.ts';
|
|
3
|
+
import '../styles/shared.css';
|
|
4
|
+
|
|
5
|
+
<Meta of={ComponentStories}/>
|
|
6
|
+
|
|
7
|
+
<div className="header">
|
|
8
|
+
<h1>Signaler une anomalie</h1>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
## Introduction
|
|
12
|
+
|
|
13
|
+
Les anomalies sont un moyen essentiel d'améliorer le Design System de la CNAM.
|
|
14
|
+
Lorsque vous constatez une anomalie, vous pouvez la signaler ici, l'équipe du Studio Design l'examinera et prendra les mesures appropriées.
|
|
15
|
+
Ce guide vous explique comment rédiger correctement une anomalie.
|
|
16
|
+
|
|
17
|
+
<Story of={ComponentStories.InfoIntro}/>
|
|
18
|
+
|
|
19
|
+
## Créer une anomalie
|
|
20
|
+
|
|
21
|
+
<Story of={ComponentStories.AnomalieGraphique}/>
|
|
22
|
+
|
|
23
|
+
<Story of={ComponentStories.AnomalieFonctionnelle}/>
|
|
24
|
+
|
|
25
|
+
<Story of={ComponentStories.AnomalieAccessibilite}/>
|
|
26
|
+
|
|
27
|
+
<Story of={ComponentStories.AnomalieDocumentaire}/>
|
|
28
|
+
|
|
29
|
+
## Bonnes pratiques
|
|
30
|
+
|
|
31
|
+
<Story of={ComponentStories.InfoPratiques}/>
|
|
32
|
+
|
|
33
|
+
1. **Soyez précis** : Donnez autant de détails pertinents que possible
|
|
34
|
+
2. **Un problème par issue** : Ne mélangez pas plusieurs problèmes dans une seule issue
|
|
35
|
+
3. **Utilisez les labels** : Ajoutez les labels appropriés pour faciliter le tri et la priorisation
|
|
36
|
+
4. **Vérifiez les doublons** : Avant de créer une nouvelle issue, vérifiez si elle n'existe pas déjà en cherchant dans
|
|
37
|
+
les [rapports existants](https://github.com/assurance-maladie-digital/design-system-v3/issues)
|
|
38
|
+
5. **Soyez constructif** : Restez professionnel et focalisé sur la résolution du problème
|
|
39
|
+
6. **Vérifiez la version du package utilisé** : Le bug est-il toujours présent dans la dernière version du package concerné ?
|