@addev-be/ui 0.2.5 → 0.2.7

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 (166) hide show
  1. package/assets/icons/arrow-down-1-9.svg +1 -0
  2. package/assets/icons/arrow-down-a-z.svg +1 -1
  3. package/assets/icons/arrow-down-big-small.svg +1 -0
  4. package/assets/icons/arrow-up-9-1.svg +1 -0
  5. package/assets/icons/arrow-up-big-small.svg +1 -0
  6. package/assets/icons/arrow-up-z-a.svg +1 -1
  7. package/assets/icons/check.svg +1 -1
  8. package/assets/icons/chevron-down.svg +1 -0
  9. package/assets/icons/down.svg +1 -1
  10. package/assets/icons/ellipsis.svg +1 -0
  11. package/assets/icons/filter-full.svg +1 -1
  12. package/assets/icons/filter.svg +1 -1
  13. package/assets/icons/hashtag.svg +1 -1
  14. package/assets/icons/image-slash.svg +1 -1
  15. package/assets/icons/left.svg +1 -1
  16. package/assets/icons/magnifier.svg +1 -1
  17. package/assets/icons/phone.svg +1 -1
  18. package/assets/icons/right.svg +1 -1
  19. package/assets/icons/sigma.svg +1 -0
  20. package/assets/icons/spinner-third.svg +1 -1
  21. package/assets/icons/table-columns.svg +1 -1
  22. package/assets/icons/table-footer-slash.svg +5 -0
  23. package/assets/icons/table-footer.svg +4 -0
  24. package/assets/icons/table.svg +1 -0
  25. package/assets/icons/tally.svg +1 -0
  26. package/assets/icons/up.svg +1 -1
  27. package/assets/icons/user-tie.svg +1 -1
  28. package/assets/icons/x-bar.svg +4 -0
  29. package/dist/Icons.d.ts +13 -1
  30. package/dist/Icons.js +25 -1
  31. package/dist/components/data/AdvancedRequestDataGrid/index.js +3 -3
  32. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +1 -2
  33. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +3 -5
  34. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  35. package/dist/components/data/DataGrid/DataGridCell.js +5 -5
  36. package/dist/components/data/DataGrid/DataGridColumnsModal/hooks.js +2 -1
  37. package/dist/components/data/DataGrid/DataGridEditableCell.js +2 -7
  38. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +90 -10
  39. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.d.ts +3 -9
  40. package/dist/components/data/DataGrid/DataGridFilterMenu/styles.js +10 -37
  41. package/dist/components/data/DataGrid/DataGridFooter.d.ts +1 -1
  42. package/dist/components/data/DataGrid/DataGridFooter.js +35 -22
  43. package/dist/components/data/DataGrid/DataGridHeader.js +1 -3
  44. package/dist/components/data/DataGrid/DataGridHeaderCell.js +8 -23
  45. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +5 -5
  46. package/dist/components/data/DataGrid/FilterModalContent/index.js +11 -9
  47. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +8 -7
  48. package/dist/components/data/DataGrid/FilterValuesScroller.js +5 -6
  49. package/dist/components/data/DataGrid/helpers/columns.d.ts +1 -1
  50. package/dist/components/data/DataGrid/helpers/columns.js +72 -20
  51. package/dist/components/data/DataGrid/helpers/filters.d.ts +4 -3
  52. package/dist/components/data/DataGrid/helpers/filters.js +13 -5
  53. package/dist/components/data/DataGrid/hooks/useDataGrid.d.ts +1 -1
  54. package/dist/components/data/DataGrid/hooks/useDataGrid.js +60 -30
  55. package/dist/components/data/DataGrid/hooks/useDataGridCopy.d.ts +2 -2
  56. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +41 -40
  57. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -1
  58. package/dist/components/data/DataGrid/index.d.ts +4 -2
  59. package/dist/components/data/DataGrid/index.js +38 -17
  60. package/dist/components/data/DataGrid/styles.d.ts +12 -5
  61. package/dist/components/data/DataGrid/styles.js +31 -18
  62. package/dist/components/data/DataGrid/types.d.ts +28 -16
  63. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +1 -1
  64. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +30 -19
  65. package/dist/components/data/SqlRequestDataGrid/index.js +125 -37
  66. package/dist/components/data/SqlRequestDataGrid/types.d.ts +1 -0
  67. package/dist/components/data/index.d.ts +2 -0
  68. package/dist/components/data/index.js +2 -0
  69. package/dist/components/ui/ContextMenu/index.d.ts +11 -0
  70. package/dist/components/ui/ContextMenu/index.js +58 -0
  71. package/dist/components/ui/ContextMenu/styles.d.ts +18 -0
  72. package/dist/components/ui/ContextMenu/styles.js +56 -0
  73. package/dist/helpers/dates.d.ts +2 -0
  74. package/dist/helpers/dates.js +13 -0
  75. package/dist/services/advancedRequests.d.ts +1 -1
  76. package/dist/services/sqlRequests.d.ts +9 -4
  77. package/dist/services/sqlRequests.js +1 -0
  78. package/package.json +1 -1
  79. package/src/Icons.tsx +104 -80
  80. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  81. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  82. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  83. package/src/components/data/AdvancedRequestDataGrid/index.tsx +267 -269
  84. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  85. package/src/components/data/DataGrid/DataGridCell.tsx +73 -73
  86. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  87. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -58
  88. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  89. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  90. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -54
  91. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  92. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +364 -190
  93. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +49 -100
  94. package/src/components/data/DataGrid/DataGridFooter.tsx +42 -64
  95. package/src/components/data/DataGrid/DataGridHeader.tsx +126 -126
  96. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +132 -167
  97. package/src/components/data/DataGrid/FilterModalContent/index.tsx +124 -125
  98. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  99. package/src/components/data/DataGrid/FilterValuesScroller.tsx +133 -131
  100. package/src/components/data/DataGrid/VirtualScroller.tsx +46 -46
  101. package/src/components/data/DataGrid/helpers/columns.tsx +287 -196
  102. package/src/components/data/DataGrid/helpers/filters.ts +220 -207
  103. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  104. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  105. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +305 -264
  106. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +170 -165
  107. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  108. package/src/components/data/DataGrid/index.tsx +139 -132
  109. package/src/components/data/DataGrid/styles.ts +347 -326
  110. package/src/components/data/DataGrid/types.ts +260 -240
  111. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +259 -224
  112. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  113. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  114. package/src/components/data/SqlRequestDataGrid/index.tsx +347 -252
  115. package/src/components/data/SqlRequestDataGrid/types.ts +47 -47
  116. package/src/components/data/index.ts +8 -8
  117. package/src/components/forms/Button.tsx +99 -99
  118. package/src/components/forms/IconButton.tsx +56 -56
  119. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  120. package/src/components/forms/Select.tsx +40 -40
  121. package/src/components/forms/index.ts +5 -5
  122. package/src/components/forms/styles.ts +20 -20
  123. package/src/components/index.ts +3 -3
  124. package/src/components/layout/Dropdown/index.tsx +79 -79
  125. package/src/components/layout/Dropdown/styles.ts +44 -44
  126. package/src/components/layout/Loading/index.tsx +29 -29
  127. package/src/components/layout/Loading/styles.ts +29 -29
  128. package/src/components/layout/Modal/index.tsx +51 -51
  129. package/src/components/layout/Modal/styles.ts +110 -110
  130. package/src/components/layout/index.ts +3 -3
  131. package/src/components/ui/ContextMenu/index.tsx +73 -0
  132. package/src/components/ui/ContextMenu/styles.ts +115 -0
  133. package/src/config/index.ts +14 -14
  134. package/src/helpers/dates.ts +9 -9
  135. package/src/helpers/getScrollbarSize.ts +14 -14
  136. package/src/helpers/numbers.ts +20 -20
  137. package/src/hooks/index.ts +2 -2
  138. package/src/hooks/useElementSize.ts +24 -24
  139. package/src/hooks/useWindowSize.ts +20 -20
  140. package/src/index.ts +7 -7
  141. package/src/providers/PortalsProvider/index.tsx +54 -54
  142. package/src/providers/PortalsProvider/styles.ts +27 -27
  143. package/src/providers/SettingsProvider/index.tsx +70 -70
  144. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  145. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  146. package/src/providers/ThemeProvider/index.ts +3 -3
  147. package/src/providers/ThemeProvider/types.ts +123 -123
  148. package/src/providers/UiProviders/index.tsx +65 -65
  149. package/src/providers/UiProviders/styles.ts +10 -10
  150. package/src/providers/hooks.ts +8 -8
  151. package/src/providers/index.ts +5 -5
  152. package/src/services/HttpService.ts +80 -80
  153. package/src/services/WebSocketService.ts +147 -147
  154. package/src/services/advancedRequests.ts +101 -101
  155. package/src/services/base.ts +31 -31
  156. package/src/services/hooks.ts +23 -23
  157. package/src/services/index.ts +2 -2
  158. package/src/services/sqlRequests.ts +110 -99
  159. package/src/styles/animations.scss +30 -30
  160. package/src/styles/index.scss +42 -42
  161. package/src/typings.d.ts +6 -6
  162. package/tsconfig.tsbuildinfo +1 -1
  163. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  164. package/dist/components/data/DataGrid/helpers.js +0 -436
  165. package/dist/config/types.d.ts +0 -11
  166. package/dist/config/types.js +0 -2
