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,22 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { Button } from "../button/Button";
4
+ import { Damier } from "./Damier";
5
+ export var DamierView = function () {
6
+ var _a = useState(1), page = _a[0], setPage = _a[1];
7
+ var items = [
8
+ {
9
+ position: 2,
10
+ child: _jsx("div", { children: "2" }),
11
+ },
12
+ {
13
+ position: 12,
14
+ child: _jsx("div", { children: "12" }),
15
+ },
16
+ {
17
+ position: 83,
18
+ child: _jsx("div", { children: "82" }),
19
+ },
20
+ ];
21
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { onClick: function () { return setPage(page - 1); }, title: "previous" }), _jsx(Button, { onClick: function () { return setPage(page + 1); }, title: "next" }), _jsx(Damier, { damierCells: items, page: page })] }));
22
+ };
@@ -0,0 +1,21 @@
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
+ export var DamierCell = function (_a) {
14
+ var cell = _a.cell, onClick = _a.onClick;
15
+ var handleClick = function () {
16
+ if (onClick) {
17
+ onClick(cell);
18
+ }
19
+ };
20
+ return (_jsx("div", __assign({ className: "cell", onClick: handleClick }, { children: cell.child })));
21
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,117 @@
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, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import { useCallback, useEffect, useRef, useState } from "react";
14
+ import { TypeInputEnum } from "../form/form.enum";
15
+ import { Input } from "../form/input/Input";
16
+ import { Loader } from "../loader/Loader";
17
+ import "./dataTable.css";
18
+ import { DataTableAction } from "./dataTableActions/DataTableAction";
19
+ import { DataTableColumn } from "./dataTableColumn/DataTableColumn";
20
+ import { DataTableLoading } from "./dataTableLoading/DataTableLoading";
21
+ import { DataTableRow } from "./dataTableRow/DataTableRow";
22
+ export function DataTable(props) {
23
+ var id = props.id, name = props.name, className = props.className, children = props.children, element = props.element, _a = props.data, data = _a === void 0 ? [] : _a, _b = props.actions, actions = _b === void 0 ? [] : _b, _c = props.columns, columns = _c === void 0 ? [] : _c, loading = props.loading, onRowClick = props.onRowClick, onColumnClick = props.onColumnClick, onLoadMore = props.onLoadMore, emptyMessage = props.emptyMessage, hasMore = props.hasMore, onSelectionChange = props.onSelectionChange, _d = props.hideToggleAll, hideToggleAll = _d === void 0 ? false : _d, _e = props.limitSelect, limitSelect = _e === void 0 ? undefined : _e, getRowId = props.getRowId;
24
+ var loaderRef = useRef(null);
25
+ var _f = useState(new Set()), selectedRowIds = _f[0], setSelectedRowIds = _f[1];
26
+ var isInteractiveClick = useCallback(function (target) {
27
+ var element = target instanceof Element
28
+ ? target
29
+ : target instanceof Node
30
+ ? target.parentElement
31
+ : null;
32
+ if (!element) {
33
+ return false;
34
+ }
35
+ return Boolean(element.closest("input,button,a,select,textarea,label,option,[role='button'],[role='checkbox'],[role='option'],[contenteditable='true'],[data-stop-row-click='true']"));
36
+ }, []);
37
+ var toggleSelectAll = useCallback(function () {
38
+ if (selectedRowIds.size === data.length) {
39
+ setSelectedRowIds(new Set());
40
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([]);
41
+ }
42
+ else {
43
+ var allIds = data.map(function (d) { var _a; return getRowId ? getRowId(d) : ((_a = d.id) !== null && _a !== void 0 ? _a : d); });
44
+ if (limitSelect && allIds.length > limitSelect) {
45
+ allIds = allIds.slice(0, limitSelect);
46
+ }
47
+ var newSelection_1 = new Set(allIds);
48
+ setSelectedRowIds(newSelection_1);
49
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(data.filter(function (d) { var _a; return newSelection_1.has(getRowId ? getRowId(d) : ((_a = d.id) !== null && _a !== void 0 ? _a : d)); }));
50
+ }
51
+ }, [data, onSelectionChange, limitSelect, getRowId, selectedRowIds.size]);
52
+ var handleClickRow = useCallback(function (e, row) {
53
+ var _a, _b;
54
+ e.stopPropagation();
55
+ if (isInteractiveClick(e.target)) {
56
+ return;
57
+ }
58
+ var selectedText = typeof window !== "undefined"
59
+ ? (_b = (_a = window.getSelection) === null || _a === void 0 ? void 0 : _a.call(window)) === null || _b === void 0 ? void 0 : _b.toString().trim()
60
+ : "";
61
+ if (selectedText) {
62
+ return;
63
+ }
64
+ if (onRowClick) {
65
+ onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row);
66
+ }
67
+ }, [isInteractiveClick, onRowClick]);
68
+ var toggleRow = useCallback(function (e, row) {
69
+ var _a;
70
+ e.stopPropagation();
71
+ var rowId = getRowId ? getRowId(row) : ((_a = row.id) !== null && _a !== void 0 ? _a : row);
72
+ var newSelection = new Set(selectedRowIds);
73
+ if (newSelection.has(rowId)) {
74
+ newSelection.delete(rowId);
75
+ }
76
+ else {
77
+ if (limitSelect && newSelection.size >= limitSelect) {
78
+ // 🚫 limite atteinte
79
+ return;
80
+ }
81
+ newSelection.add(rowId);
82
+ }
83
+ setSelectedRowIds(newSelection);
84
+ var selectedItems = data.filter(function (d) { var _a; return newSelection.has(getRowId ? getRowId(d) : ((_a = d.id) !== null && _a !== void 0 ? _a : d)); });
85
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(selectedItems);
86
+ }, [data, getRowId, limitSelect, onSelectionChange, selectedRowIds]);
87
+ useEffect(function () {
88
+ if (!onLoadMore || !hasMore)
89
+ return;
90
+ var observer = new IntersectionObserver(function (entries) {
91
+ if (entries[0].isIntersecting) {
92
+ onLoadMore();
93
+ }
94
+ }, {
95
+ root: null,
96
+ rootMargin: "0px",
97
+ threshold: 1.0,
98
+ });
99
+ if (loaderRef.current) {
100
+ observer.observe(loaderRef.current);
101
+ }
102
+ return function () {
103
+ if (loaderRef.current) {
104
+ observer.unobserve(loaderRef.current);
105
+ }
106
+ };
107
+ }, [onLoadMore, hasMore]);
108
+ return (_jsxs("div", __assign({ className: "data-table-container" }, { children: [name && _jsx("h2", __assign({ className: "mb-2" }, { children: name })), element, _jsxs("table", __assign({ className: "data-table ".concat(className ? className : ""), id: id }, { children: [_jsx("thead", { children: _jsxs("tr", { children: [onSelectionChange && (_jsx("th", __assign({ className: "select-cell ".concat(hideToggleAll ? "hidden" : ""), style: { width: "20px", textAlign: "center" } }, { children: _jsx(Input, { id: "select-th-".concat(id), name: "select-th-".concat(id), type: TypeInputEnum.CHECKBOX, checked: data.length > 0 && selectedRowIds.size === data.length, onChange: toggleSelectAll }) }))), columns.map(function (column, idx) { return (_jsx(DataTableColumn, { column: column, idx: idx, onColumnClick: onColumnClick }, idx)); }), actions.length > 0 && (_jsx("th", { style: {
109
+ width: "200px",
110
+ }, align: "right" }, "actions"))] }) }), _jsxs("tbody", { children: [loading ? (_jsx("tr", { children: _jsx("td", __assign({ align: "center", colSpan: columns.length + (actions.length > 0 ? 1 : 0) }, { children: _jsx("div", __assign({ className: "mt-3" }, { children: _jsx(Loader, { display: loading }) })) })) })) : (_jsx(_Fragment, {})), !loading &&
111
+ data.map(function (row, rowIndex) {
112
+ var _a, _b;
113
+ return (_jsxs("tr", __assign({ className: rowIndex % 2 === 0 ? "even" : "odd", onClick: function (e) { return handleClickRow === null || handleClickRow === void 0 ? void 0 : handleClickRow(e, row); } }, { children: [onSelectionChange && (_jsx("td", __assign({ className: "select-cell", style: { textAlign: "center" }, onClick: function (e) { return e.stopPropagation(); } }, { children: _jsx(Input, { id: "select-row-".concat(rowIndex), name: "select-row-".concat(rowIndex), type: TypeInputEnum.CHECKBOX, disabled: limitSelect !== undefined &&
114
+ selectedRowIds.size >= limitSelect &&
115
+ !selectedRowIds.has(getRowId ? getRowId(row) : ((_a = row.id) !== null && _a !== void 0 ? _a : row)), checked: selectedRowIds.has(getRowId ? getRowId(row) : ((_b = row.id) !== null && _b !== void 0 ? _b : row)), onChange: function (e) { return toggleRow(e, row); } }) }))), columns.map(function (column, idx) { return (_jsx(DataTableRow, { column: column, idx: idx, row: row }, idx)); }), actions.length > 0 && (_jsx("td", __assign({ align: "right", onClick: function (e) { return e.stopPropagation(); } }, { children: _jsx("div", __assign({ className: "d-flex align-items-center justify-content-end" }, { children: actions.map(function (action, index) { return (_jsx(DataTableAction, { action: action, row: row, index: index }, index)); }) })) })))] }), rowIndex));
116
+ }), !loading && data.length === 0 && (_jsx(DataTableLoading, { columns: columns, actions: actions, emptyMessage: emptyMessage }))] })] })), children, hasMore && (_jsx("div", __assign({ ref: loaderRef, className: "infinite-scroll-loader" }, { children: _jsx(Loader, { display: true }) })))] })));
117
+ }
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { DataTable } from "./DataTable";
4
+ export var DataTableView = function () {
5
+ var dataTableColumns = useMemo(function () {
6
+ return [
7
+ { id: "id", label: "ID", minWidth: 50, type: "number" },
8
+ {
9
+ id: "name",
10
+ label: "Name",
11
+ minWidth: 100,
12
+ editable: true,
13
+ type: "text",
14
+ },
15
+ { id: "age", label: "Age", minWidth: 50, type: "number" },
16
+ ];
17
+ }, []);
18
+ var data = useMemo(function () {
19
+ return [
20
+ { id: 1, name: "John Doe", age: 28 },
21
+ { id: 2, name: "Jane Smith", age: 34 },
22
+ { id: 3, name: "Alice Johnson", age: 45 },
23
+ ];
24
+ }, []);
25
+ var actions = useMemo(function () {
26
+ return [
27
+ {
28
+ id: "edit",
29
+ label: "Edit",
30
+ type: "button",
31
+ onClick: function (row) {
32
+ console.log("Edit action clicked for row:", row);
33
+ },
34
+ },
35
+ {
36
+ id: "delete",
37
+ label: "Delete",
38
+ type: "button",
39
+ onClick: function (row) {
40
+ console.log("Delete action clicked for row:", row);
41
+ },
42
+ },
43
+ ];
44
+ }, []);
45
+ return (_jsx(DataTable, { data: data, actions: actions, columns: dataTableColumns, id: "datatable-example", name: "DataTable", onSelectionChange: function (selectedRows) {
46
+ console.log("Selected Rows: ", selectedRows);
47
+ } }));
48
+ };
@@ -19,7 +19,10 @@ export interface dataTableColumnsInterface<T> {
19
19
  onEdit?: (value: any, row: T) => void;
20
20
  onDisable?: (row: T) => boolean;
21
21
  onRowStyle?: (row: T) => React.CSSProperties;
22
- type: HTMLInputTypeAttribute | "select";
22
+ type: HTMLInputTypeAttribute | "select" | "image";
23
+ imageAlt?: (row: T) => string;
24
+ imageStyle?: React.CSSProperties;
25
+ imageSrc?: (row: T) => string;
23
26
  }
