norma-library 0.5.810 → 0.5.812

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 (239) hide show
  1. package/dist/esm/components/Box/index.d.ts +4 -0
  2. package/dist/esm/components/Box/index.js +8 -0
  3. package/dist/esm/components/Box/index.js.map +1 -0
  4. package/dist/esm/components/Box/interfaces.d.ts +5 -0
  5. package/dist/esm/components/Box/interfaces.js +2 -0
  6. package/dist/esm/components/Box/interfaces.js.map +1 -0
  7. package/dist/esm/components/Box/styles.d.ts +3 -0
  8. package/dist/esm/components/Box/styles.js +17 -0
  9. package/dist/esm/components/Box/styles.js.map +1 -0
  10. package/dist/esm/components/Breadcrumb/index.d.ts +4 -0
  11. package/dist/esm/components/Breadcrumb/index.js +18 -0
  12. package/dist/esm/components/Breadcrumb/index.js.map +1 -0
  13. package/dist/esm/components/Breadcrumb/interface.d.ts +8 -0
  14. package/dist/esm/components/Breadcrumb/interface.js +2 -0
  15. package/dist/esm/components/Breadcrumb/interface.js.map +1 -0
  16. package/dist/esm/components/Breadcrumb/styles.d.ts +5 -0
  17. package/dist/esm/components/Breadcrumb/styles.js +8 -0
  18. package/dist/esm/components/Breadcrumb/styles.js.map +1 -0
  19. package/dist/esm/components/ChatMessageBalloon/ChatMessageBalloon.style.d.ts +1 -1
  20. package/dist/esm/components/DataGrid/base/dropdown.d.ts +4 -4
  21. package/dist/esm/components/DataGrid/base/dropdown.js +125 -125
  22. package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -1
  23. package/dist/esm/components/DataGrid/base/number-filter.d.ts +4 -4
  24. package/dist/esm/components/DataGrid/base/number-filter.js +29 -29
  25. package/dist/esm/components/DataGrid/base/sorting.d.ts +5 -5
  26. package/dist/esm/components/DataGrid/base/sorting.js +14 -14
  27. package/dist/esm/components/DataGrid/icons.d.ts +5 -4
  28. package/dist/esm/components/DataGrid/icons.js +19 -14
  29. package/dist/esm/components/DataGrid/icons.js.map +1 -1
  30. package/dist/esm/components/DataGrid/index.d.ts +3 -5
  31. package/dist/esm/components/DataGrid/index.js +213 -145
  32. package/dist/esm/components/DataGrid/index.js.map +1 -1
  33. package/dist/esm/components/DataGrid/shared.d.ts +20 -20
  34. package/dist/esm/components/DataGrid/shared.js +118 -127
  35. package/dist/esm/components/DataGrid/shared.js.map +1 -1
  36. package/dist/esm/components/DataGrid/styled.d.ts +11 -11
  37. package/dist/esm/components/DataGrid/styled.js +85 -85
  38. package/dist/esm/components/DateInput/index.d.ts +4 -0
  39. package/dist/esm/components/DateInput/index.js +15 -0
  40. package/dist/esm/components/DateInput/index.js.map +1 -0
  41. package/dist/esm/components/DateInput/interface.d.ts +12 -0
  42. package/dist/esm/components/DateInput/interface.js +2 -0
  43. package/dist/esm/components/DateInput/interface.js.map +1 -0
  44. package/dist/esm/components/DateInput/styles.d.ts +5 -0
  45. package/dist/esm/components/DateInput/styles.js +7 -0
  46. package/dist/esm/components/DateInput/styles.js.map +1 -0
  47. package/dist/esm/components/Icons.d.ts +1 -1
  48. package/dist/esm/components/Icons.js.map +1 -1
  49. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.d.ts +3 -0
  50. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js +30 -0
  51. package/dist/esm/components/MultiSelectInput/components/MultiValue/index.js.map +1 -0
  52. package/dist/esm/components/MultiSelectInput/components/Option/index.d.ts +3 -0
  53. package/dist/esm/components/MultiSelectInput/components/Option/index.js +36 -0
  54. package/dist/esm/components/MultiSelectInput/components/Option/index.js.map +1 -0
  55. package/dist/esm/components/MultiSelectInput/components/Option/styles.d.ts +2 -0
  56. package/dist/esm/components/MultiSelectInput/components/Option/styles.js +5 -0
  57. package/dist/esm/components/MultiSelectInput/components/Option/styles.js.map +1 -0
  58. package/dist/esm/components/MultiSelectInput/index.d.ts +4 -0
  59. package/dist/esm/components/MultiSelectInput/index.js +33 -0
  60. package/dist/esm/components/MultiSelectInput/index.js.map +1 -0
  61. package/dist/esm/components/MultiSelectInput/interfaces.d.ts +15 -0
  62. package/dist/esm/components/MultiSelectInput/interfaces.js +2 -0
  63. package/dist/esm/components/MultiSelectInput/interfaces.js.map +1 -0
  64. package/dist/esm/components/MultiSelectInput/styles.d.ts +3 -0
  65. package/dist/esm/components/MultiSelectInput/styles.js +6 -0
  66. package/dist/esm/components/MultiSelectInput/styles.js.map +1 -0
  67. package/dist/esm/components/SelectInput/components/Option/index.d.ts +3 -0
  68. package/dist/esm/components/SelectInput/components/Option/index.js +34 -0
  69. package/dist/esm/components/SelectInput/components/Option/index.js.map +1 -0
  70. package/dist/esm/components/SelectInput/components/Option/styles.d.ts +2 -0
  71. package/dist/esm/components/SelectInput/components/Option/styles.js +5 -0
  72. package/dist/esm/components/SelectInput/components/Option/styles.js.map +1 -0
  73. package/dist/esm/components/SelectInput/index.d.ts +4 -0
  74. package/dist/esm/components/SelectInput/index.js +19 -0
  75. package/dist/esm/components/SelectInput/index.js.map +1 -0
  76. package/dist/esm/components/SelectInput/interfaces.d.ts +15 -0
  77. package/dist/esm/components/SelectInput/interfaces.js +2 -0
  78. package/dist/esm/components/SelectInput/interfaces.js.map +1 -0
  79. package/dist/esm/components/SelectInput/styles.d.ts +3 -0
  80. package/dist/esm/components/SelectInput/styles.js +6 -0
  81. package/dist/esm/components/SelectInput/styles.js.map +1 -0
  82. package/dist/esm/components/Table/components/header/index.d.ts +3 -0
  83. package/dist/esm/components/Table/components/header/index.js +35 -0
  84. package/dist/esm/components/Table/components/header/index.js.map +1 -0
  85. package/dist/esm/components/Table/components/header/styles.d.ts +8 -0
  86. package/dist/esm/components/Table/components/header/styles.js +11 -0
  87. package/dist/esm/components/Table/components/header/styles.js.map +1 -0
  88. package/dist/esm/components/Table/components/index.d.ts +4 -0
  89. package/dist/esm/components/Table/components/index.js +5 -0
  90. package/dist/esm/components/Table/components/index.js.map +1 -0
  91. package/dist/esm/components/Table/components/pagination/index.d.ts +3 -0
  92. package/dist/esm/components/Table/components/pagination/index.js +16 -0
  93. package/dist/esm/components/Table/components/pagination/index.js.map +1 -0
  94. package/dist/esm/components/Table/components/pagination/styles.d.ts +2 -0
  95. package/dist/esm/components/Table/components/pagination/styles.js +5 -0
  96. package/dist/esm/components/Table/components/pagination/styles.js.map +1 -0
  97. package/dist/esm/components/Table/components/tbody/index.d.ts +3 -0
  98. package/dist/esm/components/Table/components/tbody/index.js +8 -0
  99. package/dist/esm/components/Table/components/tbody/index.js.map +1 -0
  100. package/dist/esm/components/Table/components/tbody/styles.d.ts +0 -0
  101. package/dist/esm/components/Table/components/tbody/styles.js +2 -0
  102. package/dist/esm/components/Table/components/tbody/styles.js.map +1 -0
  103. package/dist/esm/components/Table/index-old.d.ts +4 -0
  104. package/dist/esm/components/Table/index-old.js +249 -0
  105. package/dist/esm/components/Table/index-old.js.map +1 -0
  106. package/dist/esm/components/Table/index.d.ts +4 -0
  107. package/dist/esm/components/Table/index.js +215 -0
  108. package/dist/esm/components/Table/index.js.map +1 -0
  109. package/dist/esm/components/Table/interface.d.ts +12 -0
  110. package/dist/esm/components/Table/interface.js +2 -0
  111. package/dist/esm/components/Table/interface.js.map +1 -0
  112. package/dist/esm/components/Table/styles.d.ts +10 -0
  113. package/dist/esm/components/Table/styles.js +13 -0
  114. package/dist/esm/components/Table/styles.js.map +1 -0
  115. package/dist/esm/components/Table-old/index.d.ts +3 -0
  116. package/dist/esm/components/Table-old/index.js +71 -0
  117. package/dist/esm/components/Table-old/index.js.map +1 -0
  118. package/dist/esm/components/Table-old/styles.d.ts +3004 -0
  119. package/dist/esm/components/Table-old/styles.js +15 -0
  120. package/dist/esm/components/Table-old/styles.js.map +1 -0
  121. package/dist/esm/components/TextInput/index.d.ts +4 -0
  122. package/dist/esm/components/TextInput/index.js +16 -0
  123. package/dist/esm/components/TextInput/index.js.map +1 -0
  124. package/dist/esm/components/TextInput/interface.d.ts +10 -0
  125. package/dist/esm/components/TextInput/interface.js +2 -0
  126. package/dist/esm/components/TextInput/interface.js.map +1 -0
  127. package/dist/esm/components/TextInput/styles.d.ts +4 -0
  128. package/dist/esm/components/TextInput/styles.js +7 -0
  129. package/dist/esm/components/TextInput/styles.js.map +1 -0
  130. package/dist/esm/components/Typography/Text/index.d.ts +4 -0
  131. package/dist/esm/components/Typography/Text/index.js +8 -0
  132. package/dist/esm/components/Typography/Text/index.js.map +1 -0
  133. package/dist/esm/components/Typography/Text/interfaces.d.ts +7 -0
  134. package/dist/esm/components/Typography/Text/interfaces.js +2 -0
  135. package/dist/esm/components/Typography/Text/interfaces.js.map +1 -0
  136. package/dist/esm/components/Typography/Text/styles.d.ts +3 -0
  137. package/dist/esm/components/Typography/Text/styles.js +35 -0
  138. package/dist/esm/components/Typography/Text/styles.js.map +1 -0
  139. package/dist/esm/components/Typography/Title/index.d.ts +4 -0
  140. package/dist/esm/components/Typography/Title/index.js +8 -0
  141. package/dist/esm/components/Typography/Title/index.js.map +1 -0
  142. package/dist/esm/components/Typography/Title/interfaces.d.ts +8 -0
  143. package/dist/esm/components/Typography/Title/interfaces.js +2 -0
  144. package/dist/esm/components/Typography/Title/interfaces.js.map +1 -0
  145. package/dist/esm/components/Typography/Title/styles.d.ts +3 -0
  146. package/dist/esm/components/Typography/Title/styles.js +35 -0
  147. package/dist/esm/components/Typography/Title/styles.js.map +1 -0
  148. package/dist/esm/components/Typography/index.d.ts +3 -0
  149. package/dist/esm/components/Typography/index.js +4 -0
  150. package/dist/esm/components/Typography/index.js.map +1 -0
  151. package/dist/esm/components/index.d.ts +1 -1
  152. package/dist/esm/components/index.js +1 -1
  153. package/dist/esm/components/index.js.map +1 -1
  154. package/dist/esm/helpers/alignments.js.map +1 -1
  155. package/dist/esm/helpers/borders.js.map +1 -1
  156. package/dist/esm/helpers/colors.js.map +1 -1
  157. package/dist/esm/helpers/radios.js.map +1 -1
  158. package/dist/esm/helpers/sizes.js.map +1 -1
  159. package/dist/esm/index.d.ts +10 -2
  160. package/dist/esm/index.js +10 -2
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/interfaces/DataGrid.d.ts +42 -42
  163. package/dist/esm/interfaces/DataGrid.js +1 -1
  164. package/dist/esm/interfaces/index.d.ts +0 -1
  165. package/dist/esm/interfaces/index.js +0 -1
  166. package/dist/esm/interfaces/index.js.map +1 -1
  167. package/package.json +6 -4
  168. package/src/components/Box/index.tsx +13 -0
  169. package/src/components/Box/interfaces.ts +4 -0
  170. package/src/components/Box/styles.tsx +23 -0
  171. package/src/components/Breadcrumb/index.tsx +27 -0
  172. package/src/components/Breadcrumb/interface.ts +9 -0
  173. package/src/components/Breadcrumb/styles.tsx +33 -0
  174. package/src/components/DateInput/index.tsx +35 -0
  175. package/src/components/DateInput/interface.ts +14 -0
  176. package/src/components/DateInput/styles.tsx +28 -0
  177. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -0
  178. package/src/components/MultiSelectInput/components/Option/index.tsx +63 -0
  179. package/src/components/MultiSelectInput/components/Option/styles.tsx +9 -0
  180. package/src/components/MultiSelectInput/index.tsx +61 -0
  181. package/src/components/MultiSelectInput/interfaces.ts +16 -0
  182. package/src/components/MultiSelectInput/styles.tsx +44 -0
  183. package/src/components/SelectInput/components/Option/index.tsx +62 -0
  184. package/src/components/SelectInput/components/Option/styles.tsx +9 -0
  185. package/src/components/SelectInput/index.tsx +46 -0
  186. package/src/components/SelectInput/interfaces.ts +16 -0
  187. package/src/components/SelectInput/styles.tsx +32 -0
  188. package/src/components/Table/components/header/index.tsx +59 -0
  189. package/src/components/Table/components/header/styles.tsx +55 -0
  190. package/src/components/Table/components/index.tsx +9 -0
  191. package/src/components/Table/components/pagination/index.tsx +42 -0
  192. package/src/components/Table/components/pagination/styles.tsx +19 -0
  193. package/src/components/Table/components/tbody/index.tsx +20 -0
  194. package/src/components/Table/components/tbody/styles.tsx +0 -0
  195. package/src/components/Table/index.tsx +295 -0
  196. package/src/components/Table/interface.ts +14 -0
  197. package/src/components/Table/styles.tsx +113 -0
  198. package/src/components/TextInput/index.tsx +38 -0
  199. package/src/components/TextInput/interface.ts +10 -0
  200. package/src/components/TextInput/styles.tsx +24 -0
  201. package/src/components/Typography/Text/index.tsx +21 -0
  202. package/src/components/Typography/Text/interfaces.ts +6 -0
  203. package/src/components/Typography/Text/styles.tsx +41 -0
  204. package/src/components/Typography/Title/index.tsx +23 -0
  205. package/src/components/Typography/Title/interfaces.ts +7 -0
  206. package/src/components/Typography/Title/styles.tsx +41 -0
  207. package/src/components/Typography/index.tsx +7 -0
  208. package/src/components/index.ts +1 -1
  209. package/src/index.css +0 -2
  210. package/src/index.ts +19 -2
  211. package/src/interfaces/index.ts +0 -1
  212. package/src/sample-data.json +2 -3
  213. package/src/stories/Box.stories.tsx +36 -0
  214. package/src/stories/Breadcrumb.stories.tsx +45 -0
  215. package/src/stories/DateInput.stories.tsx +52 -0
  216. package/src/stories/MultiSelectInput.stories.tsx +91 -0
  217. package/src/stories/SelectInput.stories.tsx +79 -0
  218. package/src/stories/Table.stories.tsx +222 -0
  219. package/src/stories/Text.stories.tsx +38 -0
  220. package/src/stories/TextInput.stories.tsx +53 -0
  221. package/src/stories/Title.stories.tsx +44 -0
  222. package/src/styles/custom.css +1 -0
  223. package/src/styles/{globals.css → globals.scss} +1 -4
  224. package/tsconfig.json +1 -1
  225. package/vite.config.ts +15 -0
  226. package/.husky/commit-msg +0 -4
  227. package/src/components/DataGrid/allData.json +0 -2918
  228. package/src/components/DataGrid/base/dropdown.tsx +0 -212
  229. package/src/components/DataGrid/base/number-filter.tsx +0 -43
  230. package/src/components/DataGrid/base/sorting.tsx +0 -29
  231. package/src/components/DataGrid/icons.tsx +0 -53
  232. package/src/components/DataGrid/index.tsx +0 -259
  233. package/src/components/DataGrid/shared.ts +0 -154
  234. package/src/components/DataGrid/styled.ts +0 -107
  235. package/src/components/DataGrid/styles/dropdown.module.css +0 -86
  236. package/src/components/DataGrid/styles/number-filter.module.css +0 -16
  237. package/src/components/DataGrid/styles/styles.module.css +0 -107
  238. package/src/interfaces/DataGrid.ts +0 -47
  239. package/src/stories/DataGrid.stories.tsx +0 -31