@@ -1,19 +1,21 @@
1
1
  import * as t from 'io-ts';
2
- import { CSSProperties, Context, Dispatch, MouseEvent, ReactNode, SetStateAction } from 'react';
2
+ import { CSSProperties, Context, Dispatch, FC, MouseEvent, MouseEventHandler, ReactNode, SetStateAction } from 'react';
3
3
  import { SettingsContextProps } from '../../../providers/SettingsProvider';
4
4
  import { ThemeColor } from '../../../providers/ThemeProvider/types';
5
- export type MysqlJsonObject = Record<string, string | number | null>;
5
+ export type DataGridCellFC = FC<{
6
+ onDoubleClick?: MouseEventHandler;
7
+ style?: CSSProperties;
8
+ }>;
9
+ export type DataGridFooterPredefinedFunction = 'average' | 'count' | 'max' | 'min' | 'sum';
10
+ export type DataGridFooterFunction<R> = (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
6
11
  export type DataGridColumn<R> = {
7
- bodyClassName?: string;
8
- className?: string;
12
+ component?: DataGridCellFC;
9
13
  editable?: boolean;
10
14
  excelFormatter?: (value: any) => string;
11
15
  excelValue?: (value: any) => string;
12
16
  filter?: DataGridFilter;
13
- footer?: (allRows: R[], filteredRows: R[], selectedRows: R[]) => ReactNode;
14
- footerClassName?: string;
15
- getter?: (row: R) => string | number | MysqlJsonObject;
16
- headerClassName?: string;
17
+ footer?: DataGridFooterFunction<R> | Record<string, DataGridFooterFunction<R> | null>;
18
+ getter?: (row: R) => string | number;
17
19
  name: string;
18
20
  order?: number;
19
21
  propertyName?: keyof R;
@@ -49,7 +51,10 @@ export type DataGridProps<R> = {
49
51
  rowHeight?: number;
50
52
  filter?: boolean;
51
53
  sort?: boolean;
52
- filterValuesLoader?: (columnKey: string) => Promise<(string | number | null | MysqlJsonObject)[]>;
54
+ initialSorts?: Record<string, DataGridSort>;
55
+ initialFooters?: Record<string, string>;
56
+ onFootersChanged?: (footers: Record<string, string>) => void;
57
+ filterValuesLoader?: (columnKey: string) => Promise<(string | number | null)[]>;
53
58
  loadCopyRows?: () => Promise<R[]>;
54
59
  refresh?: () => void;
55
60
  headerColor?: ThemeColor;
@@ -65,6 +70,9 @@ export type DataGridContextProps<R> = DataGridProps<R> & {
65
70
  setSorts: (sorts: Record<string, DataGridSort>) => void;
66
71
  filters?: DataGridFilters;
67
72
  setFilters: Dispatch<SetStateAction<DataGridFilters>>;
73
+ footers?: Record<string, string>;
74
+ setFooters: Dispatch<SetStateAction<Record<string, string>>>;
75
+ footerFunctions?: Record<string, DataGridFooterFunction<R>>;
68
76
  visibleColumns: DataGridColumnKeyValuePair<R>[];
69
77
  copyTable: (includeHeaders?: boolean, includeFooters?: boolean) => Promise<void>;
70
78
  setColumnWidth: (key: string, width: number) => void;
@@ -129,22 +137,26 @@ export type DataGridFilterPredicates = {
129
137
  export type DataGridFilterType = keyof DataGridFilterPredicates;
130
138
  export type DataGridFilterDataType<T extends DataGridFilterType> = DataGridFilterPredicates[T] extends DataGridFilterOperators<string, infer U> ? U : never;
131
139
  export type DataGridFilterGetter<T extends DataGridFilterType> = (value: any) => DataGridFilterDataType<T> | null;
132
- export type DataGridFilterFormatter = (value: any) => string | null;
140
+ export type DataGridFilterRenderer = (value: any) => ReactNode;
141
+ export type DataGridFilterFormatter = (value: any) => string;
133
142
  export type DataGridFilterOperator<T extends DataGridFilterType> = DataGridFilterPredicates[T] extends DataGridFilterOperators<infer K, any> ? K : never;
134
143
  export type DataGridFilter<T extends string = DataGridFilterType> = T extends DataGridFilterType ? {
135
144
  type: T;
136
145
  operator: DataGridFilterOperator<T>;
137
146
  getter: DataGridFilterGetter<T>;
147
+ renderer?: DataGridFilterRenderer;
138
148
  formatter?: DataGridFilterFormatter;
139
149
  values: (DataGridFilterDataType<T> | null)[];
140
150
  } : never;
141
- export type DataGridFilterGroup<R> = {
151
+ export type DataGridFilterGroup = {
142
152
  name: string;
143
- values?: R[];
144
- groups?: DataGridFilterGroup<R>[];
153
+ values?: (string | number | null)[];
154
+ groups?: DataGridFilterGroup[];
145
155
  };
146
- export type DataGridFilterCheckbox<R extends string | number | null> = {
147
- displayValue: string | null;
148
- values: R[];
156
+ export type DataGridFilterValue = string | number | null;
157
+ export type DataGridFilterCheckbox = {
158
+ displayValue: ReactNode;
159
+ title: string;
160
+ value: DataGridFilterValue;
149
161
  level: number;
150
162
  };
@@ -11,6 +11,6 @@ export declare const sqlDateColumn: <R extends Record<string, any>>(key: string,
11
11
  export declare const sqlMonthColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
12
12
  export declare const sqlNumberColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
13
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>;
14
+ export declare const sqlPercentageColumn: <R extends Record<string, any>>(key: string, title: string, decimals?: number, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
15
15
  export declare const sqlCheckboxColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
16
16
  export declare const sqlColorColumn: <R extends Record<string, any>>(key: string, title: string, options?: Partial<SqlRequestDataGridColumn<R>>) => SqlRequestDataGridColumns<R>;
@@ -10,19 +10,16 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
13
  Object.defineProperty(exports, "__esModule", { value: true });
17
14
  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
15
  var jsx_runtime_1 = require("react/jsx-runtime");
19
16
  var numbers_1 = require("../../../../helpers/numbers");
20
17
  var helpers_1 = require("../../DataGrid/helpers");
21
- var moment_1 = __importDefault(require("moment"));
18
+ var dates_1 = require("../../../../helpers/dates");
22
19
  var sqlTextColumn = function (key, title, options) {
23
20
  var _a;
24
21
  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),
22
+ _a[key] = __assign(__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), { footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }),
26
23
  _a);
27
24
  };
28
25
  exports.sqlTextColumn = sqlTextColumn;
@@ -40,35 +37,35 @@ var sqlComposedColumn = function (key, title, fields, options) {
40
37
  { constantValue: field },
41
38
  { fieldName: field },
42
39
  ]; }),
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),
40
+ }, 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], footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
44
41
  _a);
