kelt-ui-kit-react 2.0.3 → 2.0.4
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/README.md +26 -0
- package/dist/addressSearch/AddressSearch.d.ts +20 -0
- package/dist/addressSearch/AddressSearch.view.d.ts +1 -0
- package/dist/badge/Badge.d.ts +1 -3
- package/dist/button/Button.d.ts +1 -1
- package/dist/button/button.interface.d.ts +2 -1
- package/dist/card/Card.d.ts +4 -1
- package/dist/dataTable/DataTable.d.ts +14 -17
- package/dist/dataTable/dataTable.interface.d.ts +19 -24
- package/dist/dataTable/dataTableActions/DataTableAction.d.ts +5 -3
- package/dist/dataTable/dataTableColumn/DataTableColumn.d.ts +7 -13
- package/dist/dataTable/dataTableLoading/DataTableLoading.d.ts +3 -1
- package/dist/dataTable/dataTableRow/DataTableRow.d.ts +6 -5
- package/dist/expands/Expands.d.ts +1 -0
- package/dist/expands/expand/expand.d.ts +3 -2
- package/dist/form/Form.d.ts +10 -2
- package/dist/form/form.enum.d.ts +3 -2
- package/dist/form/form.interface.d.ts +22 -3
- package/dist/form/input/Input.d.ts +0 -3
- package/dist/form/inputNumber/InputNumber.d.ts +2 -0
- package/dist/geocoding/GeocodingService.d.ts +13 -0
- package/dist/geocoding/geocoding.interface.d.ts +20 -0
- package/dist/grid/Grid.d.ts +5 -2
- package/dist/grid/col/Col.d.ts +3 -6
- package/dist/grid/col/colStyled/ColStyled.d.ts +8 -5
- package/dist/grid/grid.interface.d.ts +20 -5
- package/dist/grid/row/Row.d.ts +7 -0
- package/dist/header/Header.d.ts +1 -1
- package/dist/header/header.interface.d.ts +2 -1
- package/dist/icon/Icon.d.ts +1 -1
- package/dist/icon/icon.interface.d.ts +0 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3724 -3628
- package/dist/menus/menu/Menu.d.ts +1 -0
- package/dist/select/Select.d.ts +2 -1
- package/dist/style.css +1 -1
- package/dist/tabs/Tabs.d.ts +1 -2
- package/dist/toaster/store/useToasterStore.d.ts +1 -0
- package/index.html +1 -2
- package/package.json +1 -1
- package/src/App.menu.tsx +8 -0
- package/src/addressSearch/AddressSearch.tsx +246 -0
- package/src/addressSearch/AddressSearch.view.tsx +52 -0
- package/src/addressSearch/addressSearch.css +133 -0
- package/src/badge/Badge.tsx +1 -9
- package/src/badge/badge.css +0 -4
- package/src/button/Button.tsx +3 -1
- package/src/button/button.css +2 -2
- package/src/button/button.interface.tsx +2 -1
- package/src/card/Card.tsx +37 -11
- package/src/card/card.css +7 -28
- package/src/card/cardAction/CardAction.tsx +4 -4
- package/src/damier/Damier.tsx +16 -7
- package/src/damier/damier.css +11 -4
- package/src/dataTable/DataTable.tsx +542 -685
- package/src/dataTable/DataTable.view.tsx +24 -48
- package/src/dataTable/dataTable.css +159 -134
- package/src/dataTable/dataTable.interface.ts +19 -25
- package/src/dataTable/dataTableActions/DataTableAction.tsx +25 -14
- package/src/dataTable/dataTableColumn/DataTableColumn.tsx +14 -64
- package/src/dataTable/dataTableLoading/DataTableLoading.tsx +15 -4
- package/src/dataTable/dataTableRow/DataTableRow.tsx +180 -64
- package/src/expands/Expands.tsx +18 -2
- package/src/expands/expand/expand.tsx +128 -5
- package/src/expands/expands.css +8 -3
- package/src/form/Form.tsx +294 -99
- package/src/form/Form.view.tsx +9 -1
- package/src/form/form.css +64 -1
- package/src/form/form.enum.ts +2 -1
- package/src/form/form.interface.tsx +31 -3
- package/src/form/input/Input.tsx +7 -61
- package/src/form/input/input.css +1 -19
- package/src/form/inputNumber/InputNumber.tsx +11 -6
- package/src/form/inputPrice/InputPrice.tsx +4 -2
- package/src/geocoding/GeocodingService.ts +89 -0
- package/src/geocoding/geocoding.interface.ts +25 -0
- package/src/grid/Grid.tsx +34 -21
- package/src/grid/col/Col.tsx +24 -15
- package/src/grid/col/col.css +3 -0
- package/src/grid/col/colStyled/ColStyled.tsx +59 -41
- package/src/grid/container/container.css +2 -2
- package/src/grid/grid.interface.tsx +25 -5
- package/src/grid/row/Row.tsx +49 -12
- package/src/grid/row/row.css +11 -3
- package/src/header/Header.tsx +4 -2
- package/src/header/header.css +17 -0
- package/src/header/header.interface.tsx +2 -1
- package/src/icon/Icon.tsx +2 -6
- package/src/icon/icon.interface.tsx +0 -1
- package/src/index.css +58 -12
- package/src/index.ts +12 -2
- package/src/menus/Menus.tsx +1 -0
- package/src/menus/menu/Menu.tsx +2 -1
- package/src/select/Select.tsx +5 -3
- package/src/sidebar/Sidebar.tsx +107 -5
- package/src/sidebar/sidebar.css +18 -1
- package/src/tabs/Tabs.tsx +1 -20
- package/src/tabs/tabs.css +9 -3
- package/src/toaster/Toaster.tsx +7 -2
- package/src/toaster/Toaster.view.tsx +1 -0
- package/src/toaster/store/useToasterStore.tsx +2 -0
- package/src/toaster/toaster.css +7 -2
- package/dist/_core/type/generiqueType.d.ts +0 -4
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.d.ts +0 -10
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.d.ts +0 -9
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.d.ts +0 -9
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.d.ts +0 -13
- package/dist/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.d.ts +0 -9
- package/dist/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.d.ts +0 -11
- package/dist/dataTable/dataTableFilters/DataTableFilters.d.ts +0 -7
- package/dist/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.d.ts +0 -12
- package/dist/dataTable/dataTableRow/dataTableRowValue/DataTableRowValue.d.ts +0 -11
- package/package/package.json +0 -56
- package/package/src/sidebar/Sidebar.tsx +0 -208
- package/package/src/sidebar/sidebar.css +0 -104
- package/src/_core/type/generiqueType.tsx +0 -4
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx +0 -36
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilter.css +0 -0
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx +0 -39
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx +0 -80
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx +0 -89
- package/src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx +0 -37
- package/src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx +0 -42
- package/src/dataTable/dataTableFilters/DataTableFilters.tsx +0 -91
- package/src/dataTable/dataTableFilters/dataTableFilters.css +0 -16
- package/src/dataTable/dataTableRow/dataTableRowOverlay/DataTableRowOverlay.tsx +0 -80
- 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
|
-
};
|