kelt-ui-kit-react 1.8.5 → 1.9.0

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 (124) hide show
  1. package/dist/App.js +22 -0
  2. package/dist/App.menu.js +251 -0
  3. package/dist/App.routes.js +8 -0
  4. package/dist/_core/hooks/HistoryProvider.js +29 -0
  5. package/dist/_core/hooks/ImageChecker.js +68 -0
  6. package/dist/_core/hooks/imageExist.js +5 -0
  7. package/dist/_core/hooks/isEAN13.js +10 -0
  8. package/dist/_core/hooks/objectToQueryParams.js +28 -0
  9. package/dist/_core/hooks/useCurrency.js +12 -0
  10. package/dist/_core/hooks/useDateutils.js +59 -0
  11. package/dist/_core/hooks/useIsMobile.js +13 -0
  12. package/dist/_core/hooks/useToken.js +17 -0
  13. package/dist/_core/hooks/useValidate.js +15 -0
  14. package/dist/_core/hooks/widgetSupport.js +18 -0
  15. package/dist/action/Action.view.js +22 -0
  16. package/dist/action/ButtonAction.js +25 -0
  17. package/dist/badge/Badge.js +25 -0
  18. package/dist/badge/Badge.view.js +5 -0
  19. package/dist/button/Button.js +25 -0
  20. package/dist/button/Button.view.js +74 -0
  21. package/dist/button/button.interface.js +1 -0
  22. package/dist/button/buttonActions/ButtonActions.js +55 -0
  23. package/dist/button/buttonFile/ButtonFile.js +37 -0
  24. package/dist/button/buttonFile/ButtonFile.view.js +35 -0
  25. package/dist/button/buttonFilters/ButtonFilters.js +47 -0
  26. package/dist/card/Card.js +57 -0
  27. package/dist/card/Card.view.js +60 -0
  28. package/dist/card/card.interface.js +1 -0
  29. package/dist/card/cardAction/CardAction.js +66 -0
  30. package/dist/card/cardAction.interface.js +1 -0
  31. package/dist/card/hook/useCardInteractions.js +25 -0
  32. package/dist/carousel/Carousel.js +67 -0
  33. package/dist/carousel/Carousel.view.js +16 -0
  34. package/dist/damier/Damier.js +48 -0
  35. package/dist/damier/Damier.view.js +22 -0
  36. package/dist/damier/damierCell/DamierCell.js +21 -0
  37. package/dist/damier/damierCell/damierCell.interface.js +1 -0
  38. package/dist/dataTable/DataTable.js +117 -0
  39. package/dist/dataTable/DataTable.view.js +48 -0
  40. package/dist/dataTable/dataTable.interface.d.ts +4 -1
  41. package/dist/dataTable/dataTable.interface.js +1 -0
  42. package/dist/dataTable/dataTableActions/DataTableAction.js +26 -0
  43. package/dist/dataTable/dataTableColumn/DataTableColumn.js +21 -0
  44. package/dist/dataTable/dataTableLoading/DataTableLoading.js +16 -0
  45. package/dist/dataTable/dataTableRow/DataTableRow.js +39 -0
  46. package/dist/datePicker/DatePicker.js +64 -0
  47. package/dist/datePicker/DatePicker.view.js +5 -0
  48. package/dist/expands/Expands.js +28 -0
  49. package/dist/expands/Expands.view.js +67 -0
  50. package/dist/expands/expand/expand.interface.js +1 -0
  51. package/dist/expands/expand/expand.js +40 -0
  52. package/dist/filAriane/FilAriane.js +28 -0
  53. package/dist/filAriane/FilAriane.view.js +28 -0
  54. package/dist/filAriane/filAriane.interface.js +1 -0
  55. package/dist/form/Form.js +135 -0
  56. package/dist/form/Form.view.js +50 -0
  57. package/dist/form/form.enum.js +14 -0
  58. package/dist/form/form.interface.js +1 -0
  59. package/dist/form/input/Input.js +26 -0
  60. package/dist/form/inputNumber/InputNumber.js +57 -0
  61. package/dist/form/inputNumber/InputNumber.view.js +7 -0
  62. package/dist/form/inputPrice/InputPrice.js +36 -0
  63. package/dist/form/inputPrice/InputPrice.view.js +7 -0
  64. package/dist/form/textArea/TextArea.js +18 -0
  65. package/dist/form/textArea/TextArea.view.js +15 -0
  66. package/dist/grid/Grid.js +19 -0
  67. package/dist/grid/Grid.view.js +22 -0
  68. package/dist/grid/col/Col.js +17 -0
  69. package/dist/grid/col/colStyled/ColStyled.js +26 -0
  70. package/dist/grid/container/Container.js +17 -0
  71. package/dist/grid/grid.interface.js +1 -0
  72. package/dist/grid/row/Row.js +17 -0
  73. package/dist/header/Header.js +26 -0
  74. package/dist/header/Header.view.js +5 -0
  75. package/dist/header/header.interface.js +1 -0
  76. package/dist/home/Home.js +4 -0
  77. package/dist/icon/Icon.js +6 -0
  78. package/dist/icon/Icons.view.js +27 -0
  79. package/dist/icon/icon.interface.js +1 -0
  80. package/dist/icon/iconSize.enum.js +8 -0
  81. package/dist/index.js +50 -5356
  82. package/dist/loader/Loader.js +20 -0
  83. package/dist/loader/Loader.view.js +9 -0
  84. package/dist/main.js +7 -0
  85. package/dist/menus/Menus.js +23 -0
  86. package/dist/menus/Menus.view.js +48 -0
  87. package/dist/menus/menu/Menu.js +15 -0
  88. package/dist/menus/menu/menu.interface.js +1 -0
  89. package/dist/message/Message.js +33 -0
  90. package/dist/message/Message.view.js +11 -0
  91. package/dist/modal/Modal.js +27 -0
  92. package/dist/modal/Modal.view.js +22 -0
  93. package/dist/notFound/NotFound.js +4 -0
  94. package/dist/overlayPanel/OverlayPanel.js +132 -0
  95. package/dist/overlayPanel/OverlayPanel.view.js +20 -0
  96. package/dist/overlayPanel/overlay.context.js +26 -0
  97. package/dist/overlayPanel/overlayPanelStyled/OverlayPanelStyled.js +13 -0
  98. package/dist/pdfViewer/PdfViewer.js +71 -0
  99. package/dist/pdfViewer/PdfViewer.view.js +5 -0
  100. package/dist/quantity/Quantity.js +60 -0
  101. package/dist/quantity/Quantity.view.js +1 -0
  102. package/dist/search/Search.js +80 -0
  103. package/dist/search/Search.view.js +8 -0
  104. package/dist/select/Select.d.ts +2 -1
  105. package/dist/select/Select.js +41 -0
  106. package/dist/select/Select.view.js +75 -0
  107. package/dist/select/selectOption.interface.js +1 -0
  108. package/dist/sidebar/Sidebar.js +132 -0
  109. package/dist/sidebar/Sidebar.view.js +11 -0
  110. package/dist/sidebarData/SidebarData.js +17 -0
  111. package/dist/sidebarData/SidebarData.view.js +14 -0
  112. package/dist/style.css +1 -1
  113. package/dist/tabs/Tabs.js +41 -0
  114. package/dist/tabs/Tabs.view.js +26 -0
  115. package/dist/toaster/Toaster.js +37 -0
  116. package/dist/toaster/Toaster.view.js +16 -0
  117. package/dist/toaster/store/useToasterStore.js +22 -0
  118. package/package.json +1 -1
  119. package/src/dataTable/DataTable.tsx +55 -14
  120. package/src/dataTable/dataTable.css +26 -2
  121. package/src/dataTable/dataTable.interface.ts +4 -1
  122. package/src/dataTable/dataTableRow/DataTableRow.tsx +36 -11
  123. package/src/select/Select.tsx +4 -1
  124. package/vite.config.ts.timestamp-1787675603363-8ddae73d076bd.mjs +28 -0