45
42
  };
46
43
  exports.sqlComposedColumn = sqlComposedColumn;
47
44
  var sqlMailColumn = function (key, title, options) {
48
45
  var _a;
49
46
  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),
47
+ _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 : ''; } }), footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
51
48
  _a);
52
49
  };
53
50
  exports.sqlMailColumn = sqlMailColumn;
54
51
  var sqlPhoneColumn = function (key, title, options) {
55
52
  var _a;
56
53
  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),
54
+ _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 : ''; } }), footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
58
55
  _a);
59
56
  };
60
57
  exports.sqlPhoneColumn = sqlPhoneColumn;
61
58
  var sqlDateColumn = function (key, title, options) {
62
59
  var _a;
63
60
  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),
61
+ _a[key] = __assign({ name: title, render: function (row) { return (0, dates_1.formatDate)(row[key]); }, 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 : ''; } }), footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
65
62
  _a);
66
63
  };
67
64
  exports.sqlDateColumn = sqlDateColumn;
68
65
  var sqlMonthColumn = function (key, title, options) {
69
66
  var _a;
70
67
  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),
68
+ _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 : ''; } }), footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
72
69
  _a);
73
70
  };
74
71
  exports.sqlMonthColumn = sqlMonthColumn;
@@ -76,7 +73,13 @@ var sqlNumberColumn = function (key, title, decimals, options) {
76
73
  var _a;
77
74
  if (decimals === void 0) { decimals = 2; }
78
75
  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),
