kelt-ui-kit-react 2.0.8 → 2.0.9

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 (319) hide show
  1. package/.github/workflows/publish.yml +40 -31
  2. package/README.md +124 -72
  3. package/dist/App.d.ts +2 -3
  4. package/dist/App.menu.d.ts +10 -10
  5. package/dist/App.routes.d.ts +1 -1
  6. package/dist/_core/hooks/HistoryProvider.d.ts +5 -5
  7. package/dist/_core/hooks/ImageChecker.d.ts +5 -6
  8. package/dist/_core/hooks/imageExist.d.ts +5 -6
  9. package/dist/_core/hooks/isEAN13.d.ts +1 -1
  10. package/dist/_core/hooks/objectToQueryParams.d.ts +1 -1
  11. package/dist/_core/hooks/useCurrency.d.ts +3 -3
  12. package/dist/_core/hooks/useDateutils.d.ts +4 -4
  13. package/dist/_core/hooks/useIsMobile.d.ts +1 -1
  14. package/dist/_core/hooks/useToken.d.ts +3 -3
  15. package/dist/_core/hooks/useValidate.d.ts +5 -5
  16. package/dist/_core/hooks/widgetSupport.d.ts +1 -1
  17. package/dist/_core/type/generiqueType.d.ts +4 -0
  18. package/dist/action/Action.view.d.ts +1 -1
  19. package/dist/action/ButtonAction.d.ts +8 -9
  20. package/dist/addressSearch/AddressSearch.d.ts +18 -19
  21. package/dist/addressSearch/AddressSearch.view.d.ts +1 -1
  22. package/dist/badge/Badge.d.ts +10 -9
  23. package/dist/badge/Badge.view.d.ts +1 -1
  24. package/dist/button/Button.d.ts +1 -2
  25. package/dist/button/Button.view.d.ts +1 -1
  26. package/dist/button/button.interface.d.ts +19 -20
  27. package/dist/button/buttonActions/ButtonActions.d.ts +11 -12
  28. package/dist/button/buttonFile/ButtonFile.d.ts +9 -9
  29. package/dist/button/buttonFile/ButtonFile.view.d.ts +1 -1
  30. package/dist/button/buttonFilters/ButtonFilters.d.ts +16 -17
  31. package/dist/card/Card.d.ts +14 -15
  32. package/dist/card/Card.view.d.ts +1 -1
  33. package/dist/card/card.interface.d.ts +10 -10
  34. package/dist/card/cardAction/CardAction.d.ts +13 -14
  35. package/dist/card/cardAction.interface.d.ts +8 -9
  36. package/dist/card/hook/useCardInteractions.d.ts +8 -8
  37. package/dist/carousel/Carousel.d.ts +14 -15
  38. package/dist/carousel/Carousel.view.d.ts +1 -1
  39. package/dist/damier/Damier.d.ts +9 -10
  40. package/dist/damier/Damier.view.d.ts +1 -1
  41. package/dist/damier/damierCell/DamierCell.d.ts +6 -7
  42. package/dist/damier/damierCell/damierCell.interface.d.ts +6 -6
  43. package/dist/dataTable/DataTable.d.ts +37 -33
  44. package/dist/dataTable/DataTable.view.d.ts +1 -1
  45. package/dist/dataTable/dataTable.interface.d.ts +70 -47
  46. package/dist/dataTable/dataTable.utils.d.ts +17 -0
  47. package/dist/dataTable/dataTableActions/DataTableAction.d.ts +9 -10
  48. package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +14 -8
  49. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +9 -0
  50. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
  51. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
  52. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +12 -0
  53. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
  54. package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +10 -0
  55. package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +6 -0
  56. package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +8 -7
  57. package/dist/dataTable/dataTableRow/DataTableRow.d.ts +12 -11
  58. package/dist/dataTable/useDataTableState.d.ts +13 -0
  59. package/dist/datePicker/DatePicker.d.ts +7 -8
  60. package/dist/datePicker/DatePicker.view.d.ts +1 -1
  61. package/dist/docs/ComponentDocs.d.ts +6 -0
  62. package/dist/docs/catalog.d.ts +8 -0
  63. package/dist/docs/documentation.types.d.ts +21 -0
  64. package/dist/expands/Expands.d.ts +11 -12
  65. package/dist/expands/Expands.view.d.ts +1 -1
  66. package/dist/expands/expand/expand.d.ts +10 -11
  67. package/dist/expands/expand/expand.interface.d.ts +9 -9
  68. package/dist/filAriane/FilAriane.d.ts +8 -9
  69. package/dist/filAriane/FilAriane.view.d.ts +1 -1
  70. package/dist/filAriane/filAriane.interface.d.ts +6 -6
  71. package/dist/form/Form.d.ts +35 -36
  72. package/dist/form/Form.view.d.ts +1 -1
  73. package/dist/form/form.enum.d.ts +16 -15
  74. package/dist/form/form.interface.d.ts +53 -54
  75. package/dist/form/input/Input.d.ts +27 -25
  76. package/dist/form/inputNumber/InputNumber.d.ts +21 -22
  77. package/dist/form/inputNumber/InputNumber.view.d.ts +1 -1
  78. package/dist/form/inputPrice/InputPrice.d.ts +14 -15
  79. package/dist/form/inputPrice/InputPrice.view.d.ts +1 -1
  80. package/dist/form/textArea/TextArea.d.ts +14 -15
  81. package/dist/form/textArea/TextArea.view.d.ts +1 -1
  82. package/dist/geocoding/GeocodingService.d.ts +11 -12
  83. package/dist/geocoding/geocoding.interface.d.ts +20 -20
  84. package/dist/grid/Grid.d.ts +9 -10
  85. package/dist/grid/Grid.view.d.ts +1 -1
  86. package/dist/grid/col/Col.d.ts +5 -6
  87. package/dist/grid/col/colStyled/ColStyled.d.ts +10 -11
  88. package/dist/grid/container/Container.d.ts +5 -6
  89. package/dist/grid/grid.interface.d.ts +23 -23
  90. package/dist/grid/row/Row.d.ts +13 -14
  91. package/dist/header/Header.d.ts +1 -2
  92. package/dist/header/Header.view.d.ts +1 -1
  93. package/dist/header/header.interface.d.ts +12 -12
  94. package/dist/home/Home.d.ts +1 -1
  95. package/dist/icon/Icon.d.ts +1 -2
  96. package/dist/icon/Icons.view.d.ts +1 -1
  97. package/dist/icon/icon.interface.d.ts +5 -5
  98. package/dist/icon/iconSize.enum.d.ts +7 -7
  99. package/dist/index.d.ts +56 -54
  100. package/dist/index.html +18 -18
  101. package/dist/index.js +4001 -3510
  102. package/dist/loader/Loader.d.ts +7 -8
  103. package/dist/loader/Loader.view.d.ts +1 -1
  104. package/dist/main.d.ts +0 -1
  105. package/dist/manifest.json +25 -25
  106. package/dist/menus/Menus.d.ts +5 -6
  107. package/dist/menus/Menus.view.d.ts +1 -1
  108. package/dist/menus/menu/Menu.d.ts +7 -8
  109. package/dist/menus/menu/menu.interface.d.ts +10 -10
  110. package/dist/message/Message.d.ts +6 -7
  111. package/dist/message/Message.view.d.ts +1 -1
  112. package/dist/modal/Modal.d.ts +13 -14
  113. package/dist/modal/Modal.view.d.ts +1 -1
  114. package/dist/notFound/NotFound.d.ts +1 -1
  115. package/dist/overlayPanel/OverlayPanel.d.ts +22 -23
  116. package/dist/overlayPanel/OverlayPanel.view.d.ts +1 -1
  117. package/dist/overlayPanel/overlay.context.d.ts +9 -10
  118. package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +9 -9
  119. package/dist/pdfViewer/PdfViewer.d.ts +12 -12
  120. package/dist/pdfViewer/PdfViewer.view.d.ts +1 -1
  121. package/dist/quantity/Quantity.d.ts +10 -11
  122. package/dist/robots.txt +3 -3
  123. package/dist/search/Search.d.ts +21 -22
  124. package/dist/search/Search.view.d.ts +1 -1
  125. package/dist/select/Select.d.ts +23 -24
  126. package/dist/select/Select.view.d.ts +1 -1
  127. package/dist/select/selectOption.interface.d.ts +5 -5
  128. package/dist/sidebar/Sidebar.d.ts +12 -13
  129. package/dist/sidebar/Sidebar.view.d.ts +1 -1
  130. package/dist/sidebarData/SidebarData.d.ts +6 -7
  131. package/dist/sidebarData/SidebarData.view.d.ts +1 -1
  132. package/dist/style.css +1 -1
  133. package/dist/tabs/Tabs.d.ts +17 -17
  134. package/dist/tabs/Tabs.view.d.ts +1 -1
  135. package/dist/toaster/Toaster.d.ts +1 -2
  136. package/dist/toaster/Toaster.view.d.ts +1 -1
  137. package/dist/toaster/store/useToasterStore.d.ts +24 -24
  138. package/docs.plugin.ts +223 -0
  139. package/index.html +20 -18
  140. package/package.json +64 -56
  141. package/public/index.html +18 -18
  142. package/public/manifest.json +25 -25
  143. package/public/robots.txt +3 -3
  144. package/src/App.css +178 -11
  145. package/src/App.menu.tsx +277 -257
  146. package/src/App.routes.tsx +21 -16
  147. package/src/App.tsx +31 -30
  148. package/src/_core/hooks/HistoryProvider.tsx +25 -25
  149. package/src/_core/hooks/ImageChecker.tsx +26 -26
  150. package/src/_core/hooks/imageExist.tsx +9 -9
  151. package/src/_core/hooks/isEAN13.tsx +16 -16
  152. package/src/_core/hooks/objectToQueryParams.tsx +32 -32
  153. package/src/_core/hooks/useCurrency.tsx +18 -18
  154. package/src/_core/hooks/useDateutils.ts +64 -64
  155. package/src/_core/hooks/useIsMobile.ts +18 -18
  156. package/src/_core/hooks/useToken.tsx +19 -19
  157. package/src/_core/hooks/useValidate.tsx +18 -18
  158. package/src/_core/hooks/widgetSupport.tsx +39 -39
  159. package/src/_core/type/generiqueType.tsx +4 -0
  160. package/src/action/Action.view.tsx +21 -21
  161. package/src/action/ButtonAction.tsx +32 -32
  162. package/src/action/action.css +20 -20
  163. package/src/addressSearch/AddressSearch.tsx +246 -246
  164. package/src/addressSearch/AddressSearch.view.tsx +52 -52
  165. package/src/addressSearch/addressSearch.css +132 -132
  166. package/src/badge/Badge.tsx +41 -34
  167. package/src/badge/Badge.view.tsx +15 -15
  168. package/src/badge/badge.css +63 -55
  169. package/src/button/Button.tsx +48 -48
  170. package/src/button/Button.view.tsx +85 -85
  171. package/src/button/button.css +53 -53
  172. package/src/button/button.interface.tsx +22 -22
  173. package/src/button/buttonActions/ButtonActions.tsx +104 -104
  174. package/src/button/buttonFile/ButtonFile.tsx +59 -59
  175. package/src/button/buttonFile/ButtonFile.view.tsx +70 -70
  176. package/src/button/buttonFilters/ButtonFilters.tsx +102 -102
  177. package/src/button/buttonFilters/buttonFilters.css +22 -22
  178. package/src/card/Card.tsx +151 -151
  179. package/src/card/Card.view.tsx +73 -73
  180. package/src/card/card.css +144 -144
  181. package/src/card/card.interface.tsx +9 -9
  182. package/src/card/cardAction/CardAction.tsx +135 -135
  183. package/src/card/cardAction/cardAction.css +10 -10
  184. package/src/card/cardAction.interface.tsx +10 -10
  185. package/src/card/hook/useCardInteractions.tsx +30 -30
  186. package/src/carousel/Carousel.css +44 -44
  187. package/src/carousel/Carousel.tsx +115 -115
  188. package/src/carousel/Carousel.view.tsx +13 -13
  189. package/src/damier/Damier.tsx +64 -64
  190. package/src/damier/Damier.view.tsx +31 -31
  191. package/src/damier/damier.css +50 -50
  192. package/src/damier/damierCell/DamierCell.tsx +18 -18
  193. package/src/damier/damierCell/damierCell.interface.tsx +5 -5
  194. package/src/dataTable/DataTable.tsx +840 -746
  195. package/src/dataTable/DataTable.view.tsx +105 -71
  196. package/src/dataTable/dataTable.css +233 -208
  197. package/src/dataTable/dataTable.interface.ts +66 -45
  198. package/src/dataTable/dataTable.utils.ts +45 -0
  199. package/src/dataTable/dataTableActions/DataTableAction.tsx +82 -65
  200. package/src/dataTable/dataTableColumn/DataTableColumn.tsx +48 -27
  201. package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
  202. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
  203. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
  204. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
  205. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
  206. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
  207. package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
  208. package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
  209. package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
  210. package/src/dataTable/dataTableLoading/DataTableLoading.tsx +23 -21
  211. package/src/dataTable/dataTableRow/DataTableRow.tsx +155 -208
  212. package/src/dataTable/useDataTableState.tsx +89 -0
  213. package/src/datePicker/DatePicker.tsx +110 -110
  214. package/src/datePicker/DatePicker.view.tsx +9 -9
  215. package/src/datePicker/datePicker.css +77 -77
  216. package/src/docs/ComponentDocs.tsx +156 -0
  217. package/src/docs/catalog.ts +40 -0
  218. package/src/docs/documentation.types.ts +20 -0
  219. package/src/docs/virtual.d.ts +7 -0
  220. package/src/expands/Expands.tsx +46 -46
  221. package/src/expands/Expands.view.tsx +90 -90
  222. package/src/expands/expand/expand.interface.tsx +8 -8
  223. package/src/expands/expand/expand.tsx +191 -191
  224. package/src/expands/expands.css +101 -101
  225. package/src/filAriane/FilAriane.tsx +57 -57
  226. package/src/filAriane/FilAriane.view.tsx +28 -28
  227. package/src/filAriane/filAriane.css +23 -23
  228. package/src/filAriane/filAriane.interface.tsx +6 -6
  229. package/src/form/Form.tsx +477 -477
  230. package/src/form/Form.view.tsx +67 -67
  231. package/src/form/form.css +135 -135
  232. package/src/form/form.enum.ts +16 -15
  233. package/src/form/form.interface.tsx +67 -67
  234. package/src/form/input/Input.tsx +146 -106
  235. package/src/form/input/input.css +39 -29
  236. package/src/form/inputNumber/InputNumber.tsx +132 -132
  237. package/src/form/inputNumber/InputNumber.view.tsx +15 -15
  238. package/src/form/inputPrice/InputPrice.tsx +42 -42
  239. package/src/form/inputPrice/InputPrice.view.tsx +15 -15
  240. package/src/form/textArea/TextArea.tsx +59 -59
  241. package/src/form/textArea/TextArea.view.tsx +34 -34
  242. package/src/form/textArea/textArea.css +9 -9
  243. package/src/geocoding/GeocodingService.ts +89 -89
  244. package/src/geocoding/geocoding.interface.ts +25 -25
  245. package/src/grid/Grid.tsx +34 -34
  246. package/src/grid/Grid.view.tsx +24 -24
  247. package/src/grid/col/Col.tsx +24 -24
  248. package/src/grid/col/col.css +3 -3
  249. package/src/grid/col/colStyled/ColStyled.tsx +59 -59
  250. package/src/grid/container/Container.tsx +8 -8
  251. package/src/grid/container/container.css +4 -4
  252. package/src/grid/grid.interface.tsx +27 -27
  253. package/src/grid/row/Row.tsx +49 -49
  254. package/src/grid/row/row.css +25 -25
  255. package/src/header/Header.tsx +64 -64
  256. package/src/header/Header.view.tsx +5 -5
  257. package/src/header/header.css +43 -43
  258. package/src/header/header.interface.tsx +11 -11
  259. package/src/home/Home.tsx +40 -3
  260. package/src/icon/Icon.tsx +6 -6
  261. package/src/icon/Icons.view.tsx +29 -29
  262. package/src/icon/icon.css +20 -20
  263. package/src/icon/icon.interface.tsx +7 -6
  264. package/src/icon/iconSize.enum.ts +7 -7
  265. package/src/index.css +547 -547
  266. package/src/index.ts +76 -70
  267. package/src/loader/Loader.tsx +37 -37
  268. package/src/loader/Loader.view.tsx +20 -20
  269. package/src/loader/loader.css +30 -30
  270. package/src/main.tsx +10 -10
  271. package/src/menus/Menus.tsx +43 -43
  272. package/src/menus/Menus.view.tsx +39 -39
  273. package/src/menus/menu/Menu.tsx +18 -18
  274. package/src/menus/menu/menu.interface.tsx +9 -9
  275. package/src/menus/menus.css +47 -47
  276. package/src/message/Message.tsx +30 -30
  277. package/src/message/Message.view.tsx +22 -22
  278. package/src/message/message.css +29 -29
  279. package/src/modal/Modal.tsx +59 -59
  280. package/src/modal/Modal.view.tsx +26 -26
  281. package/src/modal/modal.css +71 -71
  282. package/src/notFound/NotFound.tsx +3 -3
  283. package/src/overlayPanel/OverlayPanel.tsx +260 -255
  284. package/src/overlayPanel/OverlayPanel.view.tsx +25 -25
  285. package/src/overlayPanel/overlay.context.tsx +30 -30
  286. package/src/overlayPanel/overlayPanel.css +43 -43
  287. package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +23 -23
  288. package/src/pdfViewer/PdfViewer.tsx +73 -73
  289. package/src/pdfViewer/PdfViewer.view.tsx +5 -5
  290. package/src/quantity/Quantity.tsx +103 -103
  291. package/src/quantity/quantity.css +26 -26
  292. package/src/search/Search.tsx +161 -161
  293. package/src/search/Search.view.tsx +14 -14
  294. package/src/search/search.css +59 -59
  295. package/src/select/Select.tsx +245 -245
  296. package/src/select/Select.view.tsx +71 -71
  297. package/src/select/select.css +150 -150
  298. package/src/select/selectOption.interface.ts +5 -5
  299. package/src/sidebar/Sidebar.tsx +213 -213
  300. package/src/sidebar/Sidebar.view.tsx +17 -17
  301. package/src/sidebar/sidebar.css +103 -103
  302. package/src/sidebarData/SidebarData.tsx +19 -19
  303. package/src/sidebarData/SidebarData.view.tsx +19 -19
  304. package/src/sidebarData/sidebarData.css +27 -27
  305. package/src/tabs/Tabs.tsx +101 -90
  306. package/src/tabs/Tabs.view.tsx +20 -20
  307. package/src/tabs/tabs.css +29 -29
  308. package/src/toaster/Toaster.tsx +61 -61
  309. package/src/toaster/Toaster.view.tsx +25 -25
  310. package/src/toaster/store/useToasterStore.tsx +54 -54
  311. package/src/toaster/toaster.css +105 -105
  312. package/tests/dataTable.test.mjs +93 -0
  313. package/tests/documentation.test.mjs +75 -0
  314. package/tsconfig.docs.json +10 -0
  315. package/tsconfig.json +28 -28
  316. package/vite.config.ts +26 -20
  317. package/vite.config.ts.timestamp-1733262892554-a13dfef6e8a29.mjs +24 -24
  318. package/vite.config.ts.timestamp-1757847121745-e5a5bf54b81b.mjs +28 -28
  319. package/vite.config.ts.timestamp-1759742478362-4ac5c5a7db34b.mjs +28 -28