24
27
  export interface dataTableActionsInterface<T> {
25
28
  id: string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
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, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Button } from "../../button/Button";
14
+ import { Icon } from "../../icon/Icon";
15
+ export var DataTableAction = function (_a) {
16
+ var _b;
17
+ var action = _a.action, row = _a.row, index = _a.index;
18
+ var title = action.label;
19
+ var display = action.shouldDisplay ? action.shouldDisplay(row) : true;
20
+ if (!display)
21
+ return null;
22
+ if (action.labelButton) {
23
+ title = action.labelButton ? action.labelButton(row) : action.label;
24
+ }
25
+ return (_jsxs(_Fragment, { children: [action.type === "button" && (_jsx(Button, { title: title, onClick: function () { return action.onClick(row); }, disabled: action.disabled, className: "data-table-action button--tertiary mr-2 w-100 ".concat(action.classIcon ? action.classIcon : "") }, "button-action-".concat(action.id, "-").concat(index))), action.type === "icon" && (_jsx("div", __assign({ className: "mr-2 ", onClick: function () { return action.onClick(row); } }, { children: _jsx(Icon, { classIcon: (_b = action.classIcon) !== null && _b !== void 0 ? _b : "" }, action.id) }), "icon-action-".concat(action.id, "-").concat(index)))] }));
26
+ };
@@ -0,0 +1,21 @@
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
+ export var DataTableColumn = function (_a) {
14
+ var column = _a.column, idx = _a.idx, onColumnClick = _a.onColumnClick;
15
+ return (_jsx("th", __assign({ style: {
16
+ minWidth: column.minWidth,
17
+ maxWidth: column.maxWidth,
18
+ width: column.width,
19
+ textAlign: column.align || "left",
20
+ }, onClick: function () { return onColumnClick === null || onColumnClick === void 0 ? void 0 : onColumnClick(column); } }, { children: column.label }), "colonne-".concat(column.id, "-").concat(idx)));
21
+ };
@@ -0,0 +1,16 @@
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
+ export var DataTableLoading = function (_a) {
14
+ var columns = _a.columns, actions = _a.actions, emptyMessage = _a.emptyMessage;
15
+ return (_jsx("tr", { children: _jsx("td", __assign({ align: "center", colSpan: columns.length + (actions.length > 0 ? 1 : 0) }, { children: _jsx("div", __assign({ className: "mt-3" }, { children: emptyMessage || "Aucune donnée disponible" })) })) }));
16
+ };
@@ -0,0 +1,39 @@
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 { Icon } from "../..";
14
+ import { Select } from "../../select/Select";
15
+ export var DataTableRow = function (_a) {
16
+ var _b, _c, _d;
17
+ var column = _a.column, idx = _a.idx, row = _a.row;
18
+ var value = row[column.id]; // On utilise [column.id] pour accéder aux bonnes propriétés
19
+ var style = column.onRowStyle ? column.onRowStyle(row) : {};
20
+ var isDisabled = (_c = (_b = column.onDisable) === null || _b === void 0 ? void 0 : _b.call(column, row)) !== null && _c !== void 0 ? _c : false;
21
+ return (_jsx("td", __assign({ className: "".concat(isDisabled ? "disabled" : ""), style: __assign({ minWidth: column.minWidth, textAlign: column.align || "left", maxWidth: column.maxWidth, width: column.width }, style) }, { children: column.type === "image" ? (value ? (_jsx("img", { src: column.imageSrc ? column.imageSrc(row) : "", alt: column.imageAlt ? column.imageAlt(row) : "", style: column.imageStyle })) : (_jsx(Icon, { classIcon: "bi-image" }))) : column.editable ? (column.type === "select" ? (_jsx("div", __assign({ onClick: function (e) { return e.stopPropagation(); } }, { children: _jsx(Select, { style: {
22
+ minWidth: column.minWidth,
23
+ maxWidth: column.maxWidth,
24
+ width: column.width,
25
+ }, options: (_d = column.options) !== null && _d !== void 0 ? _d : [], value: value, onChange: function (e) {
26
+ if (column.onEdit) {
27
+ column.onEdit(e, row);
28
+ }
29
+ } }) }))) : (_jsx("input", { type: column.type, value: value, step: "0.01", style: {
30
+ textAlign: column.align || "left",
31
+ minWidth: column.minWidth,
32
+ maxWidth: column.maxWidth,
33
+ width: column.width,
34
+ }, onClick: function (e) { return e.stopPropagation(); }, onChange: function (e) {
35
+ if (column.onEdit) {
36
+ column.onEdit(e.target.value, row);
37
+ }
38
+ } }))) : column.format ? (column.format(value)) : (value) }), "row-".concat(column.id, "-").concat(idx)));
39
+ };
@@ -0,0 +1,64 @@
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, useEffect, useRef, useState } from "react";
14
+ import Calendar from "react-calendar";
15
+ import { Icon } from "../icon/Icon";
16
+ import { IconSizeEnum } from "../icon/iconSize.enum";
17
+ import "./datePicker.css"; // Assuming you have some styles for the DatePicker
18
+ export var DatePicker = function (_a) {
19
+ var value = _a.value, onChange = _a.onChange, maxDate = _a.maxDate, children = _a.children;
20
+ var _b = useState(value !== null && value !== void 0 ? value : new Date()), dateCalendar = _b[0], setDateCalendar = _b[1];
21
+ var _c = useState(false), showCalendar = _c[0], setShowCalendar = _c[1];
22
+ var calendarRef = useRef(null);
23
+ var handleChange = useCallback(function (val) {
24
+ setDateCalendar(val);
25
+ if (onChange) {
26
+ onChange(val);
27
+ }
28
+ setShowCalendar(false);
29
+ }, [onChange]);
30
+ var toggleCalendar = function () { return setShowCalendar(!showCalendar); };
31
+ var handleClickOutside = useCallback(function (event) {
32
+ if (calendarRef.current &&
33
+ !calendarRef.current.contains(event.target)) {
34
+ setShowCalendar(false);
35
+ }
36
+ }, []);
37
+ useEffect(function () {
38
+ if (showCalendar) {
39
+ document.addEventListener("mousedown", handleClickOutside);
40
+ }
41
+ else {
42
+ document.removeEventListener("mousedown", handleClickOutside);
43
+ }
44
+ // Nettoyage
45
+ return function () {
46
+ document.removeEventListener("mousedown", handleClickOutside);
47
+ };
48
+ }, [showCalendar, handleClickOutside]);
49
+ var _d = useState(), currentMonth = _d[0], setCurrentMonth = _d[1];
50
+ var handleActiveStartDateChange = function (_a) {
51
+ var activeStartDate = _a.activeStartDate;
52
+ setCurrentMonth(activeStartDate);
53
+ };
54
+ return (_jsx("div", { children: _jsxs("div", __assign({ className: "calendar", ref: calendarRef }, { children: [children && _jsx("div", __assign({ onClick: toggleCalendar }, { children: children })), !children && (_jsx("button", __assign({ className: "calendar-button", onClick: toggleCalendar }, { children: _jsx(Icon, { classIcon: " bi-calendar4-event", size: IconSizeEnum.EXTRA_LARGE }) }))), showCalendar && (_jsxs("div", __assign({ className: "calendar-popup" }, { children: [_jsx("div", __assign({ onClick: function () { return setShowCalendar(false); }, className: "calendar-popup-close" }, { children: _jsx(Icon, { classIcon: "bi-x-lg close-icon", size: IconSizeEnum.EXTRA_SMALL }) })), _jsx(Calendar, { onActiveStartDateChange: handleActiveStartDateChange, maxDate: maxDate !== null && maxDate !== void 0 ? maxDate : new Date(), onChange: handleChange, value: dateCalendar, tileClassName: function (_a) {
55
+ var day = _a.date, view = _a.view;
56
+ if (view === "month" && currentMonth) {
57
+ var curr = currentMonth;
58
+ return day.getMonth() !== (curr === null || curr === void 0 ? void 0 : curr.getMonth())
59
+ ? "out-of-month"
60
+ : null;
61
+ }
62
+ return null;
63
+ } })] })))] })) }));
64
+ };
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { DatePicker } from "./DatePicker";
3
+ export var DatePickerView = function () {
4
+ return (_jsx("div", { children: _jsx(DatePicker, {}) }));
5
+ };
@@ -0,0 +1,28 @@
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 { useCallback, useEffect, useState } from "react";
14
+ import { Expand } from "./expand/expand";
15
+ import "./expands.css";
16
+ export var Expands = function (props) {
17
+ var _a = useState(), currentExpand = _a[0], setCurrentExpand = _a[1];
18
+ var onChangeExpand = useCallback(function (item) {
19
+ if (props.onChange) {
20
+ props.onChange(item);
21
+ }
22
+ setCurrentExpand(item);
23
+ }, [setCurrentExpand, props.onChange]);
24
+ useEffect(function () {
25
+ setCurrentExpand(props.currentItem);
26
+ }, [props.currentItem, setCurrentExpand, document.activeElement]);
27
+ return (_jsx("div", __assign({ className: "expands ".concat(props.className || "") }, { children: props.items.map(function (item) { return (_jsx(Expand, { item: item, showArrow: props.showArrow, onChange: onChangeExpand, currentExpand: currentExpand }, item.id)); }) })));
28
+ };
@@ -0,0 +1,67 @@
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, useEffect, useMemo, useRef, useState } from "react";
14
+ import { Button } from "../button/Button";
15
+ import { Search } from "../search/Search";
16
+ import { Expands } from "./Expands";
17
+ export var ExpandsView = function () {
18
+ var searchRef = useRef(null);
19
+ var _a = useState(2), currentId = _a[0], setCurrentId = _a[1];
20
+ var handleRefocus = function () {
21
+ var _a;
22
+ (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focusInitialElement();
23
+ };
24
+ var mockItems = useMemo(function () { return [
25
+ {
26
+ id: 1,
27
+ title: "Client",
28
+ description: "Description 1",
29
+ headerContent: currentId === 1 && (_jsx(Search, { ref: searchRef, focus: true })),
30
+ footer: _jsx("button", { children: "Valider" }),
31
+ },
32
+ {
33
+ id: 2,
34
+ title: "Produits",
35
+ description: "Description 2",
36
+ headerContent: currentId === 2 && (_jsx(Search, { ref: searchRef, focus: true })),
37
+ content: (_jsx(Button, { title: "Go to produits", onClick: function () { return setCurrentId(3); } })),
38
+ },
39
+ {
40
+ id: 3,
41
+ title: "Total",
42
+ description: "Description 3",
43
+ },
44
+ ]; }, [currentId]);
45
+ var _b = useState(mockItems[0]), currentItem = _b[0], setCurrentItem = _b[1];
46
+ useEffect(function () {
47
+ setTimeout(function () {
48
+ var _a;
49
+ (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focusInitialElement();
50
+ }, 0);
51
+ }, [searchRef, currentItem]);
52
+ useEffect(function () {
53
+ var item = mockItems.find(function (item) { return item.id === currentId; });
54
+ if (item) {
55
+ setCurrentItem(item);
56
+ }
57
+ }, [currentId, setCurrentItem]);
58
+ var goToProduits = useCallback(function () {
59
+ setCurrentItem(mockItems[2]);
60
+ }, [setCurrentItem]);
61
+ var onChange = useCallback(function (item) {
62
+ if (item.id) {
63
+ setCurrentId(item.id);
64
+ }
65
+ }, [setCurrentId]);
66
+ return (_jsxs("div", __assign({ className: "d-flex flex-column", style: { height: "100%" } }, { children: [_jsxs("div", __assign({ className: "mb-2" }, { children: [_jsx(Button, { title: "Go to produits", onClick: goToProduits }), _jsx(Button, { onClick: handleRefocus, title: "Re-focus" })] })), _jsxs("div", __assign({ className: "flex-1" }, { children: [_jsx(Expands, { onChange: onChange, currentItem: currentItem, items: mockItems }), ";"] }))] })));
67
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
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, useEffect, useState } from "react";
14
+ import { Icon } from "../../icon/Icon";
15
+ export var Expand = function (_a) {
16
+ var currentExpand = _a.currentExpand, item = _a.item, className = _a.className, _b = _a.showArrow, showArrow = _b === void 0 ? true : _b, onChange = _a.onChange;
17
+ var _c = useState(false), active = _c[0], setActive = _c[1];
18
+ useEffect(function () {
19
+ if (item && currentExpand) {
20
+ if (currentExpand.id === item.id) {
21
+ if (!active) {
22
+ setActive(true);
23
+ }
24
+ }
25
+ else {
26
+ setActive(false);
27
+ }
28
+ }
29
+ else {
30
+ setActive(false);
31
+ }
32
+ }, [currentExpand, setActive, item]);
33
+ var handleChange = useCallback(function (e) {
34
+ e.stopPropagation();
35
+ if (onChange) {
36
+ onChange(item);
37
+ }
38
+ }, [onChange, item]);
39
+ return (_jsxs("div", __assign({ onClick: handleChange, className: "expand ".concat(active ? "expand--active" : "", " ").concat(className !== null && className !== void 0 ? className : "") }, { children: [_jsx("div", __assign({ className: "expand-header" }, { children: _jsx("div", __assign({ className: "expand-header-content" }, { children: _jsxs("div", __assign({ className: "expand-header-content-default" }, { children: [active && showArrow && (_jsx(Icon, { classIcon: "bi bi-chevron-down mr-2" })), !active && showArrow && (_jsx(Icon, { classIcon: "bi bi-chevron-right mr-2" })), _jsx("span", __assign({ className: "flex-1 expand-header-title-left" }, { children: item.title })), item.description && (_jsx("span", __assign({ className: "expand-header-title-right" }, { children: item.description })))] })) })) })), _jsxs("div", __assign({ className: "expand-body" }, { children: [_jsx("div", { children: item.headerContent }), item.content] })), item.footer && _jsx("div", __assign({ className: "expand-footer" }, { children: item.footer }))] })));
40
+ };
@@ -0,0 +1,28 @@
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 } from "react";
14
+ import "./filAriane.css";
15
+ export var FilAriane = function (_a) {
16
+ var filArianes = _a.filArianes, onClick = _a.onClick, currentFil = _a.currentFil, title = _a.title;
17
+ var handleClick = useCallback(function (e, fil) {
18
+ if (!(fil === null || fil === void 0 ? void 0 : fil.url)) {
19
+ e.preventDefault();
20
+ }
21
+ if (onClick) {
22
+ onClick(fil);
23
+ }
24
+ }, [onClick]);
25
+ return (_jsxs("div", __assign({ className: "filArianes" }, { children: [title && (_jsxs("small", __assign({ className: "filAriane font-weight-bold text-uppercase" }, { children: [title, " ", _jsx("i", { className: "filAriane-chevron bi bi-caret-right-fill" })] }))), filArianes === null || filArianes === void 0 ? void 0 : filArianes.map(function (filAriane, index) {
26
+ return (_jsxs("div", __assign({ className: "filAriane ".concat(filAriane.id === currentFil ? "filAriane--active" : "") }, { children: [_jsx("a", __assign({ href: filAriane.url || "#", onClick: function (e) { return handleClick(e, filAriane); } }, { children: filAriane.title })), !filAriane.isLast && (_jsx("i", { className: "filAriane-chevron bi bi-caret-right-fill" }))] }), index));
27
+ })] })));
28
+ };
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FilAriane } from "./FilAriane";
3
+ export var FilArianeView = function () {
4
+ var filArianes = [
5
+ {
6
+ id: 1,
7
+ title: "Home",
8
+ url: "/",
9
+ isCurrent: false,
10
+ isLast: false,
11
+ },
12
+ {
13
+ id: 2,
14
+ title: "Page",
15
+ url: "/page",
16
+ isCurrent: false,
17
+ isLast: false,
18
+ },
19
+ {
20
+ id: 3,
21
+ title: "Test",
22
+ url: "/page",
23
+ isCurrent: true,
24
+ isLast: true,
25
+ },
26
+ ];
27
+ return _jsx(FilAriane, { title: "test", filArianes: filArianes });
28
+ };
@@ -0,0 +1 @@
1
+ export {};