@addev-be/ui 0.2.2 → 0.2.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.
- package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
- package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
- package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
- package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
- package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
- package/dist/components/data/AdvancedRequestDataGrid/types.js +2 -0
- package/dist/components/data/DataGrid/DataGridCell.js +2 -2
- package/dist/components/data/DataGrid/DataGridFooter.js +2 -2
- package/dist/components/data/DataGrid/DataGridHeader.js +62 -12
- package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +1 -1
- package/dist/components/data/DataGrid/VirtualScroller.js +1 -6
- package/dist/components/data/DataGrid/helpers/columns.d.ts +12 -13
- package/dist/components/data/DataGrid/helpers/columns.js +17 -68
- package/dist/components/data/DataGrid/helpers/filters.d.ts +5 -5
- package/dist/components/data/DataGrid/helpers/filters.js +15 -18
- package/dist/components/data/DataGrid/helpers/index.d.ts +1 -2
- package/dist/components/data/DataGrid/helpers/index.js +1 -2
- package/dist/components/data/DataGrid/hooks/index.d.ts +2 -2
- package/dist/components/data/DataGrid/hooks/index.js +4 -4
- package/dist/components/data/DataGrid/hooks/useDataGrid.js +26 -4
- package/dist/components/data/DataGrid/index.js +12 -16
- package/dist/components/data/DataGrid/styles.d.ts +3 -1
- package/dist/components/data/DataGrid/styles.js +3 -3
- package/dist/components/data/DataGrid/types.d.ts +33 -45
- package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +16 -0
- package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +114 -0
- package/dist/components/data/SqlRequestDataGrid/helpers/index.d.ts +2 -0
- package/dist/components/data/SqlRequestDataGrid/helpers/index.js +18 -0
- package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.d.ts +3 -0
- package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.js +18 -0
- package/dist/components/data/SqlRequestDataGrid/index.d.ts +2 -0
- package/dist/components/data/SqlRequestDataGrid/index.js +208 -0
- package/dist/components/data/SqlRequestDataGrid/types.d.ts +20 -0
- package/dist/components/data/SqlRequestDataGrid/types.js +2 -0
- package/dist/components/data/index.d.ts +5 -2
- package/dist/components/data/index.js +5 -2
- package/dist/components/forms/IconButton.js +1 -1
- package/dist/components/forms/IndeterminateCheckbox.js +1 -1
- package/dist/components/layout/Modal/index.js +1 -1
- package/dist/providers/PortalsProvider/index.d.ts +1 -1
- package/dist/providers/PortalsProvider/index.js +1 -1
- package/dist/services/HttpService.d.ts +10 -0
- package/dist/services/HttpService.js +117 -0
- package/dist/services/advancedRequests.d.ts +3 -3
- package/dist/services/advancedRequests.js +2 -2
- package/dist/services/hooks.d.ts +2 -1
- package/dist/services/hooks.js +10 -3
- package/dist/services/sqlRequests.d.ts +40 -0
- package/dist/services/sqlRequests.js +10 -0
- package/package.json +1 -1
- package/src/components/data/DataGrid/DataGridCell.tsx +3 -5
- package/src/components/data/DataGrid/DataGridHeader.tsx +3 -5
- package/src/components/data/DataGrid/DataGridHeaderCell.tsx +5 -4
- package/src/components/data/DataGrid/helpers/columns.tsx +1 -4
- package/src/components/data/DataGrid/hooks/useDataGrid.tsx +4 -1
- package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +0 -1
- package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +0 -1
- package/src/components/data/DataGrid/index.tsx +5 -6
- package/src/components/data/DataGrid/styles.ts +36 -9
- package/src/components/data/DataGrid/types.ts +10 -3
- package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +22 -4
- package/src/components/data/SqlRequestDataGrid/index.tsx +58 -27
- package/src/components/data/SqlRequestDataGrid/types.ts +1 -0
- package/src/components/data/index.ts +2 -0
- package/src/helpers/dates.ts +9 -0
- package/src/services/sqlRequests.ts +1 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -35,33 +35,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
35
35
|
exports.DataGrid = void 0;
|
|
36
36
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
37
37
|
var styles = __importStar(require("./styles"));
|
|
38
|
-
var react_1 = require("react");
|
|
39
38
|
var DataGridCell_1 = require("./DataGridCell");
|
|
40
39
|
var DataGridFooter_1 = require("./DataGridFooter");
|
|
41
40
|
var DataGridHeader_1 = require("./DataGridHeader");
|
|
42
41
|
var VirtualScroller_1 = require("./VirtualScroller");
|
|
42
|
+
var react_1 = require("react");
|
|
43
43
|
var hooks_1 = require("./hooks");
|
|
44
44
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
45
45
|
/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
|
|
46
46
|
var DataGrid = function (props) {
|
|
47
47
|
var className = props.className,
|
|
48
48
|
// onRowDoubleClick,
|
|
49
|
-
|
|
49
|
+
onVisibleRowsChange = props.onVisibleRowsChange;
|
|
50
50
|
var _a = (0, hooks_1.useDataGrid)(props), contextProps = _a[0], DataGridContext = _a[1];
|
|
51
|
-
var
|
|
51
|
+
var selectedKeys = contextProps.selectedKeys, setSelectedKeys = contextProps.setSelectedKeys, columns = contextProps.columns, visibleColumns = contextProps.visibleColumns, _b = contextProps.rowHeight, rowHeight = _b === void 0 ? 32 : _b, _c = contextProps.headerRowHeight, headerRowHeight = _c === void 0 ? 40 : _c, scrollableRef = contextProps.scrollableRef, onScroll = contextProps.onScroll, rowKeyGetter = contextProps.rowKeyGetter;
|
|
52
52
|
var hasFooter = Object.values(columns).some(function (col) { return col.footer; });
|
|
53
53
|
var setRowSelection = (0, react_1.useCallback)(function (row, selected) {
|
|
54
|
+
var key = rowKeyGetter(row);
|
|
54
55
|
if (selected) {
|
|
55
|
-
if (!
|
|
56
|
-
|
|
56
|
+
if (!selectedKeys.includes(key))
|
|
57
|
+
setSelectedKeys(__spreadArray(__spreadArray([], selectedKeys, true), [key], false));
|
|
57
58
|
}
|
|
58
59
|
else {
|
|
59
|
-
|
|
60
|
+
setSelectedKeys(selectedKeys.filter(function (p) { return p !== key; }));
|
|
60
61
|
}
|
|
61
|
-
}, [
|
|
62
|
-
(0, react_1.useEffect)(function () {
|
|
63
|
-
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(selectedRows);
|
|
64
|
-
}, [onSelectionChange, selectedRows]);
|
|
62
|
+
}, [rowKeyGetter, selectedKeys, setSelectedKeys]);
|
|
65
63
|
var rowTemplate = (0, react_1.useCallback)(function (row, rowIndex) {
|
|
66
64
|
var _a, _b;
|
|
67
65
|
var _c = (_b = (_a = props.rowClassNameGetter) === null || _a === void 0 ? void 0 : _a.call(props, row)) !== null && _b !== void 0 ? _b : {
|
|
@@ -71,18 +69,16 @@ var DataGrid = function (props) {
|
|
|
71
69
|
if (!row) {
|
|
72
70
|
return ((0, jsx_runtime_1.jsxs)(styles.DataGridRow, { children: [!!props.selectable && ((0, jsx_runtime_1.jsx)(styles.LoadingCell, { className: "animate-pulse", children: (0, jsx_runtime_1.jsx)("div", {}) })), visibleColumns.map(function (_, index) { return ((0, jsx_runtime_1.jsx)(styles.LoadingCell, { className: "animate-pulse", children: (0, jsx_runtime_1.jsx)("div", {}) }, "loading-".concat(rowIndex, "-").concat(index))); })] }, "loading-row-".concat(rowIndex)));
|
|
73
71
|
}
|
|
74
|
-
var key =
|
|
75
|
-
return ((0, jsx_runtime_1.jsxs)(styles.DataGridRow, { children: [!!props.selectable && ((0, jsx_runtime_1.jsx)(styles.SelectionCell, { children: (0, jsx_runtime_1.jsx)("input", { type: "checkbox",
|
|
76
|
-
// className="h-4 w-4 rounded border-gray-300 text-green-600 focus:ring-green-600"
|
|
77
|
-
value: key, checked: selectedRows.includes(row), onChange: function (e) { return setRowSelection(row, e.target.checked); } }) }, "__select_checkbox__")), visibleColumns.map(function (_a, index) {
|
|
72
|
+
var key = rowKeyGetter(row);
|
|
73
|
+
return ((0, jsx_runtime_1.jsxs)(styles.DataGridRow, { children: [!!props.selectable && ((0, jsx_runtime_1.jsx)(styles.SelectionCell, { children: (0, jsx_runtime_1.jsx)("input", { type: "checkbox", value: key, checked: selectedKeys.includes(key), onChange: function (e) { return setRowSelection(row, e.target.checked); } }) }, "__select_checkbox__")), visibleColumns.map(function (_a, index) {
|
|
78
74
|
var key = _a[0], col = _a[1];
|
|
79
75
|
return ((0, jsx_runtime_1.jsx)(DataGridCell_1.DataGridCell, { className: className, style: style, row: row, rowIndex: rowIndex, column: col, columnIndex: index, context: DataGridContext, columnKey: key }, "loading-".concat(rowIndex, "-").concat(index)));
|
|
80
76
|
})] }, key));
|
|
81
77
|
}, [
|
|
82
78
|
DataGridContext,
|
|
83
79
|
props,
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
rowKeyGetter,
|
|
81
|
+
selectedKeys,
|
|
86
82
|
setRowSelection,
|
|
87
83
|
visibleColumns,
|
|
88
84
|
]);
|
|
@@ -43,7 +43,9 @@ export declare const DataGridRow: import("styled-components/dist/types").IStyled
|
|
|
43
43
|
export declare const LoadingCell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>, "ref"> & {
|
|
44
44
|
ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
45
45
|
}, never>> & string;
|
|
46
|
-
export declare const SelectionCell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never
|
|
46
|
+
export declare const SelectionCell: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>, "ref"> & {
|
|
47
|
+
ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
48
|
+
}, never>> & string;
|
|
47
49
|
export declare const ResizeBackdrop: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
48
50
|
ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
|
|
49
51
|
}>, never>, never>> & string;
|
|
@@ -93,7 +93,7 @@ exports.DataGridHeaderRow = styled_components_1.default.div.attrs(function (_a)
|
|
|
93
93
|
gridTemplateColumns: $gridTemplateColumns,
|
|
94
94
|
},
|
|
95
95
|
});
|
|
96
|
-
})(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n top: ", "px;\n\n ", "\n"], ["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n top: ", "px;\n\n ", "\n"])), function (_a) {
|
|
96
|
+
})(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n top: ", "px;\n align-items: center;\n\n ", "\n"], ["\n display: grid;\n grid-template-rows: ", ";\n z-index: 10;\n position: sticky;\n top: ", "px;\n align-items: center;\n\n ", "\n"])), function (_a) {
|
|
97
97
|
var _b = _a.$headerRowHeight, $headerRowHeight = _b === void 0 ? exports.DEFAULT_HEADER_ROW_HEIGHT : _b;
|
|
98
98
|
return "".concat($headerRowHeight, "px");
|
|
99
99
|
}, exports.TOOLBAR_HEIGHT, function (_a) {
|
|
@@ -104,9 +104,9 @@ exports.DataGridHeaderRow = styled_components_1.default.div.attrs(function (_a)
|
|
|
104
104
|
exports.DataGridHeaderRow.displayName = 'DataGridHeaderRow';
|
|
105
105
|
exports.DataGridRow = styled_components_1.default.div(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"])));
|
|
106
106
|
exports.DataGridRow.displayName = 'DataGridRow';
|
|
107
|
-
exports.LoadingCell = (0, styled_components_1.default)(exports.DataGridCell)(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n padding: var(--space-2);\n"], ["\n padding: var(--space-2);\n"])));
|
|
107
|
+
exports.LoadingCell = (0, styled_components_1.default)(exports.DataGridCell)(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n padding: var(--space-2);\n box-sizing: border-box;\n\n &.animate-pulse > div {\n background-color: var(--color-neutral-200);\n border-radius: var(--rounded-full);\n width: 100%;\n height: 100%;\n }\n"], ["\n padding: var(--space-2);\n box-sizing: border-box;\n\n &.animate-pulse > div {\n background-color: var(--color-neutral-200);\n border-radius: var(--rounded-full);\n width: 100%;\n height: 100%;\n }\n"])));
|
|
108
108
|
exports.LoadingCell.displayName = 'LoadingCell';
|
|
109
|
-
exports.SelectionCell = styled_components_1.default.
|
|
109
|
+
exports.SelectionCell = (0, styled_components_1.default)(exports.DataGridCell)(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n /* inline-flex items-center justify-center w-12 select-none text-center whitespace-nowrap */\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--space-6);\n padding: 0 var(--space-1);\n\n & > input[type='checkbox'] {\n height: var(--space-6);\n width: var(--space-6);\n border-radius: var(--rounded-sm);\n border: 1px solid var(--color-neutral-300);\n color: var(--color-sky-600);\n }\n"], ["\n /* inline-flex items-center justify-center w-12 select-none text-center whitespace-nowrap */\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--space-6);\n padding: 0 var(--space-1);\n\n & > input[type='checkbox'] {\n height: var(--space-6);\n width: var(--space-6);\n border-radius: var(--rounded-sm);\n border: 1px solid var(--color-neutral-300);\n color: var(--color-sky-600);\n }\n"])));
|
|
110
110
|
exports.SelectionCell.displayName = 'SelectionCell';
|
|
111
111
|
exports.ResizeBackdrop = styled_components_1.default.div.attrs({
|
|
112
112
|
className: 'ResizeBackdrop',
|
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
import * as t from 'io-ts';
|
|
2
2
|
import { CSSProperties, Context, Dispatch, MouseEvent, ReactNode, SetStateAction } from 'react';
|
|
3
|
-
import { FieldDTO } from '../../../services/advancedRequests';
|
|
4
3
|
import { SettingsContextProps } from '../../../providers/SettingsProvider';
|
|
5
4
|
import { ThemeColor } from '../../../providers/ThemeProvider/types';
|
|
6
|
-
export type
|
|
5
|
+
export type MysqlJsonObject = Record<string, string | number | null>;
|
|
6
|
+
export type DataGridColumn<R> = {
|
|
7
7
|
bodyClassName?: string;
|
|
8
8
|
className?: string;
|
|
9
9
|
editable?: boolean;
|
|
10
10
|
excelFormatter?: (value: any) => string;
|
|
11
11
|
excelValue?: (value: any) => string;
|
|
12
|
-
|
|
13
|
-
filter?: T extends undefined ? never : AnyDataGridFilter<R>;
|
|
12
|
+
filter?: DataGridFilter;
|
|
14
13
|
footer?: (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
|
|
15
14
|
footerClassName?: string;
|
|
16
|
-
getter?: (row: R) => string | number;
|
|
15
|
+
getter?: (row: R) => string | number | MysqlJsonObject;
|
|
17
16
|
headerClassName?: string;
|
|
18
17
|
name: string;
|
|
19
18
|
order?: number;
|
|
20
19
|
propertyName?: keyof R;
|
|
21
|
-
render?: (
|
|
20
|
+
render?: (row: R, column: DataGridColumn<R>) => ReactNode | string;
|
|
22
21
|
resizable?: boolean;
|
|
23
22
|
sortGetter?: (row: R) => string | number;
|
|
24
23
|
type?: 'text' | 'number' | 'date';
|
|
25
24
|
width?: number;
|
|
26
25
|
settingsContext?: Context<SettingsContextProps>;
|
|
27
26
|
};
|
|
28
|
-
export type DataGridColumns<R> = Record<string, DataGridColumn<R
|
|
29
|
-
export type DataGridFilters
|
|
27
|
+
export type DataGridColumns<R> = Record<string, DataGridColumn<R>>;
|
|
28
|
+
export type DataGridFilters = Record<string, DataGridFilter<DataGridFilterType>>;
|
|
30
29
|
export type DataGridProps<R> = {
|
|
31
30
|
name?: string;
|
|
32
31
|
className?: string;
|
|
@@ -36,8 +35,9 @@ export type DataGridProps<R> = {
|
|
|
36
35
|
selectable?: boolean;
|
|
37
36
|
editable?: boolean;
|
|
38
37
|
onRowDoubleClick?: (row: R, e: MouseEvent) => void;
|
|
39
|
-
onSelectionChange?: (
|
|
40
|
-
|
|
38
|
+
onSelectionChange?: (keys: string[]) => void;
|
|
39
|
+
getAllIds?: () => Promise<string[]>;
|
|
40
|
+
onFiltersChanged?: (filters: DataGridFilters) => void;
|
|
41
41
|
onSortsChanged?: (sorts: Record<string, DataGridSort>) => void;
|
|
42
42
|
onVisibleRowsChange?: (startIndex: number, length: number) => void;
|
|
43
43
|
onCellEdited?: (row: R, columnKey: string, value: any) => void;
|
|
@@ -49,7 +49,7 @@ export type DataGridProps<R> = {
|
|
|
49
49
|
rowHeight?: number;
|
|
50
50
|
filter?: boolean;
|
|
51
51
|
sort?: boolean;
|
|
52
|
-
filterValuesLoader?: (columnKey: string) => Promise<(string | number | null)[]>;
|
|
52
|
+
filterValuesLoader?: (columnKey: string) => Promise<(string | number | null | MysqlJsonObject)[]>;
|
|
53
53
|
loadCopyRows?: () => Promise<R[]>;
|
|
54
54
|
refresh?: () => void;
|
|
55
55
|
headerColor?: ThemeColor;
|
|
@@ -59,11 +59,12 @@ export type DataGridContextProps<R> = DataGridProps<R> & {
|
|
|
59
59
|
setEditingCell: Dispatch<SetStateAction<[number, number]>>;
|
|
60
60
|
sortedRows: R[];
|
|
61
61
|
selectedRows: R[];
|
|
62
|
-
|
|
62
|
+
selectedKeys: string[];
|
|
63
|
+
setSelectedKeys: (selection: string[]) => void;
|
|
63
64
|
sorts?: Record<string, DataGridSort>;
|
|
64
65
|
setSorts: (sorts: Record<string, DataGridSort>) => void;
|
|
65
|
-
filters?: DataGridFilters
|
|
66
|
-
setFilters: Dispatch<SetStateAction<DataGridFilters
|
|
66
|
+
filters?: DataGridFilters;
|
|
67
|
+
setFilters: Dispatch<SetStateAction<DataGridFilters>>;
|
|
67
68
|
visibleColumns: DataGridColumnKeyValuePair<R>[];
|
|
68
69
|
copyTable: (includeHeaders?: boolean, includeFooters?: boolean) => Promise<void>;
|
|
69
70
|
setColumnWidth: (key: string, width: number) => void;
|
|
@@ -75,6 +76,8 @@ export type DataGridContextProps<R> = DataGridProps<R> & {
|
|
|
75
76
|
onScroll: (e: React.UIEvent<HTMLDivElement>) => void;
|
|
76
77
|
index: number;
|
|
77
78
|
length: number;
|
|
79
|
+
rowKeyGetter: (row: R) => string;
|
|
80
|
+
gridTemplateColumns: string;
|
|
78
81
|
};
|
|
79
82
|
export type DataGridContext<R> = Context<DataGridContextProps<R>>;
|
|
80
83
|
export declare const dataGridSettingCodec: t.PartialC<{
|
|
@@ -94,7 +97,7 @@ export type DataGridSettings = t.TypeOf<typeof dataGridSettingsCodec>;
|
|
|
94
97
|
export type DataGridSettingsByName = t.TypeOf<typeof dataGridSettingsByNameCodec>;
|
|
95
98
|
export type DataGridSettingsTuple = [string, DataGridSetting];
|
|
96
99
|
export type DataGridSettingsArray = DataGridSettingsTuple[];
|
|
97
|
-
export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R
|
|
100
|
+
export type DataGridColumnKeyValuePair<R> = [string, DataGridColumn<R>];
|
|
98
101
|
export type DataGridCellProps<R> = {
|
|
99
102
|
row: R;
|
|
100
103
|
rowIndex: number;
|
|
@@ -114,42 +117,27 @@ export type DataGridHeaderCellProps<R> = {
|
|
|
114
117
|
isFilterOpen?: boolean;
|
|
115
118
|
};
|
|
116
119
|
export type DataGridSort = 'asc' | 'desc';
|
|
117
|
-
export type DataGridFilterType = 'text' | 'number';
|
|
118
|
-
export type DataGridFilterDataType<T extends DataGridFilterType> = T extends 'text' ? string : number;
|
|
119
120
|
export type DataGridFilterPredicate<T> = (valueToVerify: T) => boolean;
|
|
120
|
-
export type DataGridFilterPredicateBuilder<T> = (
|
|
121
|
-
export type
|
|
122
|
-
|
|
121
|
+
export type DataGridFilterPredicateBuilder<T> = (...filterValues: T[]) => DataGridFilterPredicate<T>;
|
|
122
|
+
export type DataGridFilterOperators<K extends string, T> = {
|
|
123
|
+
[key in K]: DataGridFilterPredicateBuilder<T>;
|
|
124
|
+
};
|
|
123
125
|
export type DataGridFilterPredicates = {
|
|
124
|
-
text:
|
|
125
|
-
|
|
126
|
-
notContains: DataGridFilterPredicateBuilder<string>;
|
|
127
|
-
equals: DataGridFilterPredicateBuilder<string>;
|
|
128
|
-
notEquals: DataGridFilterPredicateBuilder<string>;
|
|
129
|
-
startsWith: DataGridFilterPredicateBuilder<string>;
|
|
130
|
-
endsWith: DataGridFilterPredicateBuilder<string>;
|
|
131
|
-
inArray: DataGridFilterPredicateBuilder<string>;
|
|
132
|
-
};
|
|
133
|
-
number: {
|
|
134
|
-
equals: DataGridFilterPredicateBuilder<number>;
|
|
135
|
-
notEquals: DataGridFilterPredicateBuilder<number>;
|
|
136
|
-
lessThan: DataGridFilterPredicateBuilder<number>;
|
|
137
|
-
lessThanOrEqual: DataGridFilterPredicateBuilder<number>;
|
|
138
|
-
greaterThan: DataGridFilterPredicateBuilder<number>;
|
|
139
|
-
greaterThanOrEqual: DataGridFilterPredicateBuilder<number>;
|
|
140
|
-
inRange: DataGridFilterPredicateBuilder<number>;
|
|
141
|
-
inArray: DataGridFilterPredicateBuilder<number>;
|
|
142
|
-
};
|
|
126
|
+
text: DataGridFilterOperators<'contains' | 'notContains' | 'equals' | 'notEquals' | 'startsWith' | 'endsWith' | 'inArray', string>;
|
|
127
|
+
number: DataGridFilterOperators<'equals' | 'notEquals' | 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual' | 'inRange' | 'inArray', number>;
|
|
143
128
|
};
|
|
144
|
-
export type
|
|
145
|
-
export type
|
|
129
|
+
export type DataGridFilterType = keyof DataGridFilterPredicates;
|
|
130
|
+
export type DataGridFilterDataType<T extends DataGridFilterType> = DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U> ? U : never;
|
|
131
|
+
export type DataGridFilterGetter<T extends DataGridFilterType> = (value: any) => DataGridFilterDataType<T> | null;
|
|
132
|
+
export type DataGridFilterFormatter = (value: any) => string | null;
|
|
133
|
+
export type DataGridFilterOperator<T extends DataGridFilterType> = DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any> ? K : never;
|
|
134
|
+
export type DataGridFilter<T extends string = DataGridFilterType> = T extends DataGridFilterType ? {
|
|
146
135
|
type: T;
|
|
147
|
-
operator:
|
|
148
|
-
getter: DataGridFilterGetter<
|
|
136
|
+
operator: DataGridFilterOperator<T>;
|
|
137
|
+
getter: DataGridFilterGetter<T>;
|
|
149
138
|
formatter?: DataGridFilterFormatter;
|
|
150
139
|
values: (DataGridFilterDataType<T> | null)[];
|
|
151
|
-
};
|
|
152
|
-
export type AnyDataGridFilter<R> = DataGridFilter<R, 'text'> | DataGridFilter<R, 'number'>;
|
|
140
|
+
} : never;
|
|
153
141
|
export type DataGridFilterGroup<R> = {
|
|
154
142
|
name: string;
|
|
155
143
|
values?: R[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SqlRequestDataGridColumn, SqlRequestDataGridColumns } from '../types';
|
|
2
|
+
export declare const sqlTextColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a column with a composed value from multiple fields,
|
|
5
|
+
* and filtered by a text filter on the first field
|
|
6
|
+
*/
|
|
7
|
+
export declare const sqlComposedColumn: <R extends Record<string, any>>(key: string, title: string, fields: string[], options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
8
|
+
export declare const sqlMailColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
9
|
+
export declare const sqlPhoneColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
10
|
+
export declare const sqlDateColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
11
|
+
export declare const sqlMonthColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
12
|
+
export declare const sqlNumberColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
13
|
+
export declare const sqlMoneyColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
14
|
+
export declare const sqlPercentageColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
15
|
+
export declare const sqlCheckboxColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
16
|
+
export declare const sqlColorColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.sqlColorColumn = exports.sqlCheckboxColumn = exports.sqlPercentageColumn = exports.sqlMoneyColumn = exports.sqlNumberColumn = exports.sqlMonthColumn = exports.sqlDateColumn = exports.sqlPhoneColumn = exports.sqlMailColumn = exports.sqlComposedColumn = exports.sqlTextColumn = void 0;
|
|
18
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
|
+
var numbers_1 = require("../../../../helpers/numbers");
|
|
20
|
+
var helpers_1 = require("../../DataGrid/helpers");
|
|
21
|
+
var moment_1 = __importDefault(require("moment"));
|
|
22
|
+
var sqlTextColumn = function (key, title, options) {
|
|
23
|
+
var _a;
|
|
24
|
+
return (_a = {},
|
|
25
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
26
|
+
_a);
|
|
27
|
+
};
|
|
28
|
+
exports.sqlTextColumn = sqlTextColumn;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a column with a composed value from multiple fields,
|
|
31
|
+
* and filtered by a text filter on the first field
|
|
32
|
+
*/
|
|
33
|
+
var sqlComposedColumn = function (key, title, fields, options) {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = {},
|
|
36
|
+
_a[key] = __assign({ field: {
|
|
37
|
+
fieldAlias: key,
|
|
38
|
+
operator: 'jsonObject',
|
|
39
|
+
operands: fields.flatMap(function (field) { return [
|
|
40
|
+
{ constantValue: field },
|
|
41
|
+
{ fieldName: field },
|
|
42
|
+
]; }),
|
|
43
|
+
}, name: title, render: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(fields[0])), { getter: function (value) { var _a; return (_a = value[fields[0]]) !== null && _a !== void 0 ? _a : 0; } }), filterField: fields[0], sortField: fields[0] }, options),
|
|
44
|
+
_a);
|
|
45
|
+
};
|
|
46
|
+
exports.sqlComposedColumn = sqlComposedColumn;
|
|
47
|
+
var sqlMailColumn = function (key, title, options) {
|
|
48
|
+
var _a;
|
|
49
|
+
return (_a = {},
|
|
50
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (0, jsx_runtime_1.jsx)("a", { href: "mailto:".concat(row[key]), children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
51
|
+
_a);
|
|
52
|
+
};
|
|
53
|
+
exports.sqlMailColumn = sqlMailColumn;
|
|
54
|
+
var sqlPhoneColumn = function (key, title, options) {
|
|
55
|
+
var _a;
|
|
56
|
+
return (_a = {},
|
|
57
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (0, jsx_runtime_1.jsx)("a", { href: "tel:".concat(row[key]), children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
58
|
+
_a);
|
|
59
|
+
};
|
|
60
|
+
exports.sqlPhoneColumn = sqlPhoneColumn;
|
|
61
|
+
var sqlDateColumn = function (key, title, options) {
|
|
62
|
+
var _a;
|
|
63
|
+
return (_a = {},
|
|
64
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, moment_1.default)(row[key]).format('DD/MM/YYYY')) !== null && _a !== void 0 ? _a : ''; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
65
|
+
_a);
|
|
66
|
+
};
|
|
67
|
+
exports.sqlDateColumn = sqlDateColumn;
|
|
68
|
+
var sqlMonthColumn = function (key, title, options) {
|
|
69
|
+
var _a;
|
|
70
|
+
return (_a = {},
|
|
71
|
+
_a[key] = __assign({ name: title, render: function (row) { return (row[key] ? "".concat(row[key], " mois ") : ''); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
72
|
+
_a);
|
|
73
|
+
};
|
|
74
|
+
exports.sqlMonthColumn = sqlMonthColumn;
|
|
75
|
+
var sqlNumberColumn = function (key, title, decimals, options) {
|
|
76
|
+
var _a;
|
|
77
|
+
if (decimals === void 0) { decimals = 2; }
|
|
78
|
+
return (_a = {},
|
|
79
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatNumber)(row[key], decimals)) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
80
|
+
_a);
|
|
81
|
+
};
|
|
82
|
+
exports.sqlNumberColumn = sqlNumberColumn;
|
|
83
|
+
var sqlMoneyColumn = function (key, title, decimals, options) {
|
|
84
|
+
var _a;
|
|
85
|
+
if (decimals === void 0) { decimals = 2; }
|
|
86
|
+
return (_a = {},
|
|
87
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatMoney)(row[key], decimals)) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#0.00'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
88
|
+
_a);
|
|
89
|
+
};
|
|
90
|
+
exports.sqlMoneyColumn = sqlMoneyColumn;
|
|
91
|
+
var sqlPercentageColumn = function (key, title, options) {
|
|
92
|
+
var _a;
|
|
93
|
+
return (_a = {},
|
|
94
|
+
_a[key] = __assign({ name: title, render: function (row) { var _a; return (_a = (0, numbers_1.formatPercentage)(row[key])) !== null && _a !== void 0 ? _a : ''; }, excelFormatter: function () { return '#0.00'; }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
95
|
+
_a);
|
|
96
|
+
};
|
|
97
|
+
exports.sqlPercentageColumn = sqlPercentageColumn;
|
|
98
|
+
var sqlCheckboxColumn = function (key, title, options) {
|
|
99
|
+
var _a;
|
|
100
|
+
return (_a = {},
|
|
101
|
+
_a[key] = __assign({ name: title, render: function (row) { return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: row[key] }), (0, jsx_runtime_1.jsx)("span", { children: row[key] ? ' Oui' : ' Non' })] })); }, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.numberFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : 0; } }) }, options),
|
|
102
|
+
_a);
|
|
103
|
+
};
|
|
104
|
+
exports.sqlCheckboxColumn = sqlCheckboxColumn;
|
|
105
|
+
var sqlColorColumn = function (key, title, options) {
|
|
106
|
+
var _a;
|
|
107
|
+
return (_a = {},
|
|
108
|
+
_a[key] = __assign({ name: title, render: function (row) {
|
|
109
|
+
var _a;
|
|
110
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { backgroundColor: row[key] }, children: (_a = row[key]) !== null && _a !== void 0 ? _a : '' }));
|
|
111
|
+
}, getter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, sortGetter: function (row) { var _a; return (_a = row[key]) !== null && _a !== void 0 ? _a : ''; }, filter: __assign(__assign({}, (0, helpers_1.textFilter)(key)), { getter: function (value) { var _a; return (_a = value[key]) !== null && _a !== void 0 ? _a : ''; } }) }, options),
|
|
112
|
+
_a);
|
|
113
|
+
};
|
|
114
|
+
exports.sqlColorColumn = sqlColorColumn;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./sqlRequests"), exports);
|
|
18
|
+
__exportStar(require("./columns"), exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.convertSqlFiltersToConditions = void 0;
|
|
8
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
var convertSqlFiltersToConditions = function (filters) {
|
|
10
|
+
return lodash_1.default.mapValues(filters, function (filter, columnKey) { return ({
|
|
11
|
+
field: columnKey,
|
|
12
|
+
operator: filter.operator,
|
|
13
|
+
value: ['inArray', 'inRange'].includes(filter.operator)
|
|
14
|
+
? filter.values
|
|
15
|
+
: lodash_1.default.castArray(filter.values)[0],
|
|
16
|
+
}); });
|
|
17
|
+
};
|
|
18
|
+
exports.convertSqlFiltersToConditions = convertSqlFiltersToConditions;
|