@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.
Files changed (71) hide show
  1. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
  2. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
  3. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
  4. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
  5. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
  6. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
  7. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
  8. package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
  9. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
  10. package/dist/components/data/AdvancedRequestDataGrid/types.js +2 -0
  11. package/dist/components/data/DataGrid/DataGridCell.js +2 -2
  12. package/dist/components/data/DataGrid/DataGridFooter.js +2 -2
  13. package/dist/components/data/DataGrid/DataGridHeader.js +62 -12
  14. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +1 -1
  15. package/dist/components/data/DataGrid/VirtualScroller.js +1 -6
  16. package/dist/components/data/DataGrid/helpers/columns.d.ts +12 -13
  17. package/dist/components/data/DataGrid/helpers/columns.js +17 -68
  18. package/dist/components/data/DataGrid/helpers/filters.d.ts +5 -5
  19. package/dist/components/data/DataGrid/helpers/filters.js +15 -18
  20. package/dist/components/data/DataGrid/helpers/index.d.ts +1 -2
  21. package/dist/components/data/DataGrid/helpers/index.js +1 -2
  22. package/dist/components/data/DataGrid/hooks/index.d.ts +2 -2
  23. package/dist/components/data/DataGrid/hooks/index.js +4 -4
  24. package/dist/components/data/DataGrid/hooks/useDataGrid.js +26 -4
  25. package/dist/components/data/DataGrid/index.js +12 -16
  26. package/dist/components/data/DataGrid/styles.d.ts +3 -1
  27. package/dist/components/data/DataGrid/styles.js +3 -3
  28. package/dist/components/data/DataGrid/types.d.ts +33 -45
  29. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +16 -0
  30. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +114 -0
  31. package/dist/components/data/SqlRequestDataGrid/helpers/index.d.ts +2 -0
  32. package/dist/components/data/SqlRequestDataGrid/helpers/index.js +18 -0
  33. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.d.ts +3 -0
  34. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.js +18 -0
  35. package/dist/components/data/SqlRequestDataGrid/index.d.ts +2 -0
  36. package/dist/components/data/SqlRequestDataGrid/index.js +208 -0
  37. package/dist/components/data/SqlRequestDataGrid/types.d.ts +20 -0
  38. package/dist/components/data/SqlRequestDataGrid/types.js +2 -0
  39. package/dist/components/data/index.d.ts +5 -2
  40. package/dist/components/data/index.js +5 -2
  41. package/dist/components/forms/IconButton.js +1 -1
  42. package/dist/components/forms/IndeterminateCheckbox.js +1 -1
  43. package/dist/components/layout/Modal/index.js +1 -1
  44. package/dist/providers/PortalsProvider/index.d.ts +1 -1
  45. package/dist/providers/PortalsProvider/index.js +1 -1
  46. package/dist/services/HttpService.d.ts +10 -0
  47. package/dist/services/HttpService.js +117 -0
  48. package/dist/services/advancedRequests.d.ts +3 -3
  49. package/dist/services/advancedRequests.js +2 -2
  50. package/dist/services/hooks.d.ts +2 -1
  51. package/dist/services/hooks.js +10 -3
  52. package/dist/services/sqlRequests.d.ts +40 -0
  53. package/dist/services/sqlRequests.js +10 -0
  54. package/package.json +1 -1
  55. package/src/components/data/DataGrid/DataGridCell.tsx +3 -5
  56. package/src/components/data/DataGrid/DataGridHeader.tsx +3 -5
  57. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +5 -4
  58. package/src/components/data/DataGrid/helpers/columns.tsx +1 -4
  59. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +4 -1
  60. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +0 -1
  61. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +0 -1
  62. package/src/components/data/DataGrid/index.tsx +5 -6
  63. package/src/components/data/DataGrid/styles.ts +36 -9
  64. package/src/components/data/DataGrid/types.ts +10 -3
  65. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +22 -4
  66. package/src/components/data/SqlRequestDataGrid/index.tsx +58 -27
  67. package/src/components/data/SqlRequestDataGrid/types.ts +1 -0
  68. package/src/components/data/index.ts +2 -0
  69. package/src/helpers/dates.ts +9 -0
  70. package/src/services/sqlRequests.ts +1 -0
  71. 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
