@cnamts/synapse 1.0.0 → 1.0.2

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 (533) hide show
  1. package/README.md +1 -1
  2. package/dist/DateFilter-YWOTbfeL.js +98 -0
  3. package/dist/NumberFilter-DMmMgALM.js +121 -0
  4. package/dist/PeriodFilter-Bok5BHcn.js +112 -0
  5. package/dist/SelectFilter-BKud2WhN.js +136 -0
  6. package/dist/TextFilter-DvMf2thH.js +114 -0
  7. package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
  8. package/dist/components/Accordion/Accordion.d.ts +2 -1
  9. package/dist/components/Accordion/composables/useAccordionGroupCommunication.d.ts +5 -0
  10. package/dist/components/Accordion/composables/useAccordionKeyboardNavigation.d.ts +12 -0
  11. package/dist/components/Accordion/composables/useAccordionState.d.ts +13 -0
  12. package/dist/components/BackBtn/AccessibiliteItems.d.ts +1 -1
  13. package/dist/components/BackToTopBtn/AccessibiliteItems.d.ts +1 -1
  14. package/dist/components/ChipList/AccessibiliteItems.d.ts +1 -1
  15. package/dist/components/CollapsibleList/AccessibiliteItems.d.ts +1 -1
  16. package/dist/components/ContextualMenu/AccessibiliteItems.d.ts +1 -1
  17. package/dist/components/CookieBanner/AccessibiliteItems.d.ts +1 -1
  18. package/dist/components/CopyBtn/AccessibiliteItems.d.ts +1 -1
  19. package/dist/components/Customs/SyBtnSelect/AccessibiliteItems.d.ts +1 -1
  20. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +85 -0
  21. package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
  22. package/dist/components/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
  23. package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
  24. package/dist/components/Customs/SySelect/SySelect.d.ts +33 -13
  25. package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
  26. package/dist/components/Customs/SyTextField/SyTextField.d.ts +2 -2
  27. package/dist/components/DataList/AccessibiliteItems.d.ts +1 -1
  28. package/dist/components/DataListGroup/AccessibiliteItems.d.ts +1 -1
  29. package/dist/components/DatePicker/AccessibiliteItems.d.ts +1 -1
  30. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +4295 -0
  31. package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +158 -104
  32. package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +35 -27
  33. package/dist/components/DatePicker/composables/index.d.ts +17 -0
  34. package/dist/components/DatePicker/composables/useAsteriskDisplay.d.ts +14 -0
  35. package/dist/components/DatePicker/composables/useDateAutoClamp.d.ts +16 -0
  36. package/dist/components/DatePicker/composables/useDateFormatValidation.d.ts +25 -0
  37. package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +33 -0
  38. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +16 -0
  39. package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +27 -0
  40. package/dist/components/DatePicker/composables/useDateRangeInput.d.ts +29 -0
  41. package/dist/components/DatePicker/composables/useDateRangeValidation.d.ts +11 -0
  42. package/dist/components/DatePicker/composables/useDateSelection.d.ts +10 -0
  43. package/dist/components/DatePicker/composables/useDateValidation.d.ts +35 -0
  44. package/dist/components/DatePicker/composables/useDisplayedDateString.d.ts +19 -0
  45. package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
  46. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +31 -0
  47. package/dist/components/DatePicker/composables/useInputHandler.d.ts +32 -0
  48. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +33 -0
  49. package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +12 -0
  50. package/dist/components/DatePicker/composables/useTodayButton.d.ts +16 -0
  51. package/dist/components/DatePicker/composables/useWeekendDays.d.ts +11 -0
  52. package/dist/components/DatePicker/constants/messages.d.ts +29 -0
  53. package/dist/components/DatePicker/types.d.ts +13 -0
  54. package/dist/components/DialogBox/AccessibiliteItems.d.ts +1 -1
  55. package/dist/components/DownloadBtn/AccessibiliteItems.d.ts +1 -1
  56. package/dist/components/ErrorPage/AccessibiliteItems.d.ts +1 -1
  57. package/dist/components/ExternalLinks/AccessibiliteItems.d.ts +1 -1
  58. package/dist/components/FileList/AccessibiliteItems.d.ts +1 -1
  59. package/dist/components/FilePreview/AccessibiliteItems.d.ts +1 -1
  60. package/dist/components/FileUpload/AccessibiliteItems.d.ts +1 -1
  61. package/dist/components/FilterInline/AccessibiliteItems.d.ts +1 -1
  62. package/dist/components/FilterSideBar/AccessibiliteItems.d.ts +1 -1
  63. package/dist/components/FilterSideBar/FilterSideBar.d.ts +395 -1
  64. package/dist/components/FooterBar/AccessibiliteItems.d.ts +1 -1
  65. package/dist/components/FranceConnectBtn/AccessibiliteItems.d.ts +1 -1
  66. package/dist/components/HeaderBar/AccessibiliteItems.d.ts +1 -1
  67. package/dist/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.d.ts +1 -1
  68. package/dist/components/HeaderLoading/AccessibiliteItems.d.ts +1 -1
  69. package/dist/components/HeaderToolbar/AccessibiliteItems.d.ts +1 -1
  70. package/dist/components/LangBtn/AccessibiliteItems.d.ts +1 -1
  71. package/dist/components/Logo/AccessibiliteItems.d.ts +1 -1
  72. package/dist/components/LogoBrandSection/AccessibiliteItems.d.ts +1 -1
  73. package/dist/components/MaintenancePage/AccessibiliteItems.d.ts +1 -1
  74. package/dist/components/NirField/AccessibiliteItems.d.ts +1 -1
  75. package/dist/components/NirField/NirField.d.ts +7 -3
  76. package/dist/components/NirField/nirValidation.d.ts +1 -1
  77. package/dist/components/NotFoundPage/AccessibiliteItems.d.ts +1 -1
  78. package/dist/components/NotificationBar/AccessibiliteItems.d.ts +1 -1
  79. package/dist/components/PageContainer/AccessibiliteItems.d.ts +1 -1
  80. package/dist/components/PaginatedTable/AccessibiliteItems.d.ts +1 -1
  81. package/dist/components/PasswordField/AccessibiliteItems.d.ts +1 -1
  82. package/dist/components/PasswordField/PasswordField.d.ts +2 -0
  83. package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
  84. package/dist/components/PeriodField/PeriodField.d.ts +219 -41
  85. package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
  86. package/dist/components/PhoneField/PhoneField.d.ts +2 -2
  87. package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
  88. package/dist/components/RangeField/RangeField.d.ts +2 -0
  89. package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
  90. package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
  91. package/dist/components/SearchListField/SearchListField.d.ts +9 -0
  92. package/dist/components/SelectBtnField/AccessibiliteItems.d.ts +1 -1
  93. package/dist/components/SkipLink/AccessibiliteItems.d.ts +1 -1
  94. package/dist/components/SocialMediaLinks/AccessibiliteItems.d.ts +1 -1
  95. package/dist/components/SubHeader/AccessibiliteItems.d.ts +1 -1
  96. package/dist/components/SyAlert/AccessibiliteItems.d.ts +1 -1
  97. package/dist/components/SyTextArea/SyTextArea.d.ts +2 -0
  98. package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
  99. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +652 -0
  100. package/dist/components/Tables/SyTable/SyTable.d.ts +671 -0
  101. package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
  102. package/dist/components/Tables/common/SyTablePagination.d.ts +1636 -0
  103. package/dist/components/Tables/common/TableHeader.d.ts +15 -0
  104. package/dist/components/Tables/common/constants/StateEnum.d.ts +6 -0
  105. package/dist/components/Tables/common/filters/DateFilter.d.ts +121 -0
  106. package/dist/components/Tables/common/filters/NumberFilter.d.ts +132 -0
  107. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +135 -0
  108. package/dist/components/Tables/common/filters/SelectFilter.d.ts +120 -0
  109. package/dist/components/Tables/common/filters/TextFilter.d.ts +132 -0
  110. package/dist/components/Tables/common/filters/getFilterComponent.d.ts +1 -0
  111. package/dist/components/Tables/common/filters/locales.d.ts +4 -0
  112. package/dist/components/Tables/common/filters/logics/date.d.ts +1 -0
  113. package/dist/components/Tables/common/filters/logics/number.d.ts +1 -0
  114. package/dist/components/Tables/common/filters/logics/period.d.ts +1 -0
  115. package/dist/components/Tables/common/filters/logics/select.d.ts +1 -0
  116. package/dist/components/Tables/common/filters/logics/text.d.ts +1 -0
  117. package/dist/components/Tables/common/formatters.d.ts +17 -0
  118. package/dist/components/Tables/common/locales.d.ts +28 -0
  119. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +267 -0
  120. package/dist/components/Tables/common/organizeColumns/sortHeaders.d.ts +2 -0
  121. package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
  122. package/dist/components/Tables/common/tableFilterUtils.d.ts +3 -0
  123. package/dist/components/Tables/common/tableStorageUtils.d.ts +69 -0
  124. package/dist/components/Tables/common/tableUtils.d.ts +79 -0
  125. package/dist/components/Tables/common/types.d.ts +91 -0
  126. package/dist/components/Tables/common/usePagination.d.ts +22 -0
  127. package/dist/components/Tables/common/useTableCheckbox.d.ts +20 -0
  128. package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
  129. package/dist/components/Tables/common/useTableHeaders.d.ts +76 -0
  130. package/dist/components/Tables/common/useTableItems.d.ts +24 -0
  131. package/dist/components/Tables/common/useTableOptions.d.ts +18 -0
  132. package/dist/components/Tables/index.d.ts +2 -0
  133. package/dist/components/ToolbarContainer/ToolbarContainer.d.ts +11 -0
  134. package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
  135. package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
  136. package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +9 -2
  137. package/dist/components/index.d.ts +9 -5
  138. package/dist/design-system-v3.js +102 -11944
  139. package/dist/design-system-v3.umd.cjs +22 -4
  140. package/dist/designTokens/index.d.ts +3 -1
  141. package/dist/designTokens/tokens/cnam/cnamFonts.d.ts +140 -0
  142. package/dist/designTokens/tokens/pa/paFonts.d.ts +140 -0
  143. package/dist/designTokens/utils/createFontVariables.d.ts +39 -0
  144. package/dist/designTokens/utils/index.d.ts +2 -1
  145. package/dist/main-Cx8qG7YR.js +16344 -0
  146. package/dist/stories/Accessibilite/Vuetify/VuetifyItems.d.ts +14 -2
  147. package/dist/stories/DesignTokens/StylesTypographiques.stories.new.d.ts +8 -0
  148. package/dist/stories/DesignTokens/TypographyDisplay.d.ts +28 -0
  149. package/dist/stories/DesignTokens/vue-shims.d.ts +6 -0
  150. package/dist/style.css +1 -1
  151. package/dist/utils/rules/isRequired/index.d.ts +1 -1
  152. package/dist/vite-env.d.ts +12 -0
  153. package/package.json +3 -3
  154. package/src/assets/_spacers.scss +37 -1
  155. package/src/assets/_typography.scss +158 -0
  156. package/src/assets/settings.scss +7 -0
  157. package/src/common/constants/ExpertiseLevelEnum.ts +7 -0
  158. package/src/common/imgs/accessibility-svgrepo-com.svg +4 -0
  159. package/src/components/Accordion/Accessibilite/AccessibilityGuide.mdx +249 -0
  160. package/src/components/Accordion/Accordion.vue +48 -76
  161. package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +146 -0
  162. package/src/components/Accordion/composables/__tests__/useAccordionKeyboardNavigation.spec.ts +209 -0
  163. package/src/components/Accordion/composables/__tests__/useAccordionState.spec.ts +144 -0
  164. package/src/components/Accordion/composables/useAccordionGroupCommunication.ts +52 -0
  165. package/src/components/Accordion/composables/useAccordionKeyboardNavigation.ts +111 -0
  166. package/src/components/Accordion/composables/useAccordionState.ts +59 -0
  167. package/src/components/Accordion/tests/__snapshots__/accordion.spec.ts.snap +3 -0
  168. package/src/components/BackBtn/AccessibiliteItems.ts +1 -1
  169. package/src/components/BackToTopBtn/AccessibiliteItems.ts +1 -1
  170. package/src/components/ChipList/AccessibiliteItems.ts +1 -1
  171. package/src/components/CollapsibleList/AccessibiliteItems.ts +1 -1
  172. package/src/components/ContextualMenu/AccessibiliteItems.ts +1 -1
  173. package/src/components/CookieBanner/AccessibiliteItems.ts +1 -1
  174. package/src/components/CopyBtn/AccessibiliteItems.ts +1 -1
  175. package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +1 -1
  176. package/src/components/Customs/SyCheckbox/Accessibilite.mdx +303 -0
  177. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +50 -0
  178. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +630 -0
  179. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +326 -0
  180. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +201 -0
  181. package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
  182. package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +1 -0
  183. package/src/components/Customs/SyInputSelect/SyInputSelect.vue +8 -1
  184. package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
  185. package/src/components/Customs/SySelect/SySelect.stories.ts +160 -0
  186. package/src/components/Customs/SySelect/SySelect.vue +292 -39
  187. package/src/components/Customs/SySelect/tests/SySelect.spec.ts +234 -2
  188. package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
  189. package/src/components/Customs/SyTextField/SyTextField.stories.ts +3 -2
  190. package/src/components/Customs/SyTextField/SyTextField.vue +19 -8
  191. package/src/components/DataList/AccessibiliteItems.ts +1 -1
  192. package/src/components/DataListGroup/AccessibiliteItems.ts +1 -1
  193. package/src/components/DatePicker/AccessibiliteItems.ts +1 -1
  194. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +212 -0
  195. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1307 -0
  196. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +769 -204
  197. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.events.spec.ts +161 -0
  198. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +943 -0
  199. package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
  200. package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +356 -519
  201. package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +435 -89
  202. package/src/components/DatePicker/DatePicker/tests/DatePicker.events.spec.ts +189 -0
  203. package/src/components/DatePicker/{tests → DatePicker/tests}/DatePicker.spec.ts +0 -14
  204. package/src/components/DatePicker/DatePickerOverview.mdx +227 -0
  205. package/src/components/DatePicker/{DatePickerValidation.mdx → DatePickerValidationExample/DatePickerValidation.mdx} +3 -3
  206. package/src/components/DatePicker/{DatePickerValidation.stories.ts → DatePickerValidationExample/DatePickerValidation.stories.ts} +2 -2
  207. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +320 -0
  208. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +148 -0
  209. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
  210. package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +10 -7
  211. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +1111 -0
  212. package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
  213. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +782 -0
  214. package/src/components/DatePicker/composables/index.ts +24 -0
  215. package/src/components/DatePicker/composables/tests/useDateAutoClamp.spec.ts +190 -0
  216. package/src/components/DatePicker/composables/tests/useDateFormatValidation.spec.ts +165 -0
  217. package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +359 -0
  218. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +160 -0
  219. package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +339 -0
  220. package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +277 -0
  221. package/src/components/DatePicker/composables/tests/useDateRangeValidation.spec.ts +107 -0
  222. package/src/components/DatePicker/composables/tests/useDateSelection.spec.ts +171 -0
  223. package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +245 -0
  224. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +98 -0
  225. package/src/components/DatePicker/composables/tests/useIconState.spec.ts +130 -0
  226. package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +456 -0
  227. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
  228. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +125 -0
  229. package/src/components/DatePicker/composables/tests/useTodayButton.spec.ts +97 -0
  230. package/src/components/DatePicker/composables/tests/useWeekendDays.spec.ts +28 -0
  231. package/src/components/DatePicker/composables/useAsteriskDisplay.ts +31 -0
  232. package/src/components/DatePicker/composables/useDateAutoClamp.ts +136 -0
  233. package/src/components/DatePicker/composables/useDateFormatValidation.ts +95 -0
  234. package/src/components/DatePicker/composables/useDateInputEditing.ts +326 -0
  235. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +61 -0
  236. package/src/components/DatePicker/composables/useDatePickerVisibility.ts +146 -0
  237. package/src/components/DatePicker/composables/useDateRangeInput.ts +378 -0
  238. package/src/components/DatePicker/composables/useDateRangeValidation.ts +48 -0
  239. package/src/components/DatePicker/composables/useDateSelection.ts +121 -0
  240. package/src/components/DatePicker/composables/useDateValidation.ts +225 -0
  241. package/src/components/DatePicker/composables/useDisplayedDateString.ts +70 -0
  242. package/src/components/DatePicker/composables/useIconState.ts +53 -0
  243. package/src/components/DatePicker/composables/useInputBlurHandler.ts +165 -0
  244. package/src/components/DatePicker/composables/useInputHandler.ts +436 -0
  245. package/src/components/DatePicker/composables/useManualDateValidation.ts +161 -0
  246. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +187 -0
  247. package/src/components/DatePicker/composables/useTodayButton.ts +43 -0
  248. package/src/components/DatePicker/composables/useWeekendDays.ts +21 -0
  249. package/src/components/DatePicker/constants/messages.ts +50 -0
  250. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
  251. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
  252. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +172 -0
  253. package/src/components/DatePicker/types.ts +15 -0
  254. package/src/components/DiacriticPicker/DiacriticPicker.stories.ts +10 -0
  255. package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
  256. package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
  257. package/src/components/ErrorPage/Accessibilite.stories.ts +8 -0
  258. package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
  259. package/src/components/ErrorPage/ErrorPage.vue +12 -6
  260. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +4 -4
  261. package/src/components/ExternalLinks/AccessibiliteItems.ts +1 -1
  262. package/src/components/FileList/AccessibiliteItems.ts +1 -1
  263. package/src/components/FilePreview/AccessibiliteItems.ts +1 -1
  264. package/src/components/FileUpload/AccessibiliteItems.ts +1 -1
  265. package/src/components/FilterInline/AccessibiliteItems.ts +1 -1
  266. package/src/components/FilterSideBar/AccessibiliteItems.ts +1 -1
  267. package/src/components/FilterSideBar/FilterSideBar.vue +108 -90
  268. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +27 -0
  269. package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +114 -109
  270. package/src/components/FooterBar/AccessibiliteItems.ts +1 -1
  271. package/src/components/FooterBar/FooterBar.vue +2 -1
  272. package/src/components/FranceConnectBtn/AccessibiliteItems.ts +1 -1
  273. package/src/components/HeaderBar/AccessibiliteItems.ts +1 -1
  274. package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +1 -1
  275. package/src/components/HeaderLoading/AccessibiliteItems.ts +1 -1
  276. package/src/components/HeaderToolbar/AccessibiliteItems.ts +1 -1
  277. package/src/components/LangBtn/AccessibiliteItems.ts +1 -1
  278. package/src/components/Logo/Accessibilite.stories.ts +4 -0
  279. package/src/components/Logo/AccessibiliteItems.ts +1 -1
  280. package/src/components/LogoBrandSection/AccessibiliteItems.ts +1 -1
  281. package/src/components/MaintenancePage/AccessibiliteItems.ts +1 -1
  282. package/src/components/NirField/AccessibiliteItems.ts +1 -1
  283. package/src/components/NirField/NirField.mdx +22 -9
  284. package/src/components/NirField/NirField.stories.ts +26 -2
  285. package/src/components/NirField/NirField.vue +209 -22
  286. package/src/components/NirField/nirValidation.ts +17 -3
  287. package/src/components/NirField/tests/NirField.spec.ts +2 -2
  288. package/src/components/NotFoundPage/Accessibilite.stories.ts +8 -0
  289. package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
  290. package/src/components/NotFoundPage/NotFoundPage.vue +2 -1
  291. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +8 -6
  292. package/src/components/NotificationBar/AccessibiliteItems.ts +1 -1
  293. package/src/components/PageContainer/AccessibiliteItems.ts +1 -1
  294. package/src/components/PaginatedTable/AccessibiliteItems.ts +1 -1
  295. package/src/components/PaginatedTable/PaginatedTable.mdx +2 -0
  296. package/src/components/PaginatedTable/PaginatedTable.stories.ts +19 -0
  297. package/src/components/PaginatedTable/PaginatedTable.vue +51 -13
  298. package/src/components/PaginatedTable/tests/PaginatedTable.spec.ts +0 -2
  299. package/src/components/PasswordField/AccessibiliteItems.ts +1 -1
  300. package/src/components/PasswordField/PasswordField.stories.ts +4 -0
  301. package/src/components/PasswordField/PasswordField.vue +3 -0
  302. package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
  303. package/src/components/PeriodField/PeriodField.vue +15 -1
  304. package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
  305. package/src/components/PhoneField/PhoneField.stories.ts +15 -15
  306. package/src/components/PhoneField/PhoneField.vue +1 -1
  307. package/src/components/RangeField/AccessibiliteItems.ts +1 -1
  308. package/src/components/RangeField/RangeField.stories.ts +9 -0
  309. package/src/components/RangeField/RangeField.vue +4 -0
  310. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +12 -0
  311. package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
  312. package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
  313. package/src/components/SearchListField/SearchListField.vue +5 -0
  314. package/src/components/SelectBtnField/AccessibiliteItems.ts +1 -1
  315. package/src/components/SkipLink/AccessibiliteItems.ts +1 -1
  316. package/src/components/SocialMediaLinks/AccessibiliteItems.ts +1 -1
  317. package/src/components/SubHeader/AccessibiliteItems.ts +1 -1
  318. package/src/components/SyAlert/AccessibiliteItems.ts +1 -1
  319. package/src/components/SyTextArea/SyTextArea.vue +3 -0
  320. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +0 -1
  321. package/src/components/TableToolbar/AccessibiliteItems.ts +1 -1
  322. package/src/components/TableToolbar/TableToolbar.stories.ts +110 -56
  323. package/src/components/Tables/SyServerTable/FilterRules.stories.ts +700 -0
  324. package/src/components/Tables/SyServerTable/SyServerTable.mdx +170 -0
  325. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +4354 -0
  326. package/src/components/Tables/SyServerTable/SyServerTable.vue +391 -0
  327. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +702 -0
  328. package/src/components/Tables/SyTable/FilterRules.stories.ts +418 -0
  329. package/src/components/Tables/SyTable/SyTable.mdx +139 -0
  330. package/src/components/Tables/SyTable/SyTable.stories.ts +2754 -0
  331. package/src/components/Tables/SyTable/SyTable.vue +397 -0
  332. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +707 -0
  333. package/src/components/Tables/common/SyTableFilter.vue +289 -0
  334. package/src/components/Tables/common/SyTablePagination.vue +375 -0
  335. package/src/components/Tables/common/TableHeader.vue +205 -0
  336. package/src/components/Tables/common/constants/StateEnum.ts +6 -0
  337. package/src/components/Tables/common/filters/DateFilter.vue +140 -0
  338. package/src/components/Tables/common/filters/NumberFilter.vue +234 -0
  339. package/src/components/Tables/common/filters/PeriodFilter.vue +147 -0
  340. package/src/components/Tables/common/filters/SelectFilter.vue +235 -0
  341. package/src/components/Tables/common/filters/TextFilter.vue +191 -0
  342. package/src/components/Tables/common/filters/getFilterComponent.ts +54 -0
  343. package/src/components/Tables/common/filters/locales.ts +4 -0
  344. package/src/components/Tables/common/filters/logics/date.ts +12 -0
  345. package/src/components/Tables/common/filters/logics/number.ts +48 -0
  346. package/src/components/Tables/common/filters/logics/period.ts +25 -0
  347. package/src/components/Tables/common/filters/logics/select.ts +27 -0
  348. package/src/components/Tables/common/filters/logics/tests/TextFilterLogic.spec.ts +177 -0
  349. package/src/components/Tables/common/filters/logics/text.ts +62 -0
  350. package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +187 -0
  351. package/src/components/Tables/common/filters/tests/NumberFilter.spec.ts +280 -0
  352. package/src/components/Tables/common/filters/tests/PeriodFilter.spec.ts +192 -0
  353. package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +219 -0
  354. package/src/components/Tables/common/filters/tests/TextFilter.spec.ts +260 -0
  355. package/src/components/Tables/common/formatters.ts +72 -0
  356. package/src/components/Tables/common/locales.ts +31 -0
  357. package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +269 -0
  358. package/src/components/Tables/common/organizeColumns/sortHeaders.ts +9 -0
  359. package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
  360. package/src/components/Tables/common/tableFilterUtils.ts +75 -0
  361. package/src/components/Tables/common/tableStorageUtils.ts +127 -0
  362. package/src/components/Tables/common/tableStyles.scss +80 -0
  363. package/src/components/Tables/common/tableUtils.ts +102 -0
  364. package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
  365. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +170 -0
  366. package/src/components/Tables/common/tests/filterByRange.spec.ts +215 -0
  367. package/src/components/Tables/common/tests/resize.spec.ts +161 -0
  368. package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +92 -0
  369. package/src/components/Tables/common/tests/tableUtils.spec.ts +228 -0
  370. package/src/components/Tables/common/types.ts +92 -0
  371. package/src/components/Tables/common/usePagination.ts +83 -0
  372. package/src/components/Tables/common/useTableCheckbox.ts +58 -0
  373. package/src/components/Tables/common/useTableFilter.ts +19 -0
  374. package/src/components/Tables/common/useTableHeaders.ts +88 -0
  375. package/src/components/Tables/common/useTableItems.ts +87 -0
  376. package/src/components/Tables/common/useTableOptions.ts +93 -0
  377. package/src/components/Tables/index.ts +3 -0
  378. package/src/components/ToolbarContainer/ToolbarContainer.mdx +16 -0
  379. package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +675 -0
  380. package/src/components/ToolbarContainer/ToolbarContainer.vue +128 -0
  381. package/src/components/ToolbarContainer/tests/ToolbarContainer.spec.ts +156 -0
  382. package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
  383. package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
  384. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +74 -0
  385. package/src/components/UserMenuBtn/UserMenuBtn.vue +19 -17
  386. package/src/components/index.ts +9 -5
  387. package/src/composables/date/useDateFormatDayjs.ts +8 -3
  388. package/src/composables/date/useDateInitializationDayjs.ts +28 -36
  389. package/src/composables/rules/useFieldValidation.ts +1 -2
  390. package/src/designTokens/index.ts +4 -0
  391. package/src/designTokens/tokens/cnam/cnamFonts.ts +140 -0
  392. package/src/designTokens/tokens/pa/paFonts.ts +140 -0
  393. package/src/designTokens/utils/createFontVariables.ts +143 -0
  394. package/src/designTokens/utils/index.ts +2 -1
  395. package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +293 -20
  396. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +448 -54
  397. package/src/stories/Accessibilite/Audit/RGAA.mdx +231 -23
  398. package/src/stories/Accessibilite/Avancement/Avancement.mdx +591 -7
  399. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +139 -38
  400. package/src/stories/Accessibilite/Introduction.mdx +258 -18
  401. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +221 -31
  402. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +204 -22
  403. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +537 -24
  404. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +577 -70
  405. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +382 -31
  406. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +419 -81
  407. package/src/stories/Accessibilite/Vuetify/Vuetify.mdx +132 -6
  408. package/src/stories/Accessibilite/Vuetify/Vuetify.stories.ts +370 -146
  409. package/src/stories/Accessibilite/Vuetify/VuetifyItems.ts +35 -57
  410. package/src/stories/Demarrer/Accueil.stories.ts +32 -8
  411. package/src/stories/DesignTokens/StylesTypographiques.mdx +10 -9
  412. package/src/stories/DesignTokens/StylesTypographiques.stories.new.ts +397 -0
  413. package/src/stories/DesignTokens/StylesTypographiques.stories.ts +397 -0
  414. package/src/stories/DesignTokens/TypographyDisplay.vue +155 -0
  415. package/src/stories/DesignTokens/vue-shims.d.ts +6 -0
  416. package/src/stories/GuideDuDev/LesBreackingChanges.mdx +0 -2
  417. package/src/stories/GuideDuDev/MigrationDepuisBridge.mdx +1 -1
  418. package/src/stories/GuideDuDev/MigrationDepuisVue2.mdx +1 -1
  419. package/src/stories/GuideDuDev/PortailAgent.mdx +10 -0
  420. package/src/stories/GuideDuDev/PortailAgent.stories.ts +506 -0
  421. package/src/stories/GuideDuDev/Theme.mdx +41 -0
  422. package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +1 -1
  423. package/src/utils/rules/isRequired/index.ts +2 -1
  424. package/src/vite-env.d.ts +12 -0
  425. package/src/vuetifyConfig.ts +10 -3
  426. package/dist/components/BackToTopBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  427. package/dist/components/ChipList/constants/ExpertiseLevelEnum.d.ts +0 -4
  428. package/dist/components/CollapsibleList/constants/ExpertiseLevelEnum.d.ts +0 -4
  429. package/dist/components/ContextualMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  430. package/dist/components/CookieBanner/constants/ExpertiseLevelEnum.d.ts +0 -4
  431. package/dist/components/CopyBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  432. package/dist/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  433. package/dist/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  434. package/dist/components/Customs/SySelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  435. package/dist/components/Customs/SyTextField/constants/ExpertiseLevelEnum.d.ts +0 -4
  436. package/dist/components/DataList/constants/ExpertiseLevelEnum.d.ts +0 -4
  437. package/dist/components/DataListGroup/constants/ExpertiseLevelEnum.d.ts +0 -4
  438. package/dist/components/DatePicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  439. package/dist/components/DialogBox/constants/ExpertiseLevelEnum.d.ts +0 -4
  440. package/dist/components/DownloadBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  441. package/dist/components/ErrorPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  442. package/dist/components/ExternalLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  443. package/dist/components/FileList/constants/ExpertiseLevelEnum.d.ts +0 -4
  444. package/dist/components/FilePreview/constants/ExpertiseLevelEnum.d.ts +0 -4
  445. package/dist/components/FileUpload/constants/ExpertiseLevelEnum.d.ts +0 -4
  446. package/dist/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +0 -4
  447. package/dist/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  448. package/dist/components/FooterBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  449. package/dist/components/FranceConnectBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  450. package/dist/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  451. package/dist/components/HeaderBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  452. package/dist/components/HeaderLoading/constants/ExpertiseLevelEnum.d.ts +0 -4
  453. package/dist/components/HeaderToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  454. package/dist/components/LangBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  455. package/dist/components/Logo/constants/ExpertiseLevelEnum.d.ts +0 -4
  456. package/dist/components/LogoBrandSection/constants/ExpertiseLevelEnum.d.ts +0 -4
  457. package/dist/components/MaintenancePage/constants/ExpertiseLevelEnum.d.ts +0 -4
  458. package/dist/components/NirField/constants/ExpertiseLevelEnum.d.ts +0 -4
  459. package/dist/components/NotFoundPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  460. package/dist/components/NotificationBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  461. package/dist/components/PageContainer/constants/ExpertiseLevelEnum.d.ts +0 -4
  462. package/dist/components/PaginatedTable/constants/ExpertiseLevelEnum.d.ts +0 -4
  463. package/dist/components/PasswordField/constants/ExpertiseLevelEnum.d.ts +0 -4
  464. package/dist/components/PeriodField/constants/ExpertiseLevelEnum.d.ts +0 -4
  465. package/dist/components/PhoneField/constants/ExpertiseLevelEnum.d.ts +0 -4
  466. package/dist/components/RangeField/constants/ExpertiseLevelEnum.d.ts +0 -4
  467. package/dist/components/RatingPicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  468. package/dist/components/SearchListField/constants/ExpertiseLevelEnum.d.ts +0 -4
  469. package/dist/components/SelectBtnField/constants/ExpertiseLevelEnum.d.ts +0 -4
  470. package/dist/components/SkipLink/constants/ExpertiseLevelEnum.d.ts +0 -4
  471. package/dist/components/SocialMediaLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  472. package/dist/components/SubHeader/constants/ExpertiseLevelEnum.d.ts +0 -4
  473. package/dist/components/SyAlert/constants/ExpertiseLevelEnum.d.ts +0 -4
  474. package/dist/components/TableToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  475. package/dist/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +0 -4
  476. package/dist/components/UserMenuBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  477. package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +0 -4
  478. package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +0 -4
  479. package/src/components/ChipList/constants/ExpertiseLevelEnum.ts +0 -4
  480. package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +0 -4
  481. package/src/components/ContextualMenu/constants/ExpertiseLevelEnum.ts +0 -4
  482. package/src/components/CookieBanner/constants/ExpertiseLevelEnum.ts +0 -4
  483. package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +0 -4
  484. package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +0 -4
  485. package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +0 -4
  486. package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +0 -4
  487. package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +0 -4
  488. package/src/components/DataList/constants/ExpertiseLevelEnum.ts +0 -4
  489. package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +0 -4
  490. package/src/components/DatePicker/DatePicker.mdx +0 -222
  491. package/src/components/DatePicker/DateTextInput.vue +0 -504
  492. package/src/components/DatePicker/constants/ExpertiseLevelEnum.ts +0 -4
  493. package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +0 -4
  494. package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +0 -4
  495. package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +0 -4
  496. package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +0 -4
  497. package/src/components/FileList/constants/ExpertiseLevelEnum.ts +0 -4
  498. package/src/components/FilePreview/constants/ExpertiseLevelEnum.ts +0 -4
  499. package/src/components/FileUpload/constants/ExpertiseLevelEnum.ts +0 -4
  500. package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +0 -4
  501. package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +0 -4
  502. package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +0 -4
  503. package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +0 -4
  504. package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +0 -4
  505. package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +0 -4
  506. package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +0 -4
  507. package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  508. package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +0 -4
  509. package/src/components/Logo/constants/ExpertiseLevelEnum.ts +0 -4
  510. package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +0 -4
  511. package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +0 -4
  512. package/src/components/NirField/constants/ExpertiseLevelEnum.ts +0 -4
  513. package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +0 -4
  514. package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +0 -4
  515. package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +0 -4
  516. package/src/components/PaginatedTable/constants/ExpertiseLevelEnum.ts +0 -4
  517. package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +0 -886
  518. package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +0 -4
  519. package/src/components/PeriodField/constants/ExpertiseLevelEnum.ts +0 -4
  520. package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +0 -4
  521. package/src/components/RangeField/constants/ExpertiseLevelEnum.ts +0 -4
  522. package/src/components/RatingPicker/constants/ExpertiseLevelEnum.ts +0 -4
  523. package/src/components/SearchListField/constants/ExpertiseLevelEnum.ts +0 -4
  524. package/src/components/SelectBtnField/constants/ExpertiseLevelEnum.ts +0 -4
  525. package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +0 -4
  526. package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +0 -4
  527. package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +0 -4
  528. package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +0 -4
  529. package/src/components/TableToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  530. package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +0 -4
  531. package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +0 -4
  532. package/src/stories/DesignTokens/ThemePA.mdx +0 -35
  533. /package/src/components/DatePicker/{examples → playground}/DatePickerHolidayRule.vue +0 -0