@@ -0,0 +1,55 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Header = styled.div`
4
+ margin: 0 16px 32px 16px;
5
+ display: flex;
6
+ justify-content: space-between;
7
+ `
8
+
9
+ export const Results = styled.div`
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 8px;
13
+ `
14
+
15
+ export const Tools = styled.div`
16
+
17
+ `
18
+
19
+ export const TextResult = styled.div`
20
+ color: #666666;
21
+ font-size: 16px;
22
+ `
23
+
24
+ export const TextClearSearch = styled.p`
25
+ color: #DE8B50;
26
+ font-size: 14px;
27
+ cursor: pointer;
28
+ &:hover {
29
+ text-decoration: underline;
30
+ }
31
+ `
32
+
33
+ export const IconTools = styled.div`
34
+ width: 24px;
35
+ height: 24px;
36
+ cursor: pointer;
37
+ `
38
+
39
+ export const ListTools = styled.div`
40
+ padding: 12px;
41
+ margin: 6px 0px 0 0;
42
+ position: absolute;
43
+ background: #fff;
44
+ box-shadow: 0px 3px 6px #00000029;
45
+ border: 1px solid #E0E0E0;
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 8px;
49
+ font-size: 14px;
50
+ label {
51
+ display: flex;
52
+ gap: 8px;
53
+ align-items: center;
54
+ }
55
+ `
@@ -0,0 +1,9 @@
1
+ import Pagination from "./pagination";
2
+ import Header from "./header"
3
+ import TBody from "./tbody";
4
+
5
+ export {
6
+ Pagination,
7
+ Header,
8
+ TBody
9
+ }
@@ -0,0 +1,42 @@
1
+ import React from "react"
2
+ import * as S from "./styles"
3
+
4
+ const Pagination:React.FC<any> = ({ table }) => {
5
+ return (
6
+ <S.Pagination>
7
+ <div className='content'>
8
+ <button
9
+ className='button'
10
+ onClick={() => table.previousPage()}
11
+ disabled={!table.getCanPreviousPage()}
12
+ >
13
+ {'<'}
14
+ </button>
15
+ {
16
+ table.getPageCount()
17
+ ? new Array(table.getPageCount()).fill(0).map((item, index) => {
18
+ return (
19
+ <button
20
+ key={item}
21
+ className='button'
22
+ onClick={() => table.previousPage()}
23
+ >
24
+ {index}
25
+ </button>
26
+ )
27
+ })
28
+ : null
29
+ }
30
+ <button
31
+ className='button'
32
+ onClick={() => table.nextPage()}
33
+ disabled={!table.getCanNextPage()}
34
+ >
35
+ {'>'}
36
+ </button>
37
+ </div>
38
+ </S.Pagination>
39
+ )
40
+ }
41
+
42
+ export default Pagination
@@ -0,0 +1,19 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Pagination = styled.div`
4
+ width: 100%;
5
+ margin: 24px 0 0 0;
6
+ display: flex;
7
+ justify-content: center;
8
+ .content {
9
+ display: flex;
10
+ gap: 8px;
11
+ .button {
12
+ border: 1px solid #E8E9EC;
13
+ background: #fff;
14
+ padding: 12px 16px;
15
+ border-radius: 4px;
16
+ color: #4D4F5C;
17
+ }
18
+ }
19
+ `
@@ -0,0 +1,20 @@
1
+ import React from "react"
2
+ import { flexRender } from '@tanstack/react-table'
3
+
4
+ const TBody:React.FC<any> = ({ table }) => {
5
+ return (
6
+ <tbody>
7
+ { table.getRowModel().rows.map((row: any) => (
8
+ <tr key={row.id}>
9
+ { row.getVisibleCells().map((cell: any) => (
10
+ <td key={cell.id}>
11
+ { flexRender(cell.column.columnDef.cell, cell.getContext()) }
12
+ </td>
13
+ )) }
14
+ </tr>
15
+ )) }
16
+ </tbody>
17
+ )
18
+ }
19
+
20
+ export default TBody
@@ -0,0 +1,295 @@
1
+ import React, { useState } 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
+ import { format, isAfter, isBefore } from "date-fns"
13
+ import { Button } from "@mui/material";
14
+ import { TablePropos } from './interface';
15
+ import { Pagination, Header, TBody } from "./components"
16
+
17
+ const Table:React.FC<TablePropos> = ({ data, columns }) => {
18
+ const [openFilterDialog, setOpenFilterDialog] = useState('')
19
+ const [sorting, setSorting] = useState<any>([])
20
+ const [openFilterOptions, setOpenFilterOptions] = useState(false)
21
+ const [filterByColumn, setFilterByColumn] = useState<ColumnFiltersState>([])
22
+ const [filterInputSelected, setFilterInputSelected] = useState<any>()
23
+ const [globalFilters, setGlobalFilters] = useState<any>([])
24
+ const [value, setValue] = useState<any>()
25
+ const [orderSmallest, setOrderSmallest] = useState(false)
26
+ const [orderLargest, setOrderLargest] = useState(false)
27
+
28
+ const customFilterText = (row: any, value: string) => {
29
+ const itensFinded = globalFilters.map((item: any) => {
30
+ if (item.type === 'Horario Igual a') {
31
+ return item.value === row.original[item.acessor]
32
+ }
33
+ if (item.type === 'Horario maior que') {
34
+ const date = new Date()
35
+ const rowDate = new Date()
36
+ const hourSplited = item?.value?.split(':')
37
+ const rowDateSplited = row.original[item.acessor].split(':')
38
+
39
+ date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0)
40
+ rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0 ,0)
41
+
42
+ return isAfter(rowDate, date)
43
+ }
44
+ if (item.type === 'Horario menor que') {
45
+ const date = new Date()
46
+ const rowDate = new Date()
47
+ const hourSplited = item?.value?.split(':')
48
+ const rowDateSplited = row.original[item.acessor].split(':')
49
+
50
+ date.setHours(Number(hourSplited[0]), Number(hourSplited[1]), 0, 0)
51
+ rowDate.setHours(Number(rowDateSplited[0]), Number(rowDateSplited[1]), 0 ,0)
52
+
53
+ return isBefore(rowDate, date)
54
+ }
55
+ if (item.type === 'Data Igual a') {
56
+ const dateSplited = item?.value?.split('-')
57
+ return row.original[item.acessor] === format(new Date(dateSplited[0], dateSplited[1] - 1, dateSplited[2], 0 , 0), "dd/MM/yyyy")
58
+ }
59
+ if (item.type === 'Data maior que') {
60
+ const dateSplited = item?.value?.split('-')
61
+ const rowDateSplited = row.original[item.acessor].split('/')
62
+ return isAfter(new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]), new Date(dateSplited[0], dateSplited[1], dateSplited[2]))
63
+ }
64
+ if (item.type === 'Data menor que') {
65
+ const dateSplited = item?.value?.split('-')
66
+ const rowDateSplited = row.original[item.acessor].split('/')
67
+ return isBefore(new Date(rowDateSplited[2], rowDateSplited[1], rowDateSplited[0]), new Date(dateSplited[0], dateSplited[1], dateSplited[2]))
68
+ }
69
+ if (item.type === 'Igual a' && typeof value === 'number') {
70
+ return row.original[item.acessor] === item.value
71
+ }
72
+ if (item.type === 'Igual a') {
73
+ return row.original[item.acessor] === item.value
74
+ }
75
+ if (item.type === 'Contém') {
76
+ return !!row.original[item.acessor].includes(item.value)
77
+ }
78
+ if (item.type === 'Não é igual a') {
79
+ return row.original[item.acessor] !== item.value
80
+ }
81
+ if (item.type === 'Maior que') {
82
+ return row.original[item.acessor] > item.value
83
+ }
84
+ if (item.type === 'Menor que') {
85
+ return row.original[item.acessor] < item.value
86
+ }
87
+ })
88
+
89
+ const result = itensFinded.every((item: any) => item)
90
+
91
+ return result
92
+ }
93
+
94
+ const table = useReactTable({
95
+ data,
96
+ columns,
97
+ pageCount: data.length ?? -1,
98
+ filterFns:{
99
+ 'customFilterText': customFilterText
100
+ },
101
+ state: {
102
+ sorting: sorting,
103
+ columnFilters: filterByColumn,
104
+ },
105
+ getCoreRowModel: getCoreRowModel(),
106
+ getSortedRowModel: getSortedRowModel(),
107
+ getFilteredRowModel: getFilteredRowModel(),
108
+ getPaginationRowModel: getPaginationRowModel(),
109
+ onSortingChange: setSorting,
110
+ onColumnFiltersChange: setFilterByColumn
111
+ })
112
+
113
+ return (
114
+ <S.Container>
115
+ <Header
116
+ table={table}
117
+ globalFilters={globalFilters}
118
+ orderSmallest={orderSmallest}
119
+ orderLargest={orderLargest}
120
+ setGlobalFilters={setGlobalFilters}
121
+ setOrderLargest={setOrderLargest}
122
+ setOrderSmallest={setOrderSmallest}
123
+ />
124
+ <S.Content>
125
+ <thead>
126
+ {table.getHeaderGroups().map((headerGroup: any) => (
127
+ <tr key={headerGroup.id}>
128
+ {headerGroup.headers.map((header: any) => (
129
+ <th key={header.id}>
130
+ <div>
131
+ <S.ColumnContent>
132
+ <S.TextColumn>
133
+ {header.isPlaceholder
134
+ ? null
135
+ : flexRender(
136
+ header.column.columnDef.header,
137
+ header.getContext()
138
+ )}
139
+ </S.TextColumn>
140
+ <S.IconFilterDialog onClick={() => {
141
+ setOpenFilterDialog(header.column.columnDef.accessorKey)
142
+ }}>
143
+ <svg fill='#666' focusable="false" aria-hidden="true" viewBox="0 0 24 24" data-testid="ArrowDropDownIcon"><path d="m7 10 5 5 5-5z"></path></svg>
144
+ </S.IconFilterDialog>
145
+ </S.ColumnContent>
146
+ { openFilterDialog === header.column.columnDef.accessorKey
147
+ ? (
148
+ <>
149
+ <S.backgroundDialog onClick={() => {
150
+ setOpenFilterDialog('')
151
+ setOpenFilterOptions(false)
152
+ }}></S.backgroundDialog>
153
+ <S.FilterDialog>
154
+ {
155
+ openFilterOptions
156
+ ? (
157
+ <S.ListFilterDialog>
158
+ <p className='label'>Selecione um filtro</p>
159
+ <select className='select' value={filterInputSelected} onChange={(event) => {
160
+ setFilterInputSelected(event.target.value)
161
+ }}>
162
+ <option>Selecione...</option>
163
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'text' ? <option>Igual a</option> : null }
164
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'text' ? <option>Não é igual a</option> : null }
165
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'text' ? <option>Contém</option> : null }
166
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'number' ? <option>Maior que</option> : null }
167
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'number' ? <option>Menor que</option> : null }
168
+ { header?.headerGroup?.headers[header.index].column.columnDef.type === 'number' ? <option>Igual a</option> : null }
169
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'date' ? <option>Data Igual a</option> : null }
170
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'date' ? <option>Data maior que</option> : null }
171
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'date' ? <option>Data menor que</option> : null }
172
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'time' ? <option>Horario Igual a</option> : null }
173
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'time' ? <option>Horario maior que</option> : null }
174
+ { header?.headerGroup?.headers[header.index]. column.columnDef.type === 'time' ? <option>Horario menor que</option> : null }
175
+ </select>
176
+ <div>
177
+ { header.column.getCanFilter()
178
+ ? filterInputSelected === 'Igual a' ||
179
+ filterInputSelected === 'Não é igual a' ||
180
+ filterInputSelected === 'Contém' ||
181
+ filterInputSelected === 'Maior que' ||
182
+ filterInputSelected === 'Menor que' ||
183
+ filterInputSelected === 'Data Igual a' ||
184
+ filterInputSelected === 'Data maior que' ||
185
+ filterInputSelected === 'Data menor que' ||
186
+ filterInputSelected === 'Horario Igual a' ||
187
+ filterInputSelected === 'Horario maior que' ||
188
+ filterInputSelected === 'Horario menor que'
189
+ ? (
190
+ <div>
191
+ <p className='label' style={{ marginTop: '10px' }}>Valor</p>
192
+ <input
193
+ type={header?.headerGroup?.headers[header.index].column.columnDef.type}
194
+ className='select'
195
+ style={{ width: '100%' }}
196
+ value={value as any}
197
+ onChange={event => {
198
+ if (header?.headerGroup?.headers[header.index].column.columnDef.type === 'number') {
199
+ setValue(Number(event.target.value))
200
+ return
201
+ }
202
+ if (header?.headerGroup?.headers[header.index].column.columnDef.type === 'date') {
203
+ setValue(event.target.value)
204
+ return
205
+ }
206
+ setValue(event.target.value)
207
+ }}
208
+ />
209
+ <Button
210
+ color="primary"
211
+ type={"submit"}
212
+ disableElevation
213
+ style={{
214
+ marginTop: 8,
215
+ width: '100%'
216
+ }}
217
+ variant="contained"
218
+ onClick={() => {
219
+ setGlobalFilters((current: any) => [...current,
220
+ {
221
+ acessor: header.column.columnDef.accessorKey,
222
+ type: filterInputSelected,
223
+ value: value
224
+ }
225
+ ])
226
+ header.column.setFilterValue(value)
227
+ setOpenFilterOptions(false)
228
+ setOpenFilterDialog('')
229
+ setFilterInputSelected(false)
230
+ setValue(null)
231
+ }}
232
+ >
233
+ Buscar
234
+ </Button>
235
+ </div>
236
+ )
237
+ : null
238
+ : null
239
+ }
240
+ </div>
241
+ </S.ListFilterDialog>
242
+ )
243
+ : (
244
+ <S.ListFilterDialog>
245
+ <S.OptionFilterDialog style={{
246
+ background: orderSmallest ? 'rgba(0, 0, 0, 0.04)' : ''
247
+ }}>
248
+ <div className='icon'>
249
+ <svg fill="#666" stroke="currentColor" strokeWidth="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="20" height="20"><path strokeLinecap="round" strokeLinejoin="round" d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"></path></svg>
250
+ </div>
251
+ <p onClick={() => {
252
+ header.column.toggleSorting()
253
+ setOrderSmallest(true)
254
+ setOrderLargest(false)
255
+ }}>Menor primeiro</p>
256
+ </S.OptionFilterDialog>
257
+ <S.OptionFilterDialog style={{
258
+ background: orderLargest ? 'rgba(0, 0, 0, 0.04)' : ''
259
+ }}>
260
+ <div className='icon rotate'>
261
+ <svg fill="#666" stroke="currentColor" strokeWidth="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="20" height="20"><path strokeLinecap="round" strokeLinejoin="round" d="M12 4.5v15m0 0l6.75-6.75M12 19.5l-6.75-6.75"></path></svg>
262
+ </div>
263
+ <p onClick={() => {
264
+ header.column.toggleSorting()
265
+ setOrderLargest(true)
266
+ setOrderSmallest(false)
267
+ }}>Maior primeiro</p>
268
+ </S.OptionFilterDialog>
269
+ <S.OptionFilterDialog>
270
+ <div className='icon'>
271
+ <svg fill="none" stroke="currentColor" strokeWidth="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="16" height="16"><path strokeLinecap="round" strokeLinejoin="round" 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"></path></svg>
272
+ </div>
273
+ <p onClick={() => setOpenFilterOptions(true)}>Filtrar por</p>
274
+ </S.OptionFilterDialog>
275
+ </S.ListFilterDialog>
276
+ )
277
+ }
278
+ </S.FilterDialog>
279
+ </>
280
+ ) : null
281
+ }
282
+ </div>
283
+ </th>
284
+ ))}
285
+ </tr>
286
+ ))}
287
+ </thead>
288
+ <TBody table={table} />
289
+ </S.Content>
290
+ <Pagination table={table} />
291
+ </S.Container>
292
+ )
293
+ }
294
+
295
+ export default Table
@@ -0,0 +1,14 @@
1
+ import { ColumnDef } from '@tanstack/react-table'
2
+
3
+ export interface TablePropos {
4
+ data: any
5
+ columns: ColumnDef<ColumnsTable>[]
6
+ }
7
+
8
+ export interface ColumnsTable {
9
+ header: string,
10
+ accessorKey: string,
11
+ type: string,
12
+ enableColumnFilter: boolean,
13
+ filterFn: string
14
+ }
@@ -0,0 +1,113 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ width: 100%;
5
+ background: #fff;
6
+ box-shadow: 0px 2px 6px #0000000A;
7
+ `
8
+
9
+ export const Content = styled.table`
10
+ border-collapse: collapse;
11
+ width: 100%;
12
+ thead {
13
+ tr {
14
+ border-bottom: 1px solid #E0E0E0;
15
+ th {
16
+ padding: 12px 24px;
17
+ }
18
+ }
19
+ }
20
+ tbody {
21
+ tr {
22
+ td {
23
+ padding: 16px 24px;
24
+ color: #666666;
25
+ font-size: 14px;
26
+ }
27
+ }
28
+ tr:nth-child(even) {
29
+ background: #FAFAFA;
30
+ border-bottom: 1px solid #f1f1f1;
31
+ border-top: 1px solid #f1f1f1;
32
+ }
33
+ }
34
+ `
35
+
36
+ export const TextColumn = styled.span`
37
+ color: #666666;
38
+ font-size: 14px;
39
+ `
40
+
41
+ export const ColumnContent = styled.div`
42
+ gap: 2px;
43
+ align-items: center;
44
+ display: flex;
45
+ `
46
+
47
+ export const IconFilterDialog = styled.div`
48
+ width: 20px;
49
+ height: 20px;
50
+ cursor: pointer;
51
+ `
52
+
53
+ export const backgroundDialog = styled.div`
54
+ width: 100%;
55
+ position: absolute;
56
+ height: 100vh;
57
+ background: transparent;
58
+ top: 0;
59
+ left: 0;
60
+ `
61
+
62
+ export const FilterDialog = styled.div`
63
+ padding: 8px;
64
+ margin: 6px 0px 0 0;
65
+ position: absolute;
66
+ width: 302px;
67
+ background: #fff;
68
+ box-shadow: 0px 3px 6px #00000029;
69
+ border: 1px solid #E0E0E0;
70
+ `
71
+
72
+ export const ListFilterDialog = styled.div`
73
+ display: flex;
74
+ flex-direction: column;
75
+ .label {
76
+ margin: 0 0 8px 0;
77
+ color: #666666;
78
+ font-size: 14px;
79
+ font-weight: 400;
80
+ text-align: left;
81
+ }
82
+ .select {
83
+ border: 1px solid #E0E0E0;
84
+ padding: 8px 12px;
85
+ }
86
+ `
87
+
88
+ export const OptionFilterDialog = styled.div`
89
+ display: flex;
90
+ gap: 16px;
91
+ align-items: center;
92
+ padding: 6px 8px;
93
+ cursor: pointer;
94
+ &:hover {
95
+ background: rgba(0, 0, 0, 0.04);
96
+ }
97
+ .icon {
98
+ color: #666;
99
+ }
100
+ .rotate {
101
+ rotate: 180deg;
102
+ }
103
+ div {
104
+ width: 20px;
105
+ height: 20px;
106
+ }
107
+ p {
108
+ margin: 0;
109
+ color: #666666;
110
+ font-size: 16px;
111
+ font-weight: 400;
112
+ }
113
+ `
@@ -0,0 +1,38 @@
1
+ import React, { useState } from "react"
2
+ import * as S from "./styles"
3
+ import { TextInputProps } from "./interface"
4
+
5
+ const TextInput:React.FC<TextInputProps> = ({
6
+ label,
7
+ className,
8
+ onChange,
9
+ disabled,
10
+ placeholder,
11
+ name,
12
+ type,
13
+ value
14
+ }) => {
15
+ const [valueSelected, setValueSelected] = useState(value)
16
+
17
+ const changeValue = (event: any) => {
18
+ const { value } = event.target
19
+ setValueSelected(value)
20
+ onChange(event)
21
+ }
22
+
23
+ return (
24
+ <S.Container className={className}>
25
+ <S.Label>{label}</S.Label>
26
+ <S.Input
27
+ type={type}
28
+ name={name}
29
+ value={valueSelected}
30
+ placeholder={placeholder}
31
+ disabled={disabled}
32
+ onChange={(event) => changeValue(event)}
33
+ />
34
+ </S.Container>
35
+ )
36
+ }
37
+
38
+ export default TextInput
@@ -0,0 +1,10 @@
1
+ export interface TextInputProps {
2
+ className?: string
3
+ label: string
4
+ onChange: Function
5
+ disabled?: boolean
6
+ placeholder?: string
7
+ name?: string
8
+ type?: string
9
+ value: string
10
+ }
@@ -0,0 +1,24 @@
1
+ import styled from "styled-components"
2
+
3
+ export const Container = styled.div`
4
+ width: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ `
8
+
9
+ export const Label = styled.label`
10
+ font-size: 14px;
11
+ margin: 0 0 4px 0;
12
+ color: #666;
13
+ `
14
+
15
+ export const Input = styled.input`
16
+ border: none;
17
+ color: #4D4F5C;
18
+ border-bottom: 1px solid #00000033;
19
+ outline: none;
20
+ font-size: 18px;
21
+ padding: 8px;
22
+ width: 100%;
23
+ font-size: 16px;
24
+ `
@@ -0,0 +1,21 @@
1
+ import React from "react"
2
+ import { TextProps } from "./interfaces"
3
+ import * as S from "./styles"
4
+
5
+ const Text:React.FC<TextProps> = ({
6
+ children,
7
+ className,
8
+ size,
9
+ type
10
+ }) => {
11
+ return (
12
+ <S.Container
13
+ className={className}
14
+ size={size}
15
+ type={type}>
16
+ { children }
17
+ </S.Container>
18
+ )
19
+ }
20
+
21
+ export default Text
@@ -0,0 +1,6 @@
1
+ export interface TextProps {
2
+ children: JSX.Element[] | JSX.Element | string
3
+ className?: string
4
+ size: string
5
+ type: string
6
+ }