76
+ _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; }, renderer: function (value) { var _a; return (_a = (0, numbers_1.formatNumber)(value, decimals)) !== null && _a !== void 0 ? _a : ''; } }), footer: {
77
+ sum: null,
78
+ avg: null,
79
+ count: null,
80
+ max: null,
81
+ min: null,
82
+ } }, options),
80
83
  _a);
81
84
  };
82
85
  exports.sqlNumberColumn = sqlNumberColumn;
@@ -84,31 +87,39 @@ var sqlMoneyColumn = function (key, title, decimals, options) {
84
87
  var _a;
85
88
  if (decimals === void 0) { decimals = 2; }
86
89
  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),
90
+ _a[key] = __assign({ name: title, type: 'number', 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; }, renderer: function (value) { var _a; return (_a = (0, numbers_1.formatMoney)(value, decimals)) !== null && _a !== void 0 ? _a : ''; } }), footer: {
91
+ sum: null,
92
+ avg: null,
93
+ count: null,
94
+ max: null,
95
+ min: null,
96
+ } }, options),
88
97
  _a);
89
98
  };
90
99
  exports.sqlMoneyColumn = sqlMoneyColumn;
91
- var sqlPercentageColumn = function (key, title, options) {
100
+ var sqlPercentageColumn = function (key, title, decimals, options) {
92
101
  var _a;
102
+ if (decimals === void 0) { decimals = 2; }
93
103
  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),
104
+ _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; }, renderer: function (value) { var _a; return (_a = (0, numbers_1.formatPercentage)(value, decimals)) !== null && _a !== void 0 ? _a : ''; } }) }, options),
95
105
  _a);
96
106
  };
97
107
  exports.sqlPercentageColumn = sqlPercentageColumn;
98
108
  var sqlCheckboxColumn = function (key, title, options) {
99
109
  var _a;
100
110
  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),
111
+ _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; } }), footer: function (rows) { return "".concat(rows[0][key], " \u00E9l\u00E9ments"); } }, options),
102
112
  _a);
103
113
  };
104
114
  exports.sqlCheckboxColumn = sqlCheckboxColumn;
105
115
  var sqlColorColumn = function (key, title, options) {
106
116
  var _a;
107
117
  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),
118
+ _a[key] = __assign({ name: title, render: function (row) { return ((0, jsx_runtime_1.jsx)("div", { style: { position: 'absolute', inset: 0, backgroundColor: row[key] }, children: "\u00A0" })); }, 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 : ''; }, renderer: function (value) { return ((0, jsx_runtime_1.jsx)("div", { style: {
119
+ backgroundColor: value,
120
+ width: 'var(--space-16)',
121
+ height: '1em',
122
+ }, children: "\u00A0" })); } }) }, options),
112
123
  _a);
113
124
  };
114
125
  exports.sqlColorColumn = sqlColorColumn;
@@ -63,30 +63,45 @@ var DataGrid_1 = require("../DataGrid");
63
63
  var helpers_1 = require("./helpers");
64
64
  var helpers_2 = require("../DataGrid/helpers");