@@ -1,25 +1,25 @@
1
- import { createContext, useContext, useEffect, useRef, useState } from "react";
2
- import { useLocation } from "react-router-dom";
3
-
4
- const HistoryDepthContext = createContext<number>(1);
5
-
6
- export function HistoryProvider({ children }: { children: React.ReactNode }) {
7
- const location = useLocation();
8
- const depthRef = useRef(1);
9
- const [depth, setDepth] = useState(1);
10
-
11
- useEffect(() => {
12
- depthRef.current += 1;
13
- setDepth(depthRef.current);
14
- }, [location]);
15
-
16
- return (
17
- <HistoryDepthContext.Provider value={depth}>
18
- {children}
19
- </HistoryDepthContext.Provider>
20
- );
21
- }
22
-
23
- export function useHistoryDepth() {
24
- return useContext(HistoryDepthContext);
25
- }
1
+ import { createContext, useContext, useEffect, useRef, useState } from "react";
2
+ import { useLocation } from "react-router-dom";
3
+
4
+ const HistoryDepthContext = createContext<number>(1);
5
+
6
+ export function HistoryProvider({ children }: { children: React.ReactNode }) {
7
+ const location = useLocation();
8
+ const depthRef = useRef(1);
9
+ const [depth, setDepth] = useState(1);
10
+
11
+ useEffect(() => {
12
+ depthRef.current += 1;
13
+ setDepth(depthRef.current);
14
+ }, [location]);
15
+
16
+ return (
17
+ <HistoryDepthContext.Provider value={depth}>
18
+ {children}
19
+ </HistoryDepthContext.Provider>
20
+ );
21
+ }
22
+
23
+ export function useHistoryDepth() {
24
+ return useContext(HistoryDepthContext);
25
+ }
@@ -1,26 +1,26 @@
1
- import React, { useEffect, useState } from "react";
2
-
3
- interface ImageCheckerProps {
4
- imageUrl: string;
5
- }
6
-
7
- export const ImageChecker: React.FC<ImageCheckerProps> = ({ imageUrl }) => {
8
- const [imageExists, setImageExists] = useState<boolean | null>(null);
9
- const testImg = async (path: string) => {
10
- try {
11
- const response = await fetch(path, { method: "HEAD" });
12
- console.log(response);
13
- return response.ok;
14
- } catch {
15
- return false;
16
- }
17
- };
18
- useEffect(() => {
19
- testImg(imageUrl).then((res) => setImageExists(res));
20
- }, [imageUrl]);
21
-
22
- if (imageExists === null) return <p>Vérification en cours...</p>;
23
- if (!imageExists) return <p>L'image n'existe pas.</p>;
24
-
25
- return <img src={imageUrl} alt="Vérifiée" />;
26
- };
1
+ import React, { useEffect, useState } from "react";
2
+
3
+ interface ImageCheckerProps {
4
+ imageUrl: string;
5
+ }
6
+
7
+ export const ImageChecker: React.FC<ImageCheckerProps> = ({ imageUrl }) => {
8
+ const [imageExists, setImageExists] = useState<boolean | null>(null);
9
+ const testImg = async (path: string) => {
10
+ try {
11
+ const response = await fetch(path, { method: "HEAD" });
12
+ console.log(response);
13
+ return response.ok;
14
+ } catch {
15
+ return false;
16
+ }
17
+ };
18
+ useEffect(() => {
19
+ testImg(imageUrl).then((res) => setImageExists(res));
20
+ }, [imageUrl]);
21
+
22
+ if (imageExists === null) return <p>Vérification en cours...</p>;
23
+ if (!imageExists) return <p>L'image n'existe pas.</p>;
24
+
25
+ return <img src={imageUrl} alt="Vérifiée" />;
26
+ };
@@ -1,9 +1,9 @@
1
- import React from "react";
2
-
3
- interface ImageCheckerProps {
4
- imageUrl: string;
5
- }
6
-
7
- export const ImageExist: React.FC<ImageCheckerProps> = ({ imageUrl }) => {
8
- return <img src={imageUrl} alt="" />;
9
- };
1
+ import React from "react";
2
+
3
+ interface ImageCheckerProps {
4
+ imageUrl: string;
5
+ }
6
+
7
+ export const ImageExist: React.FC<ImageCheckerProps> = ({ imageUrl }) => {
8
+ return <img src={imageUrl} alt="" />;
9
+ };
@@ -1,16 +1,16 @@
1
- export const isValidEAN13 = (value: string): boolean => {
2
- if (!/^\d{13}$/.test(value)) return false; // Vérifie que c'est bien 13 chiffres
3
-
4
- // Calcul de la clé de contrôle (checksum)
5
- const digits = value.split("").map(Number);
6
- const checkDigit = digits.pop(); // Dernier chiffre (clé de contrôle)
7
-
8
- const sum = digits.reduce(
9
- (acc, digit, index) => acc + digit * (index % 2 === 0 ? 1 : 3),
10
- 0
11
- );
12
-
13
- const computedCheckDigit = (10 - (sum % 10)) % 10;
14
-
15
- return checkDigit === computedCheckDigit;
16
- };
1
+ export const isValidEAN13 = (value: string): boolean => {
2
+ if (!/^\d{13}$/.test(value)) return false; // Vérifie que c'est bien 13 chiffres
3
+
4
+ // Calcul de la clé de contrôle (checksum)
5
+ const digits = value.split("").map(Number);
6
+ const checkDigit = digits.pop(); // Dernier chiffre (clé de contrôle)
7
+
8
+ const sum = digits.reduce(
9
+ (acc, digit, index) => acc + digit * (index % 2 === 0 ? 1 : 3),
10
+ 0
11
+ );
12
+
13
+ const computedCheckDigit = (10 - (sum % 10)) % 10;
14
+
15
+ return checkDigit === computedCheckDigit;
16
+ };
@@ -1,32 +1,32 @@
1
- export const objectToQueryParams = (
2
- obj: Record<string, any>,
3
- prefix = ""
4
- ): string => {
5
- const params = new URLSearchParams();
6
-
7
- const processObject = (currentObj: any, currentPrefix: string) => {
8
- Object.entries(currentObj).forEach(([key, value]) => {
9
- const fullKey = currentPrefix ? `${currentPrefix}[${key}]` : key;
10
-
11
- if (value === null || value === undefined) {
12
- // Ignorer les valeurs null ou undefined
13
- return;
14
- }
15
-
16
- if (typeof value === "object" && !Array.isArray(value)) {
17
- // Appel récursif pour les objets imbriqués
18
- processObject(value, fullKey);
19
- } else if (Array.isArray(value)) {
20
- // Gérer les tableaux
21
- value.forEach((item) => params.append(fullKey, String(item)));
22
- } else {
23
- // Gérer les types primitifs
24
- params.append(fullKey, String(value));
25
- }
26
- });
27
- };
28
-
29
- processObject(obj, prefix);
30
-
31
- return params.toString();
32
- };
1
+ export const objectToQueryParams = (
2
+ obj: Record<string, any>,
3
+ prefix = ""
4
+ ): string => {
5
+ const params = new URLSearchParams();
6
+
7
+ const processObject = (currentObj: any, currentPrefix: string) => {
8
+ Object.entries(currentObj).forEach(([key, value]) => {
9
+ const fullKey = currentPrefix ? `${currentPrefix}[${key}]` : key;
10
+
11
+ if (value === null || value === undefined) {
12
+ // Ignorer les valeurs null ou undefined
13
+ return;
14
+ }
15
+
16
+ if (typeof value === "object" && !Array.isArray(value)) {
17
+ // Appel récursif pour les objets imbriqués
18
+ processObject(value, fullKey);
19
+ } else if (Array.isArray(value)) {
20
+ // Gérer les tableaux
21
+ value.forEach((item) => params.append(fullKey, String(item)));
22
+ } else {
23
+ // Gérer les types primitifs
24
+ params.append(fullKey, String(value));
25
+ }
26
+ });
27
+ };
28
+
29
+ processObject(obj, prefix);
30
+
31
+ return params.toString();
32
+ };
@@ -1,18 +1,18 @@
1
- import { useCallback } from "react";
2
-
3
- export const useCurrency = (
4
- locale: string = "fr-FR",
5
- currency: string = "EUR"
6
- ) => {
7
- const format = useCallback(
8
- (value: number) => {
9
- return new Intl.NumberFormat(locale, {
10
- style: "currency",
11
- currency,
12
- }).format(value);
13
- },
14
- [locale, currency]
15
- );
16
-
17
- return { formatCurrency: format };
18
- };
1
+ import { useCallback } from "react";
2
+
3
+ export const useCurrency = (
4
+ locale: string = "fr-FR",
5
+ currency: string = "EUR"
6
+ ) => {
7
+ const format = useCallback(
8
+ (value: number) => {
9
+ return new Intl.NumberFormat(locale, {
10
+ style: "currency",
11
+ currency,
12
+ }).format(value);
13
+ },
14
+ [locale, currency]
15
+ );
16
+
17
+ return { formatCurrency: format };
18
+ };
@@ -1,64 +1,64 @@
1
- export function FormatDate(date: Date, format: string): string {
2
- const days = [
3
- "Dimanche",
4
- "Lundi",
5
- "Mardi",
6
- "Mercredi",
7
- "Jeudi",
8
- "Vendredi",
9
- "Samedi",
10
- ];
11
- const months = [
12
- "janvier",
13
- "février",
14
- "mars",
15
- "avril",
16
- "mai",
17
- "juin",
18
- "juillet",
19
- "août",
20
- "septembre",
21
- "octobre",
22
- "novembre",
23
- "décembre",
24
- ];
25
-
26
- if (!date) return "";
27
-
28
- const year = date.getFullYear().toString();
29
- const month = String(date.getMonth() + 1).padStart(2, "0"); // Mois en chiffres
30
- const day = String(date.getDate()).padStart(2, "0");
31
- const hours = String(date.getHours()).padStart(2, "0");
32
- const minutes = String(date.getMinutes()).padStart(2, "0");
33
- const seconds = String(date.getSeconds()).padStart(2, "0");
34
-
35
- const dayName = days[date.getDay()];
36
- const monthName = months[date.getMonth()];
37
-
38
- return format
39
- .replace("dddd", dayName) // Remplace d'abord "dddd"
40
- .replace("MMMM", monthName) // Puis "MMMM" pour éviter de modifier "MM"
41
- .replace("YYYY", year)
42
- .replace("MM", month) // Enfin, "MM" pour éviter d'écraser les valeurs de "MMMM"
43
- .replace("DD", day)
44
- .replace("HH", hours)
45
- .replace("mm", minutes)
46
- .replace("ss", seconds);
47
- }
48
- export function LocalDateStringToUTC(dateStr: string): string {
49
- const [year, month, day] = dateStr.split("-").map(Number);
50
-
51
- // Crée une date en heure locale
52
- const localDate = new Date(year, month - 1, day, 0, 0, 0);
53
-
54
- // Convertit en UTC ISO
55
- return localDate.toISOString();
56
- }
57
- export function localDateStartToUTC(dateStr: string): Date {
58
- const [y, m, d] = dateStr.split("-").map(Number);
59
- return new Date(y, m - 1, d, 0, 0, 0, 0);
60
- }
61
- export function localDateEndToUTC(dateStr: string): Date {
62
- const [y, m, d] = dateStr.split("-").map(Number);
63
- return new Date(y, m - 1, d, 23, 59, 59, 999);
64
- }
1
+ export function FormatDate(date: Date, format: string): string {
2
+ const days = [
3
+ "Dimanche",
4
+ "Lundi",
5
+ "Mardi",
6
+ "Mercredi",
7
+ "Jeudi",
8
+ "Vendredi",
9
+ "Samedi",
10
+ ];
11
+ const months = [
12
+ "janvier",
13
+ "février",
14
+ "mars",
15
+ "avril",
16
+ "mai",
17
+ "juin",
18
+ "juillet",
19
+ "août",
20
+ "septembre",
21
+ "octobre",
22
+ "novembre",
23
+ "décembre",
24
+ ];
25
+
26
+ if (!date) return "";
27
+
28
+ const year = date.getFullYear().toString();
29
+ const month = String(date.getMonth() + 1).padStart(2, "0"); // Mois en chiffres
30
+ const day = String(date.getDate()).padStart(2, "0");
31
+ const hours = String(date.getHours()).padStart(2, "0");
32
+ const minutes = String(date.getMinutes()).padStart(2, "0");
33
+ const seconds = String(date.getSeconds()).padStart(2, "0");
34
+
35
+ const dayName = days[date.getDay()];
36
+ const monthName = months[date.getMonth()];
37
+
38
+ return format
39
+ .replace("dddd", dayName) // Remplace d'abord "dddd"
40
+ .replace("MMMM", monthName) // Puis "MMMM" pour éviter de modifier "MM"
41
+ .replace("YYYY", year)
42
+ .replace("MM", month) // Enfin, "MM" pour éviter d'écraser les valeurs de "MMMM"
43
+ .replace("DD", day)
44
+ .replace("HH", hours)
45
+ .replace("mm", minutes)
46
+ .replace("ss", seconds);
47
+ }
48
+ export function LocalDateStringToUTC(dateStr: string): string {
49
+ const [year, month, day] = dateStr.split("-").map(Number);
50
+
51
+ // Crée une date en heure locale
52
+ const localDate = new Date(year, month - 1, day, 0, 0, 0);
53
+
54
+ // Convertit en UTC ISO
55
+ return localDate.toISOString();
56
+ }
57
+ export function localDateStartToUTC(dateStr: string): Date {
58
+ const [y, m, d] = dateStr.split("-").map(Number);
59
+ return new Date(y, m - 1, d, 0, 0, 0, 0);
60
+ }
61
+ export function localDateEndToUTC(dateStr: string): Date {
62
+ const [y, m, d] = dateStr.split("-").map(Number);
63
+ return new Date(y, m - 1, d, 23, 59, 59, 999);
64
+ }
@@ -1,18 +1,18 @@
1
- import { useEffect, useState } from "react";
2
-
3
- export const useIsMobile = (maxWidth: number = 768) => {
4
- const [isMobile, setIsMobile] = useState(
5
- typeof window !== "undefined" ? window.innerWidth <= maxWidth : false
6
- );
7
-
8
- useEffect(() => {
9
- const handleResize = () => {
10
- setIsMobile(window.innerWidth <= maxWidth);
11
- };
12
-
13
- window.addEventListener("resize", handleResize);
14
- return () => window.removeEventListener("resize", handleResize);
15
- }, [maxWidth]);
16
-
17
- return isMobile;
18
- };
1
+ import { useEffect, useState } from "react";
2
+
3
+ export const useIsMobile = (maxWidth: number = 768) => {
4
+ const [isMobile, setIsMobile] = useState(
5
+ typeof window !== "undefined" ? window.innerWidth <= maxWidth : false
6
+ );
7
+
8
+ useEffect(() => {
9
+ const handleResize = () => {
10
+ setIsMobile(window.innerWidth <= maxWidth);
11
+ };
12
+
13
+ window.addEventListener("resize", handleResize);
14
+ return () => window.removeEventListener("resize", handleResize);
15
+ }, [maxWidth]);
16
+
17
+ return isMobile;
18
+ };
@@ -1,19 +1,19 @@
1
- import { jwtDecode } from "jwt-decode";
2
- import { useCallback } from "react";
3
-
4
- export const useToken = () => {
5
- const getTokenValidate = useCallback((): string | null => {
6
- const token = localStorage.getItem("token");
7
- if (!token) {
8
- return null;
9
- }
10
- const decoded = jwtDecode(token);
11
- const currentTime = Date.now() / 1000; // Convertir en secondes
12
- if (!decoded.exp || decoded.exp < currentTime) {
13
- return null;
14
- }
15
- return token;
16
- }, []);
17
-
18
- return { getTokenValidate };
19
- };
1
+ import { jwtDecode } from "jwt-decode";
2
+ import { useCallback } from "react";
3
+
4
+ export const useToken = () => {
5
+ const getTokenValidate = useCallback((): string | null => {
6
+ const token = localStorage.getItem("token");
7
+ if (!token) {
8
+ return null;
9
+ }
10
+ const decoded = jwtDecode(token);
11
+ const currentTime = Date.now() / 1000; // Convertir en secondes
12
+ if (!decoded.exp || decoded.exp < currentTime) {
13
+ return null;
14
+ }
15
+ return token;
16
+ }, []);
17
+
18
+ return { getTokenValidate };
19
+ };
@@ -1,18 +1,18 @@
1
- export const useValidate = () => {
2
- const isValidateEmail = (input: string): boolean => {
3
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
4
- return emailRegex.test(input);
5
- };
6
-
7
- const isValidateTel = (input: string): boolean => {
8
- const emailRegex = /^\+?[0-9\s.-]{7,15}$/;
9
- return emailRegex.test(input);
10
- };
11
-
12
- const isValidateCodePostal = (input: string): boolean => {
13
- const emailRegex = /^[0-9]{5}$/;
14
- return emailRegex.test(input);
15
- };
16
-
17
- return { isValidateEmail, isValidateTel, isValidateCodePostal };
18
- };
1
+ export const useValidate = () => {
2
+ const isValidateEmail = (input: string): boolean => {
3
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
4
+ return emailRegex.test(input);
5
+ };
6
+
7
+ const isValidateTel = (input: string): boolean => {
8
+ const emailRegex = /^\+?[0-9\s.-]{7,15}$/;
9
+ return emailRegex.test(input);
10
+ };
11
+
12
+ const isValidateCodePostal = (input: string): boolean => {
13
+ const emailRegex = /^[0-9]{5}$/;
14
+ return emailRegex.test(input);
15
+ };
16
+
17
+ return { isValidateEmail, isValidateTel, isValidateCodePostal };
18
+ };
@@ -1,39 +1,39 @@
1
- import { useEffect, useRef } from "react";
2
-
3
- export const WidgetSupport = () => {
4
- const targetRef = useRef<HTMLDivElement>(null);
5
- useEffect(() => {
6
- if (!targetRef.current) return;
7
- const script = document.createElement("script");
8
- script.type = "text/javascript";
9
- script.innerHTML = `
10
- !function(e,t,n){
11
- function a(){
12
- var e = t.getElementsByTagName("script")[0],
13
- n = t.createElement("script");
14
- n.type = "text/javascript";
15
- n.async = true;
16
- n.src = "https://beacon-v2.helpscout.net";
17
- e.parentNode.insertBefore(n,e);
18
- }
19
- if(e.Beacon = n = function(t,n,a){
20
- e.Beacon.readyQueue.push({method: t, options: n, data: a});
21
- }, n.readyQueue = [], t.readyState === "complete") return a();
22
- e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, false);
23
- }(window, document, window.Beacon || function(){});
24
-
25
- window.Beacon('init', '5deebca7-9d32-4a66-abba-f94a05fa0522');
26
- `;
27
- targetRef.current.appendChild(script);
28
-
29
- return () => {
30
- targetRef?.current?.removeChild(script);
31
- };
32
- }, []);
33
-
34
- return (
35
- <div>
36
- <div ref={targetRef} />
37
- </div>
38
- );
39
- };
1
+ import { useEffect, useRef } from "react";
2
+
3
+ export const WidgetSupport = () => {
4
+ const targetRef = useRef<HTMLDivElement>(null);
5
+ useEffect(() => {
6
+ if (!targetRef.current) return;
7
+ const script = document.createElement("script");
8
+ script.type = "text/javascript";
9
+ script.innerHTML = `
10
+ !function(e,t,n){
11
+ function a(){
12
+ var e = t.getElementsByTagName("script")[0],
13
+ n = t.createElement("script");
14
+ n.type = "text/javascript";
15
+ n.async = true;
16
+ n.src = "https://beacon-v2.helpscout.net";
17
+ e.parentNode.insertBefore(n,e);
18
+ }
19
+ if(e.Beacon = n = function(t,n,a){
20
+ e.Beacon.readyQueue.push({method: t, options: n, data: a});
21
+ }, n.readyQueue = [], t.readyState === "complete") return a();
22
+ e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, false);
23
+ }(window, document, window.Beacon || function(){});
24
+
25
+ window.Beacon('init', '5deebca7-9d32-4a66-abba-f94a05fa0522');
26
+ `;
27
+ targetRef.current.appendChild(script);
28
+
29
+ return () => {
30
+ targetRef?.current?.removeChild(script);
31
+ };
32
+ }, []);
33
+
34
+ return (
35
+ <div>
36
+ <div ref={targetRef} />
37
+ </div>
38
+ );
39
+ };
@@ -0,0 +1,4 @@
1
+ export interface EnumerableType {
2
+ label: string;
3
+ value: string;
4
+ }
@@ -1,21 +1,21 @@
1
- import { ButtonAction } from "./ButtonAction";
2
-
3
- export const ActionView = (): JSX.Element => {
4
- return (
5
- <div className="d-flex">
6
- <ButtonAction
7
- className="mr-2"
8
- onClick={() => console.log("Envoyer")}
9
- title="Envoyer"
10
- classIcon="bi-send"
11
- badge={{
12
- className: "badge--primary",
13
- title: "Badge",
14
- sizeIcon: undefined,
15
- classIcon: "bi-check-circle",
16
- onClick: () => console.log("Badge clicked"),
17
- }}
18
- />
19
- </div>
20
- );
21
- };
1
+ import { ButtonAction } from "./ButtonAction";
2
+
3
+ export const ActionView = (): JSX.Element => {
4
+ return (
5
+ <div className="d-flex">
6
+ <ButtonAction
7
+ className="mr-2"
8
+ onClick={() => console.log("Envoyer")}
9
+ title="Envoyer"
10
+ classIcon="bi-send"
11
+ badge={{
12
+ className: "badge--primary",
13
+ title: "Badge",
14
+ sizeIcon: undefined,
15
+ classIcon: "bi-check-circle",
16
+ onClick: () => console.log("Badge clicked"),
17
+ }}
18
+ />
19
+ </div>
20
+ );
21
+ };