@addev-be/ui 2.4.5 → 2.4.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 (238) hide show
  1. package/assets/icons/arrow-down-1-9.svg +1 -1
  2. package/assets/icons/arrow-down-a-z.svg +1 -1
  3. package/assets/icons/arrow-up-z-a.svg +1 -1
  4. package/assets/icons/check.svg +1 -1
  5. package/assets/icons/circle-check.svg +1 -1
  6. package/assets/icons/down.svg +1 -1
  7. package/assets/icons/filter-full.svg +1 -1
  8. package/assets/icons/filter.svg +1 -1
  9. package/assets/icons/hashtag.svg +1 -1
  10. package/assets/icons/image-slash.svg +1 -1
  11. package/assets/icons/left.svg +1 -1
  12. package/assets/icons/magnifier.svg +1 -1
  13. package/assets/icons/phone.svg +1 -1
  14. package/assets/icons/right.svg +1 -1
  15. package/assets/icons/sort-calendar-ascending.svg +5 -5
  16. package/assets/icons/spinner-third.svg +1 -1
  17. package/assets/icons/table-columns.svg +1 -1
  18. package/assets/icons/table-footer-slash.svg +4 -4
  19. package/assets/icons/table-footer.svg +3 -3
  20. package/assets/icons/up.svg +1 -1
  21. package/assets/icons/user-tie.svg +1 -1
  22. package/assets/icons/x-bar.svg +3 -3
  23. package/dist/components/data/AdvancedRequestDataGrid/helpers/advancedRequests.js +9 -8
  24. package/dist/components/data/AdvancedRequestDataGrid/helpers/columns.js +21 -72
  25. package/dist/components/data/AdvancedRequestDataGrid/index.js +2 -2
  26. package/dist/components/data/AdvancedRequestDataGrid/types.d.ts +1 -1
  27. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.d.ts +10 -0
  28. package/dist/components/data/DataGrid/AdvancedRequestDataGrid.js +173 -0
  29. package/dist/components/data/DataGrid/DataGridFooter.js +1 -1
  30. package/dist/components/data/DataGrid/FilterValuesScroller.d.ts +13 -0
  31. package/dist/components/data/DataGrid/FilterValuesScroller.js +73 -0
  32. package/dist/components/data/DataGrid/VirtualScroller.d.ts +11 -0
  33. package/dist/components/data/DataGrid/VirtualScroller.js +41 -0
  34. package/dist/components/data/DataGrid/helpers/advancedRequests.d.ts +12 -0
  35. package/dist/components/data/DataGrid/helpers/advancedRequests.js +53 -0
  36. package/dist/components/data/DataGrid/helpers.d.ts +28 -0
  37. package/dist/components/data/DataGrid/helpers.js +436 -0
  38. package/dist/components/data/DataGrid/styles.js +6 -3
  39. package/dist/components/data/SmartQueryDataGrid/helpers/columns.d.ts +20 -0
  40. package/dist/components/data/SmartQueryDataGrid/helpers/columns.js +160 -0
  41. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.d.ts +5 -0
  42. package/dist/components/data/SmartQueryDataGrid/helpers/hooks.js +41 -0
  43. package/dist/components/data/SmartQueryDataGrid/helpers/index.d.ts +2 -0
  44. package/dist/components/data/SmartQueryDataGrid/helpers/index.js +18 -0
  45. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.d.ts +3 -0
  46. package/dist/components/data/SmartQueryDataGrid/helpers/smartQueries.js +15 -0
  47. package/dist/components/data/SmartQueryDataGrid/hooks.d.ts +9 -0
  48. package/dist/components/data/SmartQueryDataGrid/hooks.js +63 -0
  49. package/dist/components/data/SmartQueryDataGrid/index.d.ts +12 -0
  50. package/dist/components/data/SmartQueryDataGrid/index.js +242 -0
  51. package/dist/components/data/SmartQueryDataGrid/types.d.ts +22 -0
  52. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.d.ts +2 -1
  53. package/dist/components/data/SqlRequestDataGrid/SqlRequestForeignListEditableCell.js +2 -3
  54. package/dist/components/forms/Form/InputWithLabel.d.ts +2 -0
  55. package/dist/components/forms/Form/InputWithLabel.js +10 -0
  56. package/dist/components/forms/Form/types.d.ts +7 -0
  57. package/dist/components/forms/Form/types.js +2 -0
  58. package/dist/config/types.d.ts +11 -0
  59. package/dist/config/types.js +2 -0
  60. package/dist/helpers/react.d.ts +2 -0
  61. package/dist/helpers/react.js +8 -0
  62. package/dist/services/index.js +17 -7
  63. package/dist/services/requests/userPermissions.d.ts +4 -0
  64. package/dist/services/requests/userPermissions.js +20 -0
  65. package/eslint.config.js +3 -3
  66. package/package.json +2 -2
  67. package/src/Icons.tsx +138 -138
  68. package/src/components/auth/LoginForm.tsx +86 -86
  69. package/src/components/auth/LoginPage.tsx +32 -32
  70. package/src/components/auth/PasswordRecoveryForm.tsx +53 -53
  71. package/src/components/auth/PasswordResetForm.tsx +112 -112
  72. package/src/components/auth/styles.ts +14 -14
  73. package/src/components/data/DataGrid/DataGridCell.tsx +81 -81
  74. package/src/components/data/DataGrid/DataGridColumnsModal/helpers.ts +9 -9
  75. package/src/components/data/DataGrid/DataGridColumnsModal/hooks.tsx +59 -59
  76. package/src/components/data/DataGrid/DataGridColumnsModal/index.tsx +182 -182
  77. package/src/components/data/DataGrid/DataGridColumnsModal/styles.ts +104 -104
  78. package/src/components/data/DataGrid/DataGridEditableCell/CheckboxEditableCell.tsx +37 -37
  79. package/src/components/data/DataGrid/DataGridEditableCell/DateEditableCell.tsx +38 -38
  80. package/src/components/data/DataGrid/DataGridEditableCell/NumberEditableCell.tsx +71 -71
  81. package/src/components/data/DataGrid/DataGridEditableCell/TextEditableCell.tsx +37 -37
  82. package/src/components/data/DataGrid/DataGridEditableCell/index.tsx +106 -106
  83. package/src/components/data/DataGrid/DataGridEditableCell/styles.ts +35 -35
  84. package/src/components/data/DataGrid/DataGridEditableCell/types.ts +18 -18
  85. package/src/components/data/DataGrid/DataGridFilterMenu/FilterValuesScroller.tsx +129 -129
  86. package/src/components/data/DataGrid/DataGridFilterMenu/hooks.tsx +81 -81
  87. package/src/components/data/DataGrid/DataGridFilterMenu/index.tsx +370 -370
  88. package/src/components/data/DataGrid/DataGridFilterMenu/styles.ts +97 -97
  89. package/src/components/data/DataGrid/DataGridFooter.tsx +47 -45
  90. package/src/components/data/DataGrid/DataGridHeader.tsx +74 -74
  91. package/src/components/data/DataGrid/DataGridHeaderCell.tsx +112 -112
  92. package/src/components/data/DataGrid/DataGridRowTemplate.tsx +83 -83
  93. package/src/components/data/DataGrid/DataGridToolbar.tsx +134 -134
  94. package/src/components/data/DataGrid/FilterModalContent/index.tsx +137 -137
  95. package/src/components/data/DataGrid/FilterModalContent/styles.ts +22 -22
  96. package/src/components/data/DataGrid/constants.ts +6 -6
  97. package/src/components/data/DataGrid/helpers/columns.tsx +456 -456
  98. package/src/components/data/DataGrid/helpers/filters.ts +287 -287
  99. package/src/components/data/DataGrid/helpers/index.ts +2 -2
  100. package/src/components/data/DataGrid/hooks/index.ts +29 -29
  101. package/src/components/data/DataGrid/hooks/useDataGrid.tsx +383 -383
  102. package/src/components/data/DataGrid/hooks/useDataGridChangedRows.ts +97 -97
  103. package/src/components/data/DataGrid/hooks/useDataGridCopy.ts +174 -174
  104. package/src/components/data/DataGrid/hooks/useDataGridSettings.ts +48 -48
  105. package/src/components/data/DataGrid/hooks/useRefreshModal.tsx +48 -48
  106. package/src/components/data/DataGrid/index.tsx +111 -111
  107. package/src/components/data/DataGrid/styles.ts +434 -430
  108. package/src/components/data/DataGrid/types.ts +380 -380
  109. package/src/components/data/SqlRequestDataGrid/helpers/columns.tsx +526 -526
  110. package/src/components/data/SqlRequestDataGrid/helpers/index.ts +2 -2
  111. package/src/components/data/SqlRequestDataGrid/helpers/rows.ts +24 -24
  112. package/src/components/data/SqlRequestDataGrid/helpers/sqlRequests.ts +16 -16
  113. package/src/components/data/SqlRequestDataGrid/index.tsx +417 -417
  114. package/src/components/data/SqlRequestDataGrid/styles.ts +15 -15
  115. package/src/components/data/SqlRequestDataGrid/types.ts +74 -74
  116. package/src/components/data/SqlRequestForeignList/index.tsx +254 -254
  117. package/src/components/data/SqlRequestForeignList/styles.ts +43 -43
  118. package/src/components/data/SqlRequestForeignList/types.ts +32 -32
  119. package/src/components/data/SqlRequestGrid/filters/FiltersSidebar.tsx +108 -108
  120. package/src/components/data/SqlRequestGrid/filters/styles.ts +88 -88
  121. package/src/components/data/SqlRequestGrid/helpers/index.ts +1 -1
  122. package/src/components/data/SqlRequestGrid/helpers/sqlRequests.ts +16 -16
  123. package/src/components/data/SqlRequestGrid/index.tsx +304 -304
  124. package/src/components/data/SqlRequestGrid/styles.ts +20 -20
  125. package/src/components/data/SqlRequestGrid/types.ts +73 -73
  126. package/src/components/data/VirtualScroller/hooks.ts +71 -71
  127. package/src/components/data/VirtualScroller/index.tsx +89 -89
  128. package/src/components/data/VirtualScroller/styles.ts +57 -57
  129. package/src/components/data/VirtualScroller/types.ts +10 -10
  130. package/src/components/forms/AutoTextArea.tsx +48 -48
  131. package/src/components/forms/Button.tsx +132 -132
  132. package/src/components/forms/Form/Checkbox.tsx +12 -12
  133. package/src/components/forms/Form/CustomSelect.tsx +86 -86
  134. package/src/components/forms/Form/FormGroup.tsx +31 -31
  135. package/src/components/forms/Form/Input.tsx +16 -16
  136. package/src/components/forms/Form/Row.tsx +32 -32
  137. package/src/components/forms/Form/Select.tsx +82 -82
  138. package/src/components/forms/Form/TextArea.tsx +17 -17
  139. package/src/components/forms/Form/index.tsx +48 -48
  140. package/src/components/forms/Form/styles.ts +184 -184
  141. package/src/components/forms/IconButton.tsx +61 -61
  142. package/src/components/forms/IndeterminateCheckbox.tsx +46 -46
  143. package/src/components/forms/NumberInput.tsx +53 -53
  144. package/src/components/forms/Select.tsx +34 -34
  145. package/src/components/forms/VerticalLabel.tsx +20 -20
  146. package/src/components/forms/styles.ts +42 -42
  147. package/src/components/layout/Columns.ts +28 -28
  148. package/src/components/layout/Dropdown/index.tsx +113 -113
  149. package/src/components/layout/Dropdown/styles.ts +53 -53
  150. package/src/components/layout/Flexbox.ts +21 -21
  151. package/src/components/layout/Grid/index.tsx +8 -8
  152. package/src/components/layout/Grid/styles.ts +34 -34
  153. package/src/components/layout/Loading/index.tsx +29 -29
  154. package/src/components/layout/Loading/styles.ts +29 -29
  155. package/src/components/layout/Masonry/index.tsx +29 -29
  156. package/src/components/layout/Masonry/styles.ts +20 -20
  157. package/src/components/layout/Modal/index.tsx +51 -51
  158. package/src/components/layout/Modal/styles.ts +125 -125
  159. package/src/components/search/HighlightedText.tsx +41 -41
  160. package/src/components/search/QuickSearchBar.tsx +102 -102
  161. package/src/components/search/QuickSearchResults.tsx +86 -86
  162. package/src/components/search/styles.ts +96 -96
  163. package/src/components/search/types.ts +29 -29
  164. package/src/components/ui/Avatar/index.tsx +54 -54
  165. package/src/components/ui/Card/index.tsx +14 -14
  166. package/src/components/ui/Card/styles.ts +37 -37
  167. package/src/components/ui/ContextMenu/index.tsx +79 -79
  168. package/src/components/ui/ContextMenu/styles.ts +119 -119
  169. package/src/components/ui/Ellipsis.tsx +33 -33
  170. package/src/components/ui/Label.tsx +93 -93
  171. package/src/components/ui/Message/index.tsx +57 -57
  172. package/src/components/ui/Message/styles.ts +44 -44
  173. package/src/components/ui/TabsView/TabsList.tsx +44 -44
  174. package/src/components/ui/TabsView/TabsView.tsx +38 -38
  175. package/src/components/ui/TabsView/styles.ts +76 -76
  176. package/src/components/ui/TabsView/types.ts +15 -15
  177. package/src/config/index.ts +10 -10
  178. package/src/helpers/components.ts +9 -9
  179. package/src/helpers/dates.ts +17 -17
  180. package/src/helpers/getScrollbarSize.ts +14 -14
  181. package/src/helpers/numbers.ts +63 -63
  182. package/src/helpers/responsive.ts +83 -83
  183. package/src/helpers/styled/space.ts +114 -114
  184. package/src/helpers/styled/typography.ts +25 -25
  185. package/src/helpers/text.ts +13 -13
  186. package/src/helpers/types.ts +9 -9
  187. package/src/hooks/useContainerMediaQuery.ts +7 -7
  188. package/src/hooks/useElementSize.ts +24 -24
  189. package/src/hooks/useMediaQuery.ts +9 -9
  190. package/src/hooks/useMediaQueryForWidth.ts +35 -35
  191. package/src/hooks/useMutableState.ts +25 -25
  192. package/src/hooks/useShowArchived.ts +28 -28
  193. package/src/hooks/useWindowSize.ts +20 -20
  194. package/src/index.ts +102 -102
  195. package/src/providers/AuthenticationProvider/helpers.ts +3 -3
  196. package/src/providers/AuthenticationProvider/index.tsx +303 -303
  197. package/src/providers/LoadingProvider/index.tsx +47 -47
  198. package/src/providers/PortalsProvider/index.tsx +54 -54
  199. package/src/providers/PortalsProvider/styles.ts +31 -31
  200. package/src/providers/SettingsProvider/index.tsx +70 -70
  201. package/src/providers/ThemeProvider/defaultTheme.ts +470 -470
  202. package/src/providers/ThemeProvider/helpers.ts +84 -84
  203. package/src/providers/ThemeProvider/index.ts +66 -66
  204. package/src/providers/ThemeProvider/types.ts +134 -134
  205. package/src/providers/ToastProvider/index.tsx +93 -93
  206. package/src/providers/TrackingProvider/index.tsx +71 -71
  207. package/src/providers/UiProviders/index.tsx +76 -76
  208. package/src/providers/UiProviders/styles.ts +10 -10
  209. package/src/providers/hooks.ts +14 -14
  210. package/src/services/HttpService.ts +92 -92
  211. package/src/services/WebSocketService.ts +155 -155
  212. package/src/services/advancedRequests.ts +102 -102
  213. package/src/services/base.ts +23 -23
  214. package/src/services/globalSearch.ts +32 -32
  215. package/src/services/hooks.ts +92 -92
  216. package/src/services/requests/auth.ts +44 -44
  217. package/src/services/requests/generic.ts +62 -62
  218. package/src/services/requests/tracking.ts +12 -12
  219. package/src/services/requests/userProfiles.ts +35 -35
  220. package/src/services/requests/users.ts +28 -28
  221. package/src/services/smartQueries.ts +122 -122
  222. package/src/services/sqlRequests.ts +111 -111
  223. package/src/services/types/auth.ts +98 -98
  224. package/src/services/types/base.ts +10 -10
  225. package/src/services/types/generic.ts +82 -82
  226. package/src/services/types/tracking.ts +29 -29
  227. package/src/services/types/userProfiles.ts +79 -79
  228. package/src/services/types/users.ts +74 -74
  229. package/src/services/updateSqlRequests.ts +32 -32
  230. package/src/styles/animations.scss +30 -30
  231. package/src/styles/index.scss +42 -42
  232. package/src/types.ts +8 -8
  233. package/src/typings.d.ts +2 -2
  234. package/tsconfig.json +18 -18
  235. package/dist/services/requests/printing.d.ts +0 -2
  236. package/dist/services/requests/printing.js +0 -8
  237. package/dist/services/types/printing.d.ts +0 -8
  238. /package/dist/{services/types/printing.js → components/data/SmartQueryDataGrid/types.js} +0 -0