65
65
  var SqlRequestDataGrid = function (_a) {
66
+ var _b, _c;
66
67
  var onSelectionChangeFromProps = _a.onSelectionChange, props = __rest(_a, ["onSelectionChange"]);
67
68
  var currentRows = (0, react_1.useRef)([]);
68
- var _b = (0, react_1.useState)([]), rows = _b[0], setRows = _b[1];
69
- var _c = (0, react_1.useState)(0), start = _c[0], setStart = _c[1];
70
- var _d = (0, react_1.useState)(50), length = _d[0], setLength = _d[1];
71
- var _e = (0, react_1.useState)(-1), total = _e[0], setTotal = _e[1];
72
- var _f = (0, sqlRequests_1.useSqlRequestHandler)(props.type), sqlRequest = _f[0], sqlIdRequest = _f[1];
73
- var _g = (0, react_1.useState)({}), conditions = _g[0], setConditions = _g[1];
74
- var _h = (0, react_1.useState)([]), orderBy = _h[0], setOrderBy = _h[1];
75
- var _j = (0, react_1.useMemo)(function () { return [
76
- Object.keys(props.columns),
77
- Object.keys(props.columns).filter(function (key) {
78
- return (0, helpers_2.isColumnVisible)(props.columns[key]);
79
- }),
80
- ]; }, [props.columns]), columnsKeys = _j[0], visibleColumnsKeys = _j[1];
69
+ var _d = (0, react_1.useState)([]), rows = _d[0], setRows = _d[1];
70
+ var _e = (0, react_1.useState)(0), start = _e[0], setStart = _e[1];
71
+ var _f = (0, react_1.useState)(50), length = _f[0], setLength = _f[1];
72
+ var _g = (0, react_1.useState)(-1), count = _g[0], setCount = _g[1];
73
+ var _h = (0, sqlRequests_1.useSqlRequestHandler)(props.type), sqlRequest = _h[0], sqlIdRequest = _h[1], sqlPartialRequest = _h[2];
74
+ var _j = (0, react_1.useState)({}), conditions = _j[0], setConditions = _j[1];
75
+ var _k = (0, react_1.useState)(Object.entries((_b = props.initialSorts) !== null && _b !== void 0 ? _b : {}).map(function (_a) {
76
+ var _b, _c, _d;
77
+ var columnKey = _a[0], direction = _a[1];
78
+ return ({
79
+ field: (_c = (_b = props.columns[columnKey].field) === null || _b === void 0 ? void 0 : _b.fieldAlias) !== null && _c !== void 0 ? _c : columnKey,
80
+ type: (_d = props.columns[columnKey].type) !== null && _d !== void 0 ? _d : 'text',
81
+ direction: direction.toUpperCase(),
82
+ });
83
+ })), orderBy = _k[0], setOrderBy = _k[1];
84
+ var _l = (0, react_1.useMemo)(function () {
85
+ var _a, _b;
86
+ return [
87
+ __spreadArray(__spreadArray([], Object.keys(props.columns), true), ((_a = props.hiddenColumns) !== null && _a !== void 0 ? _a : []), true),
88
+ __spreadArray(__spreadArray([], Object.keys(props.columns).filter(function (key) {
89
+ return (0, helpers_2.isColumnVisible)(props.columns[key]);
90
+ }), true), ((_b = props.hiddenColumns) !== null && _b !== void 0 ? _b : []), true),
91
+ ];
92
+ }, [props.columns, props.hiddenColumns]), columnsKeys = _l[0], visibleColumnsKeys = _l[1];
93
+ var columnTypes = (0, react_1.useMemo)(function () {
94
+ return visibleColumnsKeys.map(function (key) { var _a; return String((_a = props.columns[key].type) !== null && _a !== void 0 ? _a : 'text'); });
95
+ }, [visibleColumnsKeys, props.columns]);
81
96
  var refresh = (0, react_1.useCallback)(function () {
82
97
  setRows([]);
83
98
  setStart(0);
84
99
  setLength(50);
85
- setTotal(-1);
100
+ setCount(-1);
86
101
  }, []);
87
102
  var onFiltersChanged = (0, react_1.useCallback)(function (filters) {
88
103
  var newConditions = (0, helpers_1.convertSqlFiltersToConditions)(filters);
89
- setTotal(-1);
104
+ setCount(-1);
90
105
  setConditions(newConditions);
91
106
  }, []);
92
107
  var onSortsChanged = (0, react_1.useCallback)(function (sorts) {
@@ -98,30 +113,34 @@ var SqlRequestDataGrid = function (_a) {
98
113
  direction: direction.toUpperCase(),
99
114
  });
100
115
  });
101
- console.log('newOrderBy=', newOrderBy);
102
116
  setOrderBy(newOrderBy);
103
117
  }, [refresh]);
