kelt-ui-kit-react 2.0.3 → 2.0.5

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 (127) hide show
  1. package/README.md +26 -0
  2. package/dist/addressSearch/AddressSearch.d.ts +20 -0
  3. package/dist/addressSearch/AddressSearch.view.d.ts +1 -0
  4. package/dist/badge/Badge.d.ts +1 -3
  5. package/dist/button/Button.d.ts +1 -1
  6. package/dist/button/button.interface.d.ts +2 -1
  7. package/dist/card/Card.d.ts +4 -1
  8. package/dist/dataTable/DataTable.d.ts +14 -17
  9. package/dist/dataTable/dataTable.interface.d.ts +19 -24
  10. package/dist/dataTable/dataTableActions/DataTableAction.d.ts +5 -3
  11. package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +7 -13
  12. package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +3 -1
  13. package/dist/dataTable/dataTableRow/DataTableRow.d.ts +6 -5
  14. package/dist/expands/Expands.d.ts +2 -0
  15. package/dist/expands/expand/expand.d.ts +4 -2
  16. package/dist/form/Form.d.ts +10 -2
  17. package/dist/form/form.enum.d.ts +3 -2
  18. package/dist/form/form.interface.d.ts +22 -3
  19. package/dist/form/input/Input.d.ts +0 -3
  20. package/dist/form/inputNumber/InputNumber.d.ts +2 -0
  21. package/dist/geocoding/GeocodingService.d.ts +13 -0
  22. package/dist/geocoding/geocoding.interface.d.ts +20 -0
  23. package/dist/grid/Grid.d.ts +5 -2
  24. package/dist/grid/col/Col.d.ts +3 -6
  25. package/dist/grid/col/colStyled/ColStyled.d.ts +8 -5
  26. package/dist/grid/grid.interface.d.ts +20 -5
  27. package/dist/grid/row/Row.d.ts +7 -0
  28. package/dist/header/Header.d.ts +1 -1
  29. package/dist/header/header.interface.d.ts +2 -1
  30. package/dist/icon/Icon.d.ts +1 -1
  31. package/dist/icon/icon.interface.d.ts +0 -1
  32. package/dist/index.d.ts +5 -1
  33. package/dist/index.js +3582 -3484
  34. package/dist/menus/menu/Menu.d.ts +1 -0
  35. package/dist/select/Select.d.ts +2 -1
  36. package/dist/style.css +1 -1
  37. package/dist/tabs/Tabs.d.ts +1 -2
  38. package/dist/toaster/store/useToasterStore.d.ts +1 -0
  39. package/index.html +1 -2
  40. package/package.json +1 -1
  41. package/src/App.menu.tsx +8 -0
  42. package/src/addressSearch/AddressSearch.tsx +246 -0
  43. package/src/addressSearch/AddressSearch.view.tsx +52 -0
  44. package/src/addressSearch/addressSearch.css +133 -0
  45. package/src/badge/Badge.tsx +1 -9
  46. package/src/badge/badge.css +0 -4
  47. package/src/button/Button.tsx +3 -1
  48. package/src/button/button.css +2 -2
  49. package/src/button/button.interface.tsx +2 -1
  50. package/src/card/Card.tsx +37 -11
  51. package/src/card/card.css +7 -28
  52. package/src/card/cardAction/CardAction.tsx +4 -4
  53. package/src/damier/Damier.tsx +16 -7
  54. package/src/damier/damier.css +11 -4
  55. package/src/dataTable/DataTable.tsx +542 -685
  56. package/src/dataTable/DataTable.view.tsx +24 -48
  57. package/src/dataTable/dataTable.css +159 -134
  58. package/src/dataTable/dataTable.interface.ts +19 -25
  59. package/src/dataTable/dataTableActions/DataTableAction.tsx +25 -14
  60. package/src/dataTable/dataTableColumn/DataTableColumn.tsx +14 -64
  61. package/src/dataTable/dataTableLoading/DataTableLoading.tsx +15 -4
  62. package/src/dataTable/dataTableRow/DataTableRow.tsx +180 -64
  63. package/src/expands/Expands.tsx +20 -2
  64. package/src/expands/expand/expand.tsx +128 -5
  65. package/src/expands/expands.css +8 -3
  66. package/src/form/Form.tsx +294 -99
  67. package/src/form/Form.view.tsx +9 -1
  68. package/src/form/form.css +64 -1
  69. package/src/form/form.enum.ts +2 -1
  70. package/src/form/form.interface.tsx +31 -3
  71. package/src/form/input/Input.tsx +7 -61
  72. package/src/form/input/input.css +1 -19
  73. package/src/form/inputNumber/InputNumber.tsx +11 -6
  74. package/src/form/inputPrice/InputPrice.tsx +4 -2
  75. package/src/geocoding/GeocodingService.ts +89 -0
  76. package/src/geocoding/geocoding.interface.ts +25 -0
  77. package/src/grid/Grid.tsx +34 -21
  78. package/src/grid/col/Col.tsx +24 -15
  79. package/src/grid/col/col.css +3 -0
  80. package/src/grid/col/colStyled/ColStyled.tsx +59 -41
  81. package/src/grid/container/container.css +2 -2
  82. package/src/grid/grid.interface.tsx +25 -5
  83. package/src/grid/row/Row.tsx +49 -12
  84. package/src/grid/row/row.css +11 -3
  85. package/src/header/Header.tsx +4 -2
  86. package/src/header/header.css +17 -0
  87. package/src/header/header.interface.tsx +2 -1
  88. package/src/icon/Icon.tsx +2 -6
  89. package/src/icon/icon.interface.tsx +0 -1
  90. package/src/index.css +58 -12
  91. package/src/index.ts +12 -2
  92. package/src/menus/Menus.tsx +1 -0
  93. package/src/menus/menu/Menu.tsx +2 -1
  94. package/src/select/Select.tsx +5 -3
  95. package/src/sidebar/Sidebar.tsx +107 -5
  96. package/src/sidebar/sidebar.css +18 -1
  97. package/src/tabs/Tabs.tsx +1 -20
  98. package/src/tabs/tabs.css +9 -3
  99. package/src/toaster/Toaster.tsx +7 -2
  100. package/src/toaster/Toaster.view.tsx +1 -0
  101. package/src/toaster/store/useToasterStore.tsx +2 -0
  102. package/src/toaster/toaster.css +7 -2
  103. package/dist/_core/type/generiqueType.d.ts +0 -4
  104. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +0 -10
  105. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +0 -9
  106. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +0 -9
  107. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +0 -13
  108. package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +0 -9
  109. package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +0 -11
  110. package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +0 -7
  111. package/dist/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.d.ts +0 -12
  112. package/dist/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.d.ts +0 -11
  113. package/package/package.json +0 -56
  114. package/package/src/sidebar/Sidebar.tsx +0 -208
  115. package/package/src/sidebar/sidebar.css +0 -104
  116. package/src/_core/type/generiqueType.tsx +0 -4
  117. package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +0 -36
  118. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
  119. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +0 -39
  120. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +0 -80
  121. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +0 -89
  122. package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +0 -37
  123. package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +0 -42
  124. package/src/dataTable/dataTableFilters/DataTableFilters.tsx +0 -91
  125. package/src/dataTable/dataTableFilters/dataTableFilters.css +0 -16
  126. package/src/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.tsx +0 -80
  127. package/src/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.tsx +0 -123
