@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,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
+ );