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,24 +1,24 @@
1
- import { useContext } from "react";
2
- import { ColStyled } from "./colStyled/ColStyled";
3
- import { GridBreakpoints } from "../grid.interface";
4
- import { RowResponsiveContext } from "../row/Row";
5
- import "./col.css"
6
- type ColProps = GridBreakpoints & {
7
- children: React.ReactNode;
8
- };
9
- export const Col: React.FC<ColProps> = ({ xs, sm, md, lg, xl, children }) => {
10
- const responsive = useContext(RowResponsiveContext);
11
- return (
12
- <ColStyled
13
- className="col"
14
- $responsive={responsive}
15
- $xs={xs}
16
- $sm={sm}
17
- $md={md}
18
- $lg={lg}
19
- $xl={xl}
20
- >
21
- {children}
22
- </ColStyled>
23
- );
24
- };
1
+ import { useContext } from "react";
2
+ import { ColStyled } from "./colStyled/ColStyled";
3
+ import { GridBreakpoints } from "../grid.interface";
4
+ import { RowResponsiveContext } from "../row/Row";
5
+ import "./col.css"
6
+ type ColProps = GridBreakpoints & {
7
+ children: React.ReactNode;
8
+ };
9
+ export const Col: React.FC<ColProps> = ({ xs, sm, md, lg, xl, children }) => {
10
+ const responsive = useContext(RowResponsiveContext);
11
+ return (
12
+ <ColStyled
13
+ className="col"
14
+ $responsive={responsive}
15
+ $xs={xs}
16
+ $sm={sm}
17
+ $md={md}
18
+ $lg={lg}
19
+ $xl={xl}
20
+ >
21
+ {children}
22
+ </ColStyled>
23
+ );
24
+ };
@@ -1,3 +1,3 @@
1
- .col {
2
- padding: 0;
3
- }
1
+ .col {
2
+ padding: 0;
3
+ }
@@ -1,59 +1,59 @@
1
- import styled, { css } from "styled-components";
2
- import { GridColumnSpan, GridResponsive } from "../../grid.interface";
3
-
4
- // Largeur = part de la ligne moins la part des gaps qui revient à la colonne.
5
- // Pour une ligne dont les spans font 12, la somme des largeurs + les gaps = 100%.
6
- const getColWidth = (size: number) =>
7
- `calc(${(size / 12) * 100}% - var(--grid-gutter, 0px) * ${1 - size / 12})`;
8
-
9
- // "auto" : base 0 et grow 1, les colonnes "auto" d'une ligne se partagent
10
- // la place restante (gaps déduits) à parts égales.
11
- const colSize = (size: GridColumnSpan = 12) =>
12
- size === "auto"
13
- ? `flex: 1 1 0; max-width: 100%;`
14
- : `flex: 0 0 ${getColWidth(size)}; max-width: ${getColWidth(size)};`;
15
-
16
- // Règle de breakpoint selon la largeur de référence choisie sur la Row
17
- const breakpoint = (responsive: GridResponsive, minWidth: number) => {
18
- switch (responsive) {
19
- case "viewport":
20
- return `@media (min-width: ${minWidth}px)`;
21
- case "row":
22
- return `@container kelt-grid (min-width: ${minWidth}px)`;
23
- default:
24
- return `@container app-container (min-width: ${minWidth}px)`;
25
- }
26
- };
27
-
28
- type ColStyledProps = {
29
- $responsive: GridResponsive;
30
- $xs?: GridColumnSpan;
31
- $sm?: GridColumnSpan;
32
- $md?: GridColumnSpan;
33
- $lg?: GridColumnSpan;
34
- $xl?: GridColumnSpan;
35
- };
36
-
37
- const colAt = (
38
- responsive: GridResponsive,
39
- minWidth: number,
40
- size?: GridColumnSpan
41
- ) =>
42
- size &&
43
- css`
44
- ${breakpoint(responsive, minWidth)} {
45
- ${colSize(size)}
46
- }
47
- `;
48
-
49
- export const ColStyled = styled.div<ColStyledProps>`
50
- box-sizing: border-box;
51
- min-width: 0;
52
- ${({ $xs }) => colSize($xs)}
53
- margin-bottom: 0.5rem;
54
- margin-top: 0.5rem;
55
- ${({ $responsive, $sm }) => colAt($responsive, 576, $sm)}
56
- ${({ $responsive, $md }) => colAt($responsive, 768, $md)}
57
- ${({ $responsive, $lg }) => colAt($responsive, 992, $lg)}
58
- ${({ $responsive, $xl }) => colAt($responsive, 1200, $xl)}
59
- `;
1
+ import styled, { css } from "styled-components";
2
+ import { GridColumnSpan, GridResponsive } from "../../grid.interface";
3
+
4
+ // Largeur = part de la ligne moins la part des gaps qui revient à la colonne.
5
+ // Pour une ligne dont les spans font 12, la somme des largeurs + les gaps = 100%.
6
+ const getColWidth = (size: number) =>
7
+ `calc(${(size / 12) * 100}% - var(--grid-gutter, 0px) * ${1 - size / 12})`;
8
+
9
+ // "auto" : base 0 et grow 1, les colonnes "auto" d'une ligne se partagent
10
+ // la place restante (gaps déduits) à parts égales.
11
+ const colSize = (size: GridColumnSpan = 12) =>
12
+ size === "auto"
13
+ ? `flex: 1 1 0; max-width: 100%;`
14
+ : `flex: 0 0 ${getColWidth(size)}; max-width: ${getColWidth(size)};`;
15
+
16
+ // Règle de breakpoint selon la largeur de référence choisie sur la Row
17
+ const breakpoint = (responsive: GridResponsive, minWidth: number) => {
18
+ switch (responsive) {
19
+ case "viewport":
20
+ return `@media (min-width: ${minWidth}px)`;
21
+ case "row":
22
+ return `@container kelt-grid (min-width: ${minWidth}px)`;
23
+ default:
24
+ return `@container app-container (min-width: ${minWidth}px)`;
25
+ }
26
+ };
27
+
28
+ type ColStyledProps = {
29
+ $responsive: GridResponsive;
30
+ $xs?: GridColumnSpan;
31
+ $sm?: GridColumnSpan;
32
+ $md?: GridColumnSpan;
33
+ $lg?: GridColumnSpan;
34
+ $xl?: GridColumnSpan;
35
+ };
36
+
37
+ const colAt = (
38
+ responsive: GridResponsive,
39
+ minWidth: number,
40
+ size?: GridColumnSpan
41
+ ) =>
42
+ size &&
43
+ css`
44
+ ${breakpoint(responsive, minWidth)} {
45
+ ${colSize(size)}
46
+ }
47
+ `;
48
+
49
+ export const ColStyled = styled.div<ColStyledProps>`
50
+ box-sizing: border-box;
51
+ min-width: 0;
52
+ ${({ $xs }) => colSize($xs)}
53
+ margin-bottom: 0.5rem;
54
+ margin-top: 0.5rem;
55
+ ${({ $responsive, $sm }) => colAt($responsive, 576, $sm)}
56
+ ${({ $responsive, $md }) => colAt($responsive, 768, $md)}
57
+ ${({ $responsive, $lg }) => colAt($responsive, 992, $lg)}
58
+ ${({ $responsive, $xl }) => colAt($responsive, 1200, $xl)}
59
+ `;
@@ -1,8 +1,8 @@
1
- import React from "react";
2
- import "./container.css";
3
- type ContainerProps = {
4
- children: React.ReactNode;
5
- };
6
- export const Container: React.FC<ContainerProps> = ({ children }) => (
7
- <div className="container">{children}</div>
8
- );
1
+ import React from "react";
2
+ import "./container.css";
3
+ type ContainerProps = {
4
+ children: React.ReactNode;
5
+ };
6
+ export const Container: React.FC<ContainerProps> = ({ children }) => (
7
+ <div className="container">{children}</div>
8
+ );
@@ -1,5 +1,5 @@
1
- .container {
2
- width: 100%;
3
- margin: 0 auto;
4
- box-sizing: border-box;
1
+ .container {
2
+ width: 100%;
3
+ margin: 0 auto;
4
+ box-sizing: border-box;
5
5
  }
@@ -1,27 +1,27 @@
1
- /**
2
- * Largeur de référence pour les breakpoints des Col :
3
- * - "app" (défaut) : le conteneur app-container
4
- * - "viewport" : la fenêtre (@media)
5
- * - "row" : la Row elle-même (utile pour une grid dans une card, un panneau...)
6
- */
7
- export type GridResponsive = "app" | "viewport" | "row";
8
-
9
- /**
10
- * Nombre de colonnes sur 12, ou "auto" : la colonne partage la place restante
11
- * de la ligne à parts égales avec les autres "auto" (ex. 5 champs sur une ligne).
12
- */
13
- export type GridColumnSpan =
14
- | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
15
- | "auto";
16
-
17
- export interface GridBreakpoints {
18
- xs?: GridColumnSpan;
19
- sm?: GridColumnSpan;
20
- md?: GridColumnSpan;
21
- lg?: GridColumnSpan;
22
- xl?: GridColumnSpan;
23
- }
24
-
25
- export interface GridInterface extends GridBreakpoints {
26
- children: React.ReactNode;
27
- }
1
+ /**
2
+ * Largeur de référence pour les breakpoints des Col :
3
+ * - "app" (défaut) : le conteneur app-container
4
+ * - "viewport" : la fenêtre (@media)
5
+ * - "row" : la Row elle-même (utile pour une grid dans une card, un panneau...)
6
+ */
7
+ export type GridResponsive = "app" | "viewport" | "row";
8
+
9
+ /**
10
+ * Nombre de colonnes sur 12, ou "auto" : la colonne partage la place restante
11
+ * de la ligne à parts égales avec les autres "auto" (ex. 5 champs sur une ligne).
12
+ */
13
+ export type GridColumnSpan =
14
+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
15
+ | "auto";
16
+
17
+ export interface GridBreakpoints {
18
+ xs?: GridColumnSpan;
19
+ sm?: GridColumnSpan;
20
+ md?: GridColumnSpan;
21
+ lg?: GridColumnSpan;
22
+ xl?: GridColumnSpan;
23
+ }
24
+
25
+ export interface GridInterface extends GridBreakpoints {
26
+ children: React.ReactNode;
27
+ }
@@ -1,49 +1,49 @@
1
- import { createContext } from "react";
2
- import { GridResponsive } from "../grid.interface";
3
- import "./row.css";
4
-
5
- export type GridGap = boolean | number | string;
6
-
7
- export const RowResponsiveContext = createContext<GridResponsive>("app");
8
-
9
- type RowProps = {
10
- children: React.ReactNode;
11
- className?: string;
12
- scroll?: boolean;
13
- /** true (défaut) : gap par défaut, false : pas de gap, number : px, string : valeur CSS ("1rem") */
14
- gap?: GridGap;
15
- /** Largeur sur laquelle se basent les breakpoints des Col (défaut : "app") */
16
- responsive?: GridResponsive;
17
- };
18
-
19
- const getGutter = (gap: GridGap) => {
20
- if (gap === true) return undefined; // garde la valeur par défaut du CSS
21
- if (gap === false) return "0px";
22
- return typeof gap === "number" ? `${gap}px` : gap;
23
- };
24
-
25
- export const Row: React.FC<RowProps> = ({
26
- children,
27
- className,
28
- scroll,
29
- gap = true,
30
- responsive = "app",
31
- }) => {
32
- const gutter = getGutter(gap);
33
- return (
34
- <RowResponsiveContext.Provider value={responsive}>
35
- <div
36
- className={`grid-row ${className ?? ""} ${scroll ? "scroll" : ""} ${
37
- responsive === "row" ? "grid-row--responsive" : ""
38
- }`}
39
- style={
40
- gutter
41
- ? ({ "--grid-gutter": gutter } as React.CSSProperties)
42
- : undefined
43
- }
44
- >
45
- {children}
46
- </div>
47
- </RowResponsiveContext.Provider>
48
- );
49
- };
1
+ import { createContext } from "react";
2
+ import { GridResponsive } from "../grid.interface";
3
+ import "./row.css";
4
+
5
+ export type GridGap = boolean | number | string;
6
+
7
+ export const RowResponsiveContext = createContext<GridResponsive>("app");
8
+
9
+ type RowProps = {
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ scroll?: boolean;
13
+ /** true (défaut) : gap par défaut, false : pas de gap, number : px, string : valeur CSS ("1rem") */
14
+ gap?: GridGap;
15
+ /** Largeur sur laquelle se basent les breakpoints des Col (défaut : "app") */
16
+ responsive?: GridResponsive;
17
+ };
18
+
19
+ const getGutter = (gap: GridGap) => {
20
+ if (gap === true) return undefined; // garde la valeur par défaut du CSS
21
+ if (gap === false) return "0px";
22
+ return typeof gap === "number" ? `${gap}px` : gap;
23
+ };
24
+
25
+ export const Row: React.FC<RowProps> = ({
26
+ children,
27
+ className,
28
+ scroll,
29
+ gap = true,
30
+ responsive = "app",
31
+ }) => {
32
+ const gutter = getGutter(gap);
33
+ return (
34
+ <RowResponsiveContext.Provider value={responsive}>
35
+ <div
36
+ className={`grid-row ${className ?? ""} ${scroll ? "scroll" : ""} ${
37
+ responsive === "row" ? "grid-row--responsive" : ""
38
+ }`}
39
+ style={
40
+ gutter
41
+ ? ({ "--grid-gutter": gutter } as React.CSSProperties)
42
+ : undefined
43
+ }
44
+ >
45
+ {children}
46
+ </div>
47
+ </RowResponsiveContext.Provider>
48
+ );
49
+ };
@@ -1,26 +1,26 @@
1
- .grid-row {
2
- --grid-gutter: 15px;
3
- display: flex;
4
- flex-wrap: wrap;
5
- column-gap: var(--grid-gutter);
6
-
7
- /* responsive="row" : les breakpoints des Col se basent sur la largeur de la Row.
8
- Attention : la Row a alors une largeur min de contenu de 0 dans un parent flex. */
9
- &.grid-row--responsive {
10
- container: kelt-grid / inline-size;
11
- }
12
-
13
- &.scroll {
14
- overflow-x: auto;
15
- flex-wrap: nowrap;
16
- }
17
- }
18
-
19
- @container app-container (min-width: 998px) {
20
- .grid-row {
21
- &.scroll {
22
- overflow-x: auto;
23
- flex-wrap: wrap;
24
- }
25
- }
1
+ .grid-row {
2
+ --grid-gutter: 15px;
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ column-gap: var(--grid-gutter);
6
+
7
+ /* responsive="row" : les breakpoints des Col se basent sur la largeur de la Row.
8
+ Attention : la Row a alors une largeur min de contenu de 0 dans un parent flex. */
9
+ &.grid-row--responsive {
10
+ container: kelt-grid / inline-size;
11
+ }
12
+
13
+ &.scroll {
14
+ overflow-x: auto;
15
+ flex-wrap: nowrap;
16
+ }
17
+ }
18
+
19
+ @container app-container (min-width: 998px) {
20
+ .grid-row {
21
+ &.scroll {
22
+ overflow-x: auto;
23
+ flex-wrap: wrap;
24
+ }
25
+ }
26
26
  }
@@ -1,64 +1,64 @@
1
- import { useCallback, useRef, useState } from "react";
2
- import { Icon } from "../icon/Icon";
3
- import { IconSizeEnum } from "../icon/iconSize.enum";
4
- import { OverlayPanel } from "../overlayPanel/OverlayPanel";
5
- import "./header.css";
6
- import { HeaderInterface } from "./header.interface";
7
-
8
- export const Header = ({
9
- children,
10
- logo,
11
- onClickMenu,
12
- userChildren,
13
- positionFixed,
14
- overlayClassName,
15
- onClickLogo,
16
- showBackNavigation,
17
- onClickBackNavigation,
18
- }: HeaderInterface): JSX.Element => {
19
- const refButton = useRef<HTMLDivElement>(null);
20
- const [openOverlay, setOpenOverlay] = useState(false);
21
- const onClickUser = useCallback(() => {
22
- setOpenOverlay(!openOverlay);
23
- }, [openOverlay, setOpenOverlay]);
24
- return (
25
- <div className={`header ${positionFixed ? "header--fixed" : ""}`}>
26
- <div className="flex-1 d-flex align-items-center">
27
- <span className="header-menu-btn" onClick={onClickMenu}>
28
- <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-list"></Icon>
29
- </span>
30
- {showBackNavigation && (
31
- <span className="chevron-back" onClick={onClickBackNavigation}>
32
- <Icon
33
- size={IconSizeEnum.EXTRA_SMALL}
34
- classIcon="bi-caret-left-fill"
35
- ></Icon>
36
- </span>
37
- )}
38
-
39
- <span
40
- className={`header-logo ${onClickLogo && "cursor-pointer"} `}
41
- onClick={onClickLogo}
42
- >
43
- {logo && logo}
44
- </span>
45
- </div>
46
- <div className="d-flex align-items-center">
47
- {children}
48
- <div ref={refButton} onClick={onClickUser}>
49
- <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-person-circle"></Icon>
50
- </div>
51
- {openOverlay && refButton.current && (
52
- <OverlayPanel
53
- className={overlayClassName}
54
- position="bottomRight"
55
- show={openOverlay}
56
- closeOverlay={setOpenOverlay}
57
- referenceElement={refButton.current}
58
- children={userChildren}
59
- />
60
- )}
61
- </div>
62
- </div>
63
- );
64
- };
1
+ import { useCallback, useRef, useState } from "react";
2
+ import { Icon } from "../icon/Icon";
3
+ import { IconSizeEnum } from "../icon/iconSize.enum";
4
+ import { OverlayPanel } from "../overlayPanel/OverlayPanel";
5
+ import "./header.css";
6
+ import { HeaderInterface } from "./header.interface";
7
+
8
+ export const Header = ({
9
+ children,
10
+ logo,
11
+ onClickMenu,
12
+ userChildren,
13
+ positionFixed,
14
+ overlayClassName,
15
+ onClickLogo,
16
+ showBackNavigation,
17
+ onClickBackNavigation,
18
+ }: HeaderInterface): JSX.Element => {
19
+ const refButton = useRef<HTMLDivElement>(null);
20
+ const [openOverlay, setOpenOverlay] = useState(false);
21
+ const onClickUser = useCallback(() => {
22
+ setOpenOverlay(!openOverlay);
23
+ }, [openOverlay, setOpenOverlay]);
24
+ return (
25
+ <div className={`header ${positionFixed ? "header--fixed" : ""}`}>
26
+ <div className="flex-1 d-flex align-items-center">
27
+ <span className="header-menu-btn" onClick={onClickMenu}>
28
+ <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-list"></Icon>
29
+ </span>
30
+ {showBackNavigation && (
31
+ <span className="chevron-back" onClick={onClickBackNavigation}>
32
+ <Icon
33
+ size={IconSizeEnum.EXTRA_SMALL}
34
+ classIcon="bi-caret-left-fill"
35
+ ></Icon>
36
+ </span>
37
+ )}
38
+
39
+ <span
40
+ className={`header-logo ${onClickLogo && "cursor-pointer"} `}
41
+ onClick={onClickLogo}
42
+ >
43
+ {typeof logo === "string" ? <img src={logo} alt="Logo" /> : logo}
44
+ </span>
45
+ </div>
46
+ <div className="d-flex align-items-center">
47
+ {children}
48
+ <div ref={refButton} onClick={onClickUser}>
49
+ <Icon size={IconSizeEnum.MEDIUM} classIcon="bi-person-circle"></Icon>
50
+ </div>
51
+ {openOverlay && refButton.current && (
52
+ <OverlayPanel
53
+ className={overlayClassName}
54
+ position="bottomRight"
55
+ show={openOverlay}
56
+ closeOverlay={setOpenOverlay}
57
+ referenceElement={refButton.current}
58
+ children={userChildren}
59
+ />
60
+ )}
61
+ </div>
62
+ </div>
63
+ );
64
+ };
@@ -1,5 +1,5 @@
1
- import { Header } from "./Header";
2
-
3
- export const HeaderView = (): JSX.Element => {
4
- return <Header showBackNavigation={true} />;
5
- };
1
+ import { Header } from "./Header";
2
+
3
+ export const HeaderView = (): JSX.Element => {
4
+ return <Header showBackNavigation={true} />;
5
+ };
@@ -1,43 +1,43 @@
1
- .header {
2
- display: flex;
3
- justify-content: space-between;
4
- align-items: center;
5
- padding: 1rem;
6
- height: 50px;
7
- border-bottom: 1px solid #cfbdbd;
8
- background-color: #fff;
9
- width: 100%;
10
-
11
- &.header--fixed {
12
- position: fixed;
13
- }
14
-
15
- .header-logo {
16
- margin-left: 1rem;
17
-
18
- img {
19
- width: 50px;
20
- }
21
- }
22
-
23
- .bi {
24
- cursor: pointer;
25
- }
26
-
27
- .header-menu-btn {
28
- display: inline-flex;
29
- align-items: center;
30
- justify-content: center;
31
- position: relative;
32
- cursor: pointer;
33
-
34
- &::before {
35
- content: "";
36
- position: absolute;
37
- top: -15px;
38
- bottom: -15px;
39
- left: -15px;
40
- right: -15px;
41
- }
42
- }
43
- }
1
+ .header {
2
+ display: flex;
3
+ justify-content: space-between;
4
+ align-items: center;
5
+ padding: 1rem;
6
+ height: 50px;
7
+ border-bottom: 1px solid #cfbdbd;
8
+ background-color: #fff;
9
+ width: 100%;
10
+
11
+ &.header--fixed {
12
+ position: fixed;
13
+ }
14
+
15
+ .header-logo {
16
+ margin-left: 1rem;
17
+
18
+ img {
19
+ width: 50px;
20
+ }
21
+ }
22
+
23
+ .bi {
24
+ cursor: pointer;
25
+ }
26
+
27
+ .header-menu-btn {
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ position: relative;
32
+ cursor: pointer;
33
+
34
+ &::before {
35
+ content: "";
36
+ position: absolute;
37
+ top: -15px;
38
+ bottom: -15px;
39
+ left: -15px;
40
+ right: -15px;
41
+ }
42
+ }
43
+ }
@@ -1,11 +1,11 @@
1
- export interface HeaderInterface {
2
- logo?: React.ReactNode;
3
- children?: React.ReactNode;
4
- positionFixed?: boolean;
5
- onClickMenu?: () => void;
6
- userChildren?: React.ReactNode;
7
- onClickLogo?: () => void;
8
- overlayClassName?: string;
9
- showBackNavigation?: boolean;
10
- onClickBackNavigation?: () => void;
11
- }
1
+ export interface HeaderInterface {
2
+ logo?: React.ReactNode;
3
+ children?: React.ReactNode;
4
+ positionFixed?: boolean;
5
+ onClickMenu?: () => void;
6
+ userChildren?: React.ReactNode;
7
+ onClickLogo?: () => void;
8
+ overlayClassName?: string;
9
+ showBackNavigation?: boolean;
10
+ onClickBackNavigation?: () => void;
11
+ }