norma-library 0.5.10 → 0.5.12

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 (162) hide show
  1. package/.babelrc.json +18 -18
  2. package/.prettierignore +10 -10
  3. package/.prettierrc.json +20 -20
  4. package/.storybook/main.ts +20 -20
  5. package/.storybook/preview.ts +15 -15
  6. package/README.md +43 -43
  7. package/commitlint.config.js +1 -1
  8. package/dist/esm/components/Card.d.ts +2 -2
  9. package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
  10. package/dist/esm/components/Icons.d.ts +1 -1
  11. package/dist/esm/components/UncontrolledTable/components/header/index.js +3 -5
  12. package/dist/esm/components/UncontrolledTable/components/header/index.js.map +1 -1
  13. package/dist/esm/components/UncontrolledTable/index.js +9 -6
  14. package/dist/esm/components/UncontrolledTable/index.js.map +1 -1
  15. package/dist/esm/components/UncontrolledTable/interface.d.ts +9 -0
  16. package/docs/index.md +118 -118
  17. package/package.json +136 -136
  18. package/src/components/Accordion.tsx +39 -39
  19. package/src/components/Avatar.tsx +17 -17
  20. package/src/components/Badge.tsx +14 -14
  21. package/src/components/Box/index.tsx +12 -12
  22. package/src/components/Box/interfaces.ts +3 -3
  23. package/src/components/Box/styles.tsx +22 -22
  24. package/src/components/Breadcrumb/index.tsx +27 -27
  25. package/src/components/Breadcrumb/interface.ts +8 -8
  26. package/src/components/Breadcrumb/styles.tsx +32 -32
  27. package/src/components/Button.tsx +26 -26
  28. package/src/components/Card.tsx +37 -37
  29. package/src/components/ChatMessage.tsx +87 -87
  30. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  31. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  32. package/src/components/CheckBox.tsx +21 -21
  33. package/src/components/DateInput/index.tsx +34 -34
  34. package/src/components/DateInput/interface.ts +13 -13
  35. package/src/components/DateInput/styles.tsx +27 -27
  36. package/src/components/DatePicker.tsx +67 -67
  37. package/src/components/DropDown.tsx +24 -24
  38. package/src/components/IconButton.tsx +37 -37
  39. package/src/components/Icons.tsx +82 -82
  40. package/src/components/Modal.tsx +113 -113
  41. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  42. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  43. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  44. package/src/components/MultiSelectInput/index.tsx +60 -60
  45. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  46. package/src/components/MultiSelectInput/styles.tsx +43 -43
  47. package/src/components/Paper.tsx +12 -12
  48. package/src/components/ProgressBar.tsx +51 -47
  49. package/src/components/RadioGroup.tsx +40 -40
  50. package/src/components/RangerSlider.tsx +65 -65
  51. package/src/components/Select.tsx +74 -74
  52. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  53. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  54. package/src/components/SelectInput/index.tsx +45 -45
  55. package/src/components/SelectInput/interfaces.ts +15 -15
  56. package/src/components/SelectInput/styles.tsx +31 -31
  57. package/src/components/Svgs.tsx +506 -506
  58. package/src/components/Table/components/header/index.tsx +86 -86
  59. package/src/components/Table/components/header/styles.tsx +59 -59
  60. package/src/components/Table/components/index.tsx +8 -8
  61. package/src/components/Table/components/pagination/index.tsx +39 -39
  62. package/src/components/Table/components/pagination/styles.tsx +28 -28
  63. package/src/components/Table/components/tbody/index.tsx +30 -30
  64. package/src/components/Table/components/tbody/styles.tsx +4 -4
  65. package/src/components/Table/index.tsx +317 -317
  66. package/src/components/Table/interface.ts +23 -23
  67. package/src/components/Table/styles.tsx +117 -117
  68. package/src/components/Tabs.tsx +106 -106
  69. package/src/components/Tag.tsx +33 -33
  70. package/src/components/TextField.tsx +19 -19
  71. package/src/components/TextInput/index.tsx +37 -37
  72. package/src/components/TextInput/interface.ts +9 -9
  73. package/src/components/TextInput/styles.tsx +23 -23
  74. package/src/components/TimeLine.tsx +89 -89
  75. package/src/components/TimePicker.tsx +78 -78
  76. package/src/components/Typography/Text/index.tsx +20 -20
  77. package/src/components/Typography/Text/interfaces.ts +5 -5
  78. package/src/components/Typography/Text/styles.tsx +40 -40
  79. package/src/components/Typography/Title/index.tsx +22 -22
  80. package/src/components/Typography/Title/interfaces.ts +6 -6
  81. package/src/components/Typography/Title/styles.tsx +40 -40
  82. package/src/components/Typography/index.tsx +6 -6
  83. package/src/components/UncontrolledTable/components/header/index.tsx +63 -51
  84. package/src/components/UncontrolledTable/components/header/styles.tsx +59 -59
  85. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  86. package/src/components/UncontrolledTable/components/pagination/index.tsx +39 -39
  87. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  88. package/src/components/UncontrolledTable/components/tbody/index.tsx +30 -30
  89. package/src/components/UncontrolledTable/components/tbody/styles.tsx +4 -4
  90. package/src/components/UncontrolledTable/index.tsx +307 -300
  91. package/src/components/UncontrolledTable/interface.ts +36 -27
  92. package/src/components/UncontrolledTable/styles.tsx +120 -120
  93. package/src/components/index.ts +24 -24
  94. package/src/helpers/alignments.ts +14 -14
  95. package/src/helpers/borders.ts +18 -18
  96. package/src/helpers/colors.ts +206 -206
  97. package/src/helpers/index.ts +5 -5
  98. package/src/helpers/radios.ts +24 -24
  99. package/src/helpers/sizes.ts +72 -72
  100. package/src/index.ts +64 -64
  101. package/src/interfaces/Accordion.ts +12 -12
  102. package/src/interfaces/Avatar.tsx +15 -15
  103. package/src/interfaces/Badge.ts +19 -19
  104. package/src/interfaces/Button.ts +22 -22
  105. package/src/interfaces/Card.ts +11 -11
  106. package/src/interfaces/ChatMessage.ts +12 -12
  107. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  108. package/src/interfaces/CheckBox.ts +27 -27
  109. package/src/interfaces/DatePicker.ts +13 -13
  110. package/src/interfaces/DropDown.ts +14 -14
  111. package/src/interfaces/IconButton.ts +22 -22
  112. package/src/interfaces/Icons.ts +17 -17
  113. package/src/interfaces/Modal.ts +16 -16
  114. package/src/interfaces/Paper.ts +12 -12
  115. package/src/interfaces/ProgressBar.ts +19 -18
  116. package/src/interfaces/RadioGroup.ts +22 -22
  117. package/src/interfaces/RangerSlider.ts +21 -21
  118. package/src/interfaces/Select.ts +17 -17
  119. package/src/interfaces/Tabs.ts +19 -19
  120. package/src/interfaces/Tag.ts +17 -17
  121. package/src/interfaces/TextField.ts +44 -44
  122. package/src/interfaces/TimeLine.ts +11 -11
  123. package/src/interfaces/TimePicker.ts +13 -13
  124. package/src/interfaces/index.ts +23 -23
  125. package/src/providers/NormaProvider.tsx +13 -13
  126. package/src/sample-data-2.json +178 -178
  127. package/src/sample-data.json +177 -177
  128. package/src/stories/Accordion.stories.tsx +65 -65
  129. package/src/stories/Avatar.stories.tsx +123 -123
  130. package/src/stories/Badge.stories.tsx +39 -39
  131. package/src/stories/Box.stories.tsx +35 -35
  132. package/src/stories/Breadcrumb.stories.tsx +44 -44
  133. package/src/stories/Button.stories.tsx +93 -93
  134. package/src/stories/Card.stories.tsx +39 -39
  135. package/src/stories/ChatMessage.stories.tsx +84 -84
  136. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  137. package/src/stories/CheckBox.stories.tsx +88 -88
  138. package/src/stories/DateInput.stories.tsx +51 -51
  139. package/src/stories/DatePicker.stories.tsx +50 -50
  140. package/src/stories/DropDown.stories.tsx +57 -57
  141. package/src/stories/IconButton.stories.tsx +78 -78
  142. package/src/stories/Modal.stories.tsx +195 -195
  143. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  144. package/src/stories/Paper.stories.tsx +53 -53
  145. package/src/stories/ProgressBar.stories.tsx +95 -95
  146. package/src/stories/RadioGroup.stories.tsx +87 -87
  147. package/src/stories/RangerSlider.stories.tsx +58 -58
  148. package/src/stories/Select.stories.tsx +100 -100
  149. package/src/stories/SelectInput.stories.tsx +78 -78
  150. package/src/stories/Table.stories.tsx +372 -372
  151. package/src/stories/Tabs.stories.tsx +62 -62
  152. package/src/stories/Tag.stories.tsx +56 -56
  153. package/src/stories/Text.stories.tsx +37 -37
  154. package/src/stories/TextField.stories.tsx +310 -310
  155. package/src/stories/TextInput.stories.tsx +52 -52
  156. package/src/stories/TimeLine.stories.tsx +35 -35
  157. package/src/stories/TimePicker.stories.tsx +87 -87
  158. package/src/stories/Title.stories.tsx +43 -43
  159. package/src/stories/UncontrolledTable.stories.tsx +321 -379
  160. package/src/styles/globals.scss +17 -17
  161. package/src/types/index.ts +204 -204
  162. package/vite.config.ts +15 -15