104
- var loadRows = (0, react_1.useRef)((0, lodash_1.debounce)(function (columns, returnColumns, conditions, orderBy, start, length, getTotal) {
118
+ var loadRows = (0, react_1.useRef)((0, lodash_1.debounce)(function (columns, returnColumns, conditions, orderBy, start, length, getCount) {
105
119
  if (conditions === void 0) { conditions = []; }
106
120
  if (orderBy === void 0) { orderBy = []; }
107
121
  if (start === void 0) { start = 0; }
108
122
  if (length === void 0) { length = 100; }
109
- if (getTotal === void 0) { getTotal = false; }
123
+ if (getCount === void 0) { getCount = false; }
110
124
  sqlRequest({
111
125
  columns: columns.includes('Id') ? columns : __spreadArray(__spreadArray([], columns, true), ['Id'], false),
112
- returnColumns: returnColumns,
126
+ returnColumns: returnColumns.includes('Id')
127
+ ? returnColumns
128
+ : __spreadArray(__spreadArray([], returnColumns, true), ['Id'], false),
129
+ columnTypes: columnTypes.includes('Id')
130
+ ? columnTypes
131
+ : __spreadArray(__spreadArray([], columnTypes, true), ['Id'], false),
113
132
  conditions: conditions,
114
133
  orderBy: orderBy,
115
134
  start: start,
116
135
  length: length,
117
- getTotal: getTotal,
136
+ getCount: getCount,
118
137
  }).then(function (response) {
119
138
  var _a;
120
139
  var _b;
121
- if (getTotal) {
122
- currentRows.current = Array(response.total).fill(null);
123
- if (getTotal)
124
- setTotal((_b = response.total) !== null && _b !== void 0 ? _b : 0);
140
+ if (getCount) {
141
+ currentRows.current = Array(response.count).fill(null);
142
+ if (getCount)
143
+ setCount((_b = response.count) !== null && _b !== void 0 ? _b : 0);
125
144
  }
126
145
  var parsedRows = props.parser
127
146
  ? response.data.map(props.parser)
@@ -129,20 +148,25 @@ var SqlRequestDataGrid = function (_a) {
129
148
  (_a = currentRows.current).splice.apply(_a, __spreadArray([start, length], parsedRows, false));
130
149
  setRows(__spreadArray([], currentRows.current, true));
131
150
  });
132
- }, 100));
151
+ }, 100, {
152
+ leading: true,
153
+ trailing: true,
154
+ }));
133
155
  var loadFilterValues = (0, react_1.useCallback)(function (columnKey) {
134
- var _a, _b, _c, _d, _e, _f;
156
+ var _a, _b, _c, _d, _e, _f, _g, _h;
135
157
  return sqlRequest({
136
158
  columns: columnsKeys,
137
159
  returnColumns: [columnKey],
138
- conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), Object.values(lodash_1.default.pickBy(conditions, function (condition, key) { return key !== columnKey; })), true).filter(function (condition) { return condition.field !== columnKey; }),
160
+ columnTypes: [(_a = props.columns[columnKey].type) !== null && _a !== void 0 ? _a : 'text'],
161
+ conditions: __spreadArray(__spreadArray([], ((_b = props.conditions) !== null && _b !== void 0 ? _b : []), true), Object.values(lodash_1.default.pickBy(conditions, function (_, key) { return key !== columnKey; })), true).filter(function (condition) { return condition.field !== columnKey; }),
139
162
  orderBy: [
140
163
  {
141
- field: (_f = (_d = (_b = props.columns[columnKey].filterField) !== null && _b !== void 0 ? _b : (_c = props.columns[columnKey].field) === null || _c === void 0 ? void 0 : _c.fieldAlias) !== null && _d !== void 0 ? _d : (_e = props.columns[columnKey].field) === null || _e === void 0 ? void 0 : _e.fieldName) !== null && _f !== void 0 ? _f : columnKey,
164
+ field: (_g = (_e = (_c = props.columns[columnKey].filterField) !== null && _c !== void 0 ? _c : (_d = props.columns[columnKey].field) === null || _d === void 0 ? void 0 : _d.fieldAlias) !== null && _e !== void 0 ? _e : (_f = props.columns[columnKey].field) === null || _f === void 0 ? void 0 : _f.fieldName) !== null && _g !== void 0 ? _g : columnKey,
165
+ type: (_h = props.columns[columnKey].type) !== null && _h !== void 0 ? _h : 'text',
142
166
  direction: 'ASC',
143
167
  },
144
168
  ],
145
- getTotal: false,
169
+ getCount: false,
146
170
  unique: true,
147
171
  }).then(function (response) {
148
172
  return response.data.map(function (row) { var _a, _b, _c; return (_c = (_b = (_a = props.columns[columnKey].filter) === null || _a === void 0 ? void 0 : _a.getter) === null || _b === void 0 ? void 0 : _b.call(_a, row)) !== null && _c !== void 0 ? _c : null; });
@@ -150,14 +174,14 @@ var SqlRequestDataGrid = function (_a) {
150
174
  }, [columnsKeys, conditions, props.columns, props.conditions, sqlRequest]);
151
175
  (0, react_1.useEffect)(function () {
152
176
  var _a, _b;
153
- return loadRows.current(columnsKeys, visibleColumnsKeys, __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true), orderBy, start, length, total < 0);
177
+ return loadRows.current(columnsKeys, visibleColumnsKeys, __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true), orderBy, start, length, count < 0);
154
178
  }, [
155
179
  props.columns,
156
180
  conditions,
157
181
  orderBy,
158
182
  start,
159
183
  length,
160
- total,
184
+ count,
161
185
  props.conditions,
162
186
  columnsKeys,
163
187
  visibleColumnsKeys,
@@ -167,10 +191,11 @@ var SqlRequestDataGrid = function (_a) {
167
191
  return sqlRequest({
168
192
  columns: columnsKeys,
169
193
  returnColumns: visibleColumnsKeys,
194
+ columnTypes: columnTypes,
170
195
  conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true),
171
196
  orderBy: orderBy,
172
197
  start: 0,
173
- length: total,
198
+ length: count,
174
199
  }).then(function (response) {
175
200
  return props.parser ? response.data.map(props.parser) : response.data;
176
201
  });
@@ -178,22 +203,27 @@ var SqlRequestDataGrid = function (_a) {
178
203
  sqlRequest,
179
204
  columnsKeys,
180
205
  visibleColumnsKeys,
206
+ columnTypes,
181
207
  props.conditions,
182
208
  props.parser,
183
209
  conditions,
184
210
  orderBy,
185
- total,
211
+ count,
186
212
  ]);
187
213
  var loadAllIds = (0, react_1.useCallback)(function () {
188
214
  var _a, _b;
189
215
  return sqlIdRequest({
190
- columns: ['Id'],
216
+ columns: columnsKeys.includes('Id')
217
+ ? columnsKeys
218
+ : __spreadArray(__spreadArray([], columnsKeys, true), ['Id'], false),
219
+ returnColumns: ['Id'],
220
+ columnTypes: ['text'],
191
221
  conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true),
192
222
  orderBy: orderBy,
193
223
  start: 0,
194
- length: total,
224
+ length: count,
195
225
  }).then(function (response) { return response.data.map(function (row) { return row['Id']; }); });
196
- }, [conditions, orderBy, props.conditions, sqlIdRequest, total]);
226
+ }, [columnsKeys, conditions, orderBy, props.conditions, sqlIdRequest, count]);
197
227
  var onVisibleRowsChanged = (0, react_1.useCallback)(function (newStart, newLength) {
198
228
  if (newStart !== start || newLength !== length) {
199
229
  setStart(newStart);
@@ -203,6 +233,64 @@ var SqlRequestDataGrid = function (_a) {
203
233
  var onSelectionChange = (0, react_1.useCallback)(function (selectedKeys) {
204
234
  onSelectionChangeFromProps === null || onSelectionChangeFromProps === void 0 ? void 0 : onSelectionChangeFromProps(selectedKeys);
205
235
  }, [onSelectionChangeFromProps]);
206
- return ((0, jsx_runtime_1.jsx)(DataGrid_1.DataGrid, __assign({ onVisibleRowsChange: onVisibleRowsChanged, filter: false, sort: false, onFiltersChanged: onFiltersChanged, onSortsChanged: onSortsChanged, filterValuesLoader: loadFilterValues, rows: rows, loadCopyRows: loadCopyRows, refresh: refresh, onSelectionChange: onSelectionChange, getAllIds: loadAllIds }, props)));
236
+ /** FOOTERS */
237
+ var _m = (0, react_1.useState)((_c = props.initialFooters) !== null && _c !== void 0 ? _c : {}), footers = _m[0], setFooters = _m[1];
238
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
239
+ var _o = (0, react_1.useState)({}), footerData = _o[0], setFooterData = _o[1];
240
+ var loadFooters = (0, react_1.useCallback)(function () {
241
+ var _a, _b;
242
+ if (Object.keys(footers).length === 0) {
243
+ setFooterData({});
244
+ }
245
+ else {
246
+ sqlPartialRequest({
247
+ columns: columnsKeys.includes('Id')
248
+ ? columnsKeys
249
+ : __spreadArray(__spreadArray([], columnsKeys, true), ['Id'], false),
250
+ returnColumns: [],
251
+ columnTypes: [],
252
+ totalColumns: footers,
253
+ conditions: __spreadArray(__spreadArray([], ((_a = props.conditions) !== null && _a !== void 0 ? _a : []), true), ((_b = Object.values(conditions)) !== null && _b !== void 0 ? _b : []), true),
254
+ orderBy: orderBy,
255
+ }).then(function (response) { var _a; return setFooterData((_a = response.totals) !== null && _a !== void 0 ? _a : {}); });
256
+ }
257
+ }, [
258
+ columnsKeys,
259
+ conditions,
260
+ footers,
261
+ orderBy,
262
+ props.conditions,
263
+ sqlPartialRequest,
264
+ ]);
265
+ (0, react_1.useEffect)(function () {
266
+ loadFooters();
267
+ }, [loadFooters]);
268
+ var footerFunctions = (0, react_1.useMemo)(function () {
269
+ return !footerData
270
+ ? {}
271
+ : Object.entries(footers).reduce(function (acc, _a) {
272
+ var _b, _c;
273
+ var columnKey = _a[0], footerKey = _a[1];
274
+ var column = props.columns[columnKey];
275
+ var footerFunc = typeof (column === null || column === void 0 ? void 0 : column.footer) === 'function'
276
+ ? column.footer
277
+ : (_b = column === null || column === void 0 ? void 0 : column.footer) === null || _b === void 0 ? void 0 : _b[footerKey];
278
+ var render = footerFunc
279
+ ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+ function (data) { return footerFunc([data], [], []); }
281
+ : (_c = column === null || column === void 0 ? void 0 : column.render) !== null && _c !== void 0 ? _c : lodash_1.default.identity;
282
+ if (!column) {
283
+ return acc;
284
+ }
285
+ acc[columnKey] = function () { return render(footerData, column); };
286
+ return acc;
287
+ }, {});
288
+ }, [footerData, footers, props.columns]);
289
+ var contextOverride = (0, react_1.useMemo)(function () { return ({
290
+ footers: footers,
291
+ setFooters: setFooters,
292
+ footerFunctions: footerFunctions,
293
+ }); }, [footers, setFooters, footerFunctions]);
294
+ return ((0, jsx_runtime_1.jsx)(DataGrid_1.DataGrid, __assign({ onVisibleRowsChange: onVisibleRowsChanged, filter: false, sort: false, onFiltersChanged: onFiltersChanged, onSortsChanged: onSortsChanged, filterValuesLoader: loadFilterValues, rows: rows, loadCopyRows: loadCopyRows, refresh: refresh, onSelectionChange: onSelectionChange, getAllIds: loadAllIds, contextOverride: contextOverride }, props)));
207
295
  };
208
296
  exports.SqlRequestDataGrid = SqlRequestDataGrid;
@@ -13,6 +13,7 @@ export type SqlRequestDataGridColumn<R> = DataGridColumn<R> & {
13
13
  export type SqlRequestDataGridColumns<R> = Record<string, SqlRequestDataGridColumn<R>>;
14
14
  export type SqlRequestDataGridProps<R> = Omit<DataGridProps<R>, 'rows' | 'columns'> & {
15
15
  columns: SqlRequestDataGridColumns<R>;
16
+ hiddenColumns?: string[];
16
17
  type: string;
17
18
  orderBy?: OrderByDTO[];
18
19
  conditions?: ConditionDTO[];
@@ -1,6 +1,8 @@
1
1
  export * from './DataGrid';
2
2
  export * from './DataGrid/helpers';
3
+ export * from './DataGrid/styles';
3
4
  export * from './AdvancedRequestDataGrid';
4
5
  export * from './SqlRequestDataGrid';
5
6
  export * from './SqlRequestDataGrid/helpers';
7
+ export * from './SqlRequestDataGrid/types';
6
8
  export * from './AdvancedRequestDataGrid/helpers';
@@ -16,7 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./DataGrid"), exports);
18
18
  __exportStar(require("./DataGrid/helpers"), exports);
19
+ __exportStar(require("./DataGrid/styles"), exports);
19
20
  __exportStar(require("./AdvancedRequestDataGrid"), exports);
20
21
  __exportStar(require("./SqlRequestDataGrid"), exports);
21
22
  __exportStar(require("./SqlRequestDataGrid/helpers"), exports);
23
+ __exportStar(require("./SqlRequestDataGrid/types"), exports);
22
24
  __exportStar(require("./AdvancedRequestDataGrid/helpers"), exports);
@@ -0,0 +1,11 @@
1
+ import { Divider, MenuItemContainer, SubMenu } from './styles';
2
+ import { FC, HTMLAttributes, PropsWithChildren } from 'react';
3
+ type ContextMenuFC = FC<PropsWithChildren<HTMLAttributes<HTMLDivElement>>> & {
4
+ Item: typeof MenuItemContainer;
5
+ ParentItem: typeof ParentMenuItem;
6
+ Divider: typeof Divider;
7
+ SubMenu: typeof SubMenu;
8
+ };
9
+ export declare const ContextMenu: ContextMenuFC;
10
+ export declare const ParentMenuItem: FC<HTMLAttributes<HTMLDivElement>>;
11
+ export {};
@@ -0,0 +1,58 @@
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 __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ParentMenuItem = exports.ContextMenu = void 0;
26
+ var jsx_runtime_1 = require("react/jsx-runtime");
27
+ var styles_1 = require("./styles");
28
+ var react_1 = require("react");
29
+ var ContextMenu = function (_a) {
30
+ var children = _a.children;
31
+ return ((0, jsx_runtime_1.jsx)(styles_1.MenuContainer, { onClick: function (e) { return e.stopPropagation(); }, children: children }));
32
+ };
33
+ exports.ContextMenu = ContextMenu;
34
+ var ParentMenuItem = function (_a) {
35
+ var children = _a.children, props = __rest(_a, ["children"]);
36
+ var _b = (0, react_1.useState)(false), isOpened = _b[0], setIsOpened = _b[1];
37
+ var _c = (0, react_1.useState)(null), currentTimeout = _c[0], setCurrentTimeout = _c[1];
38
+ var stopTimeout = (0, react_1.useCallback)(function () {
39
+ if (currentTimeout) {
40
+ clearTimeout(currentTimeout);
41
+ }
42
+ setCurrentTimeout(null);
43
+ }, [currentTimeout]);
44
+ var startTimeout = (0, react_1.useCallback)(function (open) {
45
+ stopTimeout();
46
+ setCurrentTimeout(window.setTimeout(function () {
47
+ setIsOpened(open);
48
+ }, open ? 100 : 300));
49
+ }, [stopTimeout]);
50
+ var open = (0, react_1.useCallback)(function () { return startTimeout(true); }, [startTimeout]);
51
+ var close = (0, react_1.useCallback)(function () { return startTimeout(false); }, [startTimeout]);
52
+ return ((0, jsx_runtime_1.jsx)(styles_1.MenuItemContainer, __assign({}, props, { className: isOpened ? 'opened' : '', onMouseEnter: open, onMouseLeave: close, "$withArrow": true, children: children })));
53
+ };
54
+ exports.ParentMenuItem = ParentMenuItem;
55
+ exports.ContextMenu.Item = styles_1.MenuItemContainer;
56
+ exports.ContextMenu.ParentItem = exports.ParentMenuItem;
57
+ exports.ContextMenu.Divider = styles_1.Divider;
58
+ exports.ContextMenu.SubMenu = styles_1.SubMenu;
@@ -0,0 +1,18 @@
1
+ import { ThemeColor } from '../../../providers/ThemeProvider/types';
2
+ export declare const MenuContainer: 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"> & {
3
+ 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;
4
+ }>, never>, never>> & string;
5
+ export declare const SubMenu: 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"> & {
6
+ 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;
7
+ }>, never>, never>> & string;
8
+ export declare const MenuItemContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<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"> & {
9
+ 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;
10
+ }>, never>, {
11
+ $color?: ThemeColor;
12
+ disabled?: boolean;
13
+ $withArrow?: boolean;
14
+ $opened?: boolean;
15
+ }>> & string;
16
+ export declare const Divider: 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"> & {
17
+ 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;
18
+ }>, never>, never>> & string;