@cnamts/synapse 1.0.19 → 1.0.21

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 (378) hide show
  1. package/dist/{DateFilter-CeVuSfJ9.js → DateFilter-uN8OURoP.js} +1 -1
  2. package/dist/{NumberFilter-C8PAu_sw.js → NumberFilter-sm1dQNQi.js} +1 -1
  3. package/dist/{PeriodFilter-UMUaxx3d.js → PeriodFilter-Cklsxnh9.js} +1 -1
  4. package/dist/{SelectFilter-CqZl8CYt.js → SelectFilter-CWefj27Z.js} +1 -1
  5. package/dist/{TextFilter-D_RhhNOh.js → TextFilter-Ddyj885L.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +4 -4
  7. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +17 -7
  8. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +4 -4
  9. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +4 -4
  10. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2416 -0
  11. package/dist/components/Customs/Selects/SyAutocomplete/types.d.ts +5 -0
  12. package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +14 -0
  13. package/dist/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.d.ts +16 -0
  14. package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +28 -0
  15. package/dist/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.d.ts +12 -0
  16. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +2 -0
  17. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +160 -0
  18. package/dist/components/Customs/SyCheckBoxGroup/locales.d.ts +3 -0
  19. package/dist/components/Customs/SyCheckBoxGroup/types.d.ts +10 -0
  20. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1545 -2
  21. package/dist/components/Customs/SyIcon/SyIcon.d.ts +2 -1
  22. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1495 -2
  23. package/dist/components/DatePicker/composables/useDateSelection.d.ts +1 -0
  24. package/dist/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.d.ts +60 -0
  25. package/dist/components/ErrorPage/ErrorPage.d.ts +1 -12
  26. package/dist/components/ErrorPage/locales.d.ts +18 -3
  27. package/dist/components/FileUpload/FileUpload.d.ts +2 -0
  28. package/dist/components/MaintenancePage/locales.d.ts +18 -2
  29. package/dist/components/NotFoundPage/locales.d.ts +20 -4
  30. package/dist/components/PaginatedTable/PaginatedTable.d.ts +1 -1
  31. package/dist/components/PaginatedTable/Pagination.d.ts +17 -0
  32. package/dist/components/StatusPage/StatusPage.d.ts +39 -0
  33. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -5
  34. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -5
  35. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +13 -3
  36. package/dist/components/index.d.ts +4 -0
  37. package/dist/components/types.d.ts +15 -0
  38. package/dist/composables/useFormFieldErrorHandling.d.ts +31 -0
  39. package/dist/design-system-v3.js +126 -122
  40. package/dist/design-system-v3.umd.cjs +325 -314
  41. package/dist/{main-B39UVv5p.js → main-CWniLr0s.js} +15837 -14587
  42. package/dist/modules.d.ts +6 -0
  43. package/dist/style.css +1 -1
  44. package/dist/utils/theme/index.d.ts +6 -0
  45. package/package.json +12 -10
  46. package/src/assets/amelipro/icons.ts +166 -153
  47. package/src/components/Accordion/Accordion.mdx +4 -1
  48. package/src/components/Accordion/{Accessibilite/AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +2 -2
  49. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +73 -14
  50. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +119 -27
  51. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.a11y.spec.ts +304 -0
  52. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +435 -9
  53. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +60 -0
  54. package/src/components/Amelipro/AmeliproIcon/__tests__/AmeliproIcon.spec.ts +1 -1
  55. package/src/components/Amelipro/AmeliproIcon/iconList.ts +2 -0
  56. package/src/components/BackBtn/BackBtn.vue +5 -4
  57. package/src/components/BackBtn/accessibilite/Accessibility.mdx +15 -0
  58. package/src/components/BackToTopBtn/BackToTopBtn.vue +6 -3
  59. package/src/components/BackToTopBtn/accessibilite/Accessibility.mdx +15 -0
  60. package/src/components/Captcha/Captcha.vue +5 -1
  61. package/src/components/Captcha/CaptchaAlert.vue +9 -7
  62. package/src/components/Captcha/accessibilite/Accessibility.mdx +10 -0
  63. package/src/components/ChipList/accessibilite/Accessibility.mdx +15 -0
  64. package/src/components/CollapsibleList/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +8 -6
  65. package/src/components/Common/IconSlot/IconSlot.vue +1 -1
  66. package/src/components/ContextualMenu/ContextualMenu.stories.ts +0 -3
  67. package/src/components/ContextualMenu/accessibilite/Accessibility.mdx +71 -0
  68. package/src/components/CookieBanner/CookieBanner.stories.ts +11 -20
  69. package/src/components/CookieBanner/CookieBanner.vue +20 -5
  70. package/src/components/CookieBanner/accessibilite/Accessibility.mdx +71 -0
  71. package/src/components/CookieBanner/tests/CookieBanner.spec.ts +48 -4
  72. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +5 -4
  73. package/src/components/CopyBtn/CopyBtn.vue +6 -3
  74. package/src/components/CopyBtn/accessibilite/Accessibility.mdx +15 -0
  75. package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +15 -0
  76. package/src/components/Customs/Selects/SelectOverview.mdx +112 -1
  77. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.mdx +52 -0
  78. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +979 -0
  79. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +653 -0
  80. package/src/components/Customs/Selects/{SySelect → SyAutocomplete/accessibilite}/Accessibilite.stories.ts +7 -38
  81. package/src/components/Customs/Selects/{SySelect/Accessibilite.mdx → SyAutocomplete/accessibilite/Accessibility.mdx} +15 -20
  82. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +72 -0
  83. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +345 -0
  84. package/src/components/Customs/Selects/SyAutocomplete/types.ts +7 -0
  85. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +180 -0
  86. package/src/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.ts +46 -0
  87. package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +107 -0
  88. package/src/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.ts +74 -0
  89. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +13 -9
  90. package/src/components/Customs/Selects/SyInputSelect/accessibilite/Accessibility.mdx +12 -0
  91. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +43 -34
  92. package/src/components/Customs/Selects/SySelect/SySelect.vue +19 -2
  93. package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +274 -0
  94. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +21 -16
  95. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.mdx +32 -0
  96. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +856 -0
  97. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +334 -0
  98. package/src/components/Customs/SyCheckBoxGroup/accessibilite/Accessibility.mdx +243 -0
  99. package/src/components/Customs/SyCheckBoxGroup/locales.ts +3 -0
  100. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.a11y.spec.ts +30 -0
  101. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.spec.ts +152 -0
  102. package/src/components/Customs/SyCheckBoxGroup/types.ts +10 -0
  103. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +16 -27
  104. package/src/components/Customs/SyCheckbox/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -3
  105. package/src/components/Customs/SyForm/SyForm.a11y.spec.ts +1 -1
  106. package/src/components/Customs/SyForm/accessibilite/Accessibility.mdx +10 -0
  107. package/src/components/Customs/SyIcon/SyIcon.mdx +4 -1
  108. package/src/components/Customs/SyIcon/SyIcon.vue +4 -3
  109. package/src/components/Customs/SyIcon/{Accessibilite.stories.ts → accessibilite/Accessibilite.stories.ts} +3 -3
  110. package/src/components/Customs/SyIcon/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  111. package/src/components/Customs/SyPagination/SyPagination.mdx +4 -2
  112. package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +10 -0
  113. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +16 -43
  114. package/src/components/Customs/SyRadioGroup/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  115. package/src/components/Customs/SyTabs/SyTabs.mdx +4 -2
  116. package/src/components/Customs/SyTabs/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
  117. package/src/components/Customs/SyTextField/SyTextField.mdx +1 -2
  118. package/src/components/Customs/SyTextField/SyTextField.vue +13 -0
  119. package/src/components/Customs/SyTextField/accessibilite/Accessibility.mdx +15 -0
  120. package/src/components/DataList/accessibilite/Accessibility.mdx +15 -0
  121. package/src/components/DataListGroup/accessibilite/Accessibility.mdx +14 -0
  122. package/src/components/DatePicker/Accessibilite.mdx +1 -1
  123. package/src/components/DatePicker/Accessibilite.stories.ts +1 -1
  124. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +7 -4
  125. package/src/components/DatePicker/CalendarMode/DatePicker.vue +49 -13
  126. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +43 -2
  127. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +297 -0
  128. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +48 -21
  129. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +98 -0
  130. package/src/components/DatePicker/composables/useDateSelection.ts +5 -0
  131. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +273 -0
  132. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
  133. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +10 -0
  134. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.mdx +83 -0
  135. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.stories.ts +502 -0
  136. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.vue +428 -0
  137. package/src/components/DeclarationAccessibilityPage/accessibilite/Accessibility.mdx +75 -0
  138. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.a11y.spec.ts +53 -0
  139. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.spec.ts +59 -0
  140. package/src/components/DiacriticPicker/DiacriticPicker.vue +20 -1
  141. package/src/components/DiacriticPicker/accessibilite/Accessibility.mdx +10 -0
  142. package/src/components/DialogBox/accessibilite/Accessibility.mdx +15 -0
  143. package/src/components/DownloadBtn/DownloadBtn.vue +5 -4
  144. package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +15 -0
  145. package/src/components/ErrorPage/ErrorPage.mdx +6 -16
  146. package/src/components/ErrorPage/ErrorPage.stories.ts +16 -87
  147. package/src/components/ErrorPage/ErrorPage.vue +38 -125
  148. package/src/components/ErrorPage/accessibilite/Accessibility.mdx +77 -0
  149. package/src/components/ErrorPage/assets/error-ap.svg +1774 -0
  150. package/src/components/ErrorPage/locales.ts +21 -3
  151. package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +5 -13
  152. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +2 -41
  153. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +8 -266
  154. package/src/components/ExternalLinks/accessibilite/Accessibility.mdx +15 -0
  155. package/src/components/FileList/UploadItem/UploadItem.vue +25 -20
  156. package/src/components/FileList/accessibilite/Accessibility.mdx +12 -0
  157. package/src/components/FilePreview/accessibilite/Accessibility.mdx +12 -0
  158. package/src/components/FileUpload/FileUpload.vue +5 -0
  159. package/src/components/FileUpload/FileUploadContent.vue +5 -4
  160. package/src/components/FileUpload/accessibilite/Accessibility.mdx +12 -0
  161. package/src/components/FilterInline/FilterInline.vue +5 -4
  162. package/src/components/FilterInline/accessibilite/Accessibility.mdx +12 -0
  163. package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +15 -0
  164. package/src/components/FooterBar/FooterBar.stories.ts +18 -14
  165. package/src/components/FooterBar/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -4
  166. package/src/components/FooterBar/defaultSocialMediaLinks.ts +6 -4
  167. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +6 -5
  168. package/src/components/FranceConnectBtn/accessibilite/Accessibility.mdx +15 -0
  169. package/src/components/FranceConnectBtn/tests/__snapshots__/FranceConnectBtn.spec.ts.snap +3 -0
  170. package/src/components/HeaderBar/HeaderBurgerMenu/accessibilite/Accessibility.mdx +15 -0
  171. package/src/components/HeaderBar/accessibilite/Accessibility.mdx +15 -0
  172. package/src/components/HeaderBar/{Usages.mdx → usages/Usages.mdx} +2 -2
  173. package/src/components/HeaderLoading/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +9 -5
  174. package/src/components/HeaderToolbar/accessibilite/Accessibility.mdx +15 -0
  175. package/src/components/LangBtn/LangBtn.vue +5 -4
  176. package/src/components/LangBtn/accessibilite/Accessibility.mdx +15 -0
  177. package/src/components/Logo/accessibilite/Accessibility.mdx +17 -0
  178. package/src/components/LogoBrandSection/accessibilite/Accessibility.mdx +12 -0
  179. package/src/components/LunarCalendar/accessibilite/Accessibility.mdx +10 -0
  180. package/src/components/MaintenancePage/MaintenancePage.mdx +1 -1
  181. package/src/components/MaintenancePage/MaintenancePage.vue +15 -7
  182. package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +70 -0
  183. package/src/components/MaintenancePage/assets/maintenance-ap.svg +1718 -0
  184. package/src/components/MaintenancePage/locales.ts +24 -3
  185. package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +75 -3
  186. package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +42 -2
  187. package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +3 -2
  188. package/src/components/NirField/accessibilite/Accessibility.mdx +15 -0
  189. package/src/components/NotFoundPage/NotFoundPage.mdx +1 -1
  190. package/src/components/NotFoundPage/NotFoundPage.stories.ts +3 -3
  191. package/src/components/NotFoundPage/NotFoundPage.vue +16 -11
  192. package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +87 -0
  193. package/src/components/NotFoundPage/assets/not-found-ap.svg +2061 -0
  194. package/src/components/NotFoundPage/locales.ts +24 -4
  195. package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +168 -4
  196. package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +100 -12
  197. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +2 -2
  198. package/src/components/NotificationBar/Notification/Notification.vue +1 -1
  199. package/src/components/NotificationBar/NotificationBar.mdx +2 -2
  200. package/src/components/NotificationBar/accessibilite/Accessibility.mdx +75 -0
  201. package/src/components/PageContainer/{AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +7 -4
  202. package/src/components/PageContainer/tests/PageContainer.a11y.spec.ts +14 -7
  203. package/src/components/PaginatedTable/PaginatedTable.vue +27 -47
  204. package/src/components/PaginatedTable/Pagination.vue +93 -0
  205. package/src/components/PaginatedTable/accessibilite/Accessibility.mdx +12 -0
  206. package/src/components/PasswordField/PasswordField.vue +2 -1
  207. package/src/components/PasswordField/accessibilite/Accessibility.mdx +108 -0
  208. package/src/components/PeriodField/accessibilite/Accessibility.mdx +12 -0
  209. package/src/components/PhoneField/PhoneField.stories.ts +46 -38
  210. package/src/components/PhoneField/accessibilite/Accessibility.mdx +15 -0
  211. package/src/components/RangeField/accessibilite/Accessibility.mdx +15 -0
  212. package/src/components/RatingPicker/accessibilite/Accessibility.mdx +15 -0
  213. package/src/components/SearchListField/SearchListField.vue +6 -3
  214. package/src/components/SearchListField/accessibilite/Accessibility.mdx +15 -0
  215. package/src/components/SkipLink/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +7 -4
  216. package/src/components/SocialMediaLinks/DefaultSocialMediaLinks.ts +6 -4
  217. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +7 -5
  218. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +17 -13
  219. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +9 -1
  220. package/src/components/SocialMediaLinks/accessibilite/Accessibility.mdx +67 -0
  221. package/src/components/SocialMediaLinks/tests/DefaultSocialMediaLinks.spec.ts +5 -5
  222. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.a11y.spec.ts +59 -0
  223. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +9 -7
  224. package/src/components/StatusPage/StatusPage.mdx +22 -0
  225. package/src/components/StatusPage/StatusPage.stories.ts +193 -0
  226. package/src/components/StatusPage/StatusPage.vue +145 -0
  227. package/src/components/StatusPage/accessibilite/Accessibility.mdx +81 -0
  228. package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +29 -0
  229. package/src/components/StatusPage/tests/StatusPage.spec.ts +50 -0
  230. package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +270 -0
  231. package/src/components/SubHeader/accessibilite/Accessibility.mdx +15 -0
  232. package/src/components/SyAlert/SyAlert.vue +6 -6
  233. package/src/components/SyAlert/accessibilite/Accessibility.mdx +12 -0
  234. package/src/components/SyTextArea/accessibilite/Accessibility.mdx +10 -0
  235. package/src/components/TableToolbar/TableToolbar.stories.ts +6 -6
  236. package/src/components/TableToolbar/TableToolbar.vue +7 -4
  237. package/src/components/TableToolbar/accessibilite/Accessibility.mdx +12 -0
  238. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +0 -5
  239. package/src/components/Tables/SyServerTable/SyServerTable.mdx +4 -1
  240. package/src/components/Tables/SyServerTable/accessibilite/Accessibility.mdx +10 -0
  241. package/src/components/Tables/SyTable/SyTable.mdx +4 -1
  242. package/src/components/Tables/SyTable/accessibilite/Accessibility.mdx +10 -0
  243. package/src/components/Tables/common/TableHeader.vue +3 -1
  244. package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +18 -14
  245. package/src/components/ToolbarContainer/ToolbarContainer.mdx +2 -1
  246. package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +563 -420
  247. package/src/components/ToolbarContainer/accessibilite/Accessibility.mdx +69 -0
  248. package/src/components/UploadWorkflow/UploadWorkflow.mdx +11 -1
  249. package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +107 -3
  250. package/src/components/UploadWorkflow/UploadWorkflow.vue +35 -24
  251. package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +12 -0
  252. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +48 -0
  253. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +9 -5
  254. package/src/components/UploadWorkflow/useFileList.ts +7 -0
  255. package/src/components/Usages/Usages.vue +3 -2
  256. package/src/components/UserMenuBtn/UserMenuBtn.vue +7 -5
  257. package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +12 -0
  258. package/src/components/index.ts +5 -0
  259. package/src/components/types.ts +10 -0
  260. package/src/composables/rules/tests/useFieldValidation.spec.ts +39 -3
  261. package/src/composables/rules/useFieldValidation.ts +31 -9
  262. package/src/composables/useFormFieldErrorHandling.ts +141 -0
  263. package/src/modules.d.ts +6 -0
  264. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +7 -0
  265. package/src/utils/theme/index.ts +19 -0
  266. package/src/utils/theme/tests/useThemeLocales.spec.ts +245 -0
  267. package/dist/components/MaintenancePage/index.d.ts +0 -2
  268. package/src/components/BackBtn/Accessibilite.mdx +0 -14
  269. package/src/components/BackBtn/Accessibilite.stories.ts +0 -30
  270. package/src/components/BackToTopBtn/Accessibilite.mdx +0 -14
  271. package/src/components/BackToTopBtn/Accessibilite.stories.ts +0 -31
  272. package/src/components/ChipList/Accessibilite.mdx +0 -14
  273. package/src/components/ChipList/Accessibilite.stories.ts +0 -31
  274. package/src/components/CollapsibleList/Accessibilite.stories.ts +0 -29
  275. package/src/components/ContextualMenu/Accessibilite.mdx +0 -13
  276. package/src/components/ContextualMenu/Accessibilite.stories.ts +0 -29
  277. package/src/components/CookieBanner/Accessibilite.mdx +0 -13
  278. package/src/components/CookieBanner/Accessibilite.stories.ts +0 -30
  279. package/src/components/CopyBtn/Accessibilite.mdx +0 -13
  280. package/src/components/CopyBtn/Accessibilite.stories.ts +0 -29
  281. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.mdx +0 -14
  282. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.stories.ts +0 -29
  283. package/src/components/Customs/Selects/SyInputSelect/Accessibilite.mdx +0 -13
  284. package/src/components/Customs/Selects/SyInputSelect/Accessibilite.stories.ts +0 -25
  285. package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +0 -27
  286. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +0 -51
  287. package/src/components/Customs/SyTextField/Accessibilite.mdx +0 -14
  288. package/src/components/Customs/SyTextField/Accessibilite.stories.ts +0 -34
  289. package/src/components/DataList/Accessibilite.mdx +0 -13
  290. package/src/components/DataList/Accessibilite.stories.ts +0 -29
  291. package/src/components/DataListGroup/Accessibilite.mdx +0 -13
  292. package/src/components/DataListGroup/Accessibilite.stories.ts +0 -29
  293. package/src/components/DataListItem/tests/DataListItem.a11y.spec.ts +0 -31
  294. package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +0 -27
  295. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +0 -26
  296. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.a11y.spec.ts +0 -27
  297. package/src/components/DialogBox/Accessibilite.mdx +0 -14
  298. package/src/components/DialogBox/Accessibilite.stories.ts +0 -29
  299. package/src/components/DownloadBtn/Accessibilite.mdx +0 -14
  300. package/src/components/DownloadBtn/Accessibilite.stories.ts +0 -29
  301. package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +0 -26
  302. package/src/components/ErrorPage/Accessibilite.mdx +0 -13
  303. package/src/components/ErrorPage/Accessibilite.stories.ts +0 -36
  304. package/src/components/ExternalLinks/Accessibilite.mdx +0 -18
  305. package/src/components/ExternalLinks/Accessibilite.stories.ts +0 -62
  306. package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +0 -39
  307. package/src/components/FileList/Accessibilite.mdx +0 -13
  308. package/src/components/FileList/Accessibilite.stories.ts +0 -26
  309. package/src/components/FilePreview/Accessibilite.mdx +0 -14
  310. package/src/components/FilePreview/Accessibilite.stories.ts +0 -26
  311. package/src/components/FileUpload/Accessibilite.mdx +0 -13
  312. package/src/components/FileUpload/Accessibilite.stories.ts +0 -26
  313. package/src/components/FilterInline/Accessibilite.mdx +0 -15
  314. package/src/components/FilterInline/Accessibilite.stories.ts +0 -26
  315. package/src/components/FilterSideBar/Accessibilite.mdx +0 -13
  316. package/src/components/FilterSideBar/Accessibilite.stories.ts +0 -30
  317. package/src/components/FooterBar/Accessibilite.stories.ts +0 -26
  318. package/src/components/FranceConnectBtn/Accessibilite.mdx +0 -13
  319. package/src/components/FranceConnectBtn/Accessibilite.stories.ts +0 -30
  320. package/src/components/HeaderBar/Accessibilite.mdx +0 -13
  321. package/src/components/HeaderBar/Accessibilite.stories.ts +0 -31
  322. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.mdx +0 -13
  323. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +0 -30
  324. package/src/components/HeaderLoading/Accessibilite.stories.ts +0 -31
  325. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.a11y.spec.ts +0 -45
  326. package/src/components/HeaderToolbar/Accessibilite.mdx +0 -13
  327. package/src/components/HeaderToolbar/Accessibilite.stories.ts +0 -36
  328. package/src/components/HeaderToolbar/tests/HeaderToolbar.a11y.spec.ts +0 -25
  329. package/src/components/LangBtn/Accessibilite.mdx +0 -13
  330. package/src/components/LangBtn/Accessibilite.stories.ts +0 -32
  331. package/src/components/Logo/Accessibilite.mdx +0 -13
  332. package/src/components/Logo/Accessibilite.stories.ts +0 -30
  333. package/src/components/LogoBrandSection/Accessibilite.mdx +0 -13
  334. package/src/components/LogoBrandSection/Accessibilite.stories.ts +0 -26
  335. package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +0 -31
  336. package/src/components/MaintenancePage/Accessibilite.mdx +0 -13
  337. package/src/components/MaintenancePage/Accessibilite.stories.ts +0 -36
  338. package/src/components/MaintenancePage/index.ts +0 -3
  339. package/src/components/NirField/Accessibilite.mdx +0 -13
  340. package/src/components/NirField/Accessibilite.stories.ts +0 -31
  341. package/src/components/NotFoundPage/Accessibilite.mdx +0 -13
  342. package/src/components/NotFoundPage/Accessibilite.stories.ts +0 -36
  343. package/src/components/NotificationBar/Accessibilite.mdx +0 -13
  344. package/src/components/NotificationBar/Accessibilite.stories.ts +0 -30
  345. package/src/components/PageContainer/Accessibilite.mdx +0 -13
  346. package/src/components/PageContainer/Accessibilite.stories.ts +0 -30
  347. package/src/components/PaginatedTable/Accessibilite.mdx +0 -13
  348. package/src/components/PaginatedTable/Accessibilite.stories.ts +0 -26
  349. package/src/components/PaginatedTable/tests/PaginatedTable.a11y.spec.ts +0 -43
  350. package/src/components/PasswordField/Accessibilite.mdx +0 -13
  351. package/src/components/PasswordField/Accessibilite.stories.ts +0 -121
  352. package/src/components/PeriodField/Accessibilite.mdx +0 -13
  353. package/src/components/PeriodField/Accessibilite.stories.ts +0 -27
  354. package/src/components/PhoneField/Accessibilite.mdx +0 -13
  355. package/src/components/PhoneField/Accessibilite.stories.ts +0 -32
  356. package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +0 -34
  357. package/src/components/RangeField/Accessibilite.mdx +0 -13
  358. package/src/components/RangeField/Accessibilite.stories.ts +0 -32
  359. package/src/components/RatingPicker/Accessibilite.mdx +0 -13
  360. package/src/components/RatingPicker/Accessibilite.stories.ts +0 -30
  361. package/src/components/SearchListField/Accessibilite.mdx +0 -13
  362. package/src/components/SearchListField/Accessibilite.stories.ts +0 -30
  363. package/src/components/SkipLink/Accessibilite.stories.ts +0 -36
  364. package/src/components/SocialMediaLinks/Accessibilite.mdx +0 -13
  365. package/src/components/SocialMediaLinks/Accessibilite.stories.ts +0 -36
  366. package/src/components/SubHeader/Accessibilite.mdx +0 -13
  367. package/src/components/SubHeader/Accessibilite.stories.ts +0 -36
  368. package/src/components/SyAlert/Accessibilite.mdx +0 -13
  369. package/src/components/SyAlert/Accessibilite.stories.ts +0 -30
  370. package/src/components/TableToolbar/Accessibilite.mdx +0 -13
  371. package/src/components/TableToolbar/Accessibilite.stories.ts +0 -26
  372. package/src/components/UploadWorkflow/Accessibilite.mdx +0 -13
  373. package/src/components/UploadWorkflow/Accessibilite.stories.ts +0 -26
  374. package/src/components/UserMenuBtn/Accessibilite.mdx +0 -13
  375. package/src/components/UserMenuBtn/Accessibilite.stories.ts +0 -25
  376. /package/src/components/HeaderBar/{Usages.stories.ts → usages/Usages.stories.ts} +0 -0
  377. /package/src/components/NotFoundPage/assets/{not-found.svg → not-found-cnam.svg} +0 -0
  378. /package/src/components/SyBtnMenu/accessibilite/{AccessibilityGuide.mdx → Accessibility.mdx} +0 -0
@@ -0,0 +1,979 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import SyAutocomplete from './SyAutocomplete.vue'
3
+ import SyForm from '../../SyForm/SyForm.vue'
4
+ import AccessibilityDocs from './accessibilite/Accessibility.mdx'
5
+ import { ref } from 'vue'
6
+ import { fn } from '@storybook/test'
7
+ import { VBtn } from 'vuetify/components'
8
+
9
+ const meta: Meta<typeof SyAutocomplete> = {
10
+ title: 'Composants/Formulaires/Selects/SyAutocomplete',
11
+ component: SyAutocomplete,
12
+ parameters: {
13
+ layout: 'fullscreen',
14
+ controls: { exclude: ['selectedValue', 'isOpen', 'closeList'] },
15
+ docs: { page: AccessibilityDocs },
16
+ },
17
+ argTypes: {
18
+ bgColor: {
19
+ control: 'text',
20
+ description: 'Couleur de fond du champ',
21
+ },
22
+ chips: {
23
+ control: 'boolean',
24
+ description: 'Affiche les options sélectionnées sous forme de chips',
25
+ },
26
+ clearable: {
27
+ control: 'boolean',
28
+ description: 'Permet de vider la sélection',
29
+ },
30
+ customRules: {
31
+ control: 'object',
32
+ description: 'Règles de validation personnalisées',
33
+ },
34
+ customSuccessRules: {
35
+ control: 'object',
36
+ description: 'Règles de succès personnalisées',
37
+ },
38
+ customWarningRules: {
39
+ control: 'object',
40
+ description: 'Règles d\'avertissement personnalisées',
41
+ },
42
+ debounce: {
43
+ control: 'number',
44
+ description: 'Délai en millisecondes avant le filtrage (défaut: 200)',
45
+ },
46
+ density: {
47
+ control: 'select',
48
+ options: ['default', 'comfortable', 'compact'],
49
+ description: 'Définit la densité du champ',
50
+ },
51
+ disableErrorHandling: {
52
+ control: 'boolean',
53
+ description: 'Désactive la gestion des erreurs',
54
+ },
55
+ displayAsterisk: {
56
+ control: 'boolean',
57
+ description: 'Affiche un astérisque pour les champs obligatoires',
58
+ },
59
+ errorMessages: {
60
+ control: 'object',
61
+ description: 'Messages d\'erreur personnalisés',
62
+ },
63
+ filter: {
64
+ control: 'boolean',
65
+ description: 'Active le filtrage des options basé sur la saisie',
66
+ },
67
+ hasError: {
68
+ control: 'boolean',
69
+ description: 'Indique si le champ a une erreur',
70
+ },
71
+ hasSuccess: {
72
+ control: 'boolean',
73
+ description: 'Indique si le champ est en succès',
74
+ },
75
+ hasWarning: {
76
+ control: 'boolean',
77
+ description: 'Indique si le champ a un avertissement',
78
+ },
79
+ hideNoData: {
80
+ control: 'boolean',
81
+ description: 'Cache le message "aucune option" quand la liste est vide',
82
+ },
83
+ isValidateOnBlur: {
84
+ control: 'boolean',
85
+ description: 'Valide le champ à la perte de focus',
86
+ },
87
+ items: { control: 'object' },
88
+ label: {
89
+ control: 'text',
90
+ description: 'Libellé du champ',
91
+ },
92
+ loading: {
93
+ control: 'boolean',
94
+ description: 'Affiche un indicateur de chargement',
95
+ },
96
+ menuId: {
97
+ control: 'text',
98
+ description: 'ID personnalisé pour le menu',
99
+ },
100
+ modelValue: { control: 'text' },
101
+ multiple: {
102
+ control: 'boolean',
103
+ description: 'Permet la sélection multiple d\'options',
104
+ },
105
+ noDataText: {
106
+ control: 'text',
107
+ description: 'Texte affiché quand aucune option n\'est disponible',
108
+ },
109
+ placeholder: {
110
+ control: 'text',
111
+ description: 'Texte d\'indice affiché quand le champ est vide',
112
+ },
113
+ plainTextKey: {
114
+ control: 'text',
115
+ description: 'Nom de la propriété pour le texte brut de filtrage',
116
+ },
117
+ readonly: {
118
+ control: 'boolean',
119
+ description: 'Rend le champ en lecture seule',
120
+ },
121
+ required: {
122
+ control: 'boolean',
123
+ description: 'Marque le champ comme obligatoire',
124
+ },
125
+ returnObject: {
126
+ control: 'boolean',
127
+ description: 'Retourne l\'objet complet sélectionné',
128
+ },
129
+ showSuccessMessages: {
130
+ control: 'boolean',
131
+ description: 'Affiche les messages de succès',
132
+ },
133
+ successMessages: {
134
+ control: 'object',
135
+ description: 'Messages de succès personnalisés',
136
+ },
137
+ textKey: {
138
+ control: 'text',
139
+ description: 'Nom de la propriété qui contient le texte à afficher',
140
+ },
141
+ valueKey: {
142
+ control: 'text',
143
+ description: 'Nom de la propriété qui contient la valeur à retourner',
144
+ },
145
+ warningMessages: {
146
+ control: 'object',
147
+ description: 'Messages d\'avertissement personnalisés',
148
+ },
149
+ },
150
+ } as Meta<typeof SyAutocomplete>
151
+
152
+ export default meta
153
+
154
+ type Story = StoryObj<typeof meta>
155
+
156
+ const sampleItems = [
157
+ { text: 'Adrien', value: 'Adrien' },
158
+ { text: 'Axel', value: 'Axel' },
159
+ { text: 'Baptiste', value: 'Baptiste' },
160
+ { text: 'Clement', value: 'Clement' },
161
+ { text: 'Corentin', value: 'Corentin' },
162
+ { text: 'Damien', value: 'Damien' },
163
+ { text: 'David', value: 'David' },
164
+ { text: 'Eloi', value: 'Eloi' },
165
+ { text: 'Louis', value: 'Louis' },
166
+ { text: 'Valentin', value: 'Valentin' },
167
+ ]
168
+
169
+ export const Default: Story = {
170
+ parameters: {
171
+
172
+ sourceCode: [
173
+ {
174
+ name: 'Template',
175
+ code: `
176
+ <template>
177
+ <SyAutocomplete
178
+ v-model="selectedValue"
179
+ :items="items"
180
+ label="Rechercher un prénom"
181
+ />
182
+ </template>
183
+ `,
184
+ },
185
+ {
186
+ name: 'Script',
187
+ code: `
188
+ <script setup lang="ts">
189
+ import { ref } from 'vue'
190
+ import { SyAutocomplete } from '@cnamts/synapse'
191
+
192
+ const selectedValue = ref('')
193
+ const items = [
194
+ { text: 'Adrien', value: 'Adrien' },
195
+ { text: 'Axel', value: 'Axel' },
196
+ { text: 'Baptiste', value: 'Baptiste' },
197
+ { text: 'Clement', value: 'Clement' },
198
+ { text: 'Corentin', value: 'Corentin' },
199
+ { text: 'Damien', value: 'Damien' },
200
+ { text: 'David', value: 'David' },
201
+ { text: 'Eloi', value: 'Eloi' },
202
+ { text: 'Louis', value: 'Louis' },
203
+ { text: 'Valentin', value: 'Valentin' },
204
+ ]
205
+ </script>
206
+ `,
207
+ },
208
+ ],
209
+ },
210
+ args: {
211
+ 'items': sampleItems,
212
+ 'label': 'Rechercher un prénom',
213
+ 'onUpdate:modelValue': fn(),
214
+ },
215
+ render: (args) => {
216
+ return {
217
+ components: { SyAutocomplete },
218
+ setup() {
219
+ const selectedValue = ref('')
220
+ return { args, selectedValue }
221
+ },
222
+ template: `
223
+ <div class="pa-4">
224
+ <SyAutocomplete
225
+ v-model="selectedValue"
226
+ v-bind="args"
227
+ />
228
+ </div>
229
+ `,
230
+ }
231
+ },
232
+ }
233
+
234
+ export const FormValidation: Story = {
235
+ parameters: {
236
+ docs: {
237
+ description: {
238
+ story: 'Le champ requis ne montre l\'erreur qu\'après interaction (blur/submit), pas au mount.',
239
+ },
240
+ },
241
+ sourceCode: [
242
+ {
243
+ name: 'Template',
244
+ code: `
245
+ <template>
246
+ <SyForm @submit="onSubmit">
247
+ <SyAutocomplete
248
+ v-model="value"
249
+ :items="items"
250
+ label="Recherche obligatoire"
251
+ required
252
+ display-asterisk
253
+ class="mb-4"
254
+ />
255
+ <VBtn type="submit" color="primary">Soumettre</VBtn>
256
+ </SyForm>
257
+ </template>
258
+ `,
259
+ },
260
+ {
261
+ name: 'Script',
262
+ code: `
263
+ <script setup lang="ts">
264
+ import { ref } from 'vue'
265
+ import { SyAutocomplete, SyForm } from '@cnamts/synapse'
266
+ import { VBtn } from 'vuetify/components'
267
+
268
+ const value = ref('')
269
+ const items = [
270
+ { text: 'Option 1', value: '1' },
271
+ { text: 'Option 2', value: '2' },
272
+ { text: 'Option 3', value: '3' }
273
+ ]
274
+
275
+ const onSubmit = (event) => {
276
+ if (event.isValid) {
277
+ alert('Formulaire valide : ' + JSON.stringify(value.value))
278
+ } else {
279
+ alert('Formulaire invalide : veuillez choisir une option.')
280
+ }
281
+ }
282
+ </script>
283
+ `,
284
+ },
285
+ ],
286
+ },
287
+ args: {
288
+ 'items': [
289
+ { text: 'Option 1', value: '1' },
290
+ { text: 'Option 2', value: '2' },
291
+ { text: 'Option 3', value: '3' },
292
+ ],
293
+ 'label': 'Recherche obligatoire',
294
+ 'required': true,
295
+ 'displayAsterisk': true,
296
+ 'onUpdate:modelValue': fn(),
297
+ },
298
+ render: (args) => {
299
+ return {
300
+ components: { SyAutocomplete, SyForm, VBtn },
301
+ setup() {
302
+ const value = ref('')
303
+
304
+ const onSubmit = (event: { isValid: boolean }) => {
305
+ if (event.isValid) {
306
+ alert(`Formulaire valide : ${JSON.stringify(value.value)}`)
307
+ }
308
+ else {
309
+ alert('Formulaire invalide : veuillez choisir une option.')
310
+ }
311
+ }
312
+
313
+ return { args, value, onSubmit }
314
+ },
315
+ template: `
316
+ <div class="pa-4">
317
+ <SyForm @submit="onSubmit">
318
+ <SyAutocomplete
319
+ v-model="value"
320
+ v-bind="args"
321
+ class="mb-4"
322
+ />
323
+ <VBtn type="submit" color="primary">Soumettre</VBtn>
324
+ </SyForm>
325
+ </div>
326
+ `,
327
+ }
328
+ },
329
+ }
330
+
331
+ export const ExternalErrorToggle: Story = {
332
+ parameters: {
333
+ docs: {
334
+ description: {
335
+ story: 'Démontre l\'affichage d\'un message d\'erreur externe injecté via `error-messages`.',
336
+ },
337
+ },
338
+ sourceCode: [
339
+ {
340
+ name: 'Template',
341
+ code: `
342
+ <template>
343
+ <SyAutocomplete
344
+ v-model="value"
345
+ :items="items"
346
+ label="Erreur serveur"
347
+ :error-messages="errorMessages"
348
+ />
349
+ <VBtn class="mt-2" @click="triggerError">Déclencher l'erreur</VBtn>
350
+ <VBtn class="mt-2 ml-2" variant="text" @click="clearError">Effacer</VBtn>
351
+ </template>
352
+ `,
353
+ },
354
+ {
355
+ name: 'Script',
356
+ code: `
357
+ <script setup lang="ts">
358
+ import { ref } from 'vue'
359
+ import { SyAutocomplete } from '@cnamts/synapse'
360
+ import { VBtn } from 'vuetify/components'
361
+
362
+ const value = ref('')
363
+ const items = [
364
+ { text: 'Option 1', value: '1' },
365
+ { text: 'Option 2', value: '2' }
366
+ ]
367
+ const errorMessages = ref<string[]>([])
368
+
369
+ const triggerError = () => {
370
+ errorMessages.value = ['Erreur serveur : sélection invalide']
371
+ }
372
+
373
+ const clearError = () => {
374
+ errorMessages.value = []
375
+ }
376
+ </script>
377
+ `,
378
+ },
379
+ ],
380
+ },
381
+ args: {
382
+ 'items': [
383
+ { text: 'Option 1', value: '1' },
384
+ { text: 'Option 2', value: '2' },
385
+ ],
386
+ 'label': 'Erreur serveur',
387
+ 'onUpdate:modelValue': fn(),
388
+ },
389
+ render: (args) => {
390
+ return {
391
+ components: { SyAutocomplete, VBtn },
392
+ setup() {
393
+ const value = ref('')
394
+ const errorMessages = ref<string[]>([])
395
+ const triggerError = () => {
396
+ errorMessages.value = ['Erreur serveur : sélection invalide']
397
+ }
398
+ const clearError = () => {
399
+ errorMessages.value = []
400
+ }
401
+ return { args, value, errorMessages, triggerError, clearError }
402
+ },
403
+ template: `
404
+ <div class="pa-4 d-flex flex-column gap-2">
405
+ <SyAutocomplete
406
+ v-model="value"
407
+ v-bind="args"
408
+ :error-messages="errorMessages"
409
+ />
410
+ <div class="d-flex align-center gap-2">
411
+ <VBtn color="error" @click="triggerError">Déclencher l'erreur</VBtn>
412
+ <VBtn variant="text" @click="clearError">Effacer</VBtn>
413
+ </div>
414
+ </div>
415
+ `,
416
+ }
417
+ },
418
+ }
419
+
420
+ export const WarningSuccessMessages: Story = {
421
+ parameters: {
422
+ docs: {
423
+ description: {
424
+ story: 'Déclenche un warning si "Option 1" est choisi et un succès si "Option 2" est choisi.',
425
+ },
426
+ },
427
+ },
428
+ args: {
429
+ 'items': [
430
+ { text: 'Option 1', value: '1' },
431
+ { text: 'Option 2', value: '2' },
432
+ ],
433
+ 'label': 'Avec warning & succès',
434
+ 'onUpdate:modelValue': fn(),
435
+ },
436
+ render: (args) => {
437
+ return {
438
+ components: { SyAutocomplete },
439
+ setup() {
440
+ const value = ref('')
441
+ const warningMessages = ref<string[]>([])
442
+ const successMessages = ref<string[]>([])
443
+
444
+ const handleChange = (newVal: unknown) => {
445
+ value.value = newVal as string
446
+ warningMessages.value = newVal === '1' ? ['Attention: Option 1 choisie'] : []
447
+ successMessages.value = newVal === '2' ? ['Succès: Option 2 valide'] : []
448
+ }
449
+
450
+ return { args, value, warningMessages, successMessages, handleChange }
451
+ },
452
+ template: `
453
+ <div class="pa-4">
454
+ <SyAutocomplete
455
+ v-model="value"
456
+ v-bind="args"
457
+ :warning-messages="warningMessages"
458
+ :success-messages="successMessages"
459
+ @update:modelValue="handleChange"
460
+ />
461
+ </div>
462
+ `,
463
+ }
464
+ },
465
+ }
466
+
467
+ export const ReturnObjectWithCustomKeys: Story = {
468
+ parameters: {
469
+ docs: {
470
+ description: {
471
+ story: 'Retourne l\'objet complet avec clés personnalisées et required.',
472
+ },
473
+ },
474
+ sourceCode: [
475
+ {
476
+ name: 'Template',
477
+ code: `
478
+ <template>
479
+ <SyForm @submit="onSubmit">
480
+ <SyAutocomplete
481
+ v-model="value"
482
+ :items="items"
483
+ label="Objet complet"
484
+ text-key="label"
485
+ value-key="id"
486
+ return-object
487
+ required
488
+ display-asterisk
489
+ />
490
+ <VBtn type="submit" class="mt-4" color="primary">Soumettre</VBtn>
491
+ </SyForm>
492
+ </template>
493
+ `,
494
+ },
495
+ {
496
+ name: 'Script',
497
+ code: `
498
+ <script setup lang="ts">
499
+ import { ref } from 'vue'
500
+ import { SyAutocomplete, SyForm } from '@cnamts/synapse'
501
+ import { VBtn } from 'vuetify/components'
502
+
503
+ const value = ref<{ label: string; id: string } | null>(null)
504
+ const items = [
505
+ { label: 'Premier choix', id: '1' },
506
+ { label: 'Deuxième choix', id: '2' },
507
+ { label: 'Troisième choix', id: '3' }
508
+ ]
509
+
510
+ const onSubmit = (event) => {
511
+ if (event.isValid) {
512
+ alert('Formulaire valide : ' + JSON.stringify(value.value))
513
+ } else {
514
+ alert('Formulaire invalide : veuillez choisir une option.')
515
+ }
516
+ }
517
+ </script>
518
+ `,
519
+ },
520
+ ],
521
+ },
522
+ args: {
523
+ 'items': [
524
+ { label: 'Premier choix', id: '1' },
525
+ { label: 'Deuxième choix', id: '2' },
526
+ { label: 'Troisième choix', id: '3' },
527
+ ],
528
+ 'label': 'Objet complet',
529
+ 'textKey': 'label',
530
+ 'valueKey': 'id',
531
+ 'returnObject': true,
532
+ 'required': true,
533
+ 'displayAsterisk': true,
534
+ 'onUpdate:modelValue': fn(),
535
+ },
536
+ render: (args) => {
537
+ return {
538
+ components: { SyAutocomplete, SyForm, VBtn },
539
+ setup() {
540
+ const value = ref<{ label: string, id: string } | null>(null)
541
+
542
+ const onSubmit = (event: { isValid: boolean }) => {
543
+ if (event.isValid) {
544
+ alert(`Formulaire valide : ${JSON.stringify(value.value)}`)
545
+ }
546
+ else {
547
+ alert('Formulaire invalide : veuillez choisir une option.')
548
+ }
549
+ }
550
+
551
+ return { args, value, onSubmit }
552
+ },
553
+ template: `
554
+ <div class="pa-4">
555
+ <SyForm @submit="onSubmit">
556
+ <SyAutocomplete
557
+ v-model="value"
558
+ v-bind="args"
559
+ class="mb-4"
560
+ />
561
+ <VBtn type="submit" class="mt-4" color="primary">Soumettre</VBtn>
562
+ </SyForm>
563
+ </div>
564
+ `,
565
+ }
566
+ },
567
+ }
568
+
569
+ export const MultipleSelection: Story = {
570
+ parameters: {
571
+
572
+ docs: {
573
+ description: {
574
+ story: 'Exemple de sélection multiple avec SyAutocomplete. Les options sont filtrées en temps réel selon la saisie.',
575
+ },
576
+ },
577
+ sourceCode: [
578
+ {
579
+ name: 'Template',
580
+ code: `
581
+ <template>
582
+ <SyAutocomplete
583
+ v-model="selectedValues"
584
+ :items="items"
585
+ label="Sélectionner plusieurs prénoms"
586
+ multiple
587
+ clearable
588
+ />
589
+ <div class="mt-4">
590
+ Valeurs sélectionnées: {{ selectedValues }}
591
+ </div>
592
+ </template>
593
+ `,
594
+ },
595
+ {
596
+ name: 'Script',
597
+ code: `
598
+ <script setup lang="ts">
599
+ import { ref } from 'vue'
600
+ import { SyAutocomplete } from '@cnamts/synapse'
601
+
602
+ const selectedValues = ref([])
603
+ const items = [
604
+ { text: 'Adrien', value: 'Adrien' },
605
+ { text: 'Axel', value: 'Axel' },
606
+ { text: 'Baptiste', value: 'Baptiste' },
607
+ { text: 'Clement', value: 'Clement' },
608
+ { text: 'Corentin', value: 'Corentin' },
609
+ { text: 'Damien', value: 'Damien' },
610
+ { text: 'David', value: 'David' },
611
+ { text: 'Eloi', value: 'Eloi' },
612
+ { text: 'Louis', value: 'Louis' },
613
+ { text: 'Valentin', value: 'Valentin' },
614
+ ]
615
+ </script>
616
+ `,
617
+ },
618
+ ],
619
+ },
620
+ args: {
621
+ 'items': sampleItems,
622
+ 'label': 'Sélectionner plusieurs prénoms',
623
+ 'multiple': true,
624
+ 'clearable': true,
625
+ 'onUpdate:modelValue': fn(),
626
+ },
627
+ render: (args) => {
628
+ return {
629
+ components: { SyAutocomplete },
630
+ setup() {
631
+ const selectedValues = ref([])
632
+ return { args, selectedValues }
633
+ },
634
+ template: `
635
+ <div class="pa-4">
636
+ <SyAutocomplete
637
+ v-model="selectedValues"
638
+ v-bind="args"
639
+ />
640
+ <div class="mt-4">
641
+ Valeurs sélectionnées: {{ selectedValues }}
642
+ </div>
643
+ </div>
644
+ `,
645
+ }
646
+ },
647
+ }
648
+
649
+ export const ChipsDisplay: Story = {
650
+ parameters: {
651
+
652
+ docs: {
653
+ description: {
654
+ story: 'Sélection multiple avec affichage en chips. Les options sélectionnées sont affichées sous forme de chips.',
655
+ },
656
+ },
657
+ sourceCode: [
658
+ {
659
+ name: 'Template',
660
+ code: `
661
+ <template>
662
+ <SyAutocomplete
663
+ v-model="selectedValues"
664
+ :items="items"
665
+ label="Prénoms sélectionnés"
666
+ multiple
667
+ chips
668
+ clearable
669
+ />
670
+ </template>
671
+ `,
672
+ },
673
+ {
674
+ name: 'Script',
675
+ code: `
676
+ <script setup lang="ts">
677
+ import { ref } from 'vue'
678
+ import { SyAutocomplete } from '@cnamts/synapse'
679
+
680
+ const selectedValues = ref([])
681
+ const items = [
682
+ { text: 'Adrien', value: 'Adrien' },
683
+ { text: 'Axel', value: 'Axel' },
684
+ { text: 'Baptiste', value: 'Baptiste' },
685
+ { text: 'Clement', value: 'Clement' },
686
+ ]
687
+ </script>
688
+ `,
689
+ },
690
+ ],
691
+ },
692
+ args: {
693
+ 'items': sampleItems.slice(0, 4),
694
+ 'label': 'Prénoms sélectionnés',
695
+ 'multiple': true,
696
+ 'chips': true,
697
+ 'clearable': true,
698
+ 'onUpdate:modelValue': fn(),
699
+ },
700
+ render: (args) => {
701
+ return {
702
+ components: { SyAutocomplete },
703
+ setup() {
704
+ const selectedValues = ref([])
705
+ return { args, selectedValues }
706
+ },
707
+ template: `
708
+ <div class="pa-4">
709
+ <SyAutocomplete
710
+ v-model="selectedValues"
711
+ v-bind="args"
712
+ />
713
+ </div>
714
+ `,
715
+ }
716
+ },
717
+ }
718
+
719
+ export const LoadingState: Story = {
720
+ parameters: {
721
+
722
+ docs: {
723
+ description: {
724
+ story: 'État de chargement du composant SyAutocomplete.',
725
+ },
726
+ },
727
+ sourceCode: [
728
+ {
729
+ name: 'Template',
730
+ code: `
731
+ <template>
732
+ <SyAutocomplete
733
+ v-model="selectedValue"
734
+ :items="items"
735
+ label="Recherche avec chargement"
736
+ :loading="isLoading"
737
+ />
738
+ </template>
739
+ `,
740
+ },
741
+ {
742
+ name: 'Script',
743
+ code: `
744
+ <script setup lang="ts">
745
+ import { ref } from 'vue'
746
+ import { SyAutocomplete } from '@cnamts/synapse'
747
+
748
+ const selectedValue = ref('')
749
+ const isLoading = ref(true)
750
+ const items = [
751
+ { text: 'Option 1', value: '1' },
752
+ { text: 'Option 2', value: '2' },
753
+ ]
754
+ </script>
755
+ `,
756
+ },
757
+ ],
758
+ },
759
+ args: {
760
+ 'items': [
761
+ { text: 'Option 1', value: '1' },
762
+ { text: 'Option 2', value: '2' },
763
+ ],
764
+ 'label': 'Recherche avec chargement',
765
+ 'loading': true,
766
+ 'onUpdate:modelValue': fn(),
767
+ },
768
+ render: (args) => {
769
+ return {
770
+ components: { SyAutocomplete },
771
+ setup() {
772
+ const selectedValue = ref('')
773
+ return { args, selectedValue }
774
+ },
775
+ template: `
776
+ <div class="pa-4">
777
+ <SyAutocomplete
778
+ v-model="selectedValue"
779
+ v-bind="args"
780
+ />
781
+ </div>
782
+ `,
783
+ }
784
+ },
785
+ }
786
+
787
+ export const RequiredField: Story = {
788
+ parameters: {
789
+
790
+ sourceCode: [
791
+ {
792
+ name: 'Template',
793
+ code: `
794
+ <template>
795
+ <SyAutocomplete
796
+ v-model="selectedValue"
797
+ :items="items"
798
+ label="Champ obligatoire"
799
+ required
800
+ display-asterisk
801
+ />
802
+ </template>
803
+ `,
804
+ },
805
+ {
806
+ name: 'Script',
807
+ code: `
808
+ <script setup lang="ts">
809
+ import { ref } from 'vue'
810
+ import { SyAutocomplete } from '@cnamts/synapse'
811
+
812
+ const selectedValue = ref()
813
+ const items = [
814
+ { text: 'Option 1', value: '1' },
815
+ { text: 'Option 2', value: '2' },
816
+ ]
817
+ </script>
818
+ `,
819
+ },
820
+ ],
821
+ },
822
+ args: {
823
+ 'items': [
824
+ { text: 'Option 1', value: '1' },
825
+ { text: 'Option 2', value: '2' },
826
+ ],
827
+ 'label': 'Champ obligatoire',
828
+ 'required': true,
829
+ 'displayAsterisk': true,
830
+ 'onUpdate:modelValue': fn(),
831
+ },
832
+ render: (args) => {
833
+ return {
834
+ components: { SyAutocomplete },
835
+ setup() {
836
+ const selectedValue = ref()
837
+ return { args, selectedValue }
838
+ },
839
+ template: `
840
+ <div class="pa-4">
841
+ <SyAutocomplete
842
+ v-model="selectedValue"
843
+ v-bind="args"
844
+ />
845
+ </div>
846
+ `,
847
+ }
848
+ },
849
+ }
850
+
851
+ export const ReadonlyField: Story = {
852
+ parameters: {
853
+
854
+ sourceCode: [
855
+ {
856
+ name: 'Template',
857
+ code: `
858
+ <template>
859
+ <SyAutocomplete
860
+ v-model="selectedValue"
861
+ :items="items"
862
+ label="Champ en lecture seule"
863
+ readonly
864
+ />
865
+ </template>
866
+ `,
867
+ },
868
+ {
869
+ name: 'Script',
870
+ code: `
871
+ <script setup lang="ts">
872
+ import { ref } from 'vue'
873
+ import { SyAutocomplete } from '@cnamts/synapse'
874
+
875
+ const selectedValue = ref('Axel')
876
+ const items = [
877
+ { text: 'Adrien', value: 'Adrien' },
878
+ { text: 'Axel', value: 'Axel' },
879
+ { text: 'Baptiste', value: 'Baptiste' },
880
+ ]
881
+ </script>
882
+ `,
883
+ },
884
+ ],
885
+ },
886
+ args: {
887
+ 'items': [
888
+ { text: 'Adrien', value: 'Adrien' },
889
+ { text: 'Axel', value: 'Axel' },
890
+ { text: 'Baptiste', value: 'Baptiste' },
891
+ ],
892
+ 'label': 'Champ en lecture seule',
893
+ 'readonly': true,
894
+ 'onUpdate:modelValue': fn(),
895
+ },
896
+ render: (args) => {
897
+ return {
898
+ components: { SyAutocomplete },
899
+ setup() {
900
+ const selectedValue = ref('Axel')
901
+ return { args, selectedValue }
902
+ },
903
+ template: `
904
+ <div class="pa-4">
905
+ <SyAutocomplete
906
+ v-model="selectedValue"
907
+ v-bind="args"
908
+ />
909
+ </div>
910
+ `,
911
+ }
912
+ },
913
+ }
914
+
915
+ export const WithCustomKeys: Story = {
916
+ parameters: {
917
+
918
+ sourceCode: [
919
+ {
920
+ name: 'Template',
921
+ code: `
922
+ <template>
923
+ <SyAutocomplete
924
+ v-model="selectedValue"
925
+ :items="items"
926
+ label="Recherche avec clés personnalisées"
927
+ text-key="label"
928
+ value-key="id"
929
+ />
930
+ </template>
931
+ `,
932
+ },
933
+ {
934
+ name: 'Script',
935
+ code: `
936
+ <script setup lang="ts">
937
+ import { ref } from 'vue'
938
+ import { SyAutocomplete } from '@cnamts/synapse'
939
+
940
+ const selectedValue = ref('')
941
+ const items = [
942
+ { label: 'Premier choix', id: '1' },
943
+ { label: 'Deuxième choix', id: '2' },
944
+ { label: 'Troisième choix', id: '3' },
945
+ ]
946
+ </script>
947
+ `,
948
+ },
949
+ ],
950
+ },
951
+ args: {
952
+ 'items': [
953
+ { label: 'Premier choix', id: '1' },
954
+ { label: 'Deuxième choix', id: '2' },
955
+ { label: 'Troisième choix', id: '3' },
956
+ ],
957
+ 'label': 'Recherche avec clés personnalisées',
958
+ 'textKey': 'label',
959
+ 'valueKey': 'id',
960
+ 'onUpdate:modelValue': fn(),
961
+ },
962
+ render: (args) => {
963
+ return {
964
+ components: { SyAutocomplete },
965
+ setup() {
966
+ const selectedValue = ref('')
967
+ return { args, selectedValue }
968
+ },
969
+ template: `
970
+ <div class="pa-4">
971
+ <SyAutocomplete
972
+ v-model="selectedValue"
973
+ v-bind="args"
974
+ />
975
+ </div>
976
+ `,
977
+ }
978
+ },
979
+ }