@addev-be/ui 0.2.2 → 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 (168) 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/AdvancedRequestDataGrid/helpers/advancedRequests.d.ts +14 -0
  18. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +76 -0
  19. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.d.ts +22 -0
  20. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +156 -0
  21. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.d.ts +2 -0
  22. package/dist/components/data/AdvancedRequestDataGrid/helpers/index.js +18 -0
  23. package/dist/components/data/AdvancedRequestDataGrid/index.d.ts +2 -0
  24. package/dist/components/data/AdvancedRequestDataGrid/index.js +215 -0
  25. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +21 -0
  26. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +1 -2
  27. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +3 -5
  28. package/dist/components/data/DataGrid/DataGridCell.d.ts +1 -1
  29. package/dist/components/data/DataGrid/DataGridCell.js +6 -6
  30. package/dist/components/data/DataGrid/DataGridEditableCell.js +2 -7
  31. package/dist/components/data/DataGrid/DataGridFilterMenu/index.js +10 -8
  32. package/dist/components/data/DataGrid/DataGridFooter.js +4 -14
  33. package/dist/components/data/DataGrid/DataGridHeader.js +60 -12
  34. package/dist/components/data/DataGrid/DataGridHeaderCell.js +6 -5
  35. package/dist/components/data/DataGrid/FilterModalContent/index.d.ts +5 -5
  36. package/dist/components/data/DataGrid/FilterModalContent/index.js +11 -9
  37. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +8 -7
  38. package/dist/components/data/DataGrid/FilterValuesScroller.js +5 -6
  39. package/dist/components/data/DataGrid/VirtualScroller.js +1 -6
  40. package/dist/components/data/DataGrid/helpers/columns.d.ts +12 -13
  41. package/dist/components/data/DataGrid/helpers/columns.js +17 -71
  42. package/dist/components/data/DataGrid/helpers/filters.d.ts +8 -7
  43. package/dist/components/data/DataGrid/helpers/filters.js +26 -21
  44. package/dist/components/data/DataGrid/helpers/index.d.ts +1 -2
  45. package/dist/components/data/DataGrid/helpers/index.js +1 -2
  46. package/dist/components/data/DataGrid/hooks/index.d.ts +2 -2
  47. package/dist/components/data/DataGrid/hooks/index.js +4 -4
  48. package/dist/components/data/DataGrid/hooks/useDataGrid.js +27 -5
  49. package/dist/components/data/DataGrid/hooks/useDataGridCopy.js +0 -1
  50. package/dist/components/data/DataGrid/hooks/useDataGridSettings.js +0 -1
  51. package/dist/components/data/DataGrid/index.js +27 -20
  52. package/dist/components/data/DataGrid/styles.d.ts +7 -2
  53. package/dist/components/data/DataGrid/styles.js +13 -10
  54. package/dist/components/data/DataGrid/types.d.ts +47 -54
  55. package/dist/components/data/SqlRequestDataGrid/helpers/columns.d.ts +16 -0
  56. package/dist/components/data/SqlRequestDataGrid/helpers/columns.js +112 -0
  57. package/dist/components/data/SqlRequestDataGrid/helpers/index.d.ts +2 -0
  58. package/dist/components/data/SqlRequestDataGrid/helpers/index.js +18 -0
  59. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.d.ts +3 -0
  60. package/dist/components/data/SqlRequestDataGrid/helpers/sqlRequests.js +18 -0
  61. package/dist/components/data/SqlRequestDataGrid/index.d.ts +2 -0
  62. package/dist/components/data/SqlRequestDataGrid/index.js +224 -0
  63. package/dist/components/data/SqlRequestDataGrid/types.d.ts +21 -0
  64. package/dist/components/data/SqlRequestDataGrid/types.js +2 -0
  65. package/dist/components/data/index.d.ts +7 -2
  66. package/dist/components/data/index.js +7 -2
  67. package/dist/components/forms/IconButton.js +1 -1
  68. package/dist/components/forms/IndeterminateCheckbox.js +1 -1
  69. package/dist/components/layout/Modal/index.js +1 -1
  70. package/dist/helpers/dates.d.ts +2 -0
  71. package/dist/helpers/dates.js +13 -0
  72. package/dist/providers/PortalsProvider/index.d.ts +1 -1
  73. package/dist/providers/PortalsProvider/index.js +1 -1
  74. package/dist/services/HttpService.d.ts +10 -0
  75. package/dist/services/HttpService.js +117 -0
  76. package/dist/services/advancedRequests.d.ts +3 -3
  77. package/dist/services/advancedRequests.js +2 -2
  78. package/dist/services/hooks.d.ts +2 -1
  79. package/dist/services/hooks.js +10 -3
  80. package/dist/services/sqlRequests.d.ts +40 -0
  81. package/dist/services/sqlRequests.js +10 -0
  82. package/package.json +1 -1
  83. package/src/Icons.tsx +80 -80
  84. package/src/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.ts +93 -93
  85. package/src/components/data/AdvancedRequestDataGrid/helpers/columns.tsx +262 -262
  86. package/src/components/data/AdvancedRequestDataGrid/helpers/index.ts +2 -2
  87. package/src/components/data/AdvancedRequestDataGrid/index.tsx +269 -269
  88. package/src/components/data/AdvancedRequestDataGrid/types.ts +47 -47
  89. package/src/components/data/DataGrid/DataGridCell.tsx +73 -75
  90. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +14 -14
  91. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +58 -58
  92. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +181 -181
  93. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  94. package/src/components/data/DataGrid/DataGridEditableCell.tsx +43 -54
  95. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +75 -75
  96. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +200 -190
  97. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +100 -100
  98. package/src/components/data/DataGrid/DataGridFooter.tsx +44 -64
  99. package/src/components/data/DataGrid/DataGridHeader.tsx +126 -128
  100. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +167 -166
  101. package/src/components/data/DataGrid/FilterModalContent/index.tsx +124 -125
  102. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  103. package/src/components/data/DataGrid/FilterValuesScroller.tsx +133 -131
  104. package/src/components/data/DataGrid/VirtualScroller.tsx +46 -46
  105. package/src/components/data/DataGrid/helpers/columns.tsx +196 -199
  106. package/src/components/data/DataGrid/helpers/filters.ts +220 -207
  107. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  108. package/src/components/data/DataGrid/hooks/index.ts +30 -30
  109. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +264 -261
  110. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +165 -166
  111. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -49
  112. package/src/components/data/DataGrid/index.tsx +132 -133
  113. package/src/components/data/DataGrid/styles.ts +326 -299
  114. package/src/components/data/DataGrid/types.ts +241 -233
  115. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +224 -206
  116. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  117. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  118. package/src/components/data/SqlRequestDataGrid/index.tsx +252 -221
  119. package/src/components/data/SqlRequestDataGrid/types.ts +47 -46
  120. package/src/components/data/index.ts +8 -6
  121. package/src/components/forms/Button.tsx +99 -99
  122. package/src/components/forms/IconButton.tsx +56 -56
  123. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  124. package/src/components/forms/Select.tsx +40 -40
  125. package/src/components/forms/index.ts +5 -5
  126. package/src/components/forms/styles.ts +20 -20
  127. package/src/components/index.ts +3 -3
  128. package/src/components/layout/Dropdown/index.tsx +79 -79
  129. package/src/components/layout/Dropdown/styles.ts +44 -44
  130. package/src/components/layout/Loading/index.tsx +29 -29
  131. package/src/components/layout/Loading/styles.ts +29 -29
  132. package/src/components/layout/Modal/index.tsx +51 -51
  133. package/src/components/layout/Modal/styles.ts +110 -110
  134. package/src/components/layout/index.ts +3 -3
  135. package/src/config/index.ts +14 -14
  136. package/src/helpers/dates.ts +9 -0
  137. package/src/helpers/getScrollbarSize.ts +14 -14
  138. package/src/helpers/numbers.ts +20 -20
  139. package/src/hooks/index.ts +2 -2
  140. package/src/hooks/useElementSize.ts +24 -24
  141. package/src/hooks/useWindowSize.ts +20 -20
  142. package/src/index.ts +7 -7
  143. package/src/providers/PortalsProvider/index.tsx +54 -54
  144. package/src/providers/PortalsProvider/styles.ts +27 -27
  145. package/src/providers/SettingsProvider/index.tsx +70 -70
  146. package/src/providers/ThemeProvider/ThemeProvider.ts +55 -55
  147. package/src/providers/ThemeProvider/defaultTheme.ts +444 -444
  148. package/src/providers/ThemeProvider/index.ts +3 -3
  149. package/src/providers/ThemeProvider/types.ts +123 -123
  150. package/src/providers/UiProviders/index.tsx +65 -65
  151. package/src/providers/UiProviders/styles.ts +10 -10
  152. package/src/providers/hooks.ts +8 -8
  153. package/src/providers/index.ts +5 -5
  154. package/src/services/HttpService.ts +80 -80
  155. package/src/services/WebSocketService.ts +147 -147
  156. package/src/services/advancedRequests.ts +101 -101
  157. package/src/services/base.ts +31 -31
  158. package/src/services/hooks.ts +23 -23
  159. package/src/services/index.ts +2 -2
  160. package/src/services/sqlRequests.ts +99 -98
  161. package/src/styles/animations.scss +30 -30
  162. package/src/styles/index.scss +42 -42
  163. package/src/typings.d.ts +6 -6
  164. package/tsconfig.tsbuildinfo +1 -1
  165. package/dist/components/data/DataGrid/helpers.d.ts +0 -28
  166. package/dist/components/data/DataGrid/helpers.js +0 -436
  167. package/dist/config/types.d.ts +0 -11
  168. /package/dist/{config → components/data/AdvancedRequestDataGrid}/types.js +0 -0
@@ -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
+ );