@cnamts/synapse 1.0.15 → 1.0.16

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 (394) hide show
  1. package/dist/{DateFilter-isr8mXVb.js → DateFilter-DSwJUvBu.js} +12 -12
  2. package/dist/{NumberFilter-BOe7DqWX.js → NumberFilter-CwsbYyz4.js} +1 -1
  3. package/dist/{PeriodFilter-WTprpO40.js → PeriodFilter-csnEZU30.js} +1 -1
  4. package/dist/{SelectFilter-CqlG5dmI.js → SelectFilter-Bd5fndzR.js} +1 -1
  5. package/dist/{TextFilter-fVW5bsRw.js → TextFilter-B6gxzq2a.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +2836 -2845
  7. package/dist/components/Amelipro/AmeliproCallback/AmeliproCallback.d.ts +3 -3
  8. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +7 -7
  9. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +3 -3
  10. package/dist/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.d.ts +3 -3
  11. package/dist/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.d.ts +3 -3
  12. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +3 -3
  13. package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +3 -3
  14. package/dist/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.d.ts +3 -3
  15. package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +3 -3
  16. package/dist/components/Amelipro/AmeliproFooter/AmeliproFooter.d.ts +18 -18
  17. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeader.d.ts +9 -9
  18. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.d.ts +3 -3
  19. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.d.ts +3 -3
  20. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +3 -1
  21. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -3
  22. package/dist/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.d.ts +3 -3
  23. package/dist/components/Amelipro/AmeliproMenu/AmeliproMenu.d.ts +3 -3
  24. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  25. package/dist/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.d.ts +3 -3
  26. package/dist/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.d.ts +3 -3
  27. package/dist/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.d.ts +9 -0
  28. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +1288 -1284
  29. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +1936 -1930
  30. package/dist/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.d.ts +3 -3
  31. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +2838 -2865
  32. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +3 -3
  33. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +2843 -2870
  34. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +397 -397
  35. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +642 -640
  36. package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +233 -5
  37. package/dist/components/Amelipro/AmeliproTransmission/AmeliproTransmission.d.ts +9 -9
  38. package/dist/components/Captcha/CaptchaHelpdesk.d.ts +6 -0
  39. package/dist/components/CookieBanner/CookieBanner.d.ts +117 -119
  40. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +484 -484
  41. package/dist/components/CookiesSelection/CookiesSelection.d.ts +104 -106
  42. package/dist/components/Customs/Selects/SelectBtnField/SelectBtnField.d.ts +14 -10
  43. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +118 -129
  44. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +1 -3
  45. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1 -1
  46. package/dist/components/Customs/SyForm/SyForm.d.ts +60 -53
  47. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +88 -0
  48. package/dist/components/Customs/SyRadioGroup/locales.d.ts +3 -0
  49. package/dist/components/Customs/SyTextField/SyTextField.d.ts +644 -642
  50. package/dist/components/DataList/DataList.d.ts +6 -1
  51. package/dist/components/DataListGroup/DataListGroup.d.ts +14 -2
  52. package/dist/components/DataListItem/DataListItem.d.ts +3 -0
  53. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +2988 -3100
  54. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1458 -1558
  55. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +655 -651
  56. package/dist/components/DatePicker/composables/index.d.ts +4 -0
  57. package/dist/components/DatePicker/composables/useAsteriskDisplay.d.ts +1 -1
  58. package/dist/components/DatePicker/composables/useCalendarKeyboardNavigation.d.ts +11 -0
  59. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +25 -0
  60. package/dist/components/DatePicker/composables/useDateTextField.d.ts +61 -0
  61. package/dist/components/DatePicker/composables/useHolidayHighlighting.d.ts +15 -0
  62. package/dist/components/DatePicker/constants/messages.d.ts +0 -1
  63. package/dist/components/DialogBox/DialogBox.d.ts +175 -177
  64. package/dist/components/FilterSideBar/FilterSideBar.d.ts +161 -171
  65. package/dist/components/FooterBar/FooterBar.d.ts +5 -5
  66. package/dist/components/HeaderBar/HeaderBar.d.ts +2 -2
  67. package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +1 -1
  68. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +1 -1
  69. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +234 -258
  70. package/dist/components/LangBtn/LangBtn.d.ts +173 -179
  71. package/dist/components/LogoBrandSection/LogoBrandSection.d.ts +1 -1
  72. package/dist/components/LunarCalendar/LunarCalendar.d.ts +29 -0
  73. package/dist/components/LunarCalendar/useLunarCalendarRules.d.ts +5 -0
  74. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +13 -0
  75. package/dist/components/NirField/NirField.d.ts +1296 -1292
  76. package/dist/components/PaginatedTable/PaginatedTable.d.ts +1 -1
  77. package/dist/components/PeriodField/PeriodField.d.ts +5844 -6068
  78. package/dist/components/PhoneField/PhoneField.d.ts +645 -643
  79. package/dist/components/SyAlert/SyAlert.d.ts +31 -31
  80. package/dist/components/SyTextArea/SyTextArea.d.ts +395 -395
  81. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +193 -227
  82. package/dist/components/Tables/SyTable/SyTable.d.ts +192 -226
  83. package/dist/components/Tables/common/SyTableFilter.d.ts +1 -1
  84. package/dist/components/Tables/common/SyTablePagination.d.ts +118 -129
  85. package/dist/components/Tables/common/TableHeader.d.ts +52 -2
  86. package/dist/components/Tables/common/filters/DateFilter.d.ts +1 -1
  87. package/dist/components/Tables/common/filters/NumberFilter.d.ts +1 -1
  88. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +1 -1
  89. package/dist/components/Tables/common/filters/SelectFilter.d.ts +1 -1
  90. package/dist/components/Tables/common/filters/TextFilter.d.ts +1 -1
  91. package/dist/components/Tables/common/locales.d.ts +1 -0
  92. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +86 -90
  93. package/dist/components/Tables/common/tableFilterUtils.d.ts +2 -2
  94. package/dist/components/Tables/common/types.d.ts +3 -2
  95. package/dist/components/Tables/common/useTableCheckbox.d.ts +3 -2
  96. package/dist/components/Tables/common/useTableFilter.d.ts +1 -1
  97. package/dist/components/Tables/common/useTableItems.d.ts +6 -8
  98. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +18 -18
  99. package/dist/components/index.d.ts +2 -0
  100. package/dist/design-system-v3.js +101 -98
  101. package/dist/design-system-v3.umd.cjs +25 -33
  102. package/dist/main-DkZZpa3S.js +35197 -0
  103. package/dist/style.css +1 -1
  104. package/dist/utils/formatNir/formatNir.d.ts +2 -0
  105. package/dist/utils/index.d.ts +1 -0
  106. package/dist/utils/insertAt.d.ts +1 -0
  107. package/dist/utils/rules/validateDateValue.d.ts +14 -0
  108. package/dist/vuetifyConfig.d.ts +6 -6
  109. package/package.json +4 -4
  110. package/src/assets/tokens.scss +2 -0
  111. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +1 -18
  112. package/src/components/Amelipro/AmeliproAccordion/__tests__/AmeliproAccordion.spec.ts +178 -9
  113. package/src/components/Amelipro/AmeliproAccordion/__tests__/__snapshots__/AmeliproAccordion.spec.ts.snap +28 -121
  114. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +15 -270
  115. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +12 -194
  116. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/__snapshots__/AmeliproAccordionResultTemplate.spec.ts.snap +1 -18
  117. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/__snapshots__/AmeliproAccordionResult.spec.ts.snap +1 -18
  118. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +12 -194
  119. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.stories.ts +9 -9
  120. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +5 -4
  121. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/AmeliproAutoCompleteField.spec.ts +6 -6
  122. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/__snapshots__/AmeliproAutoCompleteField.spec.ts.snap +2 -0
  123. package/src/components/Amelipro/AmeliproBadge/__tests__/AmeliproBadge.spec.ts +135 -9
  124. package/src/components/Amelipro/AmeliproBadge/__tests__/__snapshots__/AmeliproBadge.spec.ts.snap +20 -5
  125. package/src/components/Amelipro/AmeliproBreadcrumb/__tests__/AmeliproBreadcrumb.spec.ts +195 -28
  126. package/src/components/Amelipro/AmeliproBreadcrumb/__tests__/__snapshots__/AmeliproBreadcrumb.spec.ts.snap +193 -124
  127. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +1 -1
  128. package/src/components/Amelipro/AmeliproCaptcha/__tests__/AmeliproCaptcha.spec.ts +364 -12
  129. package/src/components/Amelipro/AmeliproCaptcha/__tests__/__snapshots__/AmeliproCaptcha.spec.ts.snap +30 -390
  130. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +4 -36
  131. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.stories.ts +10 -10
  132. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +7 -7
  133. package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +5 -5
  134. package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +1 -1
  135. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.stories.ts +7 -6
  136. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +6 -6
  137. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +6 -6
  138. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +2 -2
  139. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -43
  140. package/src/components/Amelipro/AmeliproContentLayout/__tests__/AmeliproContentLayout.spec.ts +80 -9
  141. package/src/components/Amelipro/AmeliproContentLayout/__tests__/__snapshots__/AmeliproContentLayout.spec.ts.snap +25 -4
  142. package/src/components/Amelipro/AmeliproCopyBtn/__tests__/__snapshots__/AmeliproCopyBtn.spec.ts.snap +1 -13
  143. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.stories.ts +7 -6
  144. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +5 -5
  145. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/AmeliproCustomSelector.spec.ts +187 -39
  146. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/__snapshots__/AmeliproCustomSelector.spec.ts.snap +147 -147
  147. package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +1 -1
  148. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +0 -2
  149. package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/AmeliproErrorTemplate.spec.ts +160 -20
  150. package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/__snapshots__/AmeliproErrorTemplate.spec.ts.snap +34 -177
  151. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +1 -0
  152. package/src/components/Amelipro/AmeliproFilePreview/__tests__/AmeliproFilePreview.spec.ts +248 -19
  153. package/src/components/Amelipro/AmeliproFilePreview/__tests__/__snapshots__/AmeliproFilePreview.spec.ts.snap +34 -203
  154. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +6 -144
  155. package/src/components/Amelipro/AmeliproIcon/AmeliproIcon.vue +20 -2
  156. package/src/components/Amelipro/AmeliproIcon/__tests__/__snapshots__/AmeliproIcon.spec.ts.snap +1 -25
  157. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.stories.ts +5 -5
  158. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -6
  159. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/__tests__/AmeliproIllustratedRadioGroup.spec.ts +22 -22
  160. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/__tests__/__snapshots__/AmeliproIllustratedRadioGroup.spec.ts.snap +2 -2
  161. package/src/components/Amelipro/AmeliproMultipleFoldingCard/__tests__/AmeliproMultipleFoldingCard.spec.ts +304 -0
  162. package/src/components/Amelipro/AmeliproMultipleFoldingCard/__tests__/__snapshots__/AmeliproMultipleFoldingCard.spec.ts.snap +373 -0
  163. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.stories.ts +2 -0
  164. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +28 -2
  165. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +9 -173
  166. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -1
  167. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +162 -72
  168. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/AmeliproPostalAddressCityRow.spec.ts +2 -2
  169. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +6 -39
  170. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.stories.ts +3 -3
  171. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +8 -8
  172. package/src/components/Amelipro/AmeliproPostalAddressField/{tests → __tests__}/AmeliproPostalAddressField.spec.ts +2 -2
  173. package/src/components/Amelipro/AmeliproPostalAddressField/{tests → __tests__}/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +11 -52
  174. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.stories.ts +7 -7
  175. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +8 -8
  176. package/src/components/Amelipro/AmeliproRadioGroup/__tests__/AmeliproRadioGroup.spec.ts +6 -6
  177. package/src/components/Amelipro/AmeliproRadioGroup/__tests__/__snapshots__/AmeliproRadioGroup.spec.ts.snap +2 -2
  178. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +2 -14
  179. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.stories.ts +7 -7
  180. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +4 -4
  181. package/src/components/Amelipro/AmeliproSelect/__tests__/AmeliproSelect.spec.ts +12 -12
  182. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +2 -2
  183. package/src/components/Amelipro/AmeliproStepper/__tests__/__snapshots__/AmeliproStepper.spec.ts.snap +2 -2
  184. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +2 -2
  185. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +463 -68
  186. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +176 -511
  187. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.stories.ts +6 -6
  188. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -4
  189. package/src/components/Amelipro/AmeliproTextArea/__tests__/AmeliproTextArea.spec.ts +3 -3
  190. package/src/components/Amelipro/AmeliproTextArea/__tests__/__snapshots__/AmeliproTextArea.spec.ts.snap +1 -2
  191. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.stories.ts +10 -10
  192. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +4 -4
  193. package/src/components/Amelipro/AmeliproTextField/__tests__/AmeliproTextField.spec.ts +5 -5
  194. package/src/components/Amelipro/AmeliproTextField/tests/__snapshots__/AmeliproTextField.spec.ts.snap +162 -0
  195. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +44 -0
  196. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +79 -1
  197. package/src/components/Amelipro/AmeliproTooltips/__tests__/__snapshots__/AmeliproTooltips.spec.ts.snap +0 -2
  198. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.stories.ts +2 -2
  199. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +21 -7
  200. package/src/components/Amelipro/AmeliproUpload/__tests__/AmeliproUpload.spec.ts +252 -44
  201. package/src/components/Amelipro/AmeliproUpload/__tests__/__snapshots__/AmeliproUpload.spec.ts.snap +166 -0
  202. package/src/components/Amelipro/ServiceMenu/ServiceBtn/__tests__/ServiceBtn.spec.ts +137 -0
  203. package/src/components/Amelipro/ServiceMenu/ServiceBtn/__tests__/__snapshots__/ServiceBtn.spec.ts.snap +56 -0
  204. package/src/components/Amelipro/ServiceMenu/ServiceList/__tests__/ServiceList.spec.ts +116 -0
  205. package/src/components/Amelipro/ServiceMenu/ServiceList/__tests__/__snapshots__/ServiceList.spec.ts.snap +58 -0
  206. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/__tests__/ServiceMenuContent.spec.ts +118 -0
  207. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/__tests__/__snapshots__/ServiceMenuContent.spec.ts.snap +151 -0
  208. package/src/components/Amelipro/ServiceMenu/__tests__/ServiceMenu.spec.ts +259 -0
  209. package/src/components/Amelipro/ServiceMenu/__tests__/__snapshots__/ServiceMenu.spec.ts.snap +102 -0
  210. package/src/components/Amelipro/StructureMenu/StructureBtn/__tests__/StructureBtn.spec.ts +90 -0
  211. package/src/components/Amelipro/StructureMenu/StructureBtn/__tests__/__snapshots__/StructureBtn.spec.ts.snap +63 -0
  212. package/src/components/Amelipro/StructureMenu/StructureItem/__tests__/StructureItem.spec.ts +133 -0
  213. package/src/components/Amelipro/StructureMenu/StructureItem/__tests__/__snapshots__/StructureItem.spec.ts.snap +143 -0
  214. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/StructureList.spec.ts +190 -0
  215. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/__snapshots__/StructureList.spec.ts.snap +109 -0
  216. package/src/components/Amelipro/StructureMenu/StructureTabs/__tests__/StructureTabs.spec.ts +159 -0
  217. package/src/components/Amelipro/StructureMenu/StructureTabs/__tests__/__snapshots__/StructureTabs.spec.ts.snap +103 -0
  218. package/src/components/Amelipro/StructureMenu/__tests__/StructureMenu.spec.ts +165 -0
  219. package/src/components/Amelipro/StructureMenu/__tests__/__snapshots__/StructureMenu.spec.ts.snap +39 -0
  220. package/src/components/Amelipro/UserInformationSummary/__tests__/UserInformationSummary.spec.ts +140 -0
  221. package/src/components/Amelipro/UserInformationSummary/{tests → __tests__}/__snapshots__/UserInformationSummary.spec.ts.snap +17 -24
  222. package/src/components/Amelipro/UserMenu/UserMenu.stories.ts +3 -3
  223. package/src/components/Amelipro/UserMenu/UserMenu.vue +2 -2
  224. package/src/components/Amelipro/UserMenu/UserMenuDetails/__tests__/UserMenuDetails.spec.ts +150 -0
  225. package/src/components/Amelipro/UserMenu/UserMenuDetails/__tests__/__snapshots__/UserMenuDetails.spec.ts.snap +117 -0
  226. package/src/components/Amelipro/UserMenu/__tests__/UserMenu.spec.ts +141 -0
  227. package/src/components/Amelipro/UserMenu/__tests__/__snapshots__/UserMenu.spec.ts.snap +103 -0
  228. package/src/components/Captcha/Captcha.vue +9 -24
  229. package/src/components/Captcha/CaptchaHelpdesk.vue +42 -0
  230. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +256 -268
  231. package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +0 -1
  232. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.stories.ts +4 -0
  233. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.stories.ts +154 -82
  234. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +229 -125
  235. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +12 -12
  236. package/src/components/Customs/Selects/SelectBtnField/tests/__snapshots__/SelectBtnField.spec.ts.snap +344 -826
  237. package/src/components/Customs/Selects/SySelect/SySelect.vue +215 -169
  238. package/src/components/Customs/Selects/SySelect/composables/tests/useSySelectKeyboard.spec.ts +4 -2
  239. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +7 -9
  240. package/src/components/Customs/SyForm/SyForm.mdx +47 -7
  241. package/src/components/Customs/SyForm/SyForm.stories.ts +38 -34
  242. package/src/components/Customs/SyForm/SyForm.vue +27 -6
  243. package/src/components/Customs/SyRadioGroup/Accessibilite.mdx +263 -0
  244. package/src/components/Customs/SyRadioGroup/SyRadioGroup.mdx +37 -0
  245. package/src/components/Customs/SyRadioGroup/SyRadioGroup.stories.ts +665 -0
  246. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +324 -0
  247. package/src/components/Customs/SyRadioGroup/locales.ts +3 -0
  248. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.spec.ts +135 -0
  249. package/src/components/Customs/SyTabs/SyTabs.vue +1 -1
  250. package/src/components/Customs/SyTextField/SyTextField.vue +225 -194
  251. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +32 -2
  252. package/src/components/DataList/DataList.mdx +3 -1
  253. package/src/components/DataList/DataList.stories.ts +67 -17
  254. package/src/components/DataList/DataList.vue +13 -1
  255. package/src/components/DataListGroup/DataListGroup.stories.ts +42 -12
  256. package/src/components/DataListGroup/DataListGroup.vue +14 -1
  257. package/src/components/DataListItem/DataListItem.vue +10 -2
  258. package/src/components/DataListItem/tests/DataListItem.spec.ts +1 -1
  259. package/src/components/DatePicker/CalendarMode/DatePicker.vue +157 -178
  260. package/src/components/DatePicker/CalendarMode/tests/DatePicker.events.spec.ts +5 -0
  261. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +179 -179
  262. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +261 -258
  263. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +234 -827
  264. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +46 -73
  265. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +350 -0
  266. package/src/components/DatePicker/composables/index.ts +4 -0
  267. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +270 -0
  268. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +61 -3
  269. package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +198 -0
  270. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +36 -2
  271. package/src/components/DatePicker/composables/tests/useInputHandler.spec.ts +755 -0
  272. package/src/components/DatePicker/composables/tests/useKeyboardEvents.spec.ts +168 -0
  273. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +40 -34
  274. package/src/components/DatePicker/composables/useAsteriskDisplay.ts +1 -2
  275. package/src/components/DatePicker/composables/useCalendarKeyboardNavigation.ts +155 -0
  276. package/src/components/DatePicker/composables/useDatePickerState.ts +163 -0
  277. package/src/components/DatePicker/composables/useDateRangeInput.ts +4 -8
  278. package/src/components/DatePicker/composables/useDateTextField.ts +156 -0
  279. package/src/components/DatePicker/composables/useHolidayHighlighting.ts +64 -0
  280. package/src/components/DatePicker/composables/useInputHandler.ts +25 -19
  281. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +52 -26
  282. package/src/components/DatePicker/constants/messages.ts +0 -1
  283. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +2 -2
  284. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +16 -8
  285. package/src/components/ErrorPage/ErrorPage.vue +1 -1
  286. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +17 -0
  287. package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +0 -1
  288. package/src/components/LunarCalendar/LunarCalendar.mdx +33 -0
  289. package/src/components/LunarCalendar/LunarCalendar.stories.ts +232 -0
  290. package/src/components/LunarCalendar/LunarCalendar.vue +57 -0
  291. package/src/components/LunarCalendar/tests/LunarCalendar.spec.ts +79 -0
  292. package/src/components/LunarCalendar/useLunarCalendarRules.ts +96 -0
  293. package/src/components/LunarCalendar/useLunarCalendarValidation.ts +47 -0
  294. package/src/components/NotificationBar/NotificationBar.vue +2 -2
  295. package/src/components/PaginatedTable/PaginatedTable.stories.ts +15 -10
  296. package/src/components/PaginatedTable/PaginatedTable.vue +24 -35
  297. package/src/components/PhoneField/PhoneField.vue +102 -83
  298. package/src/components/SearchListField/tests/SearchListField.spec.ts +7 -53
  299. package/src/components/SyAlert/SyAlert.vue +5 -2
  300. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +24 -72
  301. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +521 -23
  302. package/src/components/Tables/SyServerTable/SyServerTable.vue +19 -13
  303. package/src/components/Tables/SyTable/SyTable.stories.ts +391 -18
  304. package/src/components/Tables/SyTable/SyTable.vue +16 -11
  305. package/src/components/Tables/common/TableHeader.vue +16 -7
  306. package/src/components/Tables/common/filters/DateFilter.vue +1 -1
  307. package/src/components/Tables/common/locales.ts +1 -0
  308. package/src/components/Tables/common/tableFilterUtils.ts +3 -3
  309. package/src/components/Tables/common/types.ts +4 -2
  310. package/src/components/Tables/common/useTableCheckbox.ts +4 -3
  311. package/src/components/Tables/common/useTableFilter.ts +2 -2
  312. package/src/components/Tables/common/useTableItems.ts +4 -19
  313. package/src/components/index.ts +2 -0
  314. package/src/composables/validation/tests/useFormValidation.spec.ts +251 -0
  315. package/src/composables/validation/tests/useValidatable.spec.ts +90 -0
  316. package/src/stories/Accessibilite/Audit/Exemptions-derogations.mdx +241 -0
  317. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +17 -10
  318. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +16 -0
  319. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +160 -106
  320. package/src/stories/Accessibilite/Vuetify/VuetifyItems.ts +2 -1
  321. package/src/stories/GuideDuDev/ClassesUtilitaires/FormattingUtilities.mdx +20 -0
  322. package/src/stories/GuideDuDev/ClassesUtilitaires/index.mdx +10 -0
  323. package/src/utils/formatNir/formatNir.ts +15 -0
  324. package/src/utils/index.ts +1 -0
  325. package/src/utils/insertAt.ts +11 -0
  326. package/src/utils/rules/isDateValid/IsDateValid.mdx +2 -2
  327. package/src/utils/rules/isDateValid/IsDateValid.stories.ts +6 -4
  328. package/src/utils/rules/isDateValid/index.ts +23 -8
  329. package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +9 -0
  330. package/src/utils/rules/isExactLength/IsExactLenght.mdx +1 -1
  331. package/src/utils/rules/isHolidayDay/IsHolidayDay.mdx +19 -7
  332. package/src/utils/rules/isHolidayDay/index.ts +6 -8
  333. package/src/utils/rules/isHolidayDay/tests/isHolidayDay.spec.ts +13 -1
  334. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +2 -2
  335. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +9 -2
  336. package/src/utils/rules/isNotAfterDate/index.ts +5 -12
  337. package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +20 -0
  338. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +2 -2
  339. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +8 -2
  340. package/src/utils/rules/isNotAfterToday/index.ts +6 -6
  341. package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +20 -0
  342. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +2 -2
  343. package/src/utils/rules/isNotBeforeDate/index.ts +5 -12
  344. package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +20 -0
  345. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +2 -2
  346. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +8 -2
  347. package/src/utils/rules/isNotBeforeToday/index.ts +6 -6
  348. package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +19 -0
  349. package/src/utils/rules/validateDateValue.ts +37 -0
  350. package/src/vuetifyConfig.ts +6 -2
  351. package/dist/components/Customs/Selects/SelectBtnField/config.d.ts +0 -11
  352. package/dist/components/DatePicker/tests/setup.d.ts +0 -75370
  353. package/dist/components/Tables/common/formatters.d.ts +0 -17
  354. package/dist/main-CbBVJ_le.js +0 -34377
  355. package/dist/stories/Accessibilite/Vuetify/VuetifyItems.d.ts +0 -70
  356. package/dist/stories/DesignTokens/StylesTypographiques.stories.new.d.ts +0 -8
  357. package/dist/stories/DesignTokens/TypographyDisplay.d.ts +0 -28
  358. package/dist/stories/DesignTokens/vue-shims.d.ts +0 -6
  359. package/src/components/Amelipro/AmeliproMultipleFoldingCard/tests/AmeliproMultipleFoldingCard.spec.ts +0 -40
  360. package/src/components/Amelipro/AmeliproMultipleFoldingCard/tests/__snapshots__/AmeliproMultipleFoldingCard.spec.ts.snap +0 -369
  361. package/src/components/Amelipro/ServiceMenu/ServiceBtn/tests/ServiceBtn.spec.ts +0 -21
  362. package/src/components/Amelipro/ServiceMenu/ServiceBtn/tests/__snapshots__/ServiceBtn.spec.ts.snap +0 -100
  363. package/src/components/Amelipro/ServiceMenu/ServiceList/tests/ServiceList.spec.ts +0 -25
  364. package/src/components/Amelipro/ServiceMenu/ServiceList/tests/__snapshots__/ServiceList.spec.ts.snap +0 -245
  365. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/tests/ServiceMenuContent.spec.ts +0 -45
  366. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/tests/__snapshots__/ServiceMenuContent.spec.ts.snap +0 -787
  367. package/src/components/Amelipro/ServiceMenu/tests/ServiceMenu.spec.ts +0 -46
  368. package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +0 -111
  369. package/src/components/Amelipro/StructureMenu/StructureBtn/tests/StructureBtn.spec.ts +0 -17
  370. package/src/components/Amelipro/StructureMenu/StructureBtn/tests/__snapshots__/StructureBtn.spec.ts.snap +0 -34
  371. package/src/components/Amelipro/StructureMenu/StructureItem/tests/StructureItem.spec.ts +0 -21
  372. package/src/components/Amelipro/StructureMenu/StructureItem/tests/__snapshots__/StructureItem.spec.ts.snap +0 -106
  373. package/src/components/Amelipro/StructureMenu/StructureList/tests/StructureList.spec.ts +0 -33
  374. package/src/components/Amelipro/StructureMenu/StructureList/tests/__snapshots__/StructureList.spec.ts.snap +0 -353
  375. package/src/components/Amelipro/StructureMenu/StructureTabs/tests/StructureTabs.spec.ts +0 -60
  376. package/src/components/Amelipro/StructureMenu/StructureTabs/tests/__snapshots__/StructureTabs.spec.ts.snap +0 -824
  377. package/src/components/Amelipro/StructureMenu/tests/StructureMenu.spec.ts +0 -69
  378. package/src/components/Amelipro/StructureMenu/tests/__snapshots__/StructureMenu.spec.ts.snap +0 -1383
  379. package/src/components/Amelipro/UserInformationSummary/tests/UserInformationSummary.spec.ts +0 -24
  380. package/src/components/Amelipro/UserMenu/UserMenuDetails/tests/UserMenuDetails.spec.ts +0 -33
  381. package/src/components/Amelipro/UserMenu/UserMenuDetails/tests/__snapshots__/UserMenuDetails.spec.ts.snap +0 -3
  382. package/src/components/Amelipro/UserMenu/tests/UserMenu.spec.ts +0 -34
  383. package/src/components/Amelipro/UserMenu/tests/__snapshots__/UserMenu.spec.ts.snap +0 -101
  384. package/src/components/Customs/Selects/SelectBtnField/config.ts +0 -11
  385. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.events.spec.ts +0 -151
  386. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +0 -148
  387. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +0 -361
  388. package/src/components/DatePicker/DateTextInput/DateTextInput.spec.ts +0 -709
  389. package/src/components/DatePicker/tests/DatePicker.validation.spec.ts +0 -4111
  390. package/src/components/DatePicker/tests/archiTest.md +0 -33
  391. package/src/components/DatePicker/tests/navigation.regression.spec.ts +0 -74
  392. package/src/components/DatePicker/tests/navigation.simple.spec.ts +0 -137
  393. package/src/components/DatePicker/tests/setup.ts +0 -243
  394. package/src/components/Tables/common/formatters.ts +0 -72
@@ -0,0 +1,324 @@
1
+ <script lang="ts" setup>
2
+
3
+ import { computed, nextTick, onMounted, ref, watch } from 'vue'
4
+ import { useValidation, type ValidationRule } from '@/composables/validation/useValidation'
5
+ import { useValidatable } from '@/composables/validation/useValidatable'
6
+ import { locales } from './locales'
7
+
8
+ const props = withDefaults(
9
+ defineProps<{
10
+ modelValue?: PropertyKey | null
11
+ label?: string
12
+ displayAsterisk?: boolean
13
+ ariaLabel?: string
14
+ ariaLabelledby?: string
15
+ title?: string
16
+ color?: string
17
+ disabled?: boolean
18
+ readonly?: boolean
19
+ hideDetails?: boolean | 'auto'
20
+ density?: 'default' | 'comfortable' | 'compact'
21
+ options?: Array<{ label: string, value: PropertyKey }>
22
+ name?: string
23
+ id?: string
24
+ required?: boolean
25
+ errorMessages?: string[] | null
26
+ warningMessages?: string[] | null
27
+ successMessages?: string[] | null
28
+ customRules?: ValidationRule[]
29
+ customWarningRules?: ValidationRule[]
30
+ customSuccessRules?: ValidationRule[]
31
+ showSuccessMessages?: boolean
32
+ isValidateOnBlur?: boolean
33
+ disableErrorHandling?: boolean
34
+ }>(),
35
+ {
36
+ modelValue: null,
37
+ label: undefined,
38
+ displayAsterisk: false,
39
+ ariaLabel: undefined,
40
+ ariaLabelledby: undefined,
41
+ title: undefined,
42
+ color: 'primary',
43
+ disabled: false,
44
+ readonly: false,
45
+ hideDetails: 'auto',
46
+ density: 'default',
47
+ options: () => [],
48
+ name: undefined,
49
+ id: undefined,
50
+ required: false,
51
+ errorMessages: null,
52
+ warningMessages: null,
53
+ successMessages: null,
54
+ customRules: () => [],
55
+ customWarningRules: () => [],
56
+ customSuccessRules: () => [],
57
+ showSuccessMessages: true,
58
+ isValidateOnBlur: false,
59
+ disableErrorHandling: false,
60
+ },
61
+ )
62
+
63
+ const emit = defineEmits(['update:modelValue', 'change'])
64
+ const model = computed({
65
+ get() {
66
+ return props.modelValue
67
+ },
68
+ set(value) {
69
+ emit('update:modelValue', value)
70
+ emit('change', value)
71
+ },
72
+ })
73
+
74
+ const generatedLabel = computed(() =>
75
+ (props.label || '') + (props.displayAsterisk ? '*' : ''),
76
+ )
77
+
78
+ // Initialisation du composable de validation
79
+ // Variable pour suivre si le formulaire a été soumis
80
+ const isSubmitted = ref(false)
81
+
82
+ const validation = useValidation({
83
+ customRules: props.customRules,
84
+ warningRules: props.customWarningRules,
85
+ successRules: props.customSuccessRules,
86
+ showSuccessMessages: props.showSuccessMessages,
87
+ fieldIdentifier: props.label,
88
+ disableErrorHandling: props.disableErrorHandling,
89
+ })
90
+
91
+ // Synchronisation des messages externes
92
+ watch(() => props.errorMessages, value => (validation.errors.value = value || []), { immediate: true })
93
+ watch(() => props.warningMessages, value => (validation.warnings.value = value || []), { immediate: true })
94
+ watch(() => props.successMessages, value => (validation.successes.value = value || []), { immediate: true })
95
+
96
+ // Construction des règles de validation
97
+ const defaultRules = computed<ValidationRule[]>(() =>
98
+ props.required
99
+ ? [{
100
+ type: 'required',
101
+ options: {
102
+ message: `Le champ ${props.label || 'ce champ'} est requis.`,
103
+ fieldIdentifier: props.label,
104
+ },
105
+ }]
106
+ : [],
107
+ )
108
+
109
+ const validateField = (value: PropertyKey | null) => {
110
+ // const stringValue = value != null ? String(value) : null
111
+
112
+ if (props.readonly) {
113
+ validation.clearValidation()
114
+ return true
115
+ }
116
+
117
+ if (value === null && !props.required) {
118
+ validation.clearValidation()
119
+ return true
120
+ }
121
+
122
+ const result = validation.validateField(
123
+ value,
124
+ [...defaultRules.value, ...props.customRules],
125
+ props.customWarningRules,
126
+ props.customSuccessRules,
127
+ )
128
+ return !result.hasError
129
+ }
130
+
131
+ const validateOnSubmit = () => {
132
+ isSubmitted.value = true
133
+ return validateField(model.value)
134
+ }
135
+
136
+ const checkErrorOnBlur = () => {
137
+ validateField(model.value)
138
+ }
139
+
140
+ watch(model, (newValue) => {
141
+ if (!props.isValidateOnBlur) {
142
+ // Si le formulaire a été soumis et que la valeur change, on valide à nouveau
143
+ if (isSubmitted.value) {
144
+ const isValid = validateField(newValue)
145
+ if (isValid) {
146
+ // La validation a réussi, effacer les erreurs
147
+ validation.clearValidation()
148
+ }
149
+ }
150
+ else {
151
+ // Comportement normal (hors soumission)
152
+ const isValid = validateField(newValue)
153
+ // Si la validation réussit, s'assurer que les erreurs sont effacées
154
+ if (isValid && validation.hasError.value) {
155
+ validation.clearValidation()
156
+ }
157
+ }
158
+ }
159
+ })
160
+ const hasError = computed(() => validation.hasError.value)
161
+ const hasWarning = computed(() => validation.hasWarning.value)
162
+ const hasSuccess = computed(() => validation.hasSuccess.value)
163
+
164
+ const errors = computed(() => validation.errors.value)
165
+ const warnings = computed(() => validation.warnings.value)
166
+ const successes = computed(() => validation.successes.value)
167
+
168
+ const getAriaChecked = (value: PropertyKey) => {
169
+ return model.value === value ? 'true' : 'false'
170
+ }
171
+
172
+ // Propriétés ARIA personnalisées pour éviter les conflits
173
+ const messageId = computed(() => {
174
+ // Don't create messageId if aria-labelledby is provided
175
+ if (props.ariaLabelledby) {
176
+ return undefined
177
+ }
178
+
179
+ if (props.id) {
180
+ return `${props.id}`
181
+ }
182
+ return undefined
183
+ })
184
+
185
+ const removeAriaAttributesForRadio = () => {
186
+ nextTick(() => {
187
+ // Pour aria-disabled sur les radios
188
+ const radioInputsDisabled = document.querySelectorAll(
189
+ 'input[type="radio"][aria-disabled="false"]',
190
+ )
191
+ radioInputsDisabled.forEach((input) => {
192
+ input.removeAttribute('aria-disabled')
193
+ })
194
+
195
+ // Observer les futurs changements
196
+ const observer = new MutationObserver((mutations) => {
197
+ mutations.forEach(() => {
198
+ const newRadioInputsDisabled = document.querySelectorAll(
199
+ 'input[type="radio"][aria-disabled="false"]',
200
+ )
201
+ newRadioInputsDisabled.forEach((input) => {
202
+ input.removeAttribute('aria-disabled')
203
+ })
204
+ })
205
+ })
206
+
207
+ observer.observe(document.body, {
208
+ subtree: true,
209
+ childList: true,
210
+ attributes: true,
211
+ attributeFilter: ['aria-disabled'],
212
+ })
213
+ })
214
+ }
215
+
216
+ // Appliquer la correction lors du montage du composant
217
+ onMounted(() => {
218
+ removeAriaAttributesForRadio()
219
+ if (!props.isValidateOnBlur && !props.required) {
220
+ validateField(model.value)
221
+ }
222
+ })
223
+
224
+ // Intégration avec le système de validation du formulaire
225
+ useValidatable(validateOnSubmit)
226
+
227
+ defineExpose({
228
+ validation,
229
+ validateOnSubmit,
230
+ checkErrorOnBlur,
231
+ })
232
+
233
+ </script>
234
+
235
+ <template>
236
+ <v-radio-group
237
+ :id="props.id"
238
+ v-model="model"
239
+ :class="{
240
+ 'warning-field': hasWarning && !hasError,
241
+ 'success-field': hasSuccess && !hasError && !hasWarning,
242
+ 'error-field': hasError,
243
+ }"
244
+ :label="generatedLabel"
245
+ :name="props.name"
246
+ :aria-label="props.ariaLabel"
247
+ :aria-labelledby="props.ariaLabelledby"
248
+ :title="props.title"
249
+ :color="props.color"
250
+ :disabled="props.disabled"
251
+ :readonly="props.readonly"
252
+ :hide-details="props.hideDetails"
253
+ :density="props.density"
254
+ :error="hasError"
255
+ :error-messages="hasError ? errors : undefined"
256
+ :aria-describedby="messageId"
257
+ :messages="hasError ? errors :
258
+ hasWarning ? warnings :
259
+ (hasSuccess && props.showSuccessMessages ? successes : [])
260
+ "
261
+ >
262
+ <v-radio
263
+ v-for="opt in props.options"
264
+ :key="opt.value"
265
+ :value="opt.value"
266
+ role="radio"
267
+ :label="opt.label"
268
+ :aria-checked="getAriaChecked(opt.value)"
269
+ @blur="checkErrorOnBlur"
270
+ />
271
+ <template
272
+ v-if="$slots.label"
273
+ #label
274
+ >
275
+ <slot name="label" />
276
+ </template>
277
+ <template
278
+ v-if="$slots.default"
279
+ #default
280
+ >
281
+ <slot />
282
+ </template>
283
+ <span
284
+ v-if="messageId && props.required && !props.ariaLabel && !props.ariaLabelledby"
285
+ :id="messageId"
286
+ class="d-sr-only"
287
+ >
288
+ {{ locales.labelledbyMessage }} <span v-if="props.label">{{ props.label + (props.displayAsterisk ? '*' : '')
289
+ }}</span>.
290
+ </span>
291
+ </v-radio-group>
292
+ </template>
293
+
294
+ <style scoped>
295
+ :deep(.v-selection-control--error .v-selection-control__input) {
296
+ color: rgb(var(--v-theme-error));
297
+ }
298
+
299
+ .sb-show-main.sb-main-centered #storybook-root {
300
+ margin: none !important;
301
+ }
302
+
303
+ .warning-field {
304
+ :deep(.v-messages__message) {
305
+ color: rgb(var(--v-theme-warning)) !important;
306
+ }
307
+
308
+ :deep(.v-selection-control__input) {
309
+ color: rgb(var(--v-theme-warning));
310
+ }
311
+ }
312
+
313
+ .error-field {
314
+ :deep(.v-messages__message) {
315
+ color: rgb(var(--v-theme-error)) !important;
316
+ }
317
+ }
318
+
319
+ .success-field {
320
+ :deep(.v-messages__message) {
321
+ color: rgb(var(--v-theme-success)) !important;
322
+ }
323
+ }
324
+ </style>
@@ -0,0 +1,3 @@
1
+ export const locales = {
2
+ labelledbyMessage: 'Sélectionner l\'option',
3
+ }
@@ -0,0 +1,135 @@
1
+ import SyRadioGroup from '../SyRadioGroup.vue'
2
+ import { mount } from '@vue/test-utils'
3
+ import { describe, it, expect } from 'vitest'
4
+ import { nextTick } from 'vue'
5
+
6
+ describe('SyRadioGroup', () => {
7
+ it('should render correctly', () => {
8
+ const wrapper = mount(SyRadioGroup, {
9
+ props: {
10
+ label: 'Test radio group',
11
+ options: [
12
+ { label: 'A', value: 'A' },
13
+ { label: 'B', value: 'B' },
14
+ ],
15
+ },
16
+ })
17
+
18
+ expect(wrapper.find('.v-radio-group').exists()).toBe(true)
19
+ expect(wrapper.text()).toContain('Test radio group')
20
+ expect(wrapper.findAll('input[type="radio"]').length).toBe(2)
21
+ })
22
+ it('should handle v-model correctly', async () => {
23
+ const wrapper = mount(SyRadioGroup, {
24
+ props: {
25
+ 'modelValue': null,
26
+ 'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e }),
27
+ 'options': [
28
+ { label: 'Option A', value: 'A' },
29
+ { label: 'Option B', value: 'B' },
30
+
31
+ ],
32
+ },
33
+ })
34
+
35
+ // Sélectionner la première option
36
+ await wrapper.find('input[type="radio"]').setValue(true)
37
+ await nextTick()
38
+
39
+ expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['A'])
40
+ expect(wrapper.emitted('change')?.[0]).toEqual(['A'])
41
+ })
42
+
43
+ it('should handle validation correctly', async () => {
44
+ const wrapper = mount(SyRadioGroup, {
45
+ props: {
46
+ 'modelValue': null,
47
+ 'label': 'Required Radio',
48
+ 'required': true,
49
+ 'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e }),
50
+ 'options': [
51
+ { label: 'X', value: 'X' },
52
+ ],
53
+ },
54
+ })
55
+
56
+ // Valider le champ directement via la méthode exposée
57
+ const isValid = await wrapper.vm.validateOnSubmit()
58
+ expect(isValid).toBe(false)
59
+
60
+ // Vérifier que le message d'erreur est présent
61
+ await nextTick()
62
+ const errorMessages = wrapper.findAll('.v-messages__message')
63
+ expect(errorMessages.length).toBeGreaterThan(0)
64
+ expect(errorMessages[0].text()).toContain('Required Radio est requis')
65
+
66
+ // Sélectionner l'option
67
+ const radioX = wrapper.find('input[value="X"]')
68
+ await radioX.setValue(true)
69
+ await nextTick()
70
+
71
+ // Valider à nouveau
72
+ const isValidAfter = await wrapper.vm.validateOnSubmit()
73
+ expect(isValidAfter).toBe(true)
74
+ expect(wrapper.vm.modelValue).toBe('X')
75
+ })
76
+
77
+ it('should handle readonly and disabled states', async () => {
78
+ const wrapper = mount(SyRadioGroup, {
79
+ props: {
80
+ modelValue: null,
81
+ readonly: true,
82
+ options: [{ label: 'X', value: 'X' }],
83
+ },
84
+ })
85
+
86
+ // Cliquer sur radio button en lecture seule ne devrait pas changer sa valeur
87
+ await wrapper.find('.v-radio-group').trigger('click')
88
+ expect(wrapper.emitted('update:modelValue')).toBeFalsy()
89
+
90
+ // Tester l'état désactivé
91
+ await wrapper.setProps({ readonly: false, disabled: true })
92
+ await wrapper.find('.v-radio-group').trigger('click')
93
+ expect(wrapper.emitted('update:modelValue')).toBeFalsy()
94
+ })
95
+
96
+ it('should handle custom validation rules', async () => {
97
+ const customRule = {
98
+ type: 'custom',
99
+ options: {
100
+ // La fonction de validation personnalisée doit être définie dans options.validate
101
+ validate: (value: unknown) => value === 'OK', // type générique unknown
102
+ message: 'Vous devez sélectionner une option.',
103
+ fieldIdentifier: 'Custom Radio',
104
+ },
105
+ }
106
+
107
+ const wrapper = mount(SyRadioGroup, {
108
+ props: {
109
+ 'modelValue': null,
110
+ 'required': true,
111
+ 'customRules': [customRule],
112
+ 'isValidateOnBlur': false,
113
+ 'options': [
114
+ { label: 'Non', value: 'NO' },
115
+ { label: 'Oui', value: 'OK' },
116
+ { label: 'Peut-être', value: 42 }, // exemple valeur non-string
117
+ ],
118
+ 'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e }),
119
+ },
120
+ })
121
+
122
+ // Validation initiale : aucune option sélectionnée
123
+ const isValidInitial = await wrapper.vm.validateOnSubmit()
124
+ expect(isValidInitial).toBe(false)
125
+ expect(wrapper.vm.validation.errors.value).toContain('Vous devez sélectionner une option.')
126
+
127
+ // Sélectionner l’option correcte
128
+ await wrapper.setProps({ modelValue: 'OK' })
129
+
130
+ // Validation après sélection
131
+ const isValidCorrect = await wrapper.vm.validateOnSubmit()
132
+ expect(isValidCorrect).toBe(true)
133
+ expect(wrapper.vm.validation.errors.value).toHaveLength(0)
134
+ })
135
+ })
@@ -330,7 +330,7 @@
330
330
  >
331
331
  <li
332
332
  v-for="(item, index) in Array.isArray(items) ? items : []"
333
- :key="index"
333
+ :key="item.label || index"
334
334
  class="sy-tabs__item"
335
335
  role="presentation"
336
336
  >