- onSelectionChange = props.onSelectionChange, onVisibleRowsChange = props.onVisibleRowsChange, rowKey = props.rowKey;
49
+ onVisibleRowsChange = props.onVisibleRowsChange;
50
50
  var _a = (0, hooks_1.useDataGrid)(props), contextProps = _a[0], DataGridContext = _a[1];
51
- var selectedRows = contextProps.selectedRows, setSelectedRows = contextProps.setSelectedRows, 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;
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 (!selectedRows.includes(row))
56
- setSelectedRows(__spreadArray(__spreadArray([], selectedRows, true), [row], false));
56
+ if (!selectedKeys.includes(key))
57
+ setSelectedKeys(__spreadArray(__spreadArray([], selectedKeys, true), [key], false));
57
58
  }
58
59
  else {
59
- setSelectedRows(selectedRows.filter(function (p) { return p !== row; }));
60
+ setSelectedKeys(selectedKeys.filter(function (p) { return p !== key; }));
60
61
  }
61
- }, [selectedRows, setSelectedRows]);
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 = String(typeof rowKey === 'function' ? rowKey(row) : row[rowKey]);
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
- rowKey,
85
- selectedRows,
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>> & string;
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.div(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n /* inline-flex items-center justify-center w-12 select-none text-center whitespace-nowrap */\n & > input[type='checkbox'] {\n height: 1rem;\n width: 1rem;\n border-radius: 0.25rem;\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 & > input[type='checkbox'] {\n height: 1rem;\n width: 1rem;\n border-radius: 0.25rem;\n border: 1px solid var(--color-neutral-300);\n color: var(--color-sky-600);\n }\n"])));
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 DataGridColumn<R, T extends DataGridFilterType | undefined = DataGridFilterType> = {
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
- field?: FieldDTO;
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?: (column: DataGridColumn<R, T>, row: R) => ReactNode | string;
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, DataGridFilterType | undefined>>;
29
- export type DataGridFilters<R> = Record<string, DataGridFilter<R, DataGridFilterType>>;
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?: (selectedRows: R[]) => void;
40
- onFiltersChanged?: (filters: DataGridFilters<R>) => void;
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
- setSelectedRows: (selection: R[]) => void;
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<R>;
66
- setFilters: Dispatch<SetStateAction<DataGridFilters<R>>>;
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, any>];
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> = (row: any, ...filterValues: T[]) => DataGridFilterPredicate<T>;
121
- export type DataGridFilterGetter<R, T extends DataGridFilterType> = (row: R) => DataGridFilterDataType<T> | null;
122
- export type DataGridFilterFormatter = (value: string | number | null) => string | null;
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
- contains: DataGridFilterPredicateBuilder<string>;
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 DataGridFilterOperator<T extends DataGridFilterType> = keyof DataGridFilterPredicates[T];
145
- export type DataGridFilter<R, T extends DataGridFilterType = DataGridFilterType> = {
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: keyof DataGridFilterPredicates[T];
148
- getter: DataGridFilterGetter<R, T>;
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,2 @@
1
+ export * from './sqlRequests';
2
+ export * from './columns';
@@ -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,3 @@
1
+ import { ConditionDTO } from '../../../../services/sqlRequests';
2
+ import { SqlRequestDataGridFilters } from '../types';
3
+ export declare const convertSqlFiltersToConditions: (filters: SqlRequestDataGridFilters) => Record<string, ConditionDTO>;
@@ -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;
@@ -0,0 +1,2 @@
1
+ import { SqlRequestDataGridProps } from './types';
2
+ export declare const SqlRequestDataGrid: <R>({ onSelectionChange: onSelectionChangeFromProps, ...props }: SqlRequestDataGridProps<R>) => import("react/jsx-runtime").JSX.Element;