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.
- package/.github/workflows/publish.yml +40 -31
- package/README.md +124 -72
- package/dist/App.d.ts +2 -3
- package/dist/App.menu.d.ts +10 -10
- package/dist/App.routes.d.ts +1 -1
- package/dist/_core/hooks/HistoryProvider.d.ts +5 -5
- package/dist/_core/hooks/ImageChecker.d.ts +5 -6
- package/dist/_core/hooks/imageExist.d.ts +5 -6
- package/dist/_core/hooks/isEAN13.d.ts +1 -1
- package/dist/_core/hooks/objectToQueryParams.d.ts +1 -1
- package/dist/_core/hooks/useCurrency.d.ts +3 -3
- package/dist/_core/hooks/useDateutils.d.ts +4 -4
- package/dist/_core/hooks/useIsMobile.d.ts +1 -1
- package/dist/_core/hooks/useToken.d.ts +3 -3
- package/dist/_core/hooks/useValidate.d.ts +5 -5
- package/dist/_core/hooks/widgetSupport.d.ts +1 -1
- package/dist/_core/type/generiqueType.d.ts +4 -0
- package/dist/action/Action.view.d.ts +1 -1
- package/dist/action/ButtonAction.d.ts +8 -9
- package/dist/addressSearch/AddressSearch.d.ts +18 -19
- package/dist/addressSearch/AddressSearch.view.d.ts +1 -1
- package/dist/badge/Badge.d.ts +10 -9
- package/dist/badge/Badge.view.d.ts +1 -1
- package/dist/button/Button.d.ts +1 -2
- package/dist/button/Button.view.d.ts +1 -1
- package/dist/button/button.interface.d.ts +19 -20
- package/dist/button/buttonActions/ButtonActions.d.ts +11 -12
- package/dist/button/buttonFile/ButtonFile.d.ts +9 -9
- package/dist/button/buttonFile/ButtonFile.view.d.ts +1 -1
- package/dist/button/buttonFilters/ButtonFilters.d.ts +16 -17
- package/dist/card/Card.d.ts +14 -15
- package/dist/card/Card.view.d.ts +1 -1
- package/dist/card/card.interface.d.ts +10 -10
- package/dist/card/cardAction/CardAction.d.ts +13 -14
- package/dist/card/cardAction.interface.d.ts +8 -9
- package/dist/card/hook/useCardInteractions.d.ts +8 -8
- package/dist/carousel/Carousel.d.ts +14 -15
- package/dist/carousel/Carousel.view.d.ts +1 -1
- package/dist/damier/Damier.d.ts +9 -10
- package/dist/damier/Damier.view.d.ts +1 -1
- package/dist/damier/damierCell/DamierCell.d.ts +6 -7
- package/dist/damier/damierCell/damierCell.interface.d.ts +6 -6
- package/dist/dataTable/DataTable.d.ts +37 -33
- package/dist/dataTable/DataTable.view.d.ts +1 -1
- package/dist/dataTable/dataTable.interface.d.ts +70 -47
- package/dist/dataTable/dataTable.utils.d.ts +17 -0
- package/dist/dataTable/dataTableActions/DataTableAction.d.ts +9 -10
- package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +14 -8
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +12 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +9 -0
- package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +10 -0
- package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +6 -0
- package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +8 -7
- package/dist/dataTable/dataTableRow/DataTableRow.d.ts +12 -11
- package/dist/dataTable/useDataTableState.d.ts +13 -0
- package/dist/datePicker/DatePicker.d.ts +7 -8
- package/dist/datePicker/DatePicker.view.d.ts +1 -1
- package/dist/docs/ComponentDocs.d.ts +6 -0
- package/dist/docs/catalog.d.ts +8 -0
- package/dist/docs/documentation.types.d.ts +21 -0
- package/dist/expands/Expands.d.ts +11 -12
- package/dist/expands/Expands.view.d.ts +1 -1
- package/dist/expands/expand/expand.d.ts +10 -11
- package/dist/expands/expand/expand.interface.d.ts +9 -9
- package/dist/filAriane/FilAriane.d.ts +8 -9
- package/dist/filAriane/FilAriane.view.d.ts +1 -1
- package/dist/filAriane/filAriane.interface.d.ts +6 -6
- package/dist/form/Form.d.ts +35 -36
- package/dist/form/Form.view.d.ts +1 -1
- package/dist/form/form.enum.d.ts +16 -15
- package/dist/form/form.interface.d.ts +53 -54
- package/dist/form/input/Input.d.ts +27 -25
- package/dist/form/inputNumber/InputNumber.d.ts +21 -22
- package/dist/form/inputNumber/InputNumber.view.d.ts +1 -1
- package/dist/form/inputPrice/InputPrice.d.ts +14 -15
- package/dist/form/inputPrice/InputPrice.view.d.ts +1 -1
- package/dist/form/textArea/TextArea.d.ts +14 -15
- package/dist/form/textArea/TextArea.view.d.ts +1 -1
- package/dist/geocoding/GeocodingService.d.ts +11 -12
- package/dist/geocoding/geocoding.interface.d.ts +20 -20
- package/dist/grid/Grid.d.ts +9 -10
- package/dist/grid/Grid.view.d.ts +1 -1
- package/dist/grid/col/Col.d.ts +5 -6
- package/dist/grid/col/colStyled/ColStyled.d.ts +10 -11
- package/dist/grid/container/Container.d.ts +5 -6
- package/dist/grid/grid.interface.d.ts +23 -23
- package/dist/grid/row/Row.d.ts +13 -14
- package/dist/header/Header.d.ts +1 -2
- package/dist/header/Header.view.d.ts +1 -1
- package/dist/header/header.interface.d.ts +12 -12
- package/dist/home/Home.d.ts +1 -1
- package/dist/icon/Icon.d.ts +1 -2
- package/dist/icon/Icons.view.d.ts +1 -1
- package/dist/icon/icon.interface.d.ts +5 -5
- package/dist/icon/iconSize.enum.d.ts +7 -7
- package/dist/index.d.ts +56 -54
- package/dist/index.html +18 -18
- package/dist/index.js +4001 -3510
- package/dist/loader/Loader.d.ts +7 -8
- package/dist/loader/Loader.view.d.ts +1 -1
- package/dist/main.d.ts +0 -1
- package/dist/manifest.json +25 -25
- package/dist/menus/Menus.d.ts +5 -6
- package/dist/menus/Menus.view.d.ts +1 -1
- package/dist/menus/menu/Menu.d.ts +7 -8
- package/dist/menus/menu/menu.interface.d.ts +10 -10
- package/dist/message/Message.d.ts +6 -7
- package/dist/message/Message.view.d.ts +1 -1
- package/dist/modal/Modal.d.ts +13 -14
- package/dist/modal/Modal.view.d.ts +1 -1
- package/dist/notFound/NotFound.d.ts +1 -1
- package/dist/overlayPanel/OverlayPanel.d.ts +22 -23
- package/dist/overlayPanel/OverlayPanel.view.d.ts +1 -1
- package/dist/overlayPanel/overlay.context.d.ts +9 -10
- package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.d.ts +9 -9
- package/dist/pdfViewer/PdfViewer.d.ts +12 -12
- package/dist/pdfViewer/PdfViewer.view.d.ts +1 -1
- package/dist/quantity/Quantity.d.ts +10 -11
- package/dist/robots.txt +3 -3
- package/dist/search/Search.d.ts +21 -22
- package/dist/search/Search.view.d.ts +1 -1
- package/dist/select/Select.d.ts +23 -24
- package/dist/select/Select.view.d.ts +1 -1
- package/dist/select/selectOption.interface.d.ts +5 -5
- package/dist/sidebar/Sidebar.d.ts +12 -13
- package/dist/sidebar/Sidebar.view.d.ts +1 -1
- package/dist/sidebarData/SidebarData.d.ts +6 -7
- package/dist/sidebarData/SidebarData.view.d.ts +1 -1
- package/dist/style.css +1 -1
- package/dist/tabs/Tabs.d.ts +17 -17
- package/dist/tabs/Tabs.view.d.ts +1 -1
- package/dist/toaster/Toaster.d.ts +1 -2
- package/dist/toaster/Toaster.view.d.ts +1 -1
- package/dist/toaster/store/useToasterStore.d.ts +24 -24
- package/docs.plugin.ts +223 -0
- package/index.html +20 -18
- package/package.json +64 -56
- package/public/index.html +18 -18
- package/public/manifest.json +25 -25
- package/public/robots.txt +3 -3
- package/src/App.css +178 -11
- package/src/App.menu.tsx +277 -257
- package/src/App.routes.tsx +21 -16
- package/src/App.tsx +31 -30
- package/src/_core/hooks/HistoryProvider.tsx +25 -25
- package/src/_core/hooks/ImageChecker.tsx +26 -26
- package/src/_core/hooks/imageExist.tsx +9 -9
- package/src/_core/hooks/isEAN13.tsx +16 -16
- package/src/_core/hooks/objectToQueryParams.tsx +32 -32
- package/src/_core/hooks/useCurrency.tsx +18 -18
- package/src/_core/hooks/useDateutils.ts +64 -64
- package/src/_core/hooks/useIsMobile.ts +18 -18
- package/src/_core/hooks/useToken.tsx +19 -19
- package/src/_core/hooks/useValidate.tsx +18 -18
- package/src/_core/hooks/widgetSupport.tsx +39 -39
- package/src/_core/type/generiqueType.tsx +4 -0
- package/src/action/Action.view.tsx +21 -21
- package/src/action/ButtonAction.tsx +32 -32
- package/src/action/action.css +20 -20
- package/src/addressSearch/AddressSearch.tsx +246 -246
- package/src/addressSearch/AddressSearch.view.tsx +52 -52
- package/src/addressSearch/addressSearch.css +132 -132
- package/src/badge/Badge.tsx +41 -34
- package/src/badge/Badge.view.tsx +15 -15
- package/src/badge/badge.css +63 -55
- package/src/button/Button.tsx +48 -48
- package/src/button/Button.view.tsx +85 -85
- package/src/button/button.css +53 -53
- package/src/button/button.interface.tsx +22 -22
- package/src/button/buttonActions/ButtonActions.tsx +104 -104
- package/src/button/buttonFile/ButtonFile.tsx +59 -59
- package/src/button/buttonFile/ButtonFile.view.tsx +70 -70
- package/src/button/buttonFilters/ButtonFilters.tsx +102 -102
- package/src/button/buttonFilters/buttonFilters.css +22 -22
- package/src/card/Card.tsx +151 -151
- package/src/card/Card.view.tsx +73 -73
- package/src/card/card.css +144 -144
- package/src/card/card.interface.tsx +9 -9
- package/src/card/cardAction/CardAction.tsx +135 -135
- package/src/card/cardAction/cardAction.css +10 -10
- package/src/card/cardAction.interface.tsx +10 -10
- package/src/card/hook/useCardInteractions.tsx +30 -30
- package/src/carousel/Carousel.css +44 -44
- package/src/carousel/Carousel.tsx +115 -115
- package/src/carousel/Carousel.view.tsx +13 -13
- package/src/damier/Damier.tsx +64 -64
- package/src/damier/Damier.view.tsx +31 -31
- package/src/damier/damier.css +50 -50
- package/src/damier/damierCell/DamierCell.tsx +18 -18
- package/src/damier/damierCell/damierCell.interface.tsx +5 -5
- package/src/dataTable/DataTable.tsx +840 -746
- package/src/dataTable/DataTable.view.tsx +105 -71
- package/src/dataTable/dataTable.css +233 -208
- package/src/dataTable/dataTable.interface.ts +66 -45
- package/src/dataTable/dataTable.utils.ts +45 -0
- package/src/dataTable/dataTableActions/DataTableAction.tsx +82 -65
- package/src/dataTable/dataTableColumn/DataTableColumn.tsx +48 -27
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +36 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +39 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +80 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +89 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +37 -0
- package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +42 -0
- package/src/dataTable/dataTableFilters/DataTableFilters.tsx +91 -0
- package/src/dataTable/dataTableFilters/dataTableFilters.css +16 -0
- package/src/dataTable/dataTableLoading/DataTableLoading.tsx +23 -21
- package/src/dataTable/dataTableRow/DataTableRow.tsx +155 -208
- package/src/dataTable/useDataTableState.tsx +89 -0
- package/src/datePicker/DatePicker.tsx +110 -110
- package/src/datePicker/DatePicker.view.tsx +9 -9
- package/src/datePicker/datePicker.css +77 -77
- package/src/docs/ComponentDocs.tsx +156 -0
- package/src/docs/catalog.ts +40 -0
- package/src/docs/documentation.types.ts +20 -0
- package/src/docs/virtual.d.ts +7 -0
- package/src/expands/Expands.tsx +46 -46
- package/src/expands/Expands.view.tsx +90 -90
- package/src/expands/expand/expand.interface.tsx +8 -8
- package/src/expands/expand/expand.tsx +191 -191
- package/src/expands/expands.css +101 -101
- package/src/filAriane/FilAriane.tsx +57 -57
- package/src/filAriane/FilAriane.view.tsx +28 -28
- package/src/filAriane/filAriane.css +23 -23
- package/src/filAriane/filAriane.interface.tsx +6 -6
- package/src/form/Form.tsx +477 -477
- package/src/form/Form.view.tsx +67 -67
- package/src/form/form.css +135 -135
- package/src/form/form.enum.ts +16 -15
- package/src/form/form.interface.tsx +67 -67
- package/src/form/input/Input.tsx +146 -106
- package/src/form/input/input.css +39 -29
- package/src/form/inputNumber/InputNumber.tsx +132 -132
- package/src/form/inputNumber/InputNumber.view.tsx +15 -15
- package/src/form/inputPrice/InputPrice.tsx +42 -42
- package/src/form/inputPrice/InputPrice.view.tsx +15 -15
- package/src/form/textArea/TextArea.tsx +59 -59
- package/src/form/textArea/TextArea.view.tsx +34 -34
- package/src/form/textArea/textArea.css +9 -9
- package/src/geocoding/GeocodingService.ts +89 -89
- package/src/geocoding/geocoding.interface.ts +25 -25
- package/src/grid/Grid.tsx +34 -34
- package/src/grid/Grid.view.tsx +24 -24
- package/src/grid/col/Col.tsx +24 -24
- package/src/grid/col/col.css +3 -3
- package/src/grid/col/colStyled/ColStyled.tsx +59 -59
- package/src/grid/container/Container.tsx +8 -8
- package/src/grid/container/container.css +4 -4
- package/src/grid/grid.interface.tsx +27 -27
- package/src/grid/row/Row.tsx +49 -49
- package/src/grid/row/row.css +25 -25
- package/src/header/Header.tsx +64 -64
- package/src/header/Header.view.tsx +5 -5
- package/src/header/header.css +43 -43
- package/src/header/header.interface.tsx +11 -11
- package/src/home/Home.tsx +40 -3
- package/src/icon/Icon.tsx +6 -6
- package/src/icon/Icons.view.tsx +29 -29
- package/src/icon/icon.css +20 -20
- package/src/icon/icon.interface.tsx +7 -6
- package/src/icon/iconSize.enum.ts +7 -7
- package/src/index.css +547 -547
- package/src/index.ts +76 -70
- package/src/loader/Loader.tsx +37 -37
- package/src/loader/Loader.view.tsx +20 -20
- package/src/loader/loader.css +30 -30
- package/src/main.tsx +10 -10
- package/src/menus/Menus.tsx +43 -43
- package/src/menus/Menus.view.tsx +39 -39
- package/src/menus/menu/Menu.tsx +18 -18
- package/src/menus/menu/menu.interface.tsx +9 -9
- package/src/menus/menus.css +47 -47
- package/src/message/Message.tsx +30 -30
- package/src/message/Message.view.tsx +22 -22
- package/src/message/message.css +29 -29
- package/src/modal/Modal.tsx +59 -59
- package/src/modal/Modal.view.tsx +26 -26
- package/src/modal/modal.css +71 -71
- package/src/notFound/NotFound.tsx +3 -3
- package/src/overlayPanel/OverlayPanel.tsx +260 -255
- package/src/overlayPanel/OverlayPanel.view.tsx +25 -25
- package/src/overlayPanel/overlay.context.tsx +30 -30
- package/src/overlayPanel/overlayPanel.css +43 -43
- package/src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx +23 -23
- package/src/pdfViewer/PdfViewer.tsx +73 -73
- package/src/pdfViewer/PdfViewer.view.tsx +5 -5
- package/src/quantity/Quantity.tsx +103 -103
- package/src/quantity/quantity.css +26 -26
- package/src/search/Search.tsx +161 -161
- package/src/search/Search.view.tsx +14 -14
- package/src/search/search.css +59 -59
- package/src/select/Select.tsx +245 -245
- package/src/select/Select.view.tsx +71 -71
- package/src/select/select.css +150 -150
- package/src/select/selectOption.interface.ts +5 -5
- package/src/sidebar/Sidebar.tsx +213 -213
- package/src/sidebar/Sidebar.view.tsx +17 -17
- package/src/sidebar/sidebar.css +103 -103
- package/src/sidebarData/SidebarData.tsx +19 -19
- package/src/sidebarData/SidebarData.view.tsx +19 -19
- package/src/sidebarData/sidebarData.css +27 -27
- package/src/tabs/Tabs.tsx +101 -90
- package/src/tabs/Tabs.view.tsx +20 -20
- package/src/tabs/tabs.css +29 -29
- package/src/toaster/Toaster.tsx +61 -61
- package/src/toaster/Toaster.view.tsx +25 -25
- package/src/toaster/store/useToasterStore.tsx +54 -54
- package/src/toaster/toaster.css +105 -105
- package/tests/dataTable.test.mjs +93 -0
- package/tests/documentation.test.mjs +75 -0
- package/tsconfig.docs.json +10 -0
- package/tsconfig.json +28 -28
- package/vite.config.ts +26 -20
- package/vite.config.ts.timestamp-1733262892554-a13dfef6e8a29.mjs +24 -24
- package/vite.config.ts.timestamp-1757847121745-e5a5bf54b81b.mjs +28 -28
- 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
|
+
};
|
|
@@ -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
|
+
};
|