@@ -0,0 +1,80 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, } from "react";
14
+ import { DynamicForm } from "../form/Form";
15
+ import { TypeInputEnum } from "../form/form.enum";
16
+ import { Icon } from "../icon/Icon";
17
+ import "./search.css";
18
+ export var Search = forwardRef(function (_a, ref) {
19
+ var children = _a.children, name = _a.name, placeholder = _a.placeholder, isVisible = _a.isVisible, focus = _a.focus, debounceTime = _a.debounceTime, handleChange = _a.handleChange, setIsVisible = _a.setIsVisible, id = _a.id;
20
+ var _b = useState(isVisible !== null && isVisible !== void 0 ? isVisible : false), isOpen = _b[0], setIsOpen = _b[1];
21
+ var debounceRef = useRef(null);
22
+ var formRef = useRef(null);
23
+ var initialValues = useMemo(function () { return [
24
+ {
25
+ value: "",
26
+ id: id,
27
+ name: name !== null && name !== void 0 ? name : "recherche",
28
+ placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : "Recherche",
29
+ type: TypeInputEnum.TEXT,
30
+ focus: focus,
31
+ icon: "bi-search",
32
+ className: "search-input",
33
+ autoComplete: "off",
34
+ },
35
+ ]; }, [placeholder, focus]);
36
+ useEffect(function () {
37
+ if (isVisible !== undefined) {
38
+ setIsOpen(isVisible);
39
+ }
40
+ }, [isVisible]);
41
+ var setShowSearch = useCallback(function (value) {
42
+ if (setIsVisible) {
43
+ setIsVisible(value);
44
+ }
45
+ setIsOpen(value);
46
+ }, [setIsVisible]);
47
+ var onChange = useCallback(function (values) {
48
+ if (!values || !values[name !== null && name !== void 0 ? name : "recherche"]) {
49
+ return setShowSearch(false);
50
+ }
51
+ setShowSearch(true);
52
+ if (debounceRef.current) {
53
+ clearTimeout(debounceRef.current);
54
+ }
55
+ debounceRef.current = setTimeout(function () {
56
+ if (handleChange) {
57
+ handleChange(values);
58
+ }
59
+ }, debounceTime !== null && debounceTime !== void 0 ? debounceTime : 500);
60
+ }, [setShowSearch, handleChange, debounceTime]);
61
+ var handleSubmit = useCallback(function (values) {
62
+ console.log("Form Submitted: ", values);
63
+ }, []);
64
+ // Expose clearInput et resetForm via le ref du parent
65
+ useImperativeHandle(ref, function () { return ({
66
+ clearInput: function (name) {
67
+ var _a;
68
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.clearInput(name);
69
+ },
70
+ resetForm: function () {
71
+ var _a;
72
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetForm();
73
+ },
74
+ focusInitialElement: function () {
75
+ var _a;
76
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.focusInitialElement();
77
+ },
78
+ }); });
79
+ return (_jsxs("div", __assign({ className: "search" }, { children: [_jsx(DynamicForm, { ref: formRef, onSubmit: handleSubmit, onChange: onChange, hideSubmit: true, initialForm: initialValues }), isOpen && (_jsxs("div", __assign({ className: "search-result" }, { children: [_jsx("div", __assign({ className: "search-result-close" }, { children: _jsx("button", __assign({ className: "toggle-btn", onClick: function () { return setShowSearch(false); } }, { children: _jsx(Icon, { classIcon: "bi-x-lg" }) })) })), _jsx("div", __assign({ className: "search-result-content" }, { children: children }))] })))] })));
80
+ });
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Search } from "./Search";
3
+ export var SearchView = function () {
4
+ var onChange = function (values) {
5
+ console.log(values);
6
+ };
7
+ return (_jsx(Search, { focus: true, handleChange: onChange, children: _jsx("div", { children: "test" }) }));
8
+ };
@@ -5,6 +5,7 @@ export interface SelectProps {
5
5
  label?: string;
6
6
  title?: string;
7
7
  disabled?: boolean;
8
+ style?: React.CSSProperties;
8
9
  name?: string;
9
10
  defaultValue?: string | string[];
10
11
  multiple?: boolean;
@@ -16,4 +17,4 @@ export interface SelectProps {
16
17
  onChange?: (value: string) => void;
17
18
  placeholder?: string;
18
19
  }
19
- export declare const Select: ({ id, label, options, className, disabled, multiple, required, defaultValue, name, onChange, onChangeMultiple, value, placeholder, }: SelectProps) => JSX.Element;
20
+ export declare const Select: ({ id, label, options, className, disabled, style, multiple, required, defaultValue, name, onChange, onChangeMultiple, value, placeholder, }: SelectProps) => JSX.Element;
@@ -0,0 +1,41 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useCallback, useRef } from "react";
14
+ import { Icon } from "../icon/Icon";
15
+ import "./select.css";
16
+ export var Select = function (_a) {
17
+ var _b;
18
+ var id = _a.id, label = _a.label, options = _a.options, className = _a.className, disabled = _a.disabled, style = _a.style, _c = _a.multiple, multiple = _c === void 0 ? false : _c, _d = _a.required, required = _d === void 0 ? false : _d, defaultValue = _a.defaultValue, name = _a.name, onChange = _a.onChange, onChangeMultiple = _a.onChangeMultiple, value = _a.value, placeholder = _a.placeholder;
19
+ var inputRefs = useRef({});
20
+ var handleChange = function (event) {
21
+ var selectedValue;
22
+ if (multiple) {
23
+ selectedValue = Array.from(event.target.selectedOptions, function (opt) { return opt.value; });
24
+ if (onChangeMultiple) {
25
+ onChangeMultiple(selectedValue);
26
+ }
27
+ }
28
+ else {
29
+ selectedValue = event.target.value;
30
+ if (onChange) {
31
+ onChange(selectedValue);
32
+ }
33
+ }
34
+ };
35
+ var resetValue = useCallback(function () {
36
+ if (onChange) {
37
+ onChange("");
38
+ }
39
+ }, [onChange]);
40
+ return (_jsxs("div", __assign({ id: id, className: "select-container ".concat(className ? className : "") }, { children: [label && (_jsx("label", __assign({ htmlFor: "select-".concat(id), className: "select-container-label" }, { children: label }))), _jsxs("select", __assign({ defaultValue: "", required: required, name: name, style: style, disabled: disabled, id: "select-".concat(id), className: "select-container-select", value: (_b = value !== null && value !== void 0 ? value : defaultValue) !== null && _b !== void 0 ? _b : (multiple ? [] : ""), onChange: handleChange, multiple: multiple, ref: function (el) { return (inputRefs.current[id !== null && id !== void 0 ? id : "select"] = el); } }, { children: [placeholder && !defaultValue && !multiple && (_jsx("option", __assign({ selected: true, disabled: true, hidden: true, value: "" }, { children: placeholder }))), options.map(function (option, index) { return (_jsx("option", __assign({ value: option.value }, { children: option.label }), index)); })] })), value !== "" && placeholder && (_jsx("div", __assign({ className: "clear-btn", onClick: resetValue, "aria-label": "R\u00E9initialiser" }, { children: _jsx(Icon, { classIcon: "bi-x" }) })))] })));
41
+ };
@@ -0,0 +1,75 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { useMemo } from "react";
14
+ import { Select } from "./Select";
15
+ export var SelectView = function () {
16
+ var selectData = useMemo(function () {
17
+ return [
18
+ {
19
+ id: "select",
20
+ title: "Select",
21
+ className: "select-component",
22
+ options: [
23
+ { value: "option1", label: "Option 1" },
24
+ { value: "option2", label: "Option 2" },
25
+ { value: "option3", label: "Option 3" },
26
+ ],
27
+ },
28
+ {
29
+ id: "select-disabled",
30
+ title: "Select Disabled",
31
+ className: "select-component",
32
+ disabled: true,
33
+ options: [
34
+ { value: "option1", label: "Option 1" },
35
+ { value: "option2", label: "Option 2" },
36
+ { value: "option3", label: "Option 3" },
37
+ ],
38
+ },
39
+ {
40
+ id: "select-placeholder",
41
+ title: "Select Placeholder",
42
+ className: "select-component",
43
+ placeholder: "Select an option",
44
+ options: [
45
+ { value: "option1", label: "Option 1" },
46
+ { value: "option2", label: "Option 2" },
47
+ { value: "option3", label: "Option 3" },
48
+ ],
49
+ },
50
+ {
51
+ id: "select-default-value",
52
+ title: "Select Default Value",
53
+ className: "select-component",
54
+ defaultValue: "option2",
55
+ options: [
56
+ { value: "option1", label: "Option 1" },
57
+ { value: "option2", label: "Option 2" },
58
+ { value: "option3", label: "Option 3" },
59
+ ],
60
+ },
61
+ {
62
+ id: "select-value",
63
+ title: "Select Value",
64
+ className: "select-component",
65
+ value: "option3",
66
+ options: [
67
+ { value: "option1", label: "Option 1" },
68
+ { value: "option2", label: "Option 2" },
69
+ { value: "option3", label: "Option 3" },
70
+ ],
71
+ },
72
+ ];
73
+ }, []);
74
+ return (_jsx(_Fragment, { children: selectData.map(function (data) { return (_jsx(Select, __assign({}, data), data.id)); }) }));
75
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,132 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useCallback, useEffect, useRef, useState } from "react";
14
+ import ReactDOM from "react-dom";
15
+ import { Icon } from "../icon/Icon";
16
+ import "./sidebar.css";
17
+ var SWIPE_CLOSE_THRESHOLD = 60; // px à parcourir pour fermer
18
+ var SWIPE_AXIS_LOCK_THRESHOLD = 10; // px pour déterminer l'axe du geste
19
+ export var Sidebar = function (_a) {
20
+ var open = _a.open, children = _a.children, title = _a.title, onClose = _a.onClose, className = _a.className, id = _a.id, width = _a.width, _b = _a.closeOnClickOutside, closeOnClickOutside = _b === void 0 ? true : _b, _c = _a.displayOverlay, displayOverlay = _c === void 0 ? true : _c;
21
+ var _d = useState(open || false), isOpen = _d[0], setIsOpen = _d[1];
22
+ var _e = useState(0), dragX = _e[0], setDragX = _e[1];
23
+ var _f = useState(false), isDragging = _f[0], setIsDragging = _f[1];
24
+ var sidebarRef = useRef(null);
25
+ var rootRef = useRef(null);
26
+ var touchStartX = useRef(0);
27
+ var touchStartY = useRef(0);
28
+ var axisLocked = useRef(null);
29
+ // Créer le conteneur une seule fois
30
+ useEffect(function () {
31
+ if (!rootRef.current) {
32
+ rootRef.current = document.createElement("div");
33
+ rootRef.current.id = "sidebar-root-".concat(id || crypto.randomUUID());
34
+ document.body.appendChild(rootRef.current);
35
+ }
36
+ return function () {
37
+ // Nettoyage lors du démontage
38
+ if (rootRef.current && rootRef.current.parentNode) {
39
+ document.body.removeChild(rootRef.current);
40
+ rootRef.current = null;
41
+ }
42
+ };
43
+ }, [id]);
44
+ // Synchroniser l'état `isOpen` avec la prop `open`
45
+ useEffect(function () {
46
+ setIsOpen(open || false);
47
+ }, [open]);
48
+ var toggleSidebar = useCallback(function () {
49
+ setIsOpen(false);
50
+ if (onClose) {
51
+ onClose(false);
52
+ }
53
+ }, [onClose]);
54
+ var handleClickOutside = useCallback(function (event) {
55
+ if (!closeOnClickOutside)
56
+ return;
57
+ if (sidebarRef.current &&
58
+ !sidebarRef.current.contains(event.target)) {
59
+ toggleSidebar();
60
+ }
61
+ }, [toggleSidebar, closeOnClickOutside]);
62
+ var handleTouchStart = useCallback(function (event) {
63
+ var touch = event.touches[0];
64
+ touchStartX.current = touch.clientX;
65
+ touchStartY.current = touch.clientY;
66
+ axisLocked.current = null;
67
+ setIsDragging(false);
68
+ setDragX(0);
69
+ }, []);
70
+ var handleTouchMove = useCallback(function (event) {
71
+ if (!isOpen)
72
+ return;
73
+ var touch = event.touches[0];
74
+ var deltaX = touch.clientX - touchStartX.current;
75
+ var deltaY = touch.clientY - touchStartY.current;
76
+ // Détermine l'axe du geste une seule fois, dès qu'on a un déplacement suffisant
77
+ if (!axisLocked.current) {
78
+ if (Math.abs(deltaX) < SWIPE_AXIS_LOCK_THRESHOLD &&
79
+ Math.abs(deltaY) < SWIPE_AXIS_LOCK_THRESHOLD) {
80
+ return; // pas encore assez de mouvement pour trancher
81
+ }
82
+ axisLocked.current = Math.abs(deltaX) > Math.abs(deltaY) ? "x" : "y";
83
+ }
84
+ if (axisLocked.current !== "x")
85
+ return; // c'est un scroll vertical, on laisse faire
86
+ // On gère le swipe horizontal nous-mêmes : on empêche le scroll natif
87
+ // et on bloque le bounce/scroll de la page pendant le drag
88
+ event.preventDefault();
89
+ setIsDragging(true);
90
+ // On ne permet que le swipe vers la droite (fermeture), pas de drag négatif
91
+ setDragX(Math.max(0, deltaX));
92
+ }, [isOpen]);
93
+ var handleTouchEnd = useCallback(function (event) {
94
+ if (!isOpen) {
95
+ return;
96
+ }
97
+ if (axisLocked.current === "x") {
98
+ var touch = event.changedTouches[0];
99
+ var deltaX = touch.clientX - touchStartX.current;
100
+ if (deltaX > SWIPE_CLOSE_THRESHOLD) {
101
+ toggleSidebar();
102
+ }
103
+ }
104
+ setIsDragging(false);
105
+ setDragX(0);
106
+ axisLocked.current = null;
107
+ }, [isOpen, toggleSidebar]);
108
+ var handleOverlayTouchEnd = useCallback(function (event) {
109
+ event.preventDefault();
110
+ toggleSidebar();
111
+ }, [toggleSidebar]);
112
+ useEffect(function () {
113
+ if (isOpen) {
114
+ document.addEventListener("mousedown", handleClickOutside);
115
+ document.addEventListener("touchstart", handleClickOutside, {
116
+ passive: true,
117
+ });
118
+ }
119
+ else {
120
+ document.removeEventListener("mousedown", handleClickOutside);
121
+ document.removeEventListener("touchstart", handleClickOutside);
122
+ }
123
+ return function () {
124
+ document.removeEventListener("mousedown", handleClickOutside);
125
+ document.removeEventListener("touchstart", handleClickOutside);
126
+ };
127
+ }, [isOpen, handleClickOutside]);
128
+ if (!rootRef.current) {
129
+ return _jsx(_Fragment, {}); // Ne pas tenter de rendre si le conteneur n'existe pas
130
+ }
131
+ return ReactDOM.createPortal(_jsxs(_Fragment, { children: [isOpen && displayOverlay && (_jsx("div", { className: "overlay", onClick: toggleSidebar, onTouchEnd: handleOverlayTouchEnd })), _jsxs("div", __assign({ ref: sidebarRef, style: __assign(__assign({}, (width ? { width: width } : {})), { transform: dragX ? "translateX(".concat(dragX, "px)") : undefined, transition: isDragging ? "none" : undefined }), className: "sidebar ".concat(isOpen ? "open" : "closed", " ").concat(className !== null && className !== void 0 ? className : ""), onTouchStart: handleTouchStart, onTouchMove: handleTouchMove, onTouchEnd: handleTouchEnd }, { children: [_jsxs("div", __assign({ className: "sidebar-header" }, { children: [title && _jsx("h2", __assign({ className: "flex-1" }, { children: title })), _jsx("button", __assign({ className: "toggle-btn", onClick: toggleSidebar }, { children: _jsx(Icon, { classIcon: "bi-x-lg" }) }))] })), children && children] }))] }), rootRef.current);
132
+ };
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useState } from "react";
3
+ import { Button } from "../button/Button";
4
+ import { Sidebar } from "./Sidebar";
5
+ export var SidebarView = function () {
6
+ var _a = useState(false), isOpen = _a[0], setIsOpen = _a[1];
7
+ var onClick = useCallback(function () {
8
+ setIsOpen(true);
9
+ }, [setIsOpen]);
10
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { title: "open me", onClick: onClick }), _jsx(Sidebar, { onClose: setIsOpen, title: "Menu", open: isOpen })] }));
11
+ };
@@ -0,0 +1,17 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Sidebar } from "../sidebar/Sidebar";
14
+ import "./sidebarData.css";
15
+ export var SidebarData = function (props) {
16
+ return (_jsx(Sidebar, __assign({}, props, { className: "full sidebar-data ".concat(props.className) }, { children: props.children && (_jsx("div", __assign({ className: "sidebar-data-content ".concat(props.classNameContent, " ") }, { children: props.children }))) })));
17
+ };
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useState } from "react";
3
+ import { Button } from "../button/Button";
4
+ import { SidebarData } from "./SidebarData";
5
+ export var SidebarDataView = function () {
6
+ var _a = useState(false), isOpen = _a[0], setIsOpen = _a[1];
7
+ var onClick = useCallback(function () {
8
+ setIsOpen(true);
9
+ }, [setIsOpen]);
10
+ var onClose = useCallback(function () {
11
+ setIsOpen(false);
12
+ }, [setIsOpen]);
13
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { title: "open me", onClick: onClick }), _jsx(SidebarData, { onClose: onClose, width: "20vw", title: "Infos", open: isOpen })] }));
14
+ };