@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,161 @@
1
+ import { vuetify } from '@tests/unit/setup'
2
+ import { mount } from '@vue/test-utils'
3
+ import { describe, expect, it } from 'vitest'
4
+ import SyTable from '../../SyTable/SyTable.vue'
5
+
6
+ describe('Resize columns functionality', () => {
7
+ describe('with the keyboard', () => {
8
+ it('should resize the column to the right', async () => {
9
+ const wrapper = mount(SyTable, {
10
+ props: {
11
+ items: [
12
+ { name: 'col1', label: 'Column 1' },
13
+ { name: 'col2', label: 'Column 2' },
14
+ ],
15
+ resizableColumns: true,
16
+ suffix: 'resize-test',
17
+ },
18
+ global: {
19
+ plugins: [vuetify],
20
+ },
21
+ })
22
+
23
+ // mock current width of the columns
24
+ const col1 = wrapper.find<Element>('.v-data-table-header__content')
25
+ Object.defineProperty(col1.element, 'offsetWidth', {
26
+ get: () => 100,
27
+ })
28
+
29
+ const col1Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td')
30
+ const col2Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td:nth-child(2)')
31
+
32
+ await wrapper.vm.$nextTick()
33
+
34
+ expect(col1Header.exists()).toBe(true)
35
+ expect(col2Header.exists()).toBe(true)
36
+
37
+ expect(col1Header.element.style.width).toBe('')
38
+ const separator = wrapper.find('.resizer')
39
+ expect(separator.exists()).toBe(true)
40
+ await wrapper.vm.$nextTick()
41
+
42
+ await separator.trigger('keydown', { key: 'ArrowRight' })
43
+
44
+ expect(col1Header.element.style.width).toBe(`110px`)
45
+ })
46
+
47
+ it('should resize the column to the right', async () => {
48
+ const wrapper = mount(SyTable, {
49
+ props: {
50
+ items: [
51
+ { name: 'col1', label: 'Column 1' },
52
+ { name: 'col2', label: 'Column 2' },
53
+ ],
54
+ resizableColumns: true,
55
+ suffix: 'resize-test',
56
+ },
57
+ global: {
58
+ plugins: [vuetify],
59
+ },
60
+ })
61
+
62
+ // mock current width of the columns
63
+ const col1 = wrapper.find<Element>('.v-data-table-header__content')
64
+ Object.defineProperty(col1.element, 'offsetWidth', {
65
+ get: () => 100,
66
+ })
67
+
68
+ const col1Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td')
69
+ const col2Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td:nth-child(2)')
70
+
71
+ await wrapper.vm.$nextTick()
72
+
73
+ expect(col1Header.exists()).toBe(true)
74
+ expect(col2Header.exists()).toBe(true)
75
+
76
+ expect(col1Header.element.style.width).toBe('')
77
+ const separator = wrapper.find('.resizer')
78
+ expect(separator.exists()).toBe(true)
79
+ await wrapper.vm.$nextTick()
80
+
81
+ await separator.trigger('keydown', { key: 'ArrowLeft' })
82
+
83
+ expect(col1Header.element.style.width).toBe(`90px`)
84
+ })
85
+ })
86
+
87
+ describe('with the mouse', () => {
88
+ it('should resize the column to the right', async () => {
89
+ const wrapper = mount(SyTable, {
90
+ props: {
91
+ items: [
92
+ { name: 'col1', label: 'Column 1' },
93
+ { name: 'col2', label: 'Column 2' },
94
+ ],
95
+ resizableColumns: true,
96
+ suffix: 'resize-test',
97
+ },
98
+ global: {
99
+ plugins: [vuetify],
100
+ },
101
+ })
102
+
103
+ // mock current width of the columns
104
+ const col1 = wrapper.find<Element>('.v-data-table-header__content')
105
+ Object.defineProperty(col1.element, 'offsetWidth', {
106
+ get: () => 100,
107
+ })
108
+
109
+ const col1Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td')
110
+ const col2Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td:nth-child(2)')
111
+
112
+ expect(col1Header.exists()).toBe(true)
113
+ expect(col2Header.exists()).toBe(true)
114
+
115
+ expect(col1Header.element.style.width).toBe('')
116
+ const separator = wrapper.find('.resizer')
117
+ expect(separator.exists()).toBe(true)
118
+
119
+ await separator.trigger('mousedown', { clientX: 150 })
120
+ document.dispatchEvent(new MouseEvent('mousemove', { clientX: 250 }))
121
+ document.dispatchEvent(new MouseEvent('mouseup'))
122
+ await wrapper.vm.$nextTick()
123
+
124
+ expect(col1Header.element.style.width).toBe(`232px`)
125
+ })
126
+
127
+ it('should resize the column to the left', async () => {
128
+ const wrapper = mount(SyTable, {
129
+ props: {
130
+ items: [
131
+ { name: 'col1', label: 'Column 1' },
132
+ { name: 'col2', label: 'Column 2' },
133
+ ],
134
+ resizableColumns: true,
135
+ suffix: 'resize-test',
136
+ },
137
+ global: {
138
+ plugins: [vuetify],
139
+ },
140
+ })
141
+
142
+ // mock current width of the columns
143
+ const col1 = wrapper.find<Element>('.v-data-table-header__content')
144
+ Object.defineProperty(col1.element, 'offsetWidth', {
145
+ get: () => 100,
146
+ })
147
+
148
+ const col1Header = wrapper.find<HTMLTableCellElement>('.v-data-table__tr .v-data-table__td')
149
+ expect(col1Header.element.style.width).toBe('')
150
+ const separator = wrapper.find('.resizer')
151
+ expect(separator.exists()).toBe(true)
152
+
153
+ await separator.trigger('mousedown', { clientX: 150 })
154
+ document.dispatchEvent(new MouseEvent('mousemove', { clientX: 50 }))
155
+ document.dispatchEvent(new MouseEvent('mouseup'))
156
+ await wrapper.vm.$nextTick()
157
+
158
+ expect(col1Header.element.style.width).toBe(`50px`)
159
+ })
160
+ })
161
+ })
@@ -0,0 +1,92 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { filterItems } from '../tableFilterUtils'
3
+ import type { FilterOption } from '../types'
4
+
5
+ describe('tableFilterUtils', () => {
6
+ describe('filterItems', () => {
7
+ const testItems = [
8
+ { id: 1, name: 'John Doe', age: 25, department: 'IT', status: 'Active', hireDate: '01/05/2020', vacationPeriod: { from: '01/07/2023', to: '15/07/2023' } },
9
+ { id: 2, name: 'Jane Smith', age: 30, department: 'HR', status: 'On leave', hireDate: '10/03/2019', vacationPeriod: { from: '01/08/2023', to: '20/08/2023' } },
10
+ { id: 3, name: 'Bob Johnson', age: 45, department: 'Finance', status: 'Active', hireDate: '22/11/2015', vacationPeriod: { from: '15/06/2023', to: '05/07/2023' } },
11
+ { id: 4, name: 'Alice Brown', age: 36, department: 'Marketing', status: 'Active', hireDate: '08/01/2021', vacationPeriod: { from: '20/12/2023', to: '05/01/2024' } },
12
+ { id: 5, name: 'Tom Wilson', age: 41, department: 'IT', status: 'Inactive', hireDate: '30/07/2018', vacationPeriod: { from: '10/09/2023', to: '25/09/2023' } },
13
+ ]
14
+
15
+ it('should return all items when no filters are provided', () => {
16
+ const result = filterItems(testItems, [])
17
+ expect(result).toEqual(testItems)
18
+ })
19
+
20
+ it('should return empty array when items is empty', () => {
21
+ const result = filterItems([], [{ key: 'name', value: 'John', type: 'text' }])
22
+ expect(result).toEqual([])
23
+ })
24
+
25
+ it('should filter by text correctly', () => {
26
+ const filters: FilterOption[] = [
27
+ { key: 'name', value: 'John Doe', type: 'text' },
28
+ ]
29
+ const result = filterItems(testItems, filters)
30
+ expect(result).toHaveLength(1)
31
+ expect(result[0].id).toBe(1)
32
+ })
33
+
34
+ it('should filter by number correctly', () => {
35
+ const filters: FilterOption[] = [
36
+ { key: 'age', value: 30, type: 'number' },
37
+ ]
38
+ const result = filterItems(testItems, filters)
39
+ expect(result).toHaveLength(1)
40
+ expect(result[0].id).toBe(2)
41
+ })
42
+
43
+ it('should filter by select correctly', () => {
44
+ const filters: FilterOption[] = [
45
+ { key: 'department', value: 'IT', type: 'select' },
46
+ ]
47
+ const result = filterItems(testItems, filters)
48
+ expect(result).toHaveLength(2)
49
+ expect(result.map(item => item.id)).toContain(1)
50
+ expect(result.map(item => item.id)).toContain(5)
51
+ })
52
+
53
+ it('should filter by date correctly', () => {
54
+ const filters: FilterOption[] = [
55
+ { key: 'hireDate', value: '10/03/2019', type: 'date' },
56
+ ]
57
+ const result = filterItems(testItems, filters)
58
+ expect(result).toHaveLength(1)
59
+ expect(result[0].id).toBe(2)
60
+ })
61
+
62
+ it('should apply multiple filters correctly', () => {
63
+ const filters: FilterOption[] = [
64
+ { key: 'department', value: 'IT', type: 'select' },
65
+ { key: 'status', value: 'Active', type: 'select' },
66
+ ]
67
+ const result = filterItems(testItems, filters)
68
+ expect(result).toHaveLength(1)
69
+ expect(result[0].id).toBe(1)
70
+ })
71
+
72
+ it('should handle case insensitivity for text filters', () => {
73
+ const filters: FilterOption[] = [
74
+ { key: 'name', value: 'john doe', type: 'text' },
75
+ ]
76
+ const result = filterItems(testItems, filters)
77
+ expect(result).toHaveLength(1)
78
+ expect(result[0].id).toBe(1)
79
+ })
80
+
81
+ it('should handle partial matches for text filters', () => {
82
+ const filters: FilterOption[] = [
83
+ { key: 'name', value: 'oh', type: 'text' },
84
+ ]
85
+ const result = filterItems(testItems, filters)
86
+ // This should match both John Doe and Bob Johnson
87
+ expect(result.length).toBeGreaterThanOrEqual(2)
88
+ expect(result.map(item => item.id)).toContain(1) // John Doe
89
+ expect(result.map(item => item.id)).toContain(3) // Bob Johnson
90
+ })
91
+ })
92
+ })
@@ -0,0 +1,228 @@
1
+ import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
2
+ import { ref } from 'vue'
3
+ import { useTableUtils } from '../tableUtils'
4
+ import { LocalStorageUtility } from '@/utils/localStorageUtility'
5
+ import type { DataOptions } from '../types'
6
+
7
+ vi.mock('@/utils/localStorageUtility')
8
+
9
+ describe('tableUtils', () => {
10
+ const mockLocalStorageUtility = {
11
+ getItem: vi.fn(),
12
+ setItem: vi.fn(),
13
+ }
14
+
15
+ beforeEach(() => {
16
+ vi.spyOn(LocalStorageUtility.prototype, 'getItem').mockImplementation(mockLocalStorageUtility.getItem)
17
+ vi.spyOn(LocalStorageUtility.prototype, 'setItem').mockImplementation(mockLocalStorageUtility.setItem)
18
+ })
19
+
20
+ afterEach(() => {
21
+ vi.resetAllMocks()
22
+ })
23
+
24
+ it('should create storage key correctly with suffix', () => {
25
+ const options = ref<Partial<DataOptions>>({})
26
+ const { storageKey } = useTableUtils({
27
+ tableId: 'test-table',
28
+ prefix: 'table',
29
+ suffix: 'test-suffix',
30
+ caption: 'Test Table',
31
+ componentAttributes: {},
32
+ options,
33
+ })
34
+
35
+ expect(storageKey.value).toBe('table-test-suffix')
36
+ })
37
+
38
+ it('should create storage key correctly without suffix', () => {
39
+ const options = ref<Partial<DataOptions>>({})
40
+ const { storageKey } = useTableUtils({
41
+ tableId: 'test-table',
42
+ prefix: 'table',
43
+ caption: 'Test Table',
44
+ componentAttributes: {},
45
+ options,
46
+ })
47
+
48
+ expect(storageKey.value).toBe('table')
49
+ })
50
+
51
+ it('should handle undefined headers', () => {
52
+ const options = ref<Partial<DataOptions>>({})
53
+ const componentAttributes = {}
54
+
55
+ const { headers } = useTableUtils({
56
+ tableId: 'test-table',
57
+ prefix: 'table',
58
+ caption: 'Test Table',
59
+ componentAttributes,
60
+ options,
61
+ })
62
+
63
+ expect(headers.value).toBeUndefined()
64
+ })
65
+
66
+ it('should create optionsFacade correctly', () => {
67
+ const options = ref<Partial<DataOptions>>({
68
+ page: 2,
69
+ sortBy: [{ key: 'name', order: 'asc' }],
70
+ })
71
+ const componentAttributes = {
72
+ page: 1,
73
+ }
74
+
75
+ const { optionsFacade } = useTableUtils({
76
+ tableId: 'test-table',
77
+ prefix: 'table',
78
+ caption: 'Test Table',
79
+ componentAttributes,
80
+ options,
81
+ })
82
+
83
+ expect(optionsFacade.value).toEqual({
84
+ page: 2,
85
+ sortBy: [{ key: 'name', order: 'asc' }],
86
+ itemsPerPage: 10,
87
+ groupBy: undefined,
88
+ multiSort: undefined,
89
+ mustSort: undefined,
90
+ })
91
+ })
92
+
93
+ it('should create propsFacade correctly for client table', () => {
94
+ const options = ref<Partial<DataOptions>>({})
95
+ const componentAttributes = {
96
+ 'items': [{ id: 1 }],
97
+ 'onUpdate:options': vi.fn(),
98
+ }
99
+
100
+ const { propsFacade } = useTableUtils({
101
+ tableId: 'test-table',
102
+ prefix: 'table',
103
+ caption: 'Test Table',
104
+ componentAttributes,
105
+ options,
106
+ })
107
+
108
+ expect(propsFacade.value).toMatchObject({
109
+ items: [{ id: 1 }],
110
+ })
111
+ expect(propsFacade.value['onUpdate:options']).toBeUndefined()
112
+ })
113
+
114
+ it('should create propsFacade correctly for server table', () => {
115
+ const options = ref<Partial<DataOptions>>({})
116
+ const componentAttributes = {
117
+ items: [{ id: 1 }],
118
+ }
119
+
120
+ const { propsFacade } = useTableUtils({
121
+ tableId: 'test-table',
122
+ prefix: 'table',
123
+ caption: 'Test Table',
124
+ serverItemsLength: 100,
125
+ componentAttributes,
126
+ options,
127
+ })
128
+
129
+ expect(propsFacade.value).toMatchObject({
130
+ items: [{ id: 1 }],
131
+ itemsLength: 100,
132
+ })
133
+ })
134
+
135
+ it('should update options correctly', () => {
136
+ const options = ref<Partial<DataOptions>>({
137
+ page: 1,
138
+ sortBy: [{ key: 'id', order: 'asc' }],
139
+ })
140
+ const componentAttributes = {}
141
+
142
+ const { updateOptions } = useTableUtils({
143
+ tableId: 'test-table',
144
+ prefix: 'table',
145
+ caption: 'Test Table',
146
+ componentAttributes,
147
+ options,
148
+ })
149
+
150
+ updateOptions({
151
+ sortBy: [{ key: 'name', order: 'desc' }],
152
+ })
153
+
154
+ expect(options.value).toEqual({
155
+ page: 1,
156
+ sortBy: [{ key: 'name', order: 'desc' }],
157
+ })
158
+ })
159
+
160
+ it('should setup local storage correctly', () => {
161
+ mockLocalStorageUtility.getItem.mockReturnValue({
162
+ page: 2,
163
+ options: {
164
+ itemsPerPage: 20,
165
+ },
166
+ })
167
+
168
+ const options = ref<Partial<DataOptions>>({})
169
+ const componentAttributes = {}
170
+
171
+ const { localOptions, setupLocalStorage } = useTableUtils({
172
+ tableId: 'test-table',
173
+ prefix: 'table',
174
+ suffix: 'test',
175
+ caption: 'Test Table',
176
+ componentAttributes,
177
+ options,
178
+ })
179
+
180
+ const { watchOptions } = setupLocalStorage()
181
+
182
+ expect(mockLocalStorageUtility.getItem).toHaveBeenCalledWith('table-test')
183
+ expect(localOptions.value).toEqual({
184
+ page: 2,
185
+ options: {
186
+ itemsPerPage: 20,
187
+ },
188
+ })
189
+
190
+ // Test watchOptions
191
+ options.value = {
192
+ page: 3,
193
+ sortBy: [{ key: 'name', order: 'asc' }],
194
+ }
195
+ watchOptions()
196
+
197
+ expect(mockLocalStorageUtility.setItem).toHaveBeenCalledWith('table-test', expect.objectContaining({
198
+ page: 3,
199
+ sortBy: [{ key: 'name', order: 'asc' }],
200
+ }))
201
+ })
202
+
203
+ it('should handle server table local storage correctly', () => {
204
+ mockLocalStorageUtility.getItem.mockReturnValue(null)
205
+
206
+ const options = ref<Partial<DataOptions>>({
207
+ page: 1,
208
+ })
209
+ const componentAttributes = {}
210
+
211
+ const { setupLocalStorage } = useTableUtils({
212
+ tableId: 'test-table',
213
+ prefix: 'server-table',
214
+ caption: 'Test Table',
215
+ serverItemsLength: 100,
216
+ componentAttributes,
217
+ options,
218
+ })
219
+
220
+ const { watchOptions } = setupLocalStorage()
221
+ watchOptions()
222
+
223
+ expect(mockLocalStorageUtility.setItem).toHaveBeenCalledWith('server-table', expect.objectContaining({
224
+ page: 1,
225
+ itemsLength: 100,
226
+ }))
227
+ })
228
+ })
@@ -0,0 +1,92 @@
1
+ export type SortOptions = {
2
+ key: string
3
+ order: 'desc' | 'asc'
4
+ }
5
+
6
+ export type FilterType = 'text' | 'number' | 'date' | 'period' | 'select' | 'custom'
7
+
8
+ export type TableDensityType = 'default' | 'comfortable' | 'compact'
9
+
10
+ export interface FilterOption {
11
+ key: string
12
+ value: string | number | Date | Array<string | number | Date> | { from: string | null, to: string | null } | Record<string, unknown> | null | undefined
13
+ type: FilterType
14
+ }
15
+
16
+ export interface DataOptions {
17
+ page: number
18
+ itemsPerPage: number
19
+ sortBy: SortOptions[]
20
+ groupBy?: SortOptions[]
21
+ multiSort?: boolean
22
+ mustSort?: boolean
23
+ filters?: FilterOption[]
24
+ }
25
+
26
+ export type DataTableHeaders = {
27
+ title?: string
28
+ text?: string
29
+ value?: string
30
+ key?: string
31
+ filterable?: boolean
32
+ filterType?: FilterType
33
+ filterOptions?: Array<{ text: string, value: unknown }>
34
+ multiple?: boolean
35
+ chips?: boolean
36
+ sortable?: boolean
37
+ hideMessages?: boolean
38
+ dateFormat?: string
39
+ align?: 'start' | 'end' | 'center'
40
+ order?: number
41
+ hidden?: boolean
42
+ }
43
+
44
+ // Type to handle both Vuetify internal headers and our custom headers
45
+ export type TableColumnHeader = {
46
+ title?: string
47
+ value?: unknown
48
+ key?: string | null
49
+ filterable?: boolean
50
+ filterType?: FilterType
51
+ filterOptions?: Array<{ text: string, value: unknown }>
52
+ multiple?: boolean
53
+ chips?: boolean
54
+ hideMessages?: boolean
55
+ dateFormat?: string
56
+ sort?: unknown
57
+ filter?: unknown
58
+ width?: string | number
59
+ align?: string
60
+ children?: unknown[]
61
+ [key: string]: unknown // Allow for any additional properties from Vuetify
62
+ }
63
+
64
+ // Component-specific props interfaces
65
+ export type SyTableProps = {
66
+ items?: Record<string, unknown>[]
67
+ suffix: string
68
+ caption?: string
69
+ showFilters?: boolean
70
+ filterInputConfig?: Record<string, unknown>
71
+ density?: TableDensityType
72
+ striped?: boolean
73
+ resizableColumns?: boolean
74
+ enableColumnControls?: boolean
75
+ headers?: DataTableHeaders[]
76
+ showSelect?: boolean
77
+ }
78
+
79
+ export type SyServerTableProps = {
80
+ serverItemsLength: number
81
+ items?: Record<string, unknown>[]
82
+ suffix: string
83
+ caption?: string
84
+ showFilters?: boolean
85
+ resizableColumns?: boolean
86
+ filterInputConfig?: Record<string, unknown>
87
+ density?: TableDensityType
88
+ striped?: boolean
89
+ enableColumnControls?: boolean
90
+ headers?: DataTableHeaders[]
91
+ showSelect?: boolean
92
+ }
@@ -0,0 +1,83 @@
1
+ import { computed, nextTick, type Ref } from 'vue'
2
+ import type { DataOptions } from './types'
3
+
4
+ /**
5
+ * Composable for managing table pagination
6
+ *
7
+ * @param options - Reactive reference to table options
8
+ * @param itemsLength - Total number of items (for client-side) or serverItemsLength (for server-side)
9
+ * @param table - Reference to the table component
10
+ * @param emit - Emit function for update:options event
11
+ * @returns Pagination utilities and computed properties
12
+ */
13
+ export function usePagination({
14
+ options,
15
+ itemsLength,
16
+ table,
17
+ emit,
18
+ }: {
19
+ options: Ref<Partial<DataOptions>>
20
+ itemsLength: Ref<number>
21
+ table: Ref<unknown>
22
+ emit: (event: 'update:options', options: Partial<DataOptions>) => void
23
+ }) {
24
+ // Current page with getter/setter
25
+ const page = computed({
26
+ get: () => options.value.page || 1,
27
+ set: (newPage: number) => {
28
+ options.value = {
29
+ ...options.value,
30
+ page: newPage,
31
+ }
32
+ },
33
+ })
34
+
35
+ // Items per page with fallback to default
36
+ const itemsPerPageValue = computed(() => {
37
+ const value = options.value.itemsPerPage || 10
38
+ // If value is -1, it means "Tous" (all items)
39
+ return value
40
+ })
41
+
42
+ // Calculate total number of pages
43
+ const pageCount = computed(() => {
44
+ if (!itemsLength.value) return 0
45
+ // If itemsPerPageValue is -1 ("Tous"), return 1 page
46
+ if (itemsPerPageValue.value === -1) return 1
47
+ return Math.ceil(itemsLength.value / itemsPerPageValue.value)
48
+ })
49
+
50
+ /**
51
+ * Update items per page from pagination component
52
+ */
53
+ function updateItemsPerPage(newItemsPerPage: number) {
54
+ // Create a completely new options object to force reactivity
55
+ const newOptions = {
56
+ ...options.value,
57
+ itemsPerPage: newItemsPerPage,
58
+ page: 1, // Reset to first page when changing items per page
59
+ }
60
+
61
+ // Update options with the new object
62
+ options.value = newOptions
63
+
64
+ // Force a refresh of the table
65
+ nextTick(() => {
66
+ // Try to force update if the table has that method
67
+ const tableValue = table.value as { $forceUpdate?: () => void }
68
+ if (tableValue && typeof tableValue.$forceUpdate === 'function') {
69
+ tableValue.$forceUpdate()
70
+ }
71
+
72
+ // Emit an event to notify parent components
73
+ emit('update:options', newOptions)
74
+ })
75
+ }
76
+
77
+ return {
78
+ page,
79
+ pageCount,
80
+ itemsPerPageValue,
81
+ updateItemsPerPage,
82
+ }
83
+ }