@@ -1,300 +1,307 @@
1
- import React, { useState, useMemo } from 'react';
2
- import * as S from './styles';
3
- import {
4
- flexRender,
5
- getCoreRowModel,
6
- getSortedRowModel,
7
- useReactTable,
8
- getFilteredRowModel,
9
- ColumnFiltersState,
10
- getPaginationRowModel,
11
- } from '@tanstack/react-table';
12
-
13
- import { format, isAfter, isBefore } from 'date-fns';
14
- import { Pagination, Header, TBody } from './components';
15
- import { UncontrolledTableProps } from './interface';
16
-
17
- const UncontrolledTable = (props: UncontrolledTableProps) => {
18
- const {
19
- data,
20
- columns,
21
- onClick,
22
- onMouseOver,
23
- onMouseOut,
24
- showTotalResults,
25
- showSettings,
26
- rowCount,
27
- onChangePage,
28
- pagination,
29
- showClearFields,
30
- onClearFieldsClick,
31
- onFilterClick,
32
- onSortClick,
33
- } = props;
34
-
35
- const [openFilterDialog, setOpenFilterDialog] = useState('');
36
- const [sorting, setSorting] = useState<any>([]);
37
- const [filterByColumn, setFilterByColumn] = useState<ColumnFiltersState>([]);
38
- const [globalFilters, setGlobalFilters] = useState<any>([]);
39
- const [orderSmallest, setOrderSmallest] = useState(false);
40
- const [orderLargest, setOrderLargest] = useState(false);
41
-
42
- const customFilterText = (row: any, value: string) => {
43
- const itensFinded = globalFilters.map((item: any) => {
44
- if (item.type === 'Horario Igual a') {
45
- return item.value === row.original[item.acessor];
46
- }
47
- if (item.type === 'Horario maior que') {
48
- const date = new Date();
49
- const rowDate = new Date();
50
- const hourSplited = item?.value?.split(':');
51
- const rowDateSplited = row.original[item.acessor].split(':');
52
-
53
- date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0);
54
- rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0, 0);
55
-
56
- return isAfter(rowDate, date);
57
- }
58
- if (item.type === 'Horario menor que') {
59
- const date = new Date();
60
- const rowDate = new Date();
61
- const hourSplited = item?.value?.split(':');
62
- const rowDateSplited = row.original[item.acessor].split(':');
63
-
64
- date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0);
65
- rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0, 0);
66
-
67
- return isBefore(rowDate, date);
68
- }
69
- if (item.type === 'Data Igual a') {
70
- const dateSplited = item?.value?.split('-');
71
- return (
72
- row.original[item.acessor] ===
73
- format(new Date(dateSplited[0], dateSplited[1] - 1, dateSplited[2], 0, 0), 'dd/MM/yyyy')
74
- );
75
- }
76
- if (item.type === 'Data maior que') {
77
- const dateSplited = item?.value?.split('-');
78
- const rowDateSplited = row.original[item.acessor].split('/');
79
- return isAfter(
80
- new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]),
81
- new Date(dateSplited[0], dateSplited[1], dateSplited[2]),
82
- );
83
- }
84
- if (item.type === 'Data menor que') {
85
- const dateSplited = item?.value?.split('-');
86
- const rowDateSplited = row.original[item.acessor].split('/');
87
- return isBefore(
88
- new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]),
89
- new Date(dateSplited[0], dateSplited[1], dateSplited[2]),
90
- );
91
- }
92
- if (item.type === 'Igual a' && typeof value === 'number') {
93
- return row.original[item.acessor] === item.value;
94
- }
95
- if (item.type === 'Igual a') {
96
- return row.original[item.acessor] === item.value;
97
- }
98
- if (item.type === 'Contém') {
99
- return !!row.original[item.acessor].includes(item.value);
100
- }
101
- if (item.type === 'Não é igual a') {
102
- return row.original[item.acessor] !== item.value;
103
- }
104
- if (item.type === 'Maior que') {
105
- return row.original[item.acessor] > item.value;
106
- }
107
- if (item.type === 'Menor que') {
108
- return row.original[item.acessor] < item.value;
109
- }
110
- });
111
-
112
- const result = itensFinded.every((item: any) => item);
113
- return result;
114
- };
115
-
116
- const reactTableConfig = useMemo(() => {
117
- const config: any = {
118
- data,
119
- columns,
120
- filterFns: {
121
- customFilterText: customFilterText,
122
- },
123
- state: {
124
- sorting: sorting,
125
- columnFilters: filterByColumn,
126
- },
127
- rowCount: rowCount || 10,
128
- getCoreRowModel: getCoreRowModel(),
129
- getSortedRowModel: getSortedRowModel(),
130
- getFilteredRowModel: getFilteredRowModel(),
131
- onSortingChange: setSorting,
132
- onColumnFiltersChange: setFilterByColumn,
133
- };
134
- config.rowCount = rowCount || 10;
135
-
136
- if (!pagination) {
137
- config.getPaginationRowModel = getPaginationRowModel();
138
- } else {
139
- config.state.pagination = pagination;
140
- config.manualPagination = true;
141
- config.pageCount = pagination.totalPages;
142
- }
143
- return config;
144
- }, [data, sorting, filterByColumn, columns, pagination]);
145
-
146
- const table = useReactTable(reactTableConfig);
147
-
148
- return (
149
- <S.Container>
150
- <Header
151
- table={table}
152
- globalFilters={globalFilters}
153
- orderSmallest={orderSmallest}
154
- orderLargest={orderLargest}
155
- showTotalResults={showTotalResults}
156
- showSettings={showSettings}
157
- setGlobalFilters={setGlobalFilters}
158
- setOrderLargest={setOrderLargest}
159
- setOrderSmallest={setOrderSmallest}
160
- showClearFiels={showClearFields}
161
- onClearFieldsClick={() => onClearFieldsClick && onClearFieldsClick()}
162
- />
163
- <S.Content>
164
- <S.Table>
165
- <thead>
166
- {table.getHeaderGroups().map((headerGroup: any) => (
167
- <tr key={headerGroup.id}>
168
- {headerGroup.headers.map((header: any) => (
169
- <th key={header.id}>
170
- <div>
171
- <S.ColumnContent
172
- onClick={() => {
173
- if (!header?.column?.columnDef?.disableMenu)
174
- setOpenFilterDialog(header.column.columnDef.accessorKey);
175
- }}
176
- >
177
- <S.TextColumn $alone={header?.column?.columnDef?.disableMenu}>
178
- {!header.isPlaceholder && flexRender(header.column.columnDef.header, header.getContext())}
179
- </S.TextColumn>
180
- {!header?.column?.columnDef?.disableMenu && (
181
- <S.IconFilterDialog>
182
- <svg
183
- fill="#666"
184
- focusable="false"
185
- aria-hidden="true"
186
- viewBox="0 0 24 24"
187
- data-testid="ArrowDropDownIcon"
188
- >
189
- <path d="m7 10 5 5 5-5z"></path>
190
- </svg>
191
- </S.IconFilterDialog>
192
- )}
193
- </S.ColumnContent>
194
- {openFilterDialog === header.column.columnDef.accessorKey && (
195
- <>
196
- <S.backgroundDialog onClick={() => setOpenFilterDialog('')}></S.backgroundDialog>
197
- <S.FilterDialog>
198
- <S.ListFilterDialog>
199
- <S.OptionFilterDialog
200
- style={{
201
- background: orderSmallest ? 'rgba(0, 0, 0, 0.04)' : '',
202
- }}
203
- onClick={() => {
204
- onSortClick && onSortClick(header.column.columnDef.accessorKey, 'asc');
205
- setOpenFilterDialog('');
206
- }}
207
- >
208
- <div className="icon">
209
- <svg
210
- fill="#666"
211
- stroke="currentColor"
212
- strokeWidth="1.5"
213
- viewBox="0 0 24 24"
214
- xmlns="http://www.w3.org/2000/svg"
215
- aria-hidden="true"
216
- width="20"
217
- height="20"
218
- >
219
- <path
220
- strokeLinecap="round"
221
- strokeLinejoin="round"
222
- d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"
223
- ></path>
224
- </svg>
225
- </div>
226
- <p>Menor primeiro</p>
227
- </S.OptionFilterDialog>
228
- <S.OptionFilterDialog
229
- style={{
230
- background: orderLargest ? 'rgba(0, 0, 0, 0.04)' : '',
231
- }}
232
- onClick={() => {
233
- onSortClick && onSortClick(header.column.columnDef.accessorKey, 'desc');
234
- setOpenFilterDialog('');
235
- }}
236
- >
237
- <div className="icon rotate">
238
- <svg
239
- fill="#666"
240
- stroke="currentColor"
241
- strokeWidth="1.5"
242
- viewBox="0 0 24 24"
243
- xmlns="http://www.w3.org/2000/svg"
244
- aria-hidden="true"
245
- width="20"
246
- height="20"
247
- >
248
- <path
249
- strokeLinecap="round"
250
- strokeLinejoin="round"
251
- d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"
252
- ></path>
253
- </svg>
254
- </div>
255
- <p>Maior primeiro</p>
256
- </S.OptionFilterDialog>
257
- {!header?.column?.columnDef?.nofilter && (
258
- <S.OptionFilterDialog
259
- onClick={() => onFilterClick && onFilterClick(header.column.columnDef.accessorKey)}
260
- >
261
- <div className="icon">
262
- <svg
263
- fill="none"
264
- stroke="currentColor"
265
- strokeWidth="1.5"
266
- viewBox="0 0 24 24"
267
- xmlns="http://www.w3.org/2000/svg"
268
- aria-hidden="true"
269
- width="16"
270
- height="16"
271
- >
272
- <path
273
- strokeLinecap="round"
274
- strokeLinejoin="round"
275
- d="M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"
276
- ></path>
277
- </svg>
278
- </div>
279
- <p>Filtrar por</p>
280
- </S.OptionFilterDialog>
281
- )}
282
- </S.ListFilterDialog>
283
- </S.FilterDialog>
284
- </>
285
- )}
286
- </div>
287
- </th>
288
- ))}
289
- </tr>
290
- ))}
291
- </thead>
292
- <TBody table={table} onClick={onClick} onMouseOver={onMouseOver} onMouseOut={onMouseOut} />
293
- </S.Table>
294
- </S.Content>
295
- <Pagination table={table} onChangePage={onChangePage} />
296
- </S.Container>
297
- );
298
- };
299
-
300
- export default UncontrolledTable;
1
+ import React, { useState, useMemo } from 'react';
2
+ import * as S from './styles';
3
+ import {
4
+ flexRender,
5
+ getCoreRowModel,
6
+ getSortedRowModel,
7
+ useReactTable,
8
+ getFilteredRowModel,
9
+ ColumnFiltersState,
10
+ getPaginationRowModel,
11
+ } from '@tanstack/react-table';
12
+
13
+ import { format, isAfter, isBefore } from 'date-fns';
14
+ import { Pagination, Header, TBody } from './components';
15
+ import { UncontrolledTableProps } from './interface';
16
+
17
+ const UncontrolledTable = (props: UncontrolledTableProps) => {
18
+ const {
19
+ data,
20
+ columns,
21
+ onClick,
22
+ onMouseOver,
23
+ onMouseOut,
24
+ showTotalResults,
25
+ showSettings,
26
+ rowCount,
27
+ onChangePage,
28
+ pagination,
29
+ showClearFields,
30
+ onClearFieldsClick,
31
+ onFilterClick,
32
+ onSortClick,
33
+ customTotalResults,
34
+ labels,
35
+ } = props;
36
+
37
+ const [openFilterDialog, setOpenFilterDialog] = useState('');
38
+ const [sorting, setSorting] = useState<any>([]);
39
+ const [filterByColumn, setFilterByColumn] = useState<ColumnFiltersState>([]);
40
+ const [globalFilters, setGlobalFilters] = useState<any>([]);
41
+ const [orderSmallest, setOrderSmallest] = useState(false);
42
+ const [orderLargest, setOrderLargest] = useState(false);
43
+
44
+ const customFilterText = (row: any, value: string) => {
45
+ const itensFinded = globalFilters.map((item: any) => {
46
+ if (item.type === 'Horario Igual a') {
47
+ return item.value === row.original[item.acessor];
48
+ }
49
+ if (item.type === 'Horario maior que') {
50
+ const date = new Date();
51
+ const rowDate = new Date();
52
+ const hourSplited = item?.value?.split(':');
53
+ const rowDateSplited = row.original[item.acessor].split(':');
54
+
55
+ date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0);
56
+ rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0, 0);
57
+
58
+ return isAfter(rowDate, date);
59
+ }
60
+ if (item.type === 'Horario menor que') {
61
+ const date = new Date();
62
+ const rowDate = new Date();
63
+ const hourSplited = item?.value?.split(':');
64
+ const rowDateSplited = row.original[item.acessor].split(':');
65
+
66
+ date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0);
67
+ rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0, 0);
68
+
69
+ return isBefore(rowDate, date);
70
+ }
71
+ if (item.type === 'Data Igual a') {
72
+ const dateSplited = item?.value?.split('-');
73
+ return (
74
+ row.original[item.acessor] ===
75
+ format(new Date(dateSplited[0], dateSplited[1] - 1, dateSplited[2], 0, 0), 'dd/MM/yyyy')
76
+ );
77
+ }
78
+ if (item.type === 'Data maior que') {
79
+ const dateSplited = item?.value?.split('-');
80
+ const rowDateSplited = row.original[item.acessor].split('/');
81
+ return isAfter(
82
+ new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]),
83
+ new Date(dateSplited[0], dateSplited[1], dateSplited[2]),
84
+ );
85
+ }
86
+ if (item.type === 'Data menor que') {
87
+ const dateSplited = item?.value?.split('-');
88
+ const rowDateSplited = row.original[item.acessor].split('/');
89
+ return isBefore(
90
+ new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]),
91
+ new Date(dateSplited[0], dateSplited[1], dateSplited[2]),
92
+ );
93
+ }
94
+ if (item.type === 'Igual a' && typeof value === 'number') {
95
+ return row.original[item.acessor] === item.value;
96
+ }
97
+ if (item.type === 'Igual a') {
98
+ return row.original[item.acessor] === item.value;
99
+ }
100
+ if (item.type === 'Contém') {
101
+ return !!row.original[item.acessor].includes(item.value);
102
+ }
103
+ if (item.type === 'Não é igual a') {
104
+ return row.original[item.acessor] !== item.value;
105
+ }
106
+ if (item.type === 'Maior que') {
107
+ return row.original[item.acessor] > item.value;
108
+ }
109
+ if (item.type === 'Menor que') {
110
+ return row.original[item.acessor] < item.value;
111
+ }
112
+ });
113
+
114
+ const result = itensFinded.every((item: any) => item);
115
+ return result;
116
+ };
117
+
118
+ const reactTableConfig = useMemo(() => {
119
+ const config: any = {
120
+ data,
121
+ columns,
122
+ filterFns: {
123
+ customFilterText: customFilterText,
124
+ },
125
+ state: {
126
+ sorting: sorting,
127
+ columnFilters: filterByColumn,
128
+ },
129
+ rowCount: rowCount || 10,
130
+ getCoreRowModel: getCoreRowModel(),
131
+ getSortedRowModel: getSortedRowModel(),
132
+ getFilteredRowModel: getFilteredRowModel(),
133
+ onSortingChange: setSorting,
134
+ onColumnFiltersChange: setFilterByColumn,
135
+ };
136
+ config.rowCount = rowCount || 10;
137
+
138
+ if (!pagination) {
139
+ config.getPaginationRowModel = getPaginationRowModel();
140
+ } else {
141
+ config.state.pagination = pagination;
142
+ config.manualPagination = true;
143
+ config.pageCount = pagination.totalPages;
144
+ }
145
+ return config;
146
+ }, [data, sorting, filterByColumn, columns, pagination]);
147
+
148
+ const table = useReactTable(reactTableConfig);
149
+
150
+ return (
151
+ <S.Container>
152
+ <Header
153
+ table={table}
154
+ globalFilters={globalFilters}
155
+ orderSmallest={orderSmallest}
156
+ orderLargest={orderLargest}
157
+ showTotalResults={showTotalResults}
158
+ showSettings={showSettings}
159
+ setGlobalFilters={setGlobalFilters}
160
+ setOrderLargest={setOrderLargest}
161
+ setOrderSmallest={setOrderSmallest}
162
+ showClearFiels={showClearFields}
163
+ customTotalResults={customTotalResults}
164
+ clearLabel={labels?.clearFilter}
165
+ onClearFieldsClick={() => onClearFieldsClick && onClearFieldsClick()}
166
+ />
167
+ <S.Content>
168
+ <S.Table>
169
+ <thead>
170
+ {table.getHeaderGroups().map((headerGroup: any) => (
171
+ <tr key={headerGroup.id}>
172
+ {headerGroup.headers.map((header: any) => (
173
+ <th key={header.id}>
174
+ <div>
175
+ <S.ColumnContent
176
+ onClick={() => {
177
+ if (!header?.column?.columnDef?.disableMenu)
178
+ setOpenFilterDialog(header.column.columnDef.accessorKey);
179
+ }}
180
+ >
181
+ <S.TextColumn $alone={header?.column?.columnDef?.disableMenu}>
182
+ {!header.isPlaceholder && flexRender(header.column.columnDef.header, header.getContext())}
183
+ </S.TextColumn>
184
+ {!header?.column?.columnDef?.disableMenu && (
185
+ <S.IconFilterDialog>
186
+ <svg
187
+ fill="#666"
188
+ focusable="false"
189
+ aria-hidden="true"
190
+ viewBox="0 0 24 24"
191
+ data-testid="ArrowDropDownIcon"
192
+ >
193
+ <path d="m7 10 5 5 5-5z"></path>
194
+ </svg>
195
+ </S.IconFilterDialog>
196
+ )}
197
+ </S.ColumnContent>
198
+ {openFilterDialog === header.column.columnDef.accessorKey && (
199
+ <>
200
+ <S.backgroundDialog onClick={() => setOpenFilterDialog('')}></S.backgroundDialog>
201
+ <S.FilterDialog>
202
+ <S.ListFilterDialog>
203
+ <S.OptionFilterDialog
204
+ style={{
205
+ background: orderSmallest ? 'rgba(0, 0, 0, 0.04)' : '',
206
+ }}
207
+ onClick={() => {
208
+ onSortClick && onSortClick(header.column.columnDef.accessorKey, 'asc');
209
+ setOpenFilterDialog('');
210
+ }}
211
+ >
212
+ <div className="icon">
213
+ <svg
214
+ fill="#666"
215
+ stroke="currentColor"
216
+ strokeWidth="1.5"
217
+ viewBox="0 0 24 24"
218
+ xmlns="http://www.w3.org/2000/svg"
219
+ aria-hidden="true"
220
+ width="20"
221
+ height="20"
222
+ >
223
+ <path
224
+ strokeLinecap="round"
225
+ strokeLinejoin="round"
226
+ d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"
227
+ ></path>
228
+ </svg>
229
+ </div>
230
+ <p>{labels?.orderAsc || "Menor primeiro"}</p>
231
+ </S.OptionFilterDialog>
232
+ <S.OptionFilterDialog
233
+ style={{
234
+ background: orderLargest ? 'rgba(0, 0, 0, 0.04)' : '',
235
+ }}
236
+ onClick={() => {
237
+ onSortClick && onSortClick(header.column.columnDef.accessorKey, 'desc');
238
+ setOpenFilterDialog('');
239
+ }}
240
+ >
241
+ <div className="icon rotate">
242
+ <svg
243
+ fill="#666"
244
+ stroke="currentColor"
245
+ strokeWidth="1.5"
246
+ viewBox="0 0 24 24"
247
+ xmlns="http://www.w3.org/2000/svg"
248
+ aria-hidden="true"
249
+ width="20"
250
+ height="20"
251
+ >
252
+ <path
253
+ strokeLinecap="round"
254
+ strokeLinejoin="round"
255
+ d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"
256
+ ></path>
257
+ </svg>
258
+ </div>
259
+ <p>{labels?.orderDesc || 'Maior primeiro'}</p>
260
+ </S.OptionFilterDialog>
261
+ {!header?.column?.columnDef?.nofilter && (
262
+ <S.OptionFilterDialog
263
+ onClick={() => {
264
+ onFilterClick && onFilterClick(header.column.columnDef.accessorKey);
265
+ setOpenFilterDialog('');
266
+ }}
267
+ >
268
+ <div className="icon">
269
+ <svg
270
+ fill="none"
271
+ stroke="currentColor"
272
+ strokeWidth="1.5"
273
+ viewBox="0 0 24 24"
274
+ xmlns="http://www.w3.org/2000/svg"
275
+ aria-hidden="true"
276
+ width="16"
277
+ height="16"
278
+ >
279
+ <path
280
+ strokeLinecap="round"
281
+ strokeLinejoin="round"
282
+ d="M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z"
283
+ ></path>
284
+ </svg>
285
+ </div>
286
+ <p>{labels?.filter || 'Filtrar por'}</p>
287
+ </S.OptionFilterDialog>
288
+ )}
289
+ </S.ListFilterDialog>
290
+ </S.FilterDialog>
291
+ </>
292
+ )}
293
+ </div>
294
+ </th>
295
+ ))}
296
+ </tr>
297
+ ))}
298
+ </thead>
299
+ <TBody table={table} onClick={onClick} onMouseOver={onMouseOver} onMouseOut={onMouseOut} />
300
+ </S.Table>
301
+ </S.Content>
302
+ <Pagination table={table} onChangePage={onChangePage} />
303
+ </S.Container>
304
+ );
305
+ };
306
+
307
+ export default UncontrolledTable;