@@ -1,91 +0,0 @@
1
- import { Badge } from "../../badge/Badge";
2
- import { Icon } from "../../icon/Icon";
3
- import {
4
- DataTableDateRangeFilterValue,
5
- DataTableFilterState,
6
- } from "../DataTable";
7
- import "./dataTableFilters.css";
8
- export type DataTableFiltersProps = {
9
- currentFilters: DataTableFilterState;
10
- setCurrentFilters: React.Dispatch<React.SetStateAction<DataTableFilterState>>;
11
- };
12
- export const DataTableFilters = ({
13
- currentFilters,
14
- setCurrentFilters,
15
- }: DataTableFiltersProps) => {
16
- const isDateRangeFilterValue = (
17
- value: DataTableFilterState[string],
18
- ): value is DataTableDateRangeFilterValue => {
19
- return (
20
- typeof value === "object" &&
21
- value !== null &&
22
- "startDate" in value &&
23
- "endDate" in value
24
- );
25
- };
26
-
27
- const getDisplayValue = (value: DataTableFilterState[string]) => {
28
- if (isDateRangeFilterValue(value)) {
29
- if (value.startDate && value.endDate) {
30
- return `${value.startDate} - ${value.endDate}`;
31
- }
32
-
33
- if (value.startDate) {
34
- return `a partir de ${value.startDate}`;
35
- }
36
-
37
- if (value.endDate) {
38
- return `jusqu'au ${value.endDate}`;
39
- }
40
-
41
- return "";
42
- }
43
-
44
- return String(value ?? "");
45
- };
46
-
47
- const generateColor = (str: string): string => {
48
- let hash = 0;
49
- for (let i = 0; i < str.length; i++) {
50
- hash = str.charCodeAt(i) + ((hash << 5) - hash);
51
- }
52
-
53
- const hue = hash % 360;
54
- return `hsl(${hue}, 80%, 30%)`;
55
- };
56
-
57
- const removeFilters = (key: string) => {
58
- setCurrentFilters((prev: any) => {
59
- const { [key]: _removed, ...rest } = prev;
60
- return rest;
61
- });
62
- };
63
- if (!currentFilters || Object.keys(currentFilters).length === 0) {
64
- return null;
65
- }
66
-
67
- return (
68
- <div className="badge-filters">
69
- {Object.keys(currentFilters).map((key) => {
70
- const value = getDisplayValue(currentFilters[key]);
71
- const displayValue =
72
- value.length > 20 ? value.substring(0, 20) + "..." : value;
73
-
74
- return (
75
- <Badge
76
- onRemove={() => removeFilters(key)}
77
- className="mr-2"
78
- title={`${key} : ${displayValue}`}
79
- color={generateColor(key)}
80
- key={key}
81
- />
82
- );
83
- })}
84
-
85
- <Icon
86
- classIcon="bi-x badge-filters-clear"
87
- onClick={() => setCurrentFilters({})}
88
- />
89
- </div>
90
- );
91
- };
@@ -1,16 +0,0 @@
1
- .badge-filters {
2
- border-radius: 4px;
3
- padding: 0.25rem;
4
- border: 1px solid #dedede;
5
- width: fit-content;
6
- display: flex;
7
- align-items: center;
8
- position: sticky;
9
- left: 0;
10
- .badge-filters-clear {
11
- padding: 0.05rem;
12
- border: 1px solid #dedede;
13
- border-radius: 4px;
14
- cursor: pointer;
15
- }
16
- }
@@ -1,80 +0,0 @@
1
- import { useRef, useState } from "react";
2
- import { Button } from "../../../button/Button";
3
- import { OverlayPanel } from "../../../overlayPanel/OverlayPanel";
4
- import { DataTableColumnsInterface } from "../../dataTable.interface";
5
- import { DataTableRowValue } from "../dataTableRowValue/DataTableRowValue";
6
-
7
- type DataTableRowOverlayProps = {
8
- row: any;
9
- column: DataTableColumnsInterface<any>;
10
- value: string;
11
- refRow: React.RefObject<HTMLTableCellElement>;
12
- onClose?: (close: boolean) => void;
13
- onEditColumnByOverlay?: (newRow: any) => void;
14
- };
15
- export const DataTableRowOverlay = ({
16
- row,
17
- refRow,
18
- value,
19
- onClose,
20
- column,
21
- onEditColumnByOverlay,
22
- }: DataTableRowOverlayProps) => {
23
- const [inputValue, setInputValue] = useState(value);
24
- const formRef = useRef<HTMLFormElement>(null);
25
-
26
- const onChange = (newValue: any) => {
27
- setInputValue(newValue);
28
- };
29
-
30
- const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {
31
- e.preventDefault();
32
- if (onEditColumnByOverlay) {
33
- const newRow = { ...row, [column.id]: inputValue };
34
- onEditColumnByOverlay(newRow);
35
- }
36
- if (onClose) {
37
- onClose(true);
38
- }
39
- };
40
-
41
- const handleButtonClick = (
42
- e: React.MouseEvent<HTMLButtonElement, MouseEvent>,
43
- ) => {
44
- e.preventDefault();
45
- formRef.current?.requestSubmit();
46
- };
47
-
48
- const handleClose = () => {
49
- if (onClose) {
50
- onClose(true);
51
- }
52
- };
53
-
54
- return (
55
- <OverlayPanel
56
- show={true}
57
- position="bottomLeft"
58
- closeOverlay={handleClose}
59
- referenceElement={refRow?.current ?? undefined}
60
- children={
61
- <div className="d-flex flex-column pt-3">
62
- <form onSubmit={onSubmit} ref={formRef}>
63
- <DataTableRowValue
64
- editable={true}
65
- column={column}
66
- value={inputValue}
67
- row={row}
68
- onChange={onChange}
69
- />
70
- {onEditColumnByOverlay && (
71
- <div className="d-flex justify-content-end mt-2">
72
- <Button title="Valider" onClick={handleButtonClick} />
73
- </div>
74
- )}
75
- </form>
76
- </div>
77
- }
78
- />
79
- );
80
- };
@@ -1,123 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { Select } from "../../../select/Select";
3
- import { DataTableColumnsInterface } from "../../dataTable.interface";
4
-
5
- type DataTableRowValueProps = {
6
- column: DataTableColumnsInterface<any>;
7
- value: any;
8
- row: any;
9
- editable?: boolean;
10
- onChange?: (value: any) => void;
11
- };
12
- export const DataTableRowValue = ({
13
- column,
14
- row,
15
- value,
16
- editable,
17
- onChange,
18
- }: DataTableRowValueProps) => {
19
- const [draftValue, setDraftValue] = useState(value ?? "");
20
- const editOnEnter = column.onEditTrigger === "enter";
21
- const skipNextBlurCommit = useRef(false);
22
- const inputRef = useRef<HTMLInputElement>(null);
23
- const wasEditableRef = useRef(false);
24
-
25
- const selectInputText = () => {
26
- try {
27
- inputRef.current?.select();
28
- } catch {
29
- // Some input types (e.g. date) may not support text selection.
30
- }
31
- };
32
-
33
- const commitValue = (nextValue: any) => {
34
- if (column.onEdit) {
35
- column.onEdit(nextValue, row);
36
- }
37
- };
38
-
39
- useEffect(() => {
40
- setDraftValue(value ?? "");
41
- }, [value]);
42
-
43
- useEffect(() => {
44
- if (editable && !wasEditableRef.current) {
45
- inputRef.current?.focus();
46
- selectInputText();
47
- }
48
- wasEditableRef.current = !!editable;
49
- }, [editable]);
50
-
51
- return (
52
- <>
53
- {editable ? (
54
- column.type === "select" ? (
55
- <Select
56
- options={column.options ?? []}
57
- value={value}
58
- onChange={(e) => {
59
- if (onChange) {
60
- onChange(e);
61
- }
62
- if (column.onChange) {
63
- column.onChange(e, row);
64
- }
65
- if (column.onEdit) {
66
- column.onEdit(e, row);
67
- }
68
- }}
69
- />
70
- ) : (
71
- <input
72
- ref={inputRef}
73
- type={column.type}
74
- value={editOnEnter ? draftValue : value}
75
- step="0.01"
76
- style={{
77
- textAlign: column.alignText
78
- ? column.alignText
79
- : column.align || "left",
80
- }}
81
- onFocus={selectInputText}
82
- onChange={(e) => {
83
- const nextValue = e.target.value;
84
- if (onChange) {
85
- onChange(nextValue);
86
- }
87
- if (column.onChange) {
88
- column.onChange(nextValue, row);
89
- }
90
- if (editOnEnter) {
91
- setDraftValue(nextValue);
92
- return;
93
- }
94
- commitValue(nextValue);
95
- }}
96
- onKeyDown={(e) => {
97
- if (editOnEnter && e.key === "Enter") {
98
- skipNextBlurCommit.current = true;
99
- commitValue(draftValue);
100
- }
101
- }}
102
- onBlur={() => {
103
- if (!editOnEnter) {
104
- return;
105
- }
106
- if (skipNextBlurCommit.current) {
107
- skipNextBlurCommit.current = false;
108
- return;
109
- }
110
- if (draftValue !== value) {
111
- commitValue(draftValue);
112
- }
113
- }}
114
- />
115
- )
116
- ) : column.format ? (
117
- column.format(value)
118
- ) : (
119
- value
120
- )}
121
- </>
122
- );
123
- };