@addev-be/ui 0.2.5 → 0.2.6

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 (133) hide show
  1. package/assets/icons/arrow-down-a-z.svg +1 -1
  2. package/assets/icons/arrow-up-z-a.svg +1 -1
  3. package/assets/icons/check.svg +1 -1
  4. package/assets/icons/down.svg +1 -1
  5. package/assets/icons/filter-full.svg +1 -1
  6. package/assets/icons/filter.svg +1 -1
  7. package/assets/icons/hashtag.svg +1 -1
  8. package/assets/icons/image-slash.svg +1 -1
  9. package/assets/icons/left.svg +1 -1
  10. package/assets/icons/magnifier.svg +1 -1
  11. package/assets/icons/phone.svg +1 -1
  12. package/assets/icons/right.svg +1 -1
  13. package/assets/icons/spinner-third.svg +1 -1
  14. package/assets/icons/table-columns.svg +1 -1
  15. package/assets/icons/up.svg +1 -1
  16. package/assets/icons/user-tie.svg +1 -1
  17. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +1 -2
  18. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +3 -5
  19. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  20. package/dist/components/data/DataGrid/DataGridCell.js +5 -5
  21. package/dist/components/data/DataGrid/DataGridEditableCell.js +2 -7
  22. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +10 -8
  23. package/dist/components/data/DataGrid/DataGridFooter.js +4 -14
  24. package/dist/components/data/DataGrid/DataGridHeader.js +1 -3
  25. package/dist/components/data/DataGrid/DataGridHeaderCell.js +6 -5
  26. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +5 -5
  27. package/dist/components/data/DataGrid/FilterModalContent/index.js +11 -9
  28. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +8 -7
  29. package/dist/components/data/DataGrid/FilterValuesScroller.js +5 -6
  30. package/dist/components/data/DataGrid/helpers/columns.js +1 -4
  31. package/dist/components/data/DataGrid/helpers/filters.d.ts +4 -3
  32. package/dist/components/data/DataGrid/helpers/filters.js +13 -5
  33. package/dist/components/data/DataGrid/hooks/useDataGrid.js +2 -2
  34. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +0 -1
  35. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -1
  36. package/dist/components/data/DataGrid/index.js +16 -5
  37. package/dist/components/data/DataGrid/styles.d.ts +4 -1
  38. package/dist/components/data/DataGrid/styles.js +11 -8
  39. package/dist/components/data/DataGrid/types.d.ts +20 -15
  40. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +7 -9
  41. package/dist/components/data/SqlRequestDataGrid/index.js +34 -18
  42. package/dist/components/data/SqlRequestDataGrid/types.d.ts +1 -0
  43. package/dist/components/data/index.d.ts +2 -0
  44. package/dist/components/data/index.js +2 -0
  45. package/dist/helpers/dates.d.ts +2 -0
  46. package/dist/helpers/dates.js +13 -0
  47. package/package.json +1 -1
  48. package/src/Icons.tsx +80 -80
  49. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  50. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  51. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  52. package/src/components/data/AdvancedRequestDataGrid/index.tsx +269 -269
  53. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  54. package/src/components/data/DataGrid/DataGridCell.tsx +73 -73
  55. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  56. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +58 -58
  57. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  58. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  59. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -54
  60. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  61. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +200 -190
  62. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +100 -100
  63. package/src/components/data/DataGrid/DataGridFooter.tsx +44 -64
  64. package/src/components/data/DataGrid/DataGridHeader.tsx +126 -126
  65. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +167 -167
  66. package/src/components/data/DataGrid/FilterModalContent/index.tsx +124 -125
  67. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  68. package/src/components/data/DataGrid/FilterValuesScroller.tsx +133 -131
  69. package/src/components/data/DataGrid/VirtualScroller.tsx +46 -46
  70. package/src/components/data/DataGrid/helpers/columns.tsx +196 -196
  71. package/src/components/data/DataGrid/helpers/filters.ts +220 -207
  72. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  73. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  74. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +264 -264
  75. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +165 -165
  76. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  77. package/src/components/data/DataGrid/index.tsx +132 -132
  78. package/src/components/data/DataGrid/styles.ts +326 -326
  79. package/src/components/data/DataGrid/types.ts +241 -240
  80. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +224 -224
  81. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  82. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  83. package/src/components/data/SqlRequestDataGrid/index.tsx +252 -252
  84. package/src/components/data/SqlRequestDataGrid/types.ts +47 -47
  85. package/src/components/data/index.ts +8 -8
  86. package/src/components/forms/Button.tsx +99 -99
  87. package/src/components/forms/IconButton.tsx +56 -56
  88. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  89. package/src/components/forms/Select.tsx +40 -40
  90. package/src/components/forms/index.ts +5 -5
  91. package/src/components/forms/styles.ts +20 -20
  92. package/src/components/index.ts +3 -3
  93. package/src/components/layout/Dropdown/index.tsx +79 -79
  94. package/src/components/layout/Dropdown/styles.ts +44 -44
  95. package/src/components/layout/Loading/index.tsx +29 -29
  96. package/src/components/layout/Loading/styles.ts +29 -29
  97. package/src/components/layout/Modal/index.tsx +51 -51
  98. package/src/components/layout/Modal/styles.ts +110 -110
  99. package/src/components/layout/index.ts +3 -3
  100. package/src/config/index.ts +14 -14
  101. package/src/helpers/dates.ts +9 -9
  102. package/src/helpers/getScrollbarSize.ts +14 -14
  103. package/src/helpers/numbers.ts +20 -20
  104. package/src/hooks/index.ts +2 -2
  105. package/src/hooks/useElementSize.ts +24 -24
  106. package/src/hooks/useWindowSize.ts +20 -20
  107. package/src/index.ts +7 -7
  108. package/src/providers/PortalsProvider/index.tsx +54 -54
  109. package/src/providers/PortalsProvider/styles.ts +27 -27
  110. package/src/providers/SettingsProvider/index.tsx +70 -70
  111. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  112. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  113. package/src/providers/ThemeProvider/index.ts +3 -3
  114. package/src/providers/ThemeProvider/types.ts +123 -123
  115. package/src/providers/UiProviders/index.tsx +65 -65
  116. package/src/providers/UiProviders/styles.ts +10 -10
  117. package/src/providers/hooks.ts +8 -8
  118. package/src/providers/index.ts +5 -5
  119. package/src/services/HttpService.ts +80 -80
  120. package/src/services/WebSocketService.ts +147 -147
  121. package/src/services/advancedRequests.ts +101 -101
  122. package/src/services/base.ts +31 -31
  123. package/src/services/hooks.ts +23 -23
  124. package/src/services/index.ts +2 -2
  125. package/src/services/sqlRequests.ts +99 -99
  126. package/src/styles/animations.scss +30 -30
  127. package/src/styles/index.scss +42 -42
  128. package/src/typings.d.ts +6 -6
  129. package/tsconfig.tsbuildinfo +1 -1
  130. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  131. package/dist/components/data/DataGrid/helpers.js +0 -436
  132. package/dist/config/types.d.ts +0 -11
  133. package/dist/config/types.js +0 -2