@@ -0,0 +1,312 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { shallowMount, flushPromises } from '@vue/test-utils'
3
+ import { vuetify } from '@tests/unit/setup'
4
+ import SyTableFilter from '../SyTableFilter.vue'
5
+ import type { FilterOption, TableColumnHeader, FilterType } from '../types'
6
+
7
+ // Using shallowMount will automatically stub all child components
8
+
9
+ describe('SyTableFilter', () => {
10
+ it('renders text filter correctly', async () => {
11
+ const filters: FilterOption[] = []
12
+ const header: TableColumnHeader = {
13
+ title: 'Name',
14
+ key: 'name',
15
+ filterable: true,
16
+ filterType: 'text',
17
+ }
18
+
19
+ const wrapper = shallowMount(SyTableFilter, {
20
+ props: {
21
+ filters,
22
+ header,
23
+ },
24
+ global: {
25
+ plugins: [vuetify],
26
+ },
27
+ })
28
+
29
+ // Need to wait for async components to load
30
+ await flushPromises()
31
+ await wrapper.vm.$nextTick()
32
+
33
+ const textFilter = wrapper.findComponent({ name: 'TextFilter' })
34
+ expect(textFilter.exists()).toBe(true)
35
+ })
36
+
37
+ it('renders text filter by default', async () => {
38
+ const filters: FilterOption[] = []
39
+ const header: TableColumnHeader = {
40
+ title: 'Name',
41
+ key: 'name',
42
+ filterable: true,
43
+ }
44
+
45
+ const wrapper = shallowMount(SyTableFilter, {
46
+ props: {
47
+ filters,
48
+ header,
49
+ },
50
+ global: {
51
+ plugins: [vuetify],
52
+ },
53
+ })
54
+
55
+ await flushPromises()
56
+ await wrapper.vm.$nextTick()
57
+ const textFilter = wrapper.findComponent({ name: 'TextFilter' })
58
+ expect(textFilter.exists()).toBe(true)
59
+ })
60
+
61
+ it('renders number filter correctly', async () => {
62
+ const filters: FilterOption[] = []
63
+ const header: TableColumnHeader = {
64
+ title: 'Age',
65
+ key: 'age',
66
+ filterable: true,
67
+ filterType: 'number',
68
+ }
69
+
70
+ const wrapper = shallowMount(SyTableFilter, {
71
+ props: {
72
+ filters,
73
+ header,
74
+ },
75
+ global: {
76
+ plugins: [vuetify],
77
+ },
78
+ })
79
+
80
+ await flushPromises()
81
+ await wrapper.vm.$nextTick()
82
+ const numberFilter = wrapper.findComponent({ name: 'NumberFilter' })
83
+ expect(numberFilter.exists()).toBe(true)
84
+ })
85
+
86
+ it('renders select filter correctly', async () => {
87
+ const filters: FilterOption[] = []
88
+ const header: TableColumnHeader = {
89
+ title: 'Department',
90
+ key: 'department',
91
+ filterable: true,
92
+ filterType: 'select',
93
+ filterOptions: [
94
+ { text: 'IT', value: 'IT' },
95
+ { text: 'HR', value: 'HR' },
96
+ { text: 'Finance', value: 'Finance' },
97
+ ],
98
+ }
99
+
100
+ const wrapper = shallowMount(SyTableFilter, {
101
+ props: {
102
+ filters,
103
+ header,
104
+ },
105
+ global: {
106
+ plugins: [vuetify],
107
+ },
108
+ })
109
+
110
+ await flushPromises()
111
+ await wrapper.vm.$nextTick()
112
+ const selectFilter = wrapper.findComponent({ name: 'SelectFilter' })
113
+ expect(selectFilter.exists()).toBe(true)
114
+ })
115
+
116
+ it('renders date filter correctly', async () => {
117
+ const filters: FilterOption[] = []
118
+ const header: TableColumnHeader = {
119
+ title: 'Birth Date',
120
+ key: 'birthDate',
121
+ filterable: true,
122
+ filterType: 'date',
123
+ dateFormat: 'DD/MM/YYYY',
124
+ }
125
+
126
+ const wrapper = shallowMount(SyTableFilter, {
127
+ props: {
128
+ filters,
129
+ header,
130
+ },
131
+ global: {
132
+ plugins: [vuetify],
133
+ },
134
+ })
135
+
136
+ await flushPromises()
137
+ await wrapper.vm.$nextTick()
138
+ const dateFilter = wrapper.findComponent({ name: 'DateFilter' })
139
+ expect(dateFilter.exists()).toBe(true)
140
+ })
141
+
142
+ it('renders period filter correctly', async () => {
143
+ const filters: FilterOption[] = []
144
+ const header: TableColumnHeader = {
145
+ title: 'Vacation Period',
146
+ key: 'vacationPeriod',
147
+ filterable: true,
148
+ filterType: 'period',
149
+ dateFormat: 'DD/MM/YYYY',
150
+ }
151
+
152
+ const wrapper = shallowMount(SyTableFilter, {
153
+ props: {
154
+ filters,
155
+ header,
156
+ },
157
+ global: {
158
+ plugins: [vuetify],
159
+ },
160
+ })
161
+
162
+ await flushPromises()
163
+ await wrapper.vm.$nextTick()
164
+ const periodFilter = wrapper.findComponent({ name: 'PeriodFilter' })
165
+ expect(periodFilter.exists()).toBe(true)
166
+ })
167
+
168
+ it('emits update:filters event when text filter changes', async () => {
169
+ const filters: FilterOption[] = []
170
+ const header: TableColumnHeader = {
171
+ title: 'Name',
172
+ key: 'name',
173
+ filterable: true,
174
+ filterType: 'text',
175
+ }
176
+
177
+ const wrapper = shallowMount(SyTableFilter, {
178
+ props: {
179
+ filters,
180
+ header,
181
+ },
182
+ global: {
183
+ plugins: [vuetify],
184
+ },
185
+ })
186
+
187
+ await flushPromises()
188
+ await wrapper.vm.$nextTick()
189
+
190
+ const textFilter = wrapper.findComponent({ name: 'TextFilter' })
191
+ expect(textFilter.exists()).toBe(true)
192
+
193
+ // Emit the update:filters event from the TextFilter component
194
+ await textFilter.vm.$emit('update:filters', [
195
+ { key: 'name', value: 'John', type: 'text' },
196
+ ])
197
+
198
+ expect(wrapper.emitted('update:filters')).toBeTruthy()
199
+ expect(wrapper.emitted('update:filters')![0][0]).toEqual([
200
+ { key: 'name', value: 'John', type: 'text' },
201
+ ])
202
+ })
203
+
204
+ it('updates existing filter instead of creating duplicate', async () => {
205
+ const filters: FilterOption[] = [
206
+ { key: 'name', value: 'John', type: 'text' },
207
+ ]
208
+ const header: TableColumnHeader = {
209
+ title: 'Name',
210
+ key: 'name',
211
+ filterable: true,
212
+ filterType: 'text',
213
+ }
214
+
215
+ const wrapper = shallowMount(SyTableFilter, {
216
+ props: {
217
+ filters,
218
+ header,
219
+ },
220
+ global: {
221
+ plugins: [vuetify],
222
+ },
223
+ })
224
+
225
+ await flushPromises()
226
+ await wrapper.vm.$nextTick()
227
+
228
+ const textFilter = wrapper.findComponent({ name: 'TextFilter' })
229
+ expect(textFilter.exists()).toBe(true)
230
+
231
+ // Emit the update:filters event from the TextFilter component
232
+ await textFilter.vm.$emit('update:filters', [
233
+ { key: 'name', value: 'Jane', type: 'text' },
234
+ ])
235
+
236
+ const emitted = wrapper.emitted('update:filters')
237
+ expect(emitted).toBeTruthy()
238
+ if (emitted && Array.isArray(emitted[0])) {
239
+ expect(emitted[0][0]).toEqual([{ key: 'name', value: 'Jane', type: 'text' }])
240
+ expect((emitted[0][0] as FilterOption[]).length).toBe(1) // Should still have only one filter
241
+ }
242
+ })
243
+
244
+ it('removes filter when value is cleared', async () => {
245
+ const filters: FilterOption[] = [
246
+ { key: 'name', value: 'John', type: 'text' },
247
+ ]
248
+ const header: TableColumnHeader = {
249
+ title: 'Name',
250
+ key: 'name',
251
+ filterable: true,
252
+ filterType: 'text',
253
+ }
254
+
255
+ const wrapper = shallowMount(SyTableFilter, {
256
+ props: {
257
+ filters,
258
+ header,
259
+ },
260
+ global: {
261
+ plugins: [vuetify],
262
+ },
263
+ })
264
+
265
+ await flushPromises()
266
+ await wrapper.vm.$nextTick()
267
+
268
+ const textFilter = wrapper.findComponent({ name: 'TextFilter' })
269
+ expect(textFilter.exists()).toBe(true)
270
+
271
+ // Emit the update:filters event from the TextFilter component
272
+ await textFilter.vm.$emit('update:filters', [])
273
+
274
+ const emitted = wrapper.emitted('update:filters')
275
+ expect(emitted).toBeTruthy()
276
+ if (emitted && Array.isArray(emitted[0])) {
277
+ expect(emitted[0][0]).toEqual([]) // Empty array, filter removed
278
+ }
279
+ })
280
+
281
+ it('renders custom filter slot correctly', async () => {
282
+ const filters: FilterOption[] = []
283
+ const header: TableColumnHeader = {
284
+ title: 'Custom',
285
+ key: 'custom',
286
+ filterable: true,
287
+ filterType: 'custom' as FilterType,
288
+ }
289
+
290
+ const customSlotText = 'Mon filtre personnalisé'
291
+ const wrapper = shallowMount(SyTableFilter, {
292
+ props: {
293
+ filters,
294
+ header,
295
+ },
296
+ global: {
297
+ plugins: [vuetify],
298
+ },
299
+ slots: {
300
+ 'custom-filter': `<div class="test-custom-filter">${customSlotText}</div>`,
301
+ },
302
+ })
303
+
304
+ await flushPromises()
305
+ await wrapper.vm.$nextTick()
306
+
307
+ // Vérifier que le slot personnalisé est rendu
308
+ const customFilter = wrapper.find('.test-custom-filter')
309
+ expect(customFilter.exists()).toBe(true)
310
+ expect(customFilter.text()).toBe(customSlotText)
311
+ })
312
+ })
@@ -0,0 +1,170 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import { expect, describe, it } from 'vitest'
3
+ import SyTablePagination from '../SyTablePagination.vue'
4
+ import { vuetify } from '@tests/unit/setup'
5
+
6
+ describe('SyTablePagination.vue', () => {
7
+ it('renders the component with default props', () => {
8
+ const wrapper = mount(SyTablePagination, {
9
+ props: {
10
+ page: 1,
11
+ itemsPerPage: 10,
12
+ itemsLength: 100,
13
+ pageCount: 10,
14
+ },
15
+ global: {
16
+ plugins: [vuetify],
17
+ },
18
+ })
19
+ expect(wrapper.exists()).toBe(true)
20
+ expect(wrapper.find('.sy-table-pagination').exists()).toBe(true)
21
+ })
22
+
23
+ it('displays pagination when there are multiple pages', () => {
24
+ const wrapper = mount(SyTablePagination, {
25
+ props: {
26
+ page: 1,
27
+ itemsPerPage: 10,
28
+ itemsLength: 100,
29
+ pageCount: 10,
30
+ },
31
+ global: {
32
+ plugins: [vuetify],
33
+ },
34
+ })
35
+ expect(wrapper.find('.pagination').exists()).toBe(true)
36
+ })
37
+
38
+ it('does not display pagination navigation when there is only one page', () => {
39
+ const wrapper = mount(SyTablePagination, {
40
+ props: {
41
+ page: 1,
42
+ itemsPerPage: 10,
43
+ itemsLength: 5,
44
+ pageCount: 1,
45
+ },
46
+ global: {
47
+ plugins: [vuetify],
48
+ },
49
+ })
50
+ expect(wrapper.find('.sy-table-pagination').exists()).toBe(true)
51
+ expect(wrapper.find('.pagination').exists()).toBe(false)
52
+ })
53
+
54
+ it('always shows items per page selector even with only one page', () => {
55
+ const wrapper = mount(SyTablePagination, {
56
+ props: {
57
+ page: 1,
58
+ itemsPerPage: 10,
59
+ itemsLength: 5,
60
+ pageCount: 1,
61
+ },
62
+ global: {
63
+ plugins: [vuetify],
64
+ },
65
+ })
66
+ expect(wrapper.find('.sy-table-pagination').exists()).toBe(true)
67
+ expect(wrapper.find('.info').exists()).toBe(true)
68
+ expect(wrapper.findComponent({ name: 'SySelect' }).exists()).toBe(true)
69
+ })
70
+
71
+ it('includes standard options and current itemsPerPage value', async () => {
72
+ // Test with standard value
73
+ const wrapper1 = mount(SyTablePagination, {
74
+ props: {
75
+ page: 1,
76
+ itemsPerPage: 10, // Standard value
77
+ itemsLength: 42,
78
+ pageCount: 5,
79
+ },
80
+ global: {
81
+ plugins: [vuetify],
82
+ },
83
+ })
84
+
85
+ const vm1 = wrapper1.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
86
+ expect(vm1.itemsPerPageOptions).toBeDefined()
87
+
88
+ const options1 = vm1.itemsPerPageOptions
89
+ // Should have standard options 5, 10, 25, 50, 100) plus the 'All' option (-1)
90
+ expect(options1.map(o => o.value).sort((a, b) => a - b)).toEqual([-1, 5, 10, 25, 50, 100])
91
+
92
+ // Test with custom value
93
+ const wrapper2 = mount(SyTablePagination, {
94
+ props: {
95
+ page: 1,
96
+ itemsPerPage: 42, // Custom value
97
+ itemsLength: 100,
98
+ pageCount: 5,
99
+ },
100
+ global: {
101
+ plugins: [vuetify],
102
+ },
103
+ })
104
+
105
+ const vm2 = wrapper2.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
106
+ const options2 = vm2.itemsPerPageOptions
107
+
108
+ // Should include the custom value (42)
109
+ const hasCustomValue = options2.some(option => option.value === 42)
110
+ expect(hasCustomValue).toBe(true)
111
+
112
+ // Should have standard options + custom value + 'All' option
113
+ expect(options2.map(o => o.value).sort((a, b) => a - b)).toEqual([-1, 5, 10, 25, 42, 50, 100])
114
+ })
115
+
116
+ it('shows correct range when "All" is selected', async () => {
117
+ const wrapper = mount(SyTablePagination, {
118
+ props: {
119
+ page: 1,
120
+ itemsPerPage: -1, // "All" option
121
+ itemsLength: 42,
122
+ pageCount: 1,
123
+ },
124
+ global: {
125
+ plugins: [vuetify],
126
+ },
127
+ })
128
+
129
+ const infoText = wrapper.find('.info').text()
130
+ expect(infoText).toContain('1-42')
131
+ })
132
+
133
+ it('emits update:page event when nextPage method is called', async () => {
134
+ const wrapper = mount(SyTablePagination, {
135
+ props: {
136
+ page: 1,
137
+ itemsPerPage: 10,
138
+ itemsLength: 100,
139
+ pageCount: 10,
140
+ },
141
+ global: {
142
+ plugins: [vuetify],
143
+ },
144
+ })
145
+
146
+ await (wrapper.vm as unknown as { nextPage: () => Promise<void> }).nextPage()
147
+
148
+ expect(wrapper.emitted('update:page')).toBeTruthy()
149
+ expect(wrapper.emitted('update:page')![0]).toEqual([2])
150
+ })
151
+
152
+ it('has the correct structure for items per page selection', () => {
153
+ const wrapper = mount(SyTablePagination, {
154
+ props: {
155
+ page: 1,
156
+ itemsPerPage: 10,
157
+ itemsLength: 100,
158
+ pageCount: 10,
159
+ },
160
+ global: {
161
+ plugins: [vuetify],
162
+ },
163
+ })
164
+
165
+ expect(wrapper.find('.rows-per-page-label').exists()).toBe(true)
166
+
167
+ const labelText = wrapper.find('.rows-per-page-label').text()
168
+ expect(labelText).toContain('Lignes par page')
169
+ })
170
+ })
@@ -0,0 +1,215 @@
1
+ import { vuetify } from '@tests/unit/setup'
2
+ import { mount } from '@vue/test-utils'
3
+ import { afterAll, describe, expect, it, vi } from 'vitest'
4
+ import SyTable from '../../SyTable/SyTable.vue'
5
+ import DateFilter from '../filters/DateFilter.vue'
6
+ import NumberFilter from '../filters/NumberFilter.vue'
7
+ import PeriodFilter from '../filters/PeriodFilter.vue'
8
+ import SelectFilter from '../filters/SelectFilter.vue'
9
+ import TextFilter from '../filters/TextFilter.vue'
10
+
11
+ const headers = [
12
+ {
13
+ title: 'Nom',
14
+ key: 'name',
15
+ filterable: true,
16
+ filterType: 'text' as const,
17
+ },
18
+ {
19
+ title: 'Date de naissance',
20
+ key: 'birthdate',
21
+ filterable: true,
22
+ filterType: 'period' as const,
23
+ },
24
+ ]
25
+
26
+ const items = [
27
+ {
28
+ name: 'Alice',
29
+ birthdate: '1990-01-01',
30
+ },
31
+ {
32
+ name: 'Bob',
33
+ birthdate: '1985-05-15',
34
+ },
35
+ {
36
+ name: 'Charlie',
37
+ birthdate: '2000-12-31',
38
+ },
39
+ {
40
+ name: 'David',
41
+ birthdate: '1995-07-20',
42
+ },
43
+ ]
44
+
45
+ describe('SyTable - filterByRange', () => {
46
+ vi.mock('../../common/filters/getFilterComponent', () => {
47
+ return {
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ default: (filterType?: string, filterOptions?: unknown) => {
50
+ if (filterType === 'select') {
51
+ return SelectFilter
52
+ }
53
+ else if (filterType === 'date') {
54
+ return DateFilter
55
+ }
56
+ else if (filterType === 'period') {
57
+ return PeriodFilter
58
+ }
59
+ else if (filterType === 'number') {
60
+ return NumberFilter
61
+ }
62
+ else {
63
+ return TextFilter
64
+ }
65
+ },
66
+ }
67
+ })
68
+ afterAll(() => {
69
+ vi.resetModules()
70
+ })
71
+
72
+ it('filter by max date', async () => {
73
+ const wrapper = mount(SyTable, {
74
+ global: {
75
+ plugins: [vuetify],
76
+ },
77
+ props: {
78
+ headers,
79
+ items,
80
+ showFilters: true,
81
+ suffix: 'test',
82
+ },
83
+ })
84
+
85
+ const expectedNames = ['Alice', 'Bob', 'Charlie', 'David']
86
+ expectedNames.forEach((element) => {
87
+ expect(wrapper.text()).toContain(element)
88
+ })
89
+
90
+ const endDate = wrapper.find('input[aria-label="Fin"]')
91
+ await endDate.setValue('01/01/2000')
92
+
93
+ const textContent = wrapper.text()
94
+
95
+ const filteredNames = ['Alice', 'Bob', 'David']
96
+ filteredNames.forEach((element) => {
97
+ expect(textContent).toContain(element)
98
+ })
99
+ const notFilteredNames = ['Charlie']
100
+ notFilteredNames.forEach((element) => {
101
+ expect(textContent).not.toContain(element)
102
+ })
103
+ })
104
+
105
+ it('filter by min date', async () => {
106
+ const wrapper = mount(SyTable, {
107
+ global: {
108
+ plugins: [vuetify],
109
+ },
110
+ props: {
111
+ headers,
112
+ items,
113
+ showFilters: true,
114
+ suffix: 'test',
115
+ },
116
+ })
117
+
118
+ const expectedNames = ['Alice', 'Bob', 'Charlie', 'David']
119
+ expectedNames.forEach((element) => {
120
+ expect(wrapper.text()).toContain(element)
121
+ })
122
+
123
+ const startDate = wrapper.find('input[aria-label="Début"]')
124
+ await startDate.setValue('01/01/1995')
125
+
126
+ const textContent = wrapper.text()
127
+
128
+ const filteredNames = ['Charlie', 'David']
129
+ filteredNames.forEach((element) => {
130
+ expect(textContent).toContain(element)
131
+ })
132
+ const notFilteredNames = ['Alice', 'Bob']
133
+ notFilteredNames.forEach((element) => {
134
+ expect(textContent).not.toContain(element)
135
+ })
136
+ })
137
+
138
+ it('filter by min and max date', async () => {
139
+ const wrapper = mount(SyTable, {
140
+ global: {
141
+ plugins: [vuetify],
142
+ },
143
+ props: {
144
+ headers,
145
+ items,
146
+ showFilters: true,
147
+ suffix: 'test',
148
+ },
149
+ })
150
+
151
+ const expectedNames = ['Alice', 'Bob', 'Charlie', 'David']
152
+ expectedNames.forEach((element) => {
153
+ expect(wrapper.text()).toContain(element)
154
+ })
155
+
156
+ const startDate = wrapper.find('input[aria-label="Début"]')
157
+ await startDate.setValue('01/01/1989')
158
+
159
+ const endDate = wrapper.find('input[aria-label="Fin"]')
160
+ await endDate.setValue('01/01/2000')
161
+
162
+ const textContent = wrapper.text()
163
+
164
+ const filteredNames = ['Alice', 'David']
165
+ filteredNames.forEach((element) => {
166
+ expect(textContent).toContain(element)
167
+ })
168
+ const notFilteredNames = ['Charlie', 'Bob']
169
+ notFilteredNames.forEach((element) => {
170
+ expect(textContent).not.toContain(element)
171
+ })
172
+ })
173
+
174
+ it('updates the items when date changes', async () => {
175
+ const wrapper = mount(SyTable, {
176
+ global: {
177
+ plugins: [vuetify],
178
+ },
179
+ props: {
180
+ headers,
181
+ items,
182
+ showFilters: true,
183
+ suffix: 'test',
184
+ },
185
+ })
186
+
187
+ const startDate = wrapper.find('input[aria-label="Début"]')
188
+ await startDate.setValue('01/01/1990')
189
+
190
+ const endDate = wrapper.find('input[aria-label="Fin"]')
191
+ await endDate.setValue('01/01/2000')
192
+
193
+ const textContent = wrapper.text()
194
+
195
+ let filteredNames = ['Alice', 'David']
196
+ filteredNames.forEach((element) => {
197
+ expect(textContent).toContain(element)
198
+ })
199
+ let notFilteredNames = ['Bob', 'Charlie']
200
+ notFilteredNames.forEach((element) => {
201
+ expect(textContent).not.toContain(element)
202
+ })
203
+
204
+ await endDate.setValue('01/01/1995')
205
+
206
+ filteredNames = ['Alice']
207
+ filteredNames.forEach((element) => {
208
+ expect(wrapper.text()).toContain(element)
209
+ })
210
+ notFilteredNames = ['Bob', 'Charlie', 'David']
211
+ notFilteredNames.forEach((element) => {
212
+ expect(wrapper.text()).not.toContain(element)
213
+ })
214
+ })
215
+ })