@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,700 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3'
2
+ import SyServerTable from './SyServerTable.vue'
3
+ import { ref } from 'vue'
4
+ import type { VDataTable } from 'vuetify/components'
5
+ import dayjs from 'dayjs'
6
+
7
+ interface TextItem {
8
+ example: string
9
+ description: string
10
+ [key: string]: string
11
+ }
12
+
13
+ interface NumberItem {
14
+ example: number
15
+ description: string
16
+ [key: string]: string | number
17
+ }
18
+
19
+ interface SelectItem {
20
+ category: string
21
+ description: string
22
+ [key: string]: string
23
+ }
24
+
25
+ interface DateItem {
26
+ date: string
27
+ description: string
28
+ [key: string]: string
29
+ }
30
+ enum StateEnum {
31
+ IDLE = 'idle',
32
+ PENDING = 'pending',
33
+ RESOLVED = 'resolved',
34
+ REJECTED = 'rejected',
35
+ }
36
+
37
+ interface DataOptions {
38
+ sortBy?: Array<{ key: string, order: string }>
39
+ page?: number
40
+ itemsPerPage?: number
41
+ groupBy?: Array<string>
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ filters?: Array<{ key: string, value: any, type: string }>
44
+ }
45
+
46
+ const meta = {
47
+ title: 'Composants/Tableaux/SyServerTable/Rules',
48
+ component: SyServerTable,
49
+ decorators: [
50
+ () => ({
51
+ template: '<div style="padding: 20px;"><story/></div>',
52
+ }),
53
+ ],
54
+ parameters: {
55
+ layout: 'fullscreen',
56
+ controls: { hideNoControlsWarning: true },
57
+ },
58
+ } satisfies Meta<typeof SyServerTable & typeof VDataTable>
59
+
60
+ export default meta
61
+
62
+ type Story = StoryObj<typeof meta>
63
+
64
+ export const TextFilterRules: Story = {
65
+ args: {
66
+ serverItemsLength: 9,
67
+ suffix: 'text-filter-rules',
68
+ showFilters: true,
69
+ },
70
+ parameters: {
71
+ docs: {
72
+ description: {
73
+ story: 'Documentation des règles de filtrage textuel pour le composant SyServerTable.',
74
+ },
75
+ },
76
+ },
77
+ render: () => ({
78
+ components: { SyServerTable },
79
+ setup() {
80
+ const headers = ref([
81
+ { title: 'Exemple', key: 'example', filterable: true },
82
+ { title: 'Description', key: 'description', filterable: false },
83
+ ])
84
+
85
+ const demoItems = [
86
+ { example: 'Paris', description: 'Recherche simple (insensible à la casse) - trouve "Paris", "paris", etc.' },
87
+ { example: 'p*', description: 'Tous les mots commençant par "p" - trouve "Paris", "pomme", "Portugal", etc.' },
88
+ { example: '*is', description: 'Tous les mots finissant par "is" - trouve "Paris", "tennis", etc.' },
89
+ { example: 'p?r?s', description: 'Remplace chaque ? par un caractère - trouve "Paris", "parus", etc.' },
90
+ { example: '"Paris"', description: 'Recherche sensible à la casse - trouve "Paris" mais pas "paris"' },
91
+ { example: '=????', description: 'Tous les mots de 4 lettres exactement - trouve "Lyon", "Nice", etc.' },
92
+ { example: '<>?*', description: 'Toutes les valeurs vides ou nulles - trouve les cellules vides' },
93
+ { example: '>m', description: 'Tous les mots classés après "m" - trouve "Nice", "Paris", "Rome", etc.' },
94
+ { example: '*a*i*', description: 'Combinaison de wildcards - trouve "Paris", "Madrid", etc.' },
95
+ ]
96
+
97
+ const items = ref<TextItem[]>([])
98
+ const totalItems = ref(0)
99
+ const state = ref(StateEnum.IDLE)
100
+ const options = ref({
101
+ itemsPerPage: 10,
102
+ page: 1,
103
+ })
104
+
105
+ const wait = async (ms: number): Promise<void> => {
106
+ return new Promise(resolve => setTimeout(resolve, ms))
107
+ }
108
+
109
+ const fetchData = async (newOptions?: DataOptions): Promise<void> => {
110
+ state.value = StateEnum.PENDING
111
+ await wait(1000)
112
+
113
+ // Filtrer les éléments selon les filtres
114
+ let filteredItems = [...demoItems]
115
+ if (newOptions?.filters && newOptions.filters.length > 0) {
116
+ newOptions.filters.forEach((filter) => {
117
+ if (filter.value !== null && filter.value !== undefined) {
118
+ const filterValue = String(filter.value).toLowerCase()
119
+ filteredItems = filteredItems.filter((item) => {
120
+ const itemValue = String(item[filter.key]).toLowerCase()
121
+ return itemValue.includes(filterValue)
122
+ })
123
+ }
124
+ })
125
+ }
126
+
127
+ totalItems.value = filteredItems.length
128
+ items.value = filteredItems
129
+ state.value = StateEnum.RESOLVED
130
+ }
131
+
132
+ // Charger les données initiales
133
+ fetchData()
134
+
135
+ return {
136
+ headers,
137
+ items,
138
+ options,
139
+ state,
140
+ StateEnum,
141
+ fetchData,
142
+ serverItemsLength: totalItems,
143
+ }
144
+ },
145
+ template: `
146
+ <div>
147
+ <h2>Règles de filtrage textuel</h2>
148
+ <p class="mb-4">Le filtre textuel s'applique à une colonne de texte. Pour éviter qu'il ne soit lancé à chaque caractère saisi, il n'est déclenché qu'après un laps de temps de 300ms (par défaut) sans saisie.</p>
149
+
150
+ <h3 class="mb-2">Opérateurs et caractères spéciaux supportés</h3>
151
+ <p class="mb-4">Le filtre textuel prend en charge les caractères spéciaux suivants :</p>
152
+
153
+ <div class="mb-4">
154
+ <table class="mb-4" style="width: auto; border-collapse: collapse;">
155
+ <thead>
156
+ <tr>
157
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Caractère</th>
158
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Description</th>
159
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Exemple</th>
160
+ </tr>
161
+ </thead>
162
+ <tbody>
163
+ <tr>
164
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>*</code></td>
165
+ <td style="border: 1px solid #ddd; padding: 8px;">Remplace n'importe quelle séquence de caractères (y compris aucun)</td>
166
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>p*s</code> (trouve "paris", "pains", "pas", etc.)</td>
167
+ </tr>
168
+ <tr>
169
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>?</code></td>
170
+ <td style="border: 1px solid #ddd; padding: 8px;">Remplace exactement un caractère</td>
171
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>p?ris</code> (trouve "paris", "pâris", etc.)</td>
172
+ </tr>
173
+ <tr>
174
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>"..."</code></td>
175
+ <td style="border: 1px solid #ddd; padding: 8px;">Recherche sensible à la casse</td>
176
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>"Paris"</code> (trouve "Paris" mais pas "paris")</td>
177
+ </tr>
178
+ <tr>
179
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>=</code></td>
180
+ <td style="border: 1px solid #ddd; padding: 8px;">Recherche de longueur exacte</td>
181
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>=????</code> (trouve tous les mots de 4 lettres)</td>
182
+ </tr>
183
+ <tr>
184
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;&gt;</code></td>
185
+ <td style="border: 1px solid #ddd; padding: 8px;">Recherche de valeurs vides ou nulles</td>
186
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;&gt;?*</code> (trouve les cellules vides)</td>
187
+ </tr>
188
+ <tr>
189
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;</code></td>
190
+ <td style="border: 1px solid #ddd; padding: 8px;">Supérieur à (ordre alphabétique)</td>
191
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;m</code> (trouve les mots après "m" dans l'alphabet)</td>
192
+ </tr>
193
+ <tr>
194
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;</code></td>
195
+ <td style="border: 1px solid #ddd; padding: 8px;">Inférieur à (ordre alphabétique)</td>
196
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;m</code> (trouve les mots avant "m" dans l'alphabet)</td>
197
+ </tr>
198
+ </tbody>
199
+ </table>
200
+ <p>Sans opérateur spécial, le filtre effectue une recherche insensible à la casse.</p>
201
+ </div>
202
+
203
+ <SyServerTable
204
+ v-model:options="options"
205
+ :headers="headers"
206
+ :items="items"
207
+ :server-items-length="serverItemsLength"
208
+ :loading="state === StateEnum.PENDING"
209
+ suffix="text-filter-rules-doc"
210
+ show-filters
211
+ @update:options="fetchData"
212
+ />
213
+ </div>
214
+ `,
215
+ }),
216
+ }
217
+
218
+ export const NumberFilterRules: Story = {
219
+ args: {
220
+ serverItemsLength: 8,
221
+ suffix: 'number-filter-rules',
222
+ showFilters: true,
223
+ },
224
+ parameters: {
225
+ docs: {
226
+ description: {
227
+ story: 'Documentation des règles de filtrage numérique pour le composant SyServerTable.',
228
+ },
229
+ },
230
+ },
231
+ render: () => ({
232
+ components: { SyServerTable },
233
+ setup() {
234
+ const headers = ref([
235
+ { title: 'Exemple', key: 'example', filterable: true, filterType: 'number' },
236
+ { title: 'Description', key: 'description', filterable: false },
237
+ ])
238
+
239
+ const demoItems = [
240
+ { example: 42, description: 'Recherche exacte (42)' },
241
+ { example: 10, description: 'Recherche exacte (10)' },
242
+ { example: 25, description: 'Recherche exacte (25)' },
243
+ { example: 100, description: 'Recherche exacte (100)' },
244
+ { example: 75, description: 'Recherche exacte (75)' },
245
+ { example: 50, description: 'Recherche exacte (50)' },
246
+ { example: 30, description: 'Recherche exacte (30)' },
247
+ { example: 90, description: 'Recherche exacte (90)' },
248
+ ]
249
+
250
+ const items = ref<NumberItem[]>([])
251
+ const totalItems = ref(0)
252
+ const state = ref(StateEnum.IDLE)
253
+ const options = ref({
254
+ itemsPerPage: 10,
255
+ page: 1,
256
+ })
257
+
258
+ const wait = async (ms: number): Promise<void> => {
259
+ return new Promise(resolve => setTimeout(resolve, ms))
260
+ }
261
+
262
+ const fetchData = async (newOptions?: DataOptions): Promise<void> => {
263
+ state.value = StateEnum.PENDING
264
+ await wait(1000)
265
+
266
+ // Filtrer les éléments selon les filtres
267
+ let filteredItems = [...demoItems]
268
+ if (newOptions?.filters && newOptions.filters.length > 0) {
269
+ newOptions.filters.forEach((filter) => {
270
+ if (filter.value !== null && filter.value !== undefined) {
271
+ const filterValue = String(filter.value).toLowerCase()
272
+ filteredItems = filteredItems.filter((item) => {
273
+ const itemValue = String(item[filter.key])
274
+ return itemValue.includes(filterValue)
275
+ })
276
+ }
277
+ })
278
+ }
279
+
280
+ totalItems.value = filteredItems.length
281
+ items.value = filteredItems
282
+ state.value = StateEnum.RESOLVED
283
+ }
284
+
285
+ // Charger les données initiales
286
+ fetchData()
287
+
288
+ return {
289
+ headers,
290
+ items,
291
+ options,
292
+ state,
293
+ StateEnum,
294
+ fetchData,
295
+ serverItemsLength: totalItems,
296
+ }
297
+ },
298
+ template: `
299
+ <div>
300
+ <h2>Règles de filtrage numérique</h2>
301
+ <p class="mb-4">Le filtre numérique s'applique à une colonne de nombres. Pour éviter qu'il ne soit lancé à chaque caractère saisi, il n'est déclenché qu'après un laps de temps de 300ms (par défaut) sans saisie.</p>
302
+
303
+ <h3 class="mb-2">Opérateurs supportés</h3>
304
+ <p class="mb-4">Le filtre numérique prend en charge les opérateurs suivants lorsqu'ils sont placés au début de la valeur :</p>
305
+
306
+ <div class="mb-4">
307
+ <table class="mb-4" style="width: auto; border-collapse: collapse;">
308
+ <thead>
309
+ <tr>
310
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Opérateur</th>
311
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Description</th>
312
+ <th style="border: 1px solid #ddd; padding: 8px; text-align: left;">Exemple</th>
313
+ </tr>
314
+ </thead>
315
+ <tbody>
316
+ <tr>
317
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>=</code></td>
318
+ <td style="border: 1px solid #ddd; padding: 8px;">Égal à</td>
319
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>=42</code> (égal à 42)</td>
320
+ </tr>
321
+ <tr>
322
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;&gt;</code></td>
323
+ <td style="border: 1px solid #ddd; padding: 8px;">Différent de</td>
324
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;&gt;42</code> (différent de 42)</td>
325
+ </tr>
326
+ <tr>
327
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;</code></td>
328
+ <td style="border: 1px solid #ddd; padding: 8px;">Inférieur à</td>
329
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;42</code> (inférieur à 42)</td>
330
+ </tr>
331
+ <tr>
332
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;=</code></td>
333
+ <td style="border: 1px solid #ddd; padding: 8px;">Inférieur ou égal à</td>
334
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&lt;=42</code> (inférieur ou égal à 42)</td>
335
+ </tr>
336
+ <tr>
337
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;</code></td>
338
+ <td style="border: 1px solid #ddd; padding: 8px;">Supérieur à</td>
339
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;42</code> (supérieur à 42)</td>
340
+ </tr>
341
+ <tr>
342
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;=</code></td>
343
+ <td style="border: 1px solid #ddd; padding: 8px;">Supérieur ou égal à</td>
344
+ <td style="border: 1px solid #ddd; padding: 8px;"><code>&gt;=42</code> (supérieur ou égal à 42)</td>
345
+ </tr>
346
+ </tbody>
347
+ </table>
348
+ <p>Sans opérateur, le filtre effectue une recherche d'égalité exacte.</p>
349
+ </div>
350
+
351
+ <SyServerTable
352
+ v-model:options="options"
353
+ :headers="headers"
354
+ :items="items"
355
+ :server-items-length="serverItemsLength"
356
+ :loading="state === StateEnum.PENDING"
357
+ suffix="number-filter-rules-doc"
358
+ show-filters
359
+ @update:options="fetchData"
360
+ />
361
+ </div>
362
+ `,
363
+ }),
364
+ }
365
+
366
+ export const SelectFilterRules: Story = {
367
+ args: {
368
+ serverItemsLength: 5,
369
+ suffix: 'select-filter-rules',
370
+ showFilters: true,
371
+ },
372
+ parameters: {
373
+ docs: {
374
+ description: {
375
+ story: 'Documentation des règles de filtrage par sélection pour le composant SyServerTable.',
376
+ },
377
+ },
378
+ },
379
+ render: () => ({
380
+ components: { SyServerTable },
381
+ setup() {
382
+ const headers = ref([
383
+ {
384
+ title: 'Catégorie',
385
+ key: 'category',
386
+ filterable: true,
387
+ filterType: 'select',
388
+ filterOptions: [
389
+ { text: 'Fruits', value: 'Fruits' },
390
+ { text: 'Légumes', value: 'Légumes' },
391
+ { text: 'Boissons', value: 'Boissons' },
392
+ { text: '(vide)', value: '' },
393
+ ],
394
+ },
395
+ { title: 'Description', key: 'description', filterable: false },
396
+ ])
397
+
398
+ const demoItems = [
399
+ { category: 'Fruits', description: 'Catégorie standard avec valeur non vide' },
400
+ { category: 'Légumes', description: 'Catégorie standard avec valeur non vide' },
401
+ { category: '', description: 'Catégorie avec valeur vide, affichée comme "(vide)" dans la liste' },
402
+ { category: 'Fruits', description: 'Valeur dupliquée, apparaît une seule fois dans la liste' },
403
+ { category: 'Boissons', description: 'Catégorie standard avec valeur non vide' },
404
+ ]
405
+
406
+ const items = ref<SelectItem[]>([])
407
+ const totalItems = ref(0)
408
+ const state = ref(StateEnum.IDLE)
409
+ const options = ref({
410
+ itemsPerPage: 10,
411
+ page: 1,
412
+ })
413
+
414
+ const wait = async (ms: number): Promise<void> => {
415
+ return new Promise(resolve => setTimeout(resolve, ms))
416
+ }
417
+
418
+ const fetchData = async (newOptions?: DataOptions): Promise<void> => {
419
+ state.value = StateEnum.PENDING
420
+ await wait(1000)
421
+
422
+ let filteredItems = [...demoItems]
423
+ const filters = newOptions?.filters || []
424
+
425
+ filters.forEach((filter) => {
426
+ if (filter.key === 'category') {
427
+ // Si la valeur est une chaîne vide, on filtre les lignes avec des valeurs vides
428
+ // Sinon, on filtre normalement par la valeur sélectionnée
429
+ filteredItems = filteredItems.filter((item) => {
430
+ // Gestion spéciale pour les valeurs vides
431
+ if (filter.value === '') {
432
+ return item[filter.key] === ''
433
+ }
434
+ // Pour les autres valeurs, filtre normal
435
+ else if (filter.value) {
436
+ return item[filter.key] === filter.value
437
+ }
438
+ // Si pas de valeur de filtre, on garde tout
439
+ return true
440
+ })
441
+ }
442
+ })
443
+
444
+ totalItems.value = filteredItems.length
445
+ items.value = filteredItems
446
+ state.value = StateEnum.RESOLVED
447
+ }
448
+
449
+ // Chargement initial des données
450
+ fetchData(options.value)
451
+
452
+ return {
453
+ headers,
454
+ items,
455
+ options,
456
+ state,
457
+ StateEnum,
458
+ serverItemsLength: totalItems,
459
+ fetchData,
460
+ }
461
+ },
462
+ template: `
463
+ <div>
464
+ <h2>Règles de filtrage par sélection</h2>
465
+ <p class="mb-4">Les filtres de sélection permettent de choisir parmi les valeurs uniques présentes dans la colonne.</p>
466
+
467
+ <div class="mb-4">
468
+ <p>Les filtres de choix sont des listes reprenant les éléments uniques présents dans l'ensemble des colonnes non filtrés. Pour faciliter l'accessibilité de la liste, le premier élément contient la valeur « - choisir - » pour indiquer qu'aucune ligne n'est filtré. Si l'une des cellules de la colonne est vide, l'élément de liste correspondant doit afficher la valeur « (vide) ».</p>
469
+ <p>L'action de filtrage est effectuée à la sélection d'une option de la liste de choix.</p>
470
+ </div>
471
+
472
+ <SyServerTable
473
+ v-model:options="options"
474
+ :headers="headers"
475
+ :items="items"
476
+ :server-items-length="serverItemsLength"
477
+ :loading="state === StateEnum.PENDING"
478
+ suffix="select-filter-rules-doc"
479
+ show-filters
480
+ @update:options="fetchData"
481
+ />
482
+ </div>
483
+ `,
484
+ }),
485
+ }
486
+ export const DateFilterRules = {
487
+ args: {
488
+ serverItemsLength: 10,
489
+ suffix: 'date-filter-rules',
490
+ showFilters: true,
491
+ },
492
+ parameters: {
493
+ docs: {
494
+ description: {
495
+ story: 'Documentation des règles de filtrage par date pour le composant SyServerTable.',
496
+ },
497
+ },
498
+ },
499
+ render: () => ({
500
+ components: { SyServerTable },
501
+ setup() {
502
+ // Exemple 1: Filtrage par date seule
503
+ const headersSingleDate = ref([
504
+ {
505
+ title: 'Date',
506
+ key: 'date',
507
+ filterable: true,
508
+ filterType: 'date',
509
+ },
510
+ { title: 'Description', key: 'description', filterable: false },
511
+ ])
512
+
513
+ const demoItemsSingleDate = [
514
+ { date: dayjs('2025-01-15').format('DD/MM/YYYY'), description: 'Date simple' },
515
+ { date: dayjs('2025-02-20').format('DD/MM/YYYY'), description: 'Date simple' },
516
+ { date: dayjs('2024-12-10').format('DD/MM/YYYY'), description: 'Date simple' },
517
+ { date: dayjs('2025-05-05').format('DD/MM/YYYY'), description: 'Date simple' },
518
+ ]
519
+
520
+ const itemsSingleDate = ref<DateItem[]>([])
521
+ const totalItemsSingleDate = ref(0)
522
+ const stateSingleDate = ref(StateEnum.IDLE)
523
+ const optionsSingleDate = ref({
524
+ itemsPerPage: 10,
525
+ page: 1,
526
+ })
527
+
528
+ // Exemple 2: Filtrage par période
529
+ const headersPeriod = ref([
530
+ {
531
+ title: 'Date',
532
+ key: 'date',
533
+ filterable: true,
534
+ filterType: 'period',
535
+ dateFormat: 'DD/MM/YYYY',
536
+ },
537
+ { title: 'Description', key: 'description', filterable: false },
538
+ ])
539
+
540
+ // Définir une période du 01/01/2025 au 31/03/2025 pour l'exemple
541
+ const periodStart = dayjs('2025-01-01').format('DD/MM/YYYY')
542
+ const periodEnd = dayjs('2025-03-31').format('DD/MM/YYYY')
543
+
544
+ const demoItemsPeriod = [
545
+ { date: dayjs('2025-01-15').format('DD/MM/YYYY'), description: `Date incluse dans la période ${periodStart} - ${periodEnd}` },
546
+ { date: dayjs('2025-02-20').format('DD/MM/YYYY'), description: `Date incluse dans la période ${periodStart} - ${periodEnd}` },
547
+ { date: dayjs('2024-12-10').format('DD/MM/YYYY'), description: `Date avant la période ${periodStart} - ${periodEnd}` },
548
+ { date: dayjs('2025-05-05').format('DD/MM/YYYY'), description: `Date après la période ${periodStart} - ${periodEnd}` },
549
+ { date: dayjs('2025-01-01').format('DD/MM/YYYY'), description: `Date limite inférieure de la période (${periodStart})` },
550
+ { date: dayjs('2025-03-31').format('DD/MM/YYYY'), description: `Date limite supérieure de la période (${periodEnd})` },
551
+ ]
552
+
553
+ const itemsPeriod = ref<DateItem[]>([])
554
+ const totalItemsPeriod = ref(0)
555
+ const statePeriod = ref(StateEnum.IDLE)
556
+ const optionsPeriod = ref({
557
+ itemsPerPage: 10,
558
+ page: 1,
559
+ })
560
+
561
+ const wait = async (ms: number): Promise<void> => {
562
+ return new Promise(resolve => setTimeout(resolve, ms))
563
+ }
564
+
565
+ // Fonction de filtrage pour l'exemple 1 (date simple)
566
+ const fetchDataSingleDate = async (newOptions?: DataOptions): Promise<void> => {
567
+ stateSingleDate.value = StateEnum.PENDING
568
+ await wait(1000)
569
+
570
+ // Filtrer les éléments selon les filtres
571
+ let filteredItems = [...demoItemsSingleDate]
572
+ if (newOptions?.filters && newOptions.filters.length > 0) {
573
+ newOptions.filters.forEach((filter) => {
574
+ if (filter.value !== null && filter.value !== undefined && filter.value !== '') {
575
+ const filterValue = String(filter.value).toLowerCase()
576
+ filteredItems = filteredItems.filter((item) => {
577
+ const itemValue = String(item[filter.key]).toLowerCase()
578
+ return itemValue === filterValue
579
+ })
580
+ }
581
+ })
582
+ }
583
+
584
+ totalItemsSingleDate.value = filteredItems.length
585
+ itemsSingleDate.value = filteredItems
586
+ stateSingleDate.value = StateEnum.RESOLVED
587
+ }
588
+
589
+ // Fonction de filtrage pour l'exemple 2 (période)
590
+ const fetchDataPeriod = async (newOptions?: DataOptions): Promise<void> => {
591
+ statePeriod.value = StateEnum.PENDING
592
+ await wait(1000)
593
+
594
+ // Filtrer les éléments selon les filtres
595
+ let filteredItems = [...demoItemsPeriod]
596
+ if (newOptions?.filters && newOptions.filters.length > 0) {
597
+ newOptions.filters.forEach((filter) => {
598
+ if (filter.value !== null && filter.value !== undefined) {
599
+ // Pour le filtre de période, la valeur peut être un objet avec from et to
600
+ if (filter.type === 'period' && typeof filter.value === 'object') {
601
+ const { from, to } = filter.value
602
+
603
+ filteredItems = filteredItems.filter((item) => {
604
+ const itemDate = dayjs(item[filter.key], 'DD/MM/YYYY')
605
+
606
+ // Si from et to sont définis, vérifier si la date est dans l'intervalle
607
+ if (from && to) {
608
+ return itemDate.isAfter(dayjs(from, 'DD/MM/YYYY').subtract(1, 'day'))
609
+ && itemDate.isBefore(dayjs(to, 'DD/MM/YYYY').add(1, 'day'))
610
+ }
611
+ // Si seulement from est défini, vérifier si la date est après from
612
+ else if (from) {
613
+ return itemDate.isAfter(dayjs(from, 'DD/MM/YYYY').subtract(1, 'day'))
614
+ }
615
+ // Si seulement to est défini, vérifier si la date est avant to
616
+ else if (to) {
617
+ return itemDate.isBefore(dayjs(to, 'DD/MM/YYYY').add(1, 'day'))
618
+ }
619
+ return true
620
+ })
621
+ }
622
+ else {
623
+ const filterValue = String(filter.value).toLowerCase()
624
+ filteredItems = filteredItems.filter((item) => {
625
+ const itemValue = String(item[filter.key]).toLowerCase()
626
+ return itemValue === filterValue
627
+ })
628
+ }
629
+ }
630
+ })
631
+ }
632
+
633
+ totalItemsPeriod.value = filteredItems.length
634
+ itemsPeriod.value = filteredItems
635
+ statePeriod.value = StateEnum.RESOLVED
636
+ }
637
+
638
+ // Charger les données initiales
639
+ fetchDataSingleDate()
640
+ fetchDataPeriod()
641
+
642
+ return {
643
+ headersSingleDate,
644
+ itemsSingleDate,
645
+ optionsSingleDate,
646
+ stateSingleDate,
647
+ serverItemsLengthSingleDate: totalItemsSingleDate,
648
+ fetchDataSingleDate,
649
+
650
+ headersPeriod,
651
+ itemsPeriod,
652
+ optionsPeriod,
653
+ statePeriod,
654
+ serverItemsLengthPeriod: totalItemsPeriod,
655
+ fetchDataPeriod,
656
+
657
+ StateEnum,
658
+ }
659
+ },
660
+ template: `
661
+ <div>
662
+ <h2>Règles de filtrage par date</h2>
663
+ <p class="mb-4">Le filtre de date s'applique à une colonne de dates.</p>
664
+
665
+ <div class="mb-4">
666
+ <p>Le filtre de période comporte deux champs de saisies permettant de saisir une période du … au …</p>
667
+ <ul class="mb-4 pl-4">
668
+ <li>Le premier champ de saisie représente la date minimale recherchée (inclue). S'il n'est pas renseigné, il n'y a pas de limite minimale.</li>
669
+ <li>Le deuxième champ de saisie représente la date maximale recherchée (inclue). S'il n'est pas renseigné, il n'y a pas de limite maximale.</li>
670
+ </ul>
671
+ <p>L'action de filtrage est effectuée lorsque 10 caractères sont présents dans le champ de saisie actif.</p>
672
+ </div>
673
+
674
+ <h3 class="mb-3">Exemple 1: Filtrage par date seule</h3>
675
+ <SyServerTable
676
+ v-model:options="optionsSingleDate"
677
+ :headers="headersSingleDate"
678
+ :items="itemsSingleDate"
679
+ :server-items-length="serverItemsLengthSingleDate"
680
+ :loading="stateSingleDate === StateEnum.PENDING"
681
+ suffix="date-filter-single"
682
+ show-filters
683
+ @update:options="fetchDataSingleDate"
684
+ />
685
+
686
+ <h3 class="mt-6 mb-3">Exemple 2: Filtrage par période</h3>
687
+ <SyServerTable
688
+ v-model:options="optionsPeriod"
689
+ :headers="headersPeriod"
690
+ :items="itemsPeriod"
691
+ :server-items-length="serverItemsLengthPeriod"
692
+ :loading="statePeriod === StateEnum.PENDING"
693
+ suffix="date-filter-period"
694
+ show-filters
695
+ @update:options="fetchDataPeriod"
696
+ />
697
+ </div>
698
+ `,
699
+ }),
700
+ }