@@ -1,207 +1,220 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- import {
4
- DataGridFilter,
5
- DataGridFilterCheckbox,
6
- DataGridFilterDataType,
7
- DataGridFilterFormatter,
8
- DataGridFilterGroup,
9
- DataGridFilterPredicateBuilder,
10
- DataGridFilterPredicates,
11
- DataGridFilterType,
12
- } from '../types';
13
-
14
- import moment from 'moment';
15
-
16
- const escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
17
-
18
- const textContainsPredicate: DataGridFilterPredicateBuilder<string> = (
19
- ...filterValues
20
- ) => {
21
- const regex = new RegExp(`${escapeRegExp(filterValues[0])}`, 'i');
22
- return (valueToVerify: string) => regex.test(valueToVerify);
23
- };
24
- const textNotContainsPredicate: DataGridFilterPredicateBuilder<string> = (
25
- ...filterValues
26
- ) => {
27
- const regex = new RegExp(`${escapeRegExp(filterValues[0])}`, 'i');
28
- return (valueToVerify: string) => !regex.test(valueToVerify);
29
- };
30
- const textEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
31
- ...filterValues
32
- ) => {
33
- const regex = new RegExp(`^${escapeRegExp(filterValues[0])}$`, 'i');
34
- return (valueToVerify: string) => regex.test(valueToVerify);
35
- };
36
- const textNotEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
37
- ...filterValues
38
- ) => {
39
- const regex = new RegExp(`^${escapeRegExp(filterValues[0])}$`, 'i');
40
- return (valueToVerify: string) => !regex.test(valueToVerify);
41
- };
42
- const textStartsWithPredicate: DataGridFilterPredicateBuilder<string> = (
43
- ...filterValues
44
- ) => {
45
- const regex = new RegExp(`^${escapeRegExp(filterValues[0])}`, 'i');
46
- return (valueToVerify: string) => regex.test(valueToVerify);
47
- };
48
- const textEndsWithPredicate: DataGridFilterPredicateBuilder<string> = (
49
- ...filterValues
50
- ) => {
51
- const regex = new RegExp(`${escapeRegExp(filterValues[0])}$`, 'i');
52
- return (valueToVerify: string) => regex.test(valueToVerify);
53
- };
54
- const textInArrayPredicate: DataGridFilterPredicateBuilder<string> = (
55
- ...filterValues
56
- ) => {
57
- return (valueToVerify: string) => filterValues.includes(valueToVerify);
58
- };
59
-
60
- const numberEqualsPredicate: DataGridFilterPredicateBuilder<number> =
61
- (...filterValues) =>
62
- (valueToVerify: number) =>
63
- valueToVerify === filterValues[0];
64
- const numberNotEqualsPredicate: DataGridFilterPredicateBuilder<number> =
65
- (...filterValues) =>
66
- (valueToVerify: number) =>
67
- valueToVerify !== filterValues[0];
68
- const numberLessThanPredicate: DataGridFilterPredicateBuilder<number> =
69
- (...filterValues) =>
70
- (valueToVerify: number) =>
71
- valueToVerify < filterValues[0];
72
- const numberLessThanOrEqualPredicate: DataGridFilterPredicateBuilder<number> =
73
- (...filterValues) =>
74
- (valueToVerify: number) =>
75
- valueToVerify <= filterValues[0];
76
- const numberGreaterThanPredicate: DataGridFilterPredicateBuilder<number> =
77
- (...filterValues) =>
78
- (valueToVerify: number) =>
79
- valueToVerify > filterValues[0];
80
- const numberGreaterThanOrEqualPredicate: DataGridFilterPredicateBuilder<
81
- number
82
- > =
83
- (...filterValues) =>
84
- (valueToVerify: number) =>
85
- valueToVerify >= filterValues[0];
86
- const numberInRangePredicate: DataGridFilterPredicateBuilder<number> =
87
- (...filterValues) =>
88
- (valueToVerify: number) =>
89
- valueToVerify >= filterValues[0] && valueToVerify <= filterValues[1];
90
- const numberInArrayPredicate: DataGridFilterPredicateBuilder<number> = (
91
- ...filterValues
92
- ) => {
93
- return (valueToVerify: number) => filterValues.includes(valueToVerify);
94
- };
95
-
96
- export const filtersPredicates: DataGridFilterPredicates = {
97
- text: {
98
- contains: textContainsPredicate,
99
- notContains: textNotContainsPredicate,
100
- equals: textEqualsPredicate,
101
- notEquals: textNotEqualsPredicate,
102
- startsWith: textStartsWithPredicate,
103
- endsWith: textEndsWithPredicate,
104
- inArray: textInArrayPredicate,
105
- },
106
- number: {
107
- equals: numberEqualsPredicate,
108
- notEquals: numberNotEqualsPredicate,
109
- lessThan: numberLessThanPredicate,
110
- lessThanOrEqual: numberLessThanOrEqualPredicate,
111
- greaterThan: numberGreaterThanPredicate,
112
- greaterThanOrEqual: numberGreaterThanOrEqualPredicate,
113
- inRange: numberInRangePredicate,
114
- inArray: numberInArrayPredicate,
115
- },
116
- };
117
-
118
- export const applyFilters = <R>(rows: R[], filters: DataGridFilter[]): R[] => {
119
- return filters.reduce(
120
- (tempRows, filter) => applyFilter(tempRows, filter),
121
- rows
122
- );
123
- };
124
-
125
- export const applyFilter = <R>(rows: R[], filter: DataGridFilter): R[] => {
126
- const predicateBuilder = filtersPredicates[filter.type][filter.operator];
127
- if (typeof predicateBuilder !== 'function') return rows;
128
- const predicate = predicateBuilder(...filter.values);
129
- return rows.filter((row) => predicate(filter.getter(row)));
130
- };
131
-
132
- export const defaultFilterGetter = (row: any, columnKey: string) =>
133
- row[columnKey];
134
-
135
- export const defaultFilterValues: {
136
- [K in DataGridFilterType]: DataGridFilterDataType<K>;
137
- } = {
138
- text: '',
139
- number: 0,
140
- };
141
-
142
- export const defaultValueParsers: {
143
- [K in DataGridFilterType]: (value: string) => DataGridFilterDataType<K>;
144
- } = {
145
- text: (value) => value,
146
- number: (value) => parseFloat(value),
147
- };
148
-
149
- export const groupDatesByYearAndMonth = (dates: any[]) =>
150
- dates.reduce((acc: Record<string, Record<string, any[]>>, date) => {
151
- const year = moment(date).format('YYYY');
152
- if (!acc[year]) {
153
- acc[year] = {};
154
- }
155
- const yearAndMonth = moment(date).format(`YYYY-MM`);
156
- if (!acc[year][yearAndMonth]) {
157
- acc[year][yearAndMonth] = [];
158
- }
159
- acc[year][yearAndMonth].push(date);
160
- return acc;
161
- }, {} as Record<string, Record<string, any[]>>);
162
-
163
- export const getDateGroups = <R extends string | number | null>(
164
- dates: any[]
165
- ): DataGridFilterGroup<R>[] => {
166
- const grouperDates = groupDatesByYearAndMonth(dates);
167
- return Object.entries(grouperDates).map(([year, months]) => ({
168
- name: year,
169
- values: Object.values(months).flat(),
170
- groups: Object.entries(months).map(([month, dates]) => ({
171
- name: month,
172
- values: dates,
173
- })),
174
- }));
175
- };
176
-
177
- export const getCheckboxes = <R extends string | number | null>(
178
- values: R[],
179
- formatter: DataGridFilterFormatter,
180
- groups?: DataGridFilterGroup<R>[],
181
- level = 0
182
- ): DataGridFilterCheckbox<R>[] => [
183
- ...(groups ?? [])
184
- .map((group) =>
185
- getCheckboxes(group.values ?? [], formatter, group.groups, level + 1)
186
- )
187
- .flat(),
188
- ...values.map((value) => ({
189
- displayValue: formatter(value),
190
- values: [value],
191
- level,
192
- })),
193
- ];
194
-
195
- export const textFilter = (key: string): DataGridFilter<'text'> => ({
196
- type: 'text',
197
- operator: 'contains',
198
- values: [''],
199
- getter: (row) => row[key] ?? '',
200
- });
201
-
202
- export const numberFilter = (key: string): DataGridFilter<'number'> => ({
203
- type: 'number',
204
- operator: 'equals',
205
- values: [0],
206
- getter: (row) => row[key] ?? '',
207
- });
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import {
4
+ DataGridFilter,
5
+ DataGridFilterCheckbox,
6
+ DataGridFilterDataType,
7
+ DataGridFilterFormatter,
8
+ DataGridFilterGroup,
9
+ DataGridFilterPredicateBuilder,
10
+ DataGridFilterPredicates,
11
+ DataGridFilterRenderer,
12
+ DataGridFilterType,
13
+ DataGridFilterValue,
14
+ } from '../types';
15
+
16
+ import moment from 'moment';
17
+
18
+ const escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19
+
20
+ const textContainsPredicate: DataGridFilterPredicateBuilder<string> = (
21
+ ...filterValues
22
+ ) => {
23
+ const regex = new RegExp(`${escapeRegExp(filterValues[0])}`, 'i');
24
+ return (valueToVerify: string) => regex.test(valueToVerify);
25
+ };
26
+ const textNotContainsPredicate: DataGridFilterPredicateBuilder<string> = (
27
+ ...filterValues
28
+ ) => {
29
+ const regex = new RegExp(`${escapeRegExp(filterValues[0])}`, 'i');
30
+ return (valueToVerify: string) => !regex.test(valueToVerify);
31
+ };
32
+ const textEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
33
+ ...filterValues
34
+ ) => {
35
+ const regex = new RegExp(`^${escapeRegExp(filterValues[0])}$`, 'i');
36
+ return (valueToVerify: string) => regex.test(valueToVerify);
37
+ };
38
+ const textNotEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
39
+ ...filterValues
40
+ ) => {
41
+ const regex = new RegExp(`^${escapeRegExp(filterValues[0])}$`, 'i');
42
+ return (valueToVerify: string) => !regex.test(valueToVerify);
43
+ };
44
+ const textStartsWithPredicate: DataGridFilterPredicateBuilder<string> = (
45
+ ...filterValues
46
+ ) => {
47
+ const regex = new RegExp(`^${escapeRegExp(filterValues[0])}`, 'i');
48
+ return (valueToVerify: string) => regex.test(valueToVerify);
49
+ };
50
+ const textEndsWithPredicate: DataGridFilterPredicateBuilder<string> = (
51
+ ...filterValues
52
+ ) => {
53
+ const regex = new RegExp(`${escapeRegExp(filterValues[0])}$`, 'i');
54
+ return (valueToVerify: string) => regex.test(valueToVerify);
55
+ };
56
+ const textInArrayPredicate: DataGridFilterPredicateBuilder<string> = (
57
+ ...filterValues
58
+ ) => {
59
+ return (valueToVerify: string) => filterValues.includes(valueToVerify);
60
+ };
61
+
62
+ const numberEqualsPredicate: DataGridFilterPredicateBuilder<number> =
63
+ (...filterValues) =>
64
+ (valueToVerify: number) =>
65
+ valueToVerify === filterValues[0];
66
+ const numberNotEqualsPredicate: DataGridFilterPredicateBuilder<number> =
67
+ (...filterValues) =>
68
+ (valueToVerify: number) =>
69
+ valueToVerify !== filterValues[0];
70
+ const numberLessThanPredicate: DataGridFilterPredicateBuilder<number> =
71
+ (...filterValues) =>
72
+ (valueToVerify: number) =>
73
+ valueToVerify < filterValues[0];
74
+ const numberLessThanOrEqualPredicate: DataGridFilterPredicateBuilder<number> =
75
+ (...filterValues) =>
76
+ (valueToVerify: number) =>
77
+ valueToVerify <= filterValues[0];
78
+ const numberGreaterThanPredicate: DataGridFilterPredicateBuilder<number> =
79
+ (...filterValues) =>
80
+ (valueToVerify: number) =>
81
+ valueToVerify > filterValues[0];
82
+ const numberGreaterThanOrEqualPredicate: DataGridFilterPredicateBuilder<
83
+ number
84
+ > =
85
+ (...filterValues) =>
86
+ (valueToVerify: number) =>
87
+ valueToVerify >= filterValues[0];
88
+ const numberInRangePredicate: DataGridFilterPredicateBuilder<number> =
89
+ (...filterValues) =>
90
+ (valueToVerify: number) =>
91
+ valueToVerify >= filterValues[0] && valueToVerify <= filterValues[1];
92
+ const numberInArrayPredicate: DataGridFilterPredicateBuilder<number> = (
93
+ ...filterValues
94
+ ) => {
95
+ return (valueToVerify: number) => filterValues.includes(valueToVerify);
96
+ };
97
+
98
+ export const filtersPredicates: DataGridFilterPredicates = {
99
+ text: {
100
+ contains: textContainsPredicate,
101
+ notContains: textNotContainsPredicate,
102
+ equals: textEqualsPredicate,
103
+ notEquals: textNotEqualsPredicate,
104
+ startsWith: textStartsWithPredicate,
105
+ endsWith: textEndsWithPredicate,
106
+ inArray: textInArrayPredicate,
107
+ },
108
+ number: {
109
+ equals: numberEqualsPredicate,
110
+ notEquals: numberNotEqualsPredicate,
111
+ lessThan: numberLessThanPredicate,
112
+ lessThanOrEqual: numberLessThanOrEqualPredicate,
113
+ greaterThan: numberGreaterThanPredicate,
114
+ greaterThanOrEqual: numberGreaterThanOrEqualPredicate,
115
+ inRange: numberInRangePredicate,
116
+ inArray: numberInArrayPredicate,
117
+ },
118
+ };
119
+
120
+ export const applyFilters = <R>(rows: R[], filters: DataGridFilter[]): R[] => {
121
+ return filters.reduce(
122
+ (tempRows, filter) => applyFilter(tempRows, filter),
123
+ rows
124
+ );
125
+ };
126
+
127
+ export const applyFilter = <R>(rows: R[], filter: DataGridFilter): R[] => {
128
+ const predicateBuilder = (filtersPredicates as any)[filter.type][
129
+ filter.operator
130
+ ];
131
+ if (typeof predicateBuilder !== 'function') return rows;
132
+ const predicate = predicateBuilder(...filter.values);
133
+ return rows.filter((row) => predicate(filter.getter(row)));
134
+ };
135
+
136
+ export const defaultFilterGetter = (row: any, columnKey: string) =>
137
+ row[columnKey];
138
+
139
+ export const defaultFilterValues: {
140
+ [K in DataGridFilterType]: DataGridFilterDataType<K>;
141
+ } = {
142
+ text: '',
143
+ number: 0,
144
+ };
145
+
146
+ export const defaultValueParsers: {
147
+ [K in DataGridFilterType]: (value: string) => DataGridFilterDataType<K>;
148
+ } = {
149
+ text: (value) => value,
150
+ number: (value) => parseFloat(value),
151
+ };
152
+
153
+ export const groupDatesByYearAndMonth = (dates: any[]) =>
154
+ dates.reduce((acc: Record<string, Record<string, any[]>>, date) => {
155
+ const year = moment(date).format('YYYY');
156
+ if (!acc[year]) {
157
+ acc[year] = {};
158
+ }
159
+ const yearAndMonth = moment(date).format(`YYYY-MM`);
160
+ if (!acc[year][yearAndMonth]) {
161
+ acc[year][yearAndMonth] = [];
162
+ }
163
+ acc[year][yearAndMonth].push(date);
164
+ return acc;
165
+ }, {} as Record<string, Record<string, any[]>>);
166
+
167
+ export const getDateGroups = (dates: any[]): DataGridFilterGroup[] => {
168
+ const grouperDates = groupDatesByYearAndMonth(dates);
169
+ return Object.entries(grouperDates).map(([year, months]) => ({
170
+ name: year,
171
+ values: Object.values(months).flat(),
172
+ groups: Object.entries(months).map(([month, dates]) => ({
173
+ name: month,
174
+ values: dates,
175
+ })),
176
+ }));
177
+ };
178
+
179
+ export const defaultRendererAndFormatter = (value: any) =>
180
+ String(value ?? '').trim() || '(Vides)';
181
+
182
+ export const getCheckboxes = (
183
+ values: DataGridFilterValue[],
184
+ renderer: DataGridFilterRenderer,
185
+ formatter: DataGridFilterFormatter,
186
+ groups?: DataGridFilterGroup[],
187
+ level = 0
188
+ ): DataGridFilterCheckbox[] => [
189
+ ...(groups ?? [])
190
+ .map<DataGridFilterCheckbox[]>((group) =>
191
+ getCheckboxes(
192
+ group.values ?? [],
193
+ renderer,
194
+ formatter,
195
+ group.groups,
196
+ level + 1
197
+ )
198
+ )
199
+ .flat(),
200
+ ...values.map<DataGridFilterCheckbox>((value) => ({
201
+ displayValue: renderer(value),
202
+ title: formatter(value),
203
+ value: value ?? '',
204
+ level,
205
+ })),
206
+ ];
207
+
208
+ export const textFilter = (key: string): DataGridFilter<'text'> => ({
209
+ type: 'text',
210
+ operator: 'contains',
211
+ values: [''],
212
+ getter: (row) => row[key] ?? '',
213
+ });
214
+
215
+ export const numberFilter = (key: string): DataGridFilter<'number'> => ({
216
+ type: 'number',
217
+ operator: 'equals',
218
+ values: [0],
219
+ getter: (row) => row[key] ?? '',
220
+ });
@@ -1,2 +1,2 @@
1
- export * from './filters';
2
- export * from './columns';
1
+ export * from './filters';
2
+ export * from './columns';
@@ -1,30 +1,30 @@
1
- import { DataGridColumns, DataGridContext } from '../types';
2
- import { useContext, useMemo } from 'react';
3
-
4
- import { isColumnVisible } from '../helpers/columns';
5
- import { pickBy } from 'lodash';
6
-
7
- export { useDataGridCopy } from './useDataGridCopy';
8
- export { useDataGridSettings } from './useDataGridSettings';
9
- export { useDataGrid } from './useDataGrid';
10
-
11
- export const useDataGridContext = <R>(context: DataGridContext<R>) =>
12
- useContext(context);
13
-
14
- export const useVisibleAndHiddenColumns = <R>(columns: DataGridColumns<R>) =>
15
- useMemo(
16
- () => [
17
- pickBy(columns, (col) => isColumnVisible(col)),
18
- pickBy(columns, (col) => !isColumnVisible(col)),
19
- ],
20
- [columns]
21
- );
22
-
23
- export const useSortedColumns = <R>(columns: DataGridColumns<R>) =>
24
- useMemo(
25
- () =>
26
- Object.entries(columns)
27
- .filter(([, col]) => isColumnVisible(col))
28
- .sort((a, b) => (a[1].order ?? 0) - (b[1].order ?? 0)),
29
- [columns]
30
- );
1
+ import { DataGridColumns, DataGridContext } from '../types';
2
+ import { useContext, useMemo } from 'react';
3
+
4
+ import { isColumnVisible } from '../helpers/columns';
5
+ import { pickBy } from 'lodash';
6
+
7
+ export { useDataGridCopy } from './useDataGridCopy';
8
+ export { useDataGridSettings } from './useDataGridSettings';
9
+ export { useDataGrid } from './useDataGrid';
10
+
11
+ export const useDataGridContext = <R>(context: DataGridContext<R>) =>
12
+ useContext(context);
13
+
14
+ export const useVisibleAndHiddenColumns = <R>(columns: DataGridColumns<R>) =>
15
+ useMemo(
16
+ () => [
17
+ pickBy(columns, (col) => isColumnVisible(col)),
18
+ pickBy(columns, (col) => !isColumnVisible(col)),
19
+ ],
20
+ [columns]
21
+ );
22
+
23
+ export const useSortedColumns = <R>(columns: DataGridColumns<R>) =>
24
+ useMemo(
25
+ () =>
26
+ Object.entries(columns)
27
+ .filter(([, col]) => isColumnVisible(col))
28
+ .sort((a, b) => (a[1].order ?? 0) - (b[1].order ?? 0)),
29
+ [columns]
30
+ );