@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.
Files changed (200) hide show
  1. package/dist/{DateFilter-QEfKOz0P.js → DateFilter-_EFzsvvM.js} +1 -1
  2. package/dist/{NumberFilter-C0h7gVzp.js → NumberFilter-CUxEbKJh.js} +1 -1
  3. package/dist/{PeriodFilter-8dVrKjju.js → PeriodFilter-D5ueqtKy.js} +1 -1
  4. package/dist/{SelectFilter-BI3QGbqb.js → SelectFilter-BciBNydy.js} +1 -1
  5. package/dist/{TextFilter-UOp1hcPp.js → TextFilter-DMN_WAQB.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +7 -3
  7. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
  8. package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +2 -0
  9. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +7 -3
  10. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
  11. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +50 -68
  12. package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
  13. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
  14. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
  15. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  16. package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
  17. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
  18. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
  19. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +50 -68
  20. package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +4 -0
  21. package/dist/components/Amelipro/AmeliproTable/types.d.ts +11 -0
  22. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +50 -68
  23. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
  24. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
  25. package/dist/components/Captcha/Captcha.d.ts +68 -0
  26. package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
  27. package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
  28. package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
  29. package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
  30. package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
  31. package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
  32. package/dist/components/Captcha/captchaApi.d.ts +41 -0
  33. package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
  34. package/dist/components/Captcha/locales.d.ts +35 -0
  35. package/dist/components/Captcha/types.d.ts +2 -0
  36. package/dist/components/ChipList/ChipList.d.ts +2 -2
  37. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +14 -14
  38. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +5 -5
  39. package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
  40. package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -16
  41. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +96 -68
  42. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +63 -38
  43. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +23 -27
  44. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -1
  45. package/dist/components/DatePicker/tests/setup.d.ts +816 -520
  46. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +10 -10
  47. package/dist/components/NirField/NirField.d.ts +31 -34
  48. package/dist/components/NirField/locales.d.ts +1 -3
  49. package/dist/components/PasswordField/PasswordField.d.ts +2 -0
  50. package/dist/components/PeriodField/PeriodField.d.ts +192 -128
  51. package/dist/components/PhoneField/PhoneField.d.ts +13 -17
  52. package/dist/components/SearchListField/SearchListField.d.ts +5 -5
  53. package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
  54. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -8
  55. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -8
  56. package/dist/components/Tables/common/SyTablePagination.d.ts +5 -5
  57. package/dist/components/Tables/common/types.d.ts +4 -0
  58. package/dist/components/Tables/common/usePagination.d.ts +3 -4
  59. package/dist/components/Tables/common/useTableCheckbox.d.ts +10 -6
  60. package/dist/components/index.d.ts +1 -0
  61. package/dist/composables/validation/useFormValidation.d.ts +10 -0
  62. package/dist/composables/validation/useValidatable.d.ts +10 -2
  63. package/dist/design-system-v3.js +126 -125
  64. package/dist/design-system-v3.umd.cjs +265 -265
  65. package/dist/main-DISHlqcd.js +34217 -0
  66. package/dist/style.css +1 -1
  67. package/package.json +1 -1
  68. package/src/assets/overrides/_forms.scss +2 -0
  69. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +7 -4
  70. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +2 -0
  71. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +1 -0
  72. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +574 -112
  73. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +5 -2
  74. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -1
  75. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +6 -3
  76. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +2 -0
  77. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +5 -2
  78. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -1
  79. package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +175 -0
  80. package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +88 -0
  81. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +423 -0
  82. package/src/components/Amelipro/AmeliproCheckboxGroup/{tests → __tests__}/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +112 -78
  83. package/src/components/Amelipro/AmeliproChips/__tests__/AmeliproChips.spec.ts +92 -0
  84. package/src/components/Amelipro/AmeliproChips/__tests__/__snapshots__/AmeliproChips.spec.ts.snap +81 -0
  85. package/src/components/Amelipro/AmeliproDialog/__tests__/AmeliproDialog.spec.ts +257 -0
  86. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +61 -0
  87. package/src/components/Amelipro/AmeliproDisclosure/__tests__/AmeliproDisclosure.spec.ts +79 -0
  88. package/src/components/Amelipro/AmeliproDisclosure/__tests__/__snapshots__/AmeliproDisclosure.spec.ts.snap +89 -0
  89. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
  90. package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
  91. package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
  92. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
  93. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
  94. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
  95. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
  96. package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
  97. package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
  98. package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
  99. package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
  100. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
  101. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
  102. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
  103. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
  104. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
  105. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
  106. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
  107. package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +81 -9
  108. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +139 -61
  109. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +10 -0
  110. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +361 -187
  111. package/src/components/Amelipro/AmeliproTable/types.d.ts +11 -0
  112. package/src/components/Captcha/Captcha.mdx +72 -0
  113. package/src/components/Captcha/Captcha.stories.ts +276 -0
  114. package/src/components/Captcha/Captcha.vue +325 -0
  115. package/src/components/Captcha/CaptchaAlert.vue +60 -0
  116. package/src/components/Captcha/CaptchaBase.vue +219 -0
  117. package/src/components/Captcha/CaptchaBtn.vue +35 -0
  118. package/src/components/Captcha/CaptchaForm.vue +58 -0
  119. package/src/components/Captcha/CaptchaImg.vue +41 -0
  120. package/src/components/Captcha/CaptchaInformation.vue +64 -0
  121. package/src/components/Captcha/captchaApi.ts +111 -0
  122. package/src/components/Captcha/icons/volumeUp.vue +11 -0
  123. package/src/components/Captcha/locales.ts +35 -0
  124. package/src/components/Captcha/readme.md +5 -0
  125. package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
  126. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
  127. package/src/components/Captcha/types.ts +2 -0
  128. package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
  129. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
  130. package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
  131. package/src/components/Customs/SyForm/SyForm.vue +17 -1
  132. package/src/components/Customs/SyTextField/SyTextField.vue +29 -7
  133. package/src/components/DatePicker/CalendarMode/DatePicker.vue +32 -9
  134. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +154 -18
  135. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +2 -2
  136. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +35 -4
  137. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +107 -72
  138. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +6 -6
  139. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +57 -7
  140. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +14 -14
  141. package/src/components/DatePicker/tests/navigation.regression.spec.ts +74 -0
  142. package/src/components/DatePicker/tests/navigation.simple.spec.ts +137 -0
  143. package/src/components/NirField/NirField.stories.ts +85 -2
  144. package/src/components/NirField/NirField.vue +55 -18
  145. package/src/components/NirField/locales.ts +1 -3
  146. package/src/components/PasswordField/PasswordField.vue +39 -7
  147. package/src/components/PhoneField/PhoneField.vue +43 -10
  148. package/src/components/RangeField/tests/RangeField.spec.ts +0 -3
  149. package/src/components/Tables/SyServerTable/SyServerTable.mdx +15 -0
  150. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +309 -0
  151. package/src/components/Tables/SyServerTable/SyServerTable.vue +18 -3
  152. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
  153. package/src/components/Tables/SyTable/SyTable.mdx +15 -0
  154. package/src/components/Tables/SyTable/SyTable.stories.ts +228 -0
  155. package/src/components/Tables/SyTable/SyTable.vue +18 -3
  156. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +63 -0
  157. package/src/components/Tables/common/SyTablePagination.vue +10 -8
  158. package/src/components/Tables/common/types.ts +4 -0
  159. package/src/components/Tables/common/usePagination.ts +11 -20
  160. package/src/components/Tables/common/useTableCheckbox.ts +23 -11
  161. package/src/components/index.ts +1 -0
  162. package/src/composables/validation/AvecVosComposants.mdx.old +1 -1
  163. package/src/composables/validation/FormValidation.stories.ts.old +5 -5
  164. package/src/composables/validation/useFormValidation.ts +46 -8
  165. package/src/composables/validation/useValidatable.ts +19 -8
  166. package/src/stories/Accessibilite/Introduction.mdx +1 -1
  167. package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +43 -0
  168. package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +239 -0
  169. package/src/stories/Demarrer/SignalerUneAnomalie.mdx +39 -0
  170. package/src/stories/Demarrer/SignalerUneAnomalie.stories.ts +261 -0
  171. package/dist/main-DyEOPqqn.js +0 -33329
  172. package/src/components/Amelipro/AmeliproCheckbox/tests/AmeliproCheckbox.spec.ts +0 -19
  173. package/src/components/Amelipro/AmeliproCheckbox/tests/__snapshots__/AmeliproCheckbox.spec.ts.snap +0 -40
  174. package/src/components/Amelipro/AmeliproCheckboxGroup/tests/AmeliproCheckboxGroup.spec.ts +0 -46
  175. package/src/components/Amelipro/AmeliproChips/tests/AmeliproChips.spec.ts +0 -16
  176. package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +0 -97
  177. package/src/components/Amelipro/AmeliproDialog/tests/AmeliproDialog.spec.ts +0 -24
  178. package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +0 -134
  179. package/src/components/Amelipro/AmeliproDisclosure/tests/AmeliproDisclosure.spec.ts +0 -19
  180. package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +0 -104
  181. package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
  182. package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
  183. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
  184. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
  185. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
  186. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
  187. package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
  188. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
  189. package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
  190. package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
  191. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
  192. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
  193. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
  194. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
  195. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
  196. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
  197. package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +0 -45
  198. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +0 -1270
  199. package/src/stories/Demarrer/CreerUneIssue.mdx +0 -67
  200. package/src/stories/Demarrer/components.stories.ts +0 -25
@@ -0,0 +1,257 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { VueWrapper, mount } from '@vue/test-utils'
3
+ import { beforeEach, describe, expect, it, vi } from 'vitest'
4
+ import AmeliproDialog from '../AmeliproDialog.vue'
5
+ import type { ComponentProps } from 'vue-component-type-helpers'
6
+ import type { ExpectedPropOptions } from '@tests/types'
7
+ import TestHelper from '@tests/helpers/TestHelper'
8
+
9
+ const expectedPropOptions: ExpectedPropOptions<typeof AmeliproDialog> = {
10
+ attach: {
11
+ type: Boolean,
12
+ default: false,
13
+ },
14
+ cancelBtnLabel: {
15
+ type: String,
16
+ default: 'Annuler',
17
+ },
18
+ eager: {
19
+ type: Boolean,
20
+ default: false,
21
+ },
22
+ fullscreen: {
23
+ type: Boolean,
24
+ default: false,
25
+ },
26
+ hiddenCancelBtn: {
27
+ type: Boolean,
28
+ default: false,
29
+ },
30
+ labelledby: {
31
+ type: String,
32
+ required: true,
33
+ },
34
+ mainContentMaxHeight: {
35
+ type: String,
36
+ default: undefined,
37
+ },
38
+ mainContentMinHeight: {
39
+ type: String,
40
+ default: '150px',
41
+ },
42
+ modelValue: {
43
+ type: Boolean,
44
+ default: false,
45
+ },
46
+ noClickOutside: {
47
+ type: Boolean,
48
+ default: false,
49
+ },
50
+ noFooter: {
51
+ type: Boolean,
52
+ default: true,
53
+ },
54
+ persistent: {
55
+ type: Boolean,
56
+ default: false,
57
+ },
58
+ title: {
59
+ type: String,
60
+ default: undefined,
61
+ },
62
+ uniqueId: {
63
+ type: String,
64
+ required: true,
65
+ },
66
+ validationBtnLabel: {
67
+ type: String,
68
+ default: 'Valider',
69
+ },
70
+ width: {
71
+ type: String,
72
+ default: '800px',
73
+ },
74
+ }
75
+
76
+ // Values pour les props "required"
77
+ const requiredPropValues = (): ComponentProps<typeof AmeliproDialog> => ({
78
+ labelledby: 'required-labelledby',
79
+ uniqueId: 'required-uniqueid',
80
+ })
81
+
82
+ // Valeurs pour les props "modified"
83
+ const modifiedPropValues = (): ComponentProps<typeof AmeliproDialog> => ({
84
+ cancelBtnLabel: 'Modified cancel btn label',
85
+ fullscreen: true,
86
+ hiddenCancelBtn: true,
87
+ labelledby: 'modified-labelledby',
88
+ mainContentMaxHeight: '300px',
89
+ mainContentMinHeight: '200px',
90
+ modelValue: true,
91
+ noClickOutside: true,
92
+ noFooter: false,
93
+ persistent: true,
94
+ title: 'Modified title',
95
+ uniqueId: 'modified-uniqueid',
96
+ validationBtnLabel: 'Modified validation btn label',
97
+ width: '700px',
98
+ })
99
+
100
+ const testHelper = new TestHelper(AmeliproDialog)
101
+ testHelper.setExpectedPropOptions(expectedPropOptions)
102
+ .setRequiredPropValues(requiredPropValues)
103
+ .setModifiedPropValues(modifiedPropValues)
104
+
105
+ // Mock global MutationObserver pour éviter la boucle infinie dans les tests unitaires
106
+ class NoopMutationObserver {
107
+ observe = vi.fn()
108
+ disconnect = vi.fn()
109
+ takeRecords = vi.fn(() => [])
110
+ }
111
+
112
+ global.MutationObserver = NoopMutationObserver as any
113
+
114
+ describe('AmeliproDialog', () => {
115
+ describe('Snapshots', () => {
116
+ testHelper.snapshots()
117
+ })
118
+
119
+ describe('Properties', () => {
120
+ testHelper.properties()
121
+ })
122
+
123
+ describe('Slots', () => {
124
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproDialog>>
125
+
126
+ it('renders default slot content', () => {
127
+ vueWrapper = mount(AmeliproDialog, {
128
+ global: {
129
+ stubs: {
130
+ AmeliproBtn: true,
131
+ AmeliproIconBtn: true,
132
+ VDialog: { template: '<div><slot /></div>' },
133
+ },
134
+ },
135
+ props: requiredPropValues(),
136
+ slots: { default: '<div id="slot-content">Slot Content</div>' },
137
+ })
138
+ expect(vueWrapper.find('#slot-content').exists()).toBe(true)
139
+ expect(vueWrapper.find('#slot-content').text()).toBe('Slot Content')
140
+ })
141
+
142
+ it('renders header slot content', () => {
143
+ vueWrapper = mount(AmeliproDialog, {
144
+ global: {
145
+ stubs: {
146
+ AmeliproBtn: true,
147
+ AmeliproIconBtn: true,
148
+ VDialog: { template: '<div><slot /></div>' },
149
+ },
150
+ },
151
+ props: requiredPropValues(),
152
+ slots: { header: '<div id="header-slot">Header Slot</div>' },
153
+ })
154
+ expect(vueWrapper.find('#header-slot').exists()).toBe(true)
155
+ expect(vueWrapper.find('#header-slot').text()).toBe('Header Slot')
156
+ })
157
+
158
+ it('renders footer slot content', () => {
159
+ vueWrapper = mount(AmeliproDialog, {
160
+ global: {
161
+ stubs: {
162
+ AmeliproBtn: true,
163
+ AmeliproIconBtn: true,
164
+ VDialog: { template: '<div><slot /></div>' },
165
+ },
166
+ },
167
+ props: { ...requiredPropValues(), noFooter: false },
168
+ slots: { footer: '<div id="footer-slot">Footer Slot</div>' },
169
+ })
170
+ expect(vueWrapper.find('#footer-slot').exists()).toBe(true)
171
+ expect(vueWrapper.find('#footer-slot').text()).toBe('Footer Slot')
172
+ })
173
+ })
174
+
175
+ describe('Setting props should update attributes of inner tags', () => {
176
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproDialog>>
177
+
178
+ beforeEach(() => {
179
+ vueWrapper = mount(AmeliproDialog, {
180
+ global: {
181
+ stubs: {
182
+ AmeliproBtn: true,
183
+ AmeliproIconBtn: true,
184
+ VDialog: { template: '<div><slot /></div>' },
185
+ },
186
+ },
187
+ props: { ...requiredPropValues(), noFooter: false },
188
+ })
189
+ })
190
+
191
+ it('prop uniqueId sets attribute id on root dialog element', async () => {
192
+ expect(vueWrapper.find('.dialog').attributes('id')).toBe(testHelper.default('uniqueId'))
193
+ const { uniqueId } = modifiedPropValues()
194
+ await vueWrapper.setProps({ uniqueId })
195
+ expect(vueWrapper.find('.dialog').attributes('id')).toBe(testHelper.modified('uniqueId'))
196
+ })
197
+
198
+ it('prop uniqueId sets attribute id on header/content/footer', async () => {
199
+ expect(vueWrapper.find('.dialog__header').attributes('id')).toBe(`${testHelper.default('uniqueId')}-header`)
200
+ expect(vueWrapper.find('.dialog__content').attributes('id')).toBe(`${testHelper.default('uniqueId')}-content`)
201
+ expect(vueWrapper.find('.dialog__footer').attributes('id')).toBe(`${testHelper.default('uniqueId')}-footer`)
202
+
203
+ const { uniqueId } = modifiedPropValues()
204
+ await vueWrapper.setProps({ uniqueId })
205
+ expect(vueWrapper.find('.dialog__header').attributes('id')).toBe(`${testHelper.modified('uniqueId')}-header`)
206
+ expect(vueWrapper.find('.dialog__content').attributes('id')).toBe(`${testHelper.modified('uniqueId')}-content`)
207
+ expect(vueWrapper.find('.dialog__footer').attributes('id')).toBe(`${testHelper.modified('uniqueId')}-footer`)
208
+ })
209
+ })
210
+
211
+ describe('Setting props should update props or attributes of inner components', () => {
212
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproDialog>>
213
+
214
+ beforeEach(() => {
215
+ vueWrapper = mount(AmeliproDialog, {
216
+ props: { ...requiredPropValues(), hiddenCancelBtn: false, noFooter: false },
217
+ global: {
218
+ stubs: {
219
+ // AmeliproBtn: { template: '<button class="dialog__cancel-btn"><slot /></button>' },
220
+ AmeliproIconBtn: true,
221
+ VDialog: { template: '<div><slot /></div>' },
222
+ },
223
+ },
224
+ })
225
+ })
226
+
227
+ it('prop cancelBtnLabel sets AmeliproBtn cancel label', async () => {
228
+ expect(vueWrapper.find('.dialog__cancel-btn').text()).toBe(testHelper.default('cancelBtnLabel'))
229
+ const { cancelBtnLabel } = modifiedPropValues()
230
+ await vueWrapper.setProps({ cancelBtnLabel })
231
+ expect(vueWrapper.find('.dialog__cancel-btn').text()).toBe(testHelper.modified('cancelBtnLabel'))
232
+ })
233
+ })
234
+
235
+ describe('Affichage conditionnel du footer', () => {
236
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproDialog>>
237
+
238
+ beforeEach(() => {
239
+ vueWrapper = mount(AmeliproDialog, {
240
+ props: requiredPropValues(),
241
+ global: {
242
+ stubs: {
243
+ AmeliproBtn: true,
244
+ AmeliproIconBtn: true,
245
+ VDialog: { template: '<div><slot /></div>' },
246
+ },
247
+ },
248
+ })
249
+ })
250
+
251
+ it('prop noFooter sets footer visibility', async () => {
252
+ expect(vueWrapper.find('.dialog__footer').exists()).toBe(false)
253
+ await vueWrapper.setProps({ noFooter: false })
254
+ expect(vueWrapper.find('.dialog__footer').exists()).toBe(true)
255
+ })
256
+ })
257
+ })
@@ -0,0 +1,61 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`AmeliproDialog > Snapshots > renders the component with all properties filled in 1`] = `
4
+ <v-dialog-stub
5
+ absolute="false"
6
+ activatorprops="[object Object]"
7
+ attach="false"
8
+ class=""
9
+ closeonback="true"
10
+ closeoncontentclick="false"
11
+ contained="false"
12
+ disabled="false"
13
+ eager="false"
14
+ fullscreen="true"
15
+ location="bottom"
16
+ locationstrategy="static"
17
+ modelvalue="true"
18
+ noclickanimation="false"
19
+ openonhover="false"
20
+ origin="center center"
21
+ persistent="true"
22
+ retainfocus="true"
23
+ scrim="true"
24
+ scrollable="false"
25
+ scrollstrategy="none"
26
+ sticktotarget="false"
27
+ transition="[object Object]"
28
+ width="700px"
29
+ zindex="2400"
30
+ ></v-dialog-stub>
31
+ `;
32
+
33
+ exports[`AmeliproDialog > Snapshots > renders the component with only required properties filled in 1`] = `
34
+ <v-dialog-stub
35
+ absolute="false"
36
+ activatorprops="[object Object]"
37
+ attach="false"
38
+ class="dialog-radius"
39
+ closeonback="true"
40
+ closeoncontentclick="false"
41
+ contained="false"
42
+ disabled="false"
43
+ eager="false"
44
+ fullscreen="false"
45
+ location="bottom"
46
+ locationstrategy="static"
47
+ modelvalue="false"
48
+ noclickanimation="false"
49
+ openonhover="false"
50
+ origin="center center"
51
+ persistent="false"
52
+ retainfocus="true"
53
+ scrim="true"
54
+ scrollable="false"
55
+ scrollstrategy="none"
56
+ sticktotarget="false"
57
+ transition="[object Object]"
58
+ width="800px"
59
+ zindex="2400"
60
+ ></v-dialog-stub>
61
+ `;
@@ -0,0 +1,79 @@
1
+ import { type VueWrapper, shallowMount } from '@vue/test-utils'
2
+ import { beforeEach, describe, expect, it } from 'vitest'
3
+ import AmeliproDisclosure from '../AmeliproDisclosure.vue'
4
+ import type { ComponentProps } from 'vue-component-type-helpers'
5
+ import type { ExpectedPropOptions } from '@tests/types'
6
+ import TestHelper from '@tests/helpers/TestHelper'
7
+
8
+ const expectedPropOptions: ExpectedPropOptions<typeof AmeliproDisclosure> = {
9
+ isOpen: {
10
+ type: Boolean,
11
+ default: false,
12
+ },
13
+ title: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ uniqueId: {
18
+ type: String,
19
+ required: true,
20
+ },
21
+ }
22
+
23
+ // Values pour les props "required"
24
+ const requiredPropValues = (): ComponentProps<typeof AmeliproDisclosure> => ({
25
+ title: 'required-title',
26
+ uniqueId: 'required-unique-id',
27
+ })
28
+
29
+ // Valeurs pour les props "modified"
30
+ const modifiedPropValues = (): ComponentProps<typeof AmeliproDisclosure> => ({
31
+ isOpen: false,
32
+ title: 'Modified title',
33
+ uniqueId: 'modified-unique-id',
34
+ })
35
+
36
+ const testHelper = new TestHelper(AmeliproDisclosure)
37
+ testHelper.setExpectedPropOptions(expectedPropOptions)
38
+ .setRequiredPropValues(requiredPropValues)
39
+ .setModifiedPropValues(modifiedPropValues)
40
+
41
+ describe('AmeliproDisclosure', () => {
42
+ describe('Snapshots', () => {
43
+ testHelper.snapshots()
44
+ })
45
+
46
+ describe('Properties', () => {
47
+ testHelper.properties()
48
+ })
49
+
50
+ describe('Setting props should update attributes of inner tags', () => {
51
+ let vueWrapper: VueWrapper<InstanceType<typeof AmeliproDisclosure>>
52
+
53
+ describe('root', () => {
54
+ beforeEach(() => {
55
+ vueWrapper = shallowMount(AmeliproDisclosure, { props: requiredPropValues() })
56
+ })
57
+
58
+ it('prop uniqueId sets attribute id', async () => {
59
+ expect(vueWrapper.attributes('id')).toBe(`${testHelper.default('uniqueId')}-container`)
60
+
61
+ const { uniqueId } = modifiedPropValues()
62
+ await vueWrapper.setProps({ uniqueId })
63
+ expect(vueWrapper.attributes('id')).toBe(`${testHelper.modified('uniqueId')}-container`)
64
+ })
65
+ })
66
+ })
67
+
68
+ describe('Setting props should update props or attributes of inner components', () => {
69
+ describe.skip('AmeliproBtn', () => {
70
+ // TODO: add tests for AmeliproBtn inner component
71
+ })
72
+ })
73
+
74
+ describe('Slots', () => {
75
+ describe.skip('#default', () => {
76
+ // TODO: add tests for default slot
77
+ })
78
+ })
79
+ })
@@ -0,0 +1,89 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`AmeliproDisclosure > Snapshots > renders the component with all properties filled in 1`] = `
4
+ <div
5
+ class="
6
+ amelipro-disclosure
7
+ mb-3
8
+ w-100
9
+ "
10
+ id="modified-unique-id-container"
11
+ >
12
+ <amelipro-btn-stub
13
+ aria-controls="modified-unique-id"
14
+ aria-expanded="false"
15
+ badge="false"
16
+ badgebgcolor="ap-pink"
17
+ badgecolor="ap-white"
18
+ bordered="false"
19
+ class="
20
+ amelipro-disclosure__btn
21
+ text-none
22
+ "
23
+ color="ap-blue-darken-1"
24
+ disabled="false"
25
+ hovercolor="ap-blue-darken-2"
26
+ hoverunderline="true"
27
+ iconbgcolor="transparent"
28
+ iconbordered="false"
29
+ iconleft="false"
30
+ infoblock="false"
31
+ minheight="2.5rem"
32
+ size="60px"
33
+ text="true"
34
+ textcolor="ap-white"
35
+ type="button"
36
+ underline="false"
37
+ uniqueid="modified-unique-id-open-close-btn"
38
+ ></amelipro-btn-stub>
39
+ <div
40
+ class="amelipro-disclosure__content"
41
+ id="modified-unique-id"
42
+ style="display: none;"
43
+ ></div>
44
+ </div>
45
+ `;
46
+
47
+ exports[`AmeliproDisclosure > Snapshots > renders the component with only required properties filled in 1`] = `
48
+ <div
49
+ class="
50
+ amelipro-disclosure
51
+ mb-3
52
+ w-100
53
+ "
54
+ id="required-unique-id-container"
55
+ >
56
+ <amelipro-btn-stub
57
+ aria-controls="required-unique-id"
58
+ aria-expanded="false"
59
+ badge="false"
60
+ badgebgcolor="ap-pink"
61
+ badgecolor="ap-white"
62
+ bordered="false"
63
+ class="
64
+ amelipro-disclosure__btn
65
+ text-none
66
+ "
67
+ color="ap-blue-darken-1"
68
+ disabled="false"
69
+ hovercolor="ap-blue-darken-2"
70
+ hoverunderline="true"
71
+ iconbgcolor="transparent"
72
+ iconbordered="false"
73
+ iconleft="false"
74
+ infoblock="false"
75
+ minheight="2.5rem"
76
+ size="60px"
77
+ text="true"
78
+ textcolor="ap-white"
79
+ type="button"
80
+ underline="false"
81
+ uniqueid="required-unique-id-open-close-btn"
82
+ ></amelipro-btn-stub>
83
+ <div
84
+ class="amelipro-disclosure__content"
85
+ id="required-unique-id"
86
+ style="display: none;"
87
+ ></div>
88
+ </div>
89
+ `;
@@ -253,7 +253,7 @@
253
253
  class="pa-2 footer-list-item"
254
254
  >
255
255
  <AmeliproBtn
256
- class="text-none"
256
+ class="text-none amelipro-footer__site-map-btn"
257
257
  color="ap-white"
258
258
  hover-color="ap-white"
259
259
  hover-underline
@@ -273,7 +273,7 @@
273
273
  class="pa-2 footer-list-item"
274
274
  >
275
275
  <AmeliproBtn
276
- class="text-none"
276
+ class="text-none amelipro-footer__about-btn"
277
277
  color="ap-white"
278
278
  hover-color="ap-white"
279
279
  hover-underline
@@ -293,7 +293,7 @@
293
293
  class="pa-2 footer-list-item"
294
294
  >
295
295
  <AmeliproBtn
296
- class="text-none"
296
+ class="text-none amelipro-footer__config-btn"
297
297
  color="ap-white"
298
298
  hover-color="ap-white"
299
299
  hover-underline
@@ -313,7 +313,7 @@
313
313
  class="pa-2 footer-list-item"
314
314
  >
315
315
  <AmeliproBtn
316
- class="text-none"
316
+ class="text-none amelipro-footer__legal-notice-btn"
317
317
  color="ap-white"
318
318
  hover-color="ap-white"
319
319
  hover-underline
@@ -333,7 +333,7 @@
333
333
  class="pa-2 footer-list-item"
334
334
  >
335
335
  <AmeliproBtn
336
- class="text-none"
336
+ class="text-none amelipro-footer__cgu-btn"
337
337
  color="ap-white"
338
338
  hover-color="ap-white"
339
339
  hover-underline
@@ -354,7 +354,7 @@
354
354
  >
355
355
  <AmeliproBtn
356
356
  v-if="!noLinkA11y"
357
- class="text-none"
357
+ class="text-none amelipro-footer__a11y-btn"
358
358
  color="ap-white"
359
359
  hover-color="ap-white"
360
360
  hover-underline
@@ -367,7 +367,6 @@
367
367
  >
368
368
  {{ a11yComplianceLabel }}
369
369
  </AmeliproBtn>
370
-
371
370
  <p
372
371
  v-else
373
372
  :id="uniqueId ? `${uniqueId}-a11y-text` : undefined"