@@ -1,287 +1,287 @@
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
- const dateBeforePredicate: DataGridFilterPredicateBuilder<string> = (
99
- ...filterValues
100
- ) => {
101
- const limitDate = moment(filterValues[0]);
102
- return (valueToVerify) => moment(valueToVerify).isBefore(limitDate);
103
- };
104
- const dateAfterPredicate: DataGridFilterPredicateBuilder<string> = (
105
- ...filterValues
106
- ) => {
107
- const limitDate = moment(filterValues[0]);
108
- return (valueToVerify) => moment(valueToVerify).isAfter(limitDate);
109
- };
110
- const dateEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
111
- ...filterValues
112
- ) => {
113
- const date = moment(filterValues[0]);
114
- return (valueToVerify) => moment(valueToVerify).isSame(date);
115
- };
116
- const dateNotEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
117
- ...filterValues
118
- ) => {
119
- const date = moment(filterValues[0]);
120
- return (valueToVerify) => !moment(valueToVerify).isSame(date);
121
- };
122
- const dateInRangePredicate: DataGridFilterPredicateBuilder<string> = (
123
- ...filterValues
124
- ) => {
125
- const date1 = moment(filterValues[0]);
126
- const date2 = moment(filterValues[1]);
127
- const startDate = date1.isBefore(date2) ? date1 : date2;
128
- const endDate = date1.isBefore(date2) ? date2 : date1;
129
- return (valueToVerify) =>
130
- moment(valueToVerify).isBetween(startDate, endDate, 'days', '[]');
131
- };
132
- const dateInArrayPredicate: DataGridFilterPredicateBuilder<string> = (
133
- ...filterValues
134
- ) => {
135
- return (valueToVerify) => filterValues.includes(valueToVerify);
136
- };
137
-
138
- export const filtersPredicates: DataGridFilterPredicates = {
139
- date: {
140
- before: dateBeforePredicate,
141
- after: dateAfterPredicate,
142
- equals: dateEqualsPredicate,
143
- notEquals: dateNotEqualsPredicate,
144
- inRange: dateInRangePredicate,
145
- inArray: dateInArrayPredicate,
146
- },
147
- text: {
148
- contains: textContainsPredicate,
149
- notContains: textNotContainsPredicate,
150
- equals: textEqualsPredicate,
151
- notEquals: textNotEqualsPredicate,
152
- startsWith: textStartsWithPredicate,
153
- endsWith: textEndsWithPredicate,
154
- inArray: textInArrayPredicate,
155
- },
156
- number: {
157
- equals: numberEqualsPredicate,
158
- notEquals: numberNotEqualsPredicate,
159
- lessThan: numberLessThanPredicate,
160
- lessThanOrEqual: numberLessThanOrEqualPredicate,
161
- greaterThan: numberGreaterThanPredicate,
162
- greaterThanOrEqual: numberGreaterThanOrEqualPredicate,
163
- inRange: numberInRangePredicate,
164
- inArray: numberInArrayPredicate,
165
- },
166
- };
167
-
168
- export const applyFilters = <R>(rows: R[], filters: DataGridFilter[]): R[] => {
169
- return filters.reduce(
170
- (tempRows, filter) => applyFilter(tempRows, filter),
171
- rows
172
- );
173
- };
174
-
175
- export const applyFilter = <R>(rows: R[], filter: DataGridFilter): R[] => {
176
- const predicateBuilder = (filtersPredicates as any)[filter.type][
177
- filter.operator
178
- ];
179
- if (typeof predicateBuilder !== 'function') return rows;
180
- const predicate = predicateBuilder(...filter.values);
181
- return rows.filter((row) => predicate(filter.getter(row)));
182
- };
183
-
184
- export const defaultFilterGetter = (row: any, columnKey: string) =>
185
- row[columnKey];
186
-
187
- export const defaultFilterValues: {
188
- [K in DataGridFilterType]: DataGridFilterDataType<K>;
189
- } = {
190
- date: '',
191
- text: '',
192
- number: 0,
193
- };
194
-
195
- export const defaultValueParsers: {
196
- [K in DataGridFilterType]: (value: string) => DataGridFilterDataType<K>;
197
- } = {
198
- date: (value) => moment(value).format('YYYY-MM-DD'),
199
- text: (value) => value,
200
- number: (value) => parseFloat(value),
201
- };
202
-
203
- export const groupDatesByYearAndMonth = (dates: any[]) =>
204
- dates.reduce((acc: Record<string, Record<string, any[]>>, date) => {
205
- const year = moment(date).format('YYYY');
206
- if (!acc[year]) {
207
- acc[year] = {};
208
- }
209
- const yearAndMonth = moment(date).format(`MM/YYYY`);
210
- if (!acc[year][yearAndMonth]) {
211
- acc[year][yearAndMonth] = [];
212
- }
213
- acc[year][yearAndMonth].push(date);
214
- return acc;
215
- }, {} as Record<string, Record<string, any[]>>);
216
-
217
- export const getDateGroups = (dates: any[]): DataGridFilterGroup[] => {
218
- const grouperDates = groupDatesByYearAndMonth(dates);
219
- return Object.entries(grouperDates).map(([year, months]) => ({
220
- name: year,
221
- displayValue: year,
222
- values: Object.values(months).flat(),
223
- groups: Object.entries(months).map(([month, dates]) => ({
224
- displayValue: month,
225
- name: month,
226
- values: dates,
227
- })),
228
- }));
229
- };
230
-
231
- export const defaultRendererAndFormatter = (value: any) =>
232
- String(value ?? '').trim() || '(Vides)';
233
-
234
- export const getCheckboxes = (
235
- values: DataGridFilterValue[],
236
- displayValue: DataGridFilterValue,
237
- renderer: DataGridFilterRenderer,
238
- formatter: DataGridFilterFormatter,
239
- groups?: DataGridFilterGroup[],
240
- level = 0
241
- ): DataGridFilterCheckbox[] =>
242
- groups
243
- ? groups
244
- .map<DataGridFilterCheckbox[]>((group) => [
245
- {
246
- displayValue: group.displayValue,
247
- title: formatter(group.displayValue),
248
- values: group.values ?? [],
249
- level,
250
- },
251
- ...getCheckboxes(
252
- group.values ?? [],
253
- group.displayValue,
254
- renderer,
255
- formatter,
256
- group.groups,
257
- level + 1
258
- ),
259
- ])
260
- .flat()
261
- : values.map<DataGridFilterCheckbox>((value) => ({
262
- displayValue: renderer(value),
263
- title: formatter(value),
264
- values: [value ?? ''],
265
- level,
266
- }));
267
-
268
- export const dateFilter = (key: string): DataGridFilter<'date'> => ({
269
- type: 'date',
270
- operator: 'before',
271
- values: [''],
272
- getter: (row) => row[key] ?? '',
273
- });
274
-
275
- export const textFilter = (key: string): DataGridFilter<'text'> => ({
276
- type: 'text',
277
- operator: 'contains',
278
- values: [''],
279
- getter: (row) => row[key] ?? '',
280
- });
281
-
282
- export const numberFilter = (key: string): DataGridFilter<'number'> => ({
283
- type: 'number',
284
- operator: 'equals',
285
- values: [0],
286
- getter: (row) => row[key] ?? '',
287
- });
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
+ const dateBeforePredicate: DataGridFilterPredicateBuilder<string> = (
99
+ ...filterValues
100
+ ) => {
101
+ const limitDate = moment(filterValues[0]);
102
+ return (valueToVerify) => moment(valueToVerify).isBefore(limitDate);
103
+ };
104
+ const dateAfterPredicate: DataGridFilterPredicateBuilder<string> = (
105
+ ...filterValues
106
+ ) => {
107
+ const limitDate = moment(filterValues[0]);
108
+ return (valueToVerify) => moment(valueToVerify).isAfter(limitDate);
109
+ };
110
+ const dateEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
111
+ ...filterValues
112
+ ) => {
113
+ const date = moment(filterValues[0]);
114
+ return (valueToVerify) => moment(valueToVerify).isSame(date);
115
+ };
116
+ const dateNotEqualsPredicate: DataGridFilterPredicateBuilder<string> = (
117
+ ...filterValues
118
+ ) => {
119
+ const date = moment(filterValues[0]);
120
+ return (valueToVerify) => !moment(valueToVerify).isSame(date);
121
+ };
122
+ const dateInRangePredicate: DataGridFilterPredicateBuilder<string> = (
123
+ ...filterValues
124
+ ) => {
125
+ const date1 = moment(filterValues[0]);
126
+ const date2 = moment(filterValues[1]);
127
+ const startDate = date1.isBefore(date2) ? date1 : date2;
128
+ const endDate = date1.isBefore(date2) ? date2 : date1;
129
+ return (valueToVerify) =>
130
+ moment(valueToVerify).isBetween(startDate, endDate, 'days', '[]');
131
+ };
132
+ const dateInArrayPredicate: DataGridFilterPredicateBuilder<string> = (
133
+ ...filterValues
134
+ ) => {
135
+ return (valueToVerify) => filterValues.includes(valueToVerify);
136
+ };
137
+
138
+ export const filtersPredicates: DataGridFilterPredicates = {
139
+ date: {
140
+ before: dateBeforePredicate,
141
+ after: dateAfterPredicate,
142
+ equals: dateEqualsPredicate,
143
+ notEquals: dateNotEqualsPredicate,
144
+ inRange: dateInRangePredicate,
145
+ inArray: dateInArrayPredicate,
146
+ },
147
+ text: {
148
+ contains: textContainsPredicate,
149
+ notContains: textNotContainsPredicate,
150
+ equals: textEqualsPredicate,
151
+ notEquals: textNotEqualsPredicate,
152
+ startsWith: textStartsWithPredicate,
153
+ endsWith: textEndsWithPredicate,
154
+ inArray: textInArrayPredicate,
155
+ },
156
+ number: {
157
+ equals: numberEqualsPredicate,
158
+ notEquals: numberNotEqualsPredicate,
159
+ lessThan: numberLessThanPredicate,
160
+ lessThanOrEqual: numberLessThanOrEqualPredicate,
161
+ greaterThan: numberGreaterThanPredicate,
162
+ greaterThanOrEqual: numberGreaterThanOrEqualPredicate,
163
+ inRange: numberInRangePredicate,
164
+ inArray: numberInArrayPredicate,
165
+ },
166
+ };
167
+
168
+ export const applyFilters = <R>(rows: R[], filters: DataGridFilter[]): R[] => {
169
+ return filters.reduce(
170
+ (tempRows, filter) => applyFilter(tempRows, filter),
171
+ rows
172
+ );
173
+ };
174
+
175
+ export const applyFilter = <R>(rows: R[], filter: DataGridFilter): R[] => {
176
+ const predicateBuilder = (filtersPredicates as any)[filter.type][
177
+ filter.operator
178
+ ];
179
+ if (typeof predicateBuilder !== 'function') return rows;
180
+ const predicate = predicateBuilder(...filter.values);
181
+ return rows.filter((row) => predicate(filter.getter(row)));
182
+ };
183
+
184
+ export const defaultFilterGetter = (row: any, columnKey: string) =>
185
+ row[columnKey];
186
+
187
+ export const defaultFilterValues: {
188
+ [K in DataGridFilterType]: DataGridFilterDataType<K>;
189
+ } = {
190
+ date: '',
191
+ text: '',
192
+ number: 0,
193
+ };
194
+
195
+ export const defaultValueParsers: {
196
+ [K in DataGridFilterType]: (value: string) => DataGridFilterDataType<K>;
197
+ } = {
198
+ date: (value) => moment(value).format('YYYY-MM-DD'),
199
+ text: (value) => value,
200
+ number: (value) => parseFloat(value),
201
+ };
202
+
203
+ export const groupDatesByYearAndMonth = (dates: any[]) =>
204
+ dates.reduce((acc: Record<string, Record<string, any[]>>, date) => {
205
+ const year = moment(date).format('YYYY');
206
+ if (!acc[year]) {
207
+ acc[year] = {};
208
+ }
209
+ const yearAndMonth = moment(date).format(`MM/YYYY`);
210
+ if (!acc[year][yearAndMonth]) {
211
+ acc[year][yearAndMonth] = [];
212
+ }
213
+ acc[year][yearAndMonth].push(date);
214
+ return acc;
215
+ }, {} as Record<string, Record<string, any[]>>);
216
+
217
+ export const getDateGroups = (dates: any[]): DataGridFilterGroup[] => {
218
+ const grouperDates = groupDatesByYearAndMonth(dates);
219
+ return Object.entries(grouperDates).map(([year, months]) => ({
220
+ name: year,
221
+ displayValue: year,
222
+ values: Object.values(months).flat(),
223
+ groups: Object.entries(months).map(([month, dates]) => ({
224
+ displayValue: month,
225
+ name: month,
226
+ values: dates,
227
+ })),
228
+ }));
229
+ };
230
+
231
+ export const defaultRendererAndFormatter = (value: any) =>
232
+ String(value ?? '').trim() || '(Vides)';
233
+
234
+ export const getCheckboxes = (
235
+ values: DataGridFilterValue[],
236
+ displayValue: DataGridFilterValue,
237
+ renderer: DataGridFilterRenderer,
238
+ formatter: DataGridFilterFormatter,
239
+ groups?: DataGridFilterGroup[],
240
+ level = 0
241
+ ): DataGridFilterCheckbox[] =>
242
+ groups
243
+ ? groups
244
+ .map<DataGridFilterCheckbox[]>((group) => [
245
+ {
246
+ displayValue: group.displayValue,
247
+ title: formatter(group.displayValue),
248
+ values: group.values ?? [],
249
+ level,
250
+ },
251
+ ...getCheckboxes(
252
+ group.values ?? [],
253
+ group.displayValue,
254
+ renderer,
255
+ formatter,
256
+ group.groups,
257
+ level + 1
258
+ ),
259
+ ])
260
+ .flat()
261
+ : values.map<DataGridFilterCheckbox>((value) => ({
262
+ displayValue: renderer(value),
263
+ title: formatter(value),
264
+ values: [value ?? ''],
265
+ level,
266
+ }));
267
+
268
+ export const dateFilter = (key: string): DataGridFilter<'date'> => ({
269
+ type: 'date',
270
+ operator: 'before',
271
+ values: [''],
272
+ getter: (row) => row[key] ?? '',
273
+ });
274
+
275
+ export const textFilter = (key: string): DataGridFilter<'text'> => ({
276
+ type: 'text',
277
+ operator: 'contains',
278
+ values: [''],
279
+ getter: (row) => row[key] ?? '',
280
+ });
281
+
282
+ export const numberFilter = (key: string): DataGridFilter<'number'> => ({
283
+ type: 'number',
284
+ operator: 'equals',
285
+ values: [0],
286
+ getter: (row) => row[key] ?? '',
287
+ });
@@ -1,2 +1,2 @@
1
- export * from './filters';
2
- export * from './columns';
1
+ export * from './filters';
2
+ export * from './columns';
@@ -1,29 +1,29 @@
1
- import { DataGridColumns, DataGridContext } from '../types';
2
- import { useContext, useMemo } from 'react';
3
-
4
- import { isColumnVisible } from '../helpers/columns';
5
-
6
- export { useDataGrid } from './useDataGrid';
7
- export { useDataGridCopy } from './useDataGridCopy';
8
- export { useDataGridSettings } from './useDataGridSettings';
9
-
10
- export const useDataGridContext = <R>(context: DataGridContext<R>) =>
11
- useContext(context);
12
-
13
- export const useVisibleAndHiddenColumns = <R>(columns: DataGridColumns<R>) =>
14
- useMemo(
15
- () => [
16
- columns.filter(isColumnVisible),
17
- columns.filter((col) => !isColumnVisible(col)),
18
- ],
19
- [columns]
20
- );
21
-
22
- export const useSortedColumns = <R>(columns: DataGridColumns<R>) =>
23
- useMemo(
24
- () =>
25
- columns
26
- .filter(isColumnVisible)
27
- .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)),
28
- [columns]
29
- );
1
+ import { DataGridColumns, DataGridContext } from '../types';
2
+ import { useContext, useMemo } from 'react';
3
+
4
+ import { isColumnVisible } from '../helpers/columns';
5
+
6
+ export { useDataGrid } from './useDataGrid';
7
+ export { useDataGridCopy } from './useDataGridCopy';
8
+ export { useDataGridSettings } from './useDataGridSettings';
9
+
10
+ export const useDataGridContext = <R>(context: DataGridContext<R>) =>
11
+ useContext(context);
12
+
13
+ export const useVisibleAndHiddenColumns = <R>(columns: DataGridColumns<R>) =>
14
+ useMemo(
15
+ () => [
16
+ columns.filter(isColumnVisible),
17
+ columns.filter((col) => !isColumnVisible(col)),
18
+ ],
19
+ [columns]
20
+ );
21
+
22
+ export const useSortedColumns = <R>(columns: DataGridColumns<R>) =>
23
+ useMemo(
24
+ () =>
25
+ columns
26
+ .filter(isColumnVisible)
27
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)),
28
+ [columns]
29
+ );