norma-library 0.4.9 → 0.5.0

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 (246) hide show
  1. package/.babelrc.json +1 -1
  2. package/.husky/commit-msg +4 -0
  3. package/.prettierignore +11 -0
  4. package/.prettierrc.json +20 -0
  5. package/CHANGELOG.md +0 -0
  6. package/CONTRIBUTING.md +0 -0
  7. package/README.md +42 -0
  8. package/commitlint.config.js +1 -0
  9. package/dist/Button/index.d.ts +9 -0
  10. package/dist/Button/types.d.ts +18 -0
  11. package/dist/Card/Card.d.ts +3 -0
  12. package/dist/Card/CardHeader.d.ts +3 -0
  13. package/dist/Card/index.d.ts +4 -0
  14. package/dist/Card/styles.d.ts +546 -0
  15. package/dist/Card/types.d.ts +8 -0
  16. package/dist/esm/components/Accordion.d.ts +2 -2
  17. package/dist/esm/components/Accordion.js +8 -8
  18. package/dist/esm/components/Accordion.js.map +1 -1
  19. package/dist/esm/components/Avatar.d.ts +2 -2
  20. package/dist/esm/components/Avatar.js +7 -7
  21. package/dist/esm/components/Avatar.js.map +1 -1
  22. package/dist/esm/components/Badge.d.ts +2 -2
  23. package/dist/esm/components/Badge.js +5 -5
  24. package/dist/esm/components/Badge.js.map +1 -1
  25. package/dist/esm/components/Button.d.ts +2 -2
  26. package/dist/esm/components/Button.js +10 -10
  27. package/dist/esm/components/Button.js.map +1 -1
  28. package/dist/esm/components/Card.d.ts +3 -3
  29. package/dist/esm/components/Card.js +8 -8
  30. package/dist/esm/components/Card.js.map +1 -1
  31. package/dist/esm/components/ChatMessage.d.ts +2 -2
  32. package/dist/esm/components/ChatMessage.js +35 -35
  33. package/dist/esm/components/ChatMessage.js.map +1 -1
  34. package/dist/esm/components/CheckBox.d.ts +2 -2
  35. package/dist/esm/components/CheckBox.js +5 -5
  36. package/dist/esm/components/CheckBox.js.map +1 -1
  37. package/dist/esm/components/DataGrid/base/dropdown.d.ts +2 -2
  38. package/dist/esm/components/DataGrid/base/dropdown.js +32 -32
  39. package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -1
  40. package/dist/esm/components/DataGrid/base/number-filter.d.ts +2 -2
  41. package/dist/esm/components/DataGrid/base/number-filter.js +21 -21
  42. package/dist/esm/components/DataGrid/base/sorting.d.ts +2 -2
  43. package/dist/esm/components/DataGrid/base/sorting.js +1 -1
  44. package/dist/esm/components/DataGrid/base/sorting.js.map +1 -1
  45. package/dist/esm/components/DataGrid/icons.d.ts +1 -1
  46. package/dist/esm/components/DataGrid/icons.js +1 -1
  47. package/dist/esm/components/DataGrid/icons.js.map +1 -1
  48. package/dist/esm/components/DataGrid/index.d.ts +2 -2
  49. package/dist/esm/components/DataGrid/index.js +35 -44
  50. package/dist/esm/components/DataGrid/index.js.map +1 -1
  51. package/dist/esm/components/DataGrid/shared.d.ts +1 -1
  52. package/dist/esm/components/DataGrid/shared.js +19 -32
  53. package/dist/esm/components/DataGrid/shared.js.map +1 -1
  54. package/dist/esm/components/DataGrid/styled.d.ts +2 -2
  55. package/dist/esm/components/DataGrid/styled.js +35 -35
  56. package/dist/esm/components/DataGrid/styled.js.map +1 -1
  57. package/dist/esm/components/DatePicker.d.ts +5 -5
  58. package/dist/esm/components/DatePicker.js +37 -37
  59. package/dist/esm/components/DatePicker.js.map +1 -1
  60. package/dist/esm/components/DropDown.d.ts +2 -2
  61. package/dist/esm/components/DropDown.js +6 -6
  62. package/dist/esm/components/DropDown.js.map +1 -1
  63. package/dist/esm/components/IconButton.d.ts +2 -2
  64. package/dist/esm/components/IconButton.js +7 -7
  65. package/dist/esm/components/IconButton.js.map +1 -1
  66. package/dist/esm/components/Icons.d.ts +2 -2
  67. package/dist/esm/components/Icons.js +10 -10
  68. package/dist/esm/components/Icons.js.map +1 -1
  69. package/dist/esm/components/Modal.d.ts +2 -2
  70. package/dist/esm/components/Modal.js +8 -8
  71. package/dist/esm/components/Modal.js.map +1 -1
  72. package/dist/esm/components/Paper.d.ts +2 -2
  73. package/dist/esm/components/Paper.js +5 -5
  74. package/dist/esm/components/Paper.js.map +1 -1
  75. package/dist/esm/components/ProgressBar.d.ts +2 -2
  76. package/dist/esm/components/ProgressBar.js +11 -11
  77. package/dist/esm/components/ProgressBar.js.map +1 -1
  78. package/dist/esm/components/RadioGroup.d.ts +2 -2
  79. package/dist/esm/components/RadioGroup.js +7 -7
  80. package/dist/esm/components/RadioGroup.js.map +1 -1
  81. package/dist/esm/components/RangerSlider.d.ts +2 -2
  82. package/dist/esm/components/RangerSlider.js +31 -31
  83. package/dist/esm/components/RangerSlider.js.map +1 -1
  84. package/dist/esm/components/Select.d.ts +2 -2
  85. package/dist/esm/components/Select.js +14 -14
  86. package/dist/esm/components/Select.js.map +1 -1
  87. package/dist/esm/components/Svgs.d.ts +1 -1
  88. package/dist/esm/components/Svgs.js +1 -1
  89. package/dist/esm/components/Svgs.js.map +1 -1
  90. package/dist/esm/components/Tabs.d.ts +2 -2
  91. package/dist/esm/components/Tabs.js +25 -26
  92. package/dist/esm/components/Tabs.js.map +1 -1
  93. package/dist/esm/components/Tag.d.ts +2 -2
  94. package/dist/esm/components/Tag.js +8 -8
  95. package/dist/esm/components/Tag.js.map +1 -1
  96. package/dist/esm/components/TextField.d.ts +2 -2
  97. package/dist/esm/components/TextField.js +8 -8
  98. package/dist/esm/components/TextField.js.map +1 -1
  99. package/dist/esm/components/TimeLine.d.ts +2 -2
  100. package/dist/esm/components/TimeLine.js +20 -20
  101. package/dist/esm/components/TimeLine.js.map +1 -1
  102. package/dist/esm/components/TimePicker.d.ts +8 -8
  103. package/dist/esm/components/TimePicker.js +43 -43
  104. package/dist/esm/components/TimePicker.js.map +1 -1
  105. package/dist/esm/components/index.d.ts +23 -23
  106. package/dist/esm/components/index.js +23 -23
  107. package/dist/esm/helpers/alignments.js +7 -7
  108. package/dist/esm/helpers/borders.js +11 -11
  109. package/dist/esm/helpers/colors.js +41 -41
  110. package/dist/esm/helpers/index.d.ts +5 -5
  111. package/dist/esm/helpers/index.js +5 -5
  112. package/dist/esm/helpers/sizes.d.ts +1 -1
  113. package/dist/esm/helpers/sizes.js +39 -39
  114. package/dist/esm/helpers/sizes.js.map +1 -1
  115. package/dist/esm/index.d.ts +17 -17
  116. package/dist/esm/index.js +17 -17
  117. package/dist/esm/interfaces/Accordion.d.ts +3 -3
  118. package/dist/esm/interfaces/Avatar.d.ts +6 -6
  119. package/dist/esm/interfaces/Badge.d.ts +7 -7
  120. package/dist/esm/interfaces/Button.d.ts +5 -5
  121. package/dist/esm/interfaces/Card.d.ts +3 -3
  122. package/dist/esm/interfaces/ChatMessage.d.ts +1 -1
  123. package/dist/esm/interfaces/CheckBox.d.ts +10 -10
  124. package/dist/esm/interfaces/DataGrid.d.ts +4 -4
  125. package/dist/esm/interfaces/DatePicker.d.ts +3 -3
  126. package/dist/esm/interfaces/DropDown.d.ts +4 -4
  127. package/dist/esm/interfaces/IconButton.d.ts +5 -5
  128. package/dist/esm/interfaces/Icons.d.ts +3 -3
  129. package/dist/esm/interfaces/Modal.d.ts +3 -3
  130. package/dist/esm/interfaces/Paper.d.ts +4 -4
  131. package/dist/esm/interfaces/ProgressBar.d.ts +5 -5
  132. package/dist/esm/interfaces/RadioGroup.d.ts +4 -4
  133. package/dist/esm/interfaces/RangerSlider.d.ts +8 -8
  134. package/dist/esm/interfaces/Select.d.ts +3 -3
  135. package/dist/esm/interfaces/Tabs.d.ts +3 -3
  136. package/dist/esm/interfaces/Tag.d.ts +5 -5
  137. package/dist/esm/interfaces/TextField.d.ts +12 -12
  138. package/dist/esm/interfaces/TimeLine.d.ts +3 -3
  139. package/dist/esm/interfaces/TimePicker.d.ts +3 -3
  140. package/dist/esm/interfaces/index.d.ts +23 -23
  141. package/dist/esm/interfaces/index.js +23 -23
  142. package/dist/esm/types/index.d.ts +41 -41
  143. package/dist/esm/types/index.js +2 -2
  144. package/dist/esm/types/index.js.map +1 -1
  145. package/dist/index.d.ts +2 -0
  146. package/dist/index.es.js +6992 -0
  147. package/dist/index.es.js.map +1 -0
  148. package/dist/index.umd.js +266 -0
  149. package/dist/index.umd.js.map +1 -0
  150. package/dist/vite.svg +1 -0
  151. package/docs/index.md +118 -0
  152. package/package.json +64 -8
  153. package/src/components/Accordion.tsx +47 -64
  154. package/src/components/Avatar.tsx +22 -29
  155. package/src/components/Badge.tsx +19 -22
  156. package/src/components/Button.tsx +12 -19
  157. package/src/components/Card.tsx +44 -47
  158. package/src/components/ChatMessage.tsx +87 -89
  159. package/src/components/CheckBox.tsx +8 -19
  160. package/src/components/DataGrid/allData.json +2918 -2918
  161. package/src/components/DataGrid/base/dropdown.tsx +212 -235
  162. package/src/components/DataGrid/base/number-filter.tsx +43 -43
  163. package/src/components/DataGrid/base/sorting.tsx +29 -35
  164. package/src/components/DataGrid/icons.tsx +53 -61
  165. package/src/components/DataGrid/index.tsx +254 -319
  166. package/src/components/DataGrid/shared.ts +154 -179
  167. package/src/components/DataGrid/styled.ts +96 -102
  168. package/src/components/DataGrid/styles/dropdown.module.css +86 -86
  169. package/src/components/DataGrid/styles/number-filter.module.css +16 -16
  170. package/src/components/DataGrid/styles/styles.module.css +107 -107
  171. package/src/components/DatePicker.tsx +73 -84
  172. package/src/components/DropDown.tsx +31 -38
  173. package/src/components/IconButton.tsx +12 -29
  174. package/src/components/Icons.tsx +82 -87
  175. package/src/components/Modal.tsx +114 -123
  176. package/src/components/Paper.tsx +19 -22
  177. package/src/components/ProgressBar.tsx +54 -63
  178. package/src/components/RadioGroup.tsx +47 -55
  179. package/src/components/RangerSlider.tsx +70 -81
  180. package/src/components/Select.tsx +82 -98
  181. package/src/components/Svgs.tsx +498 -522
  182. package/src/components/Tabs.tsx +111 -140
  183. package/src/components/Tag.tsx +37 -45
  184. package/src/components/TextField.tsx +11 -22
  185. package/src/components/TimeLine.tsx +93 -103
  186. package/src/components/TimePicker.tsx +84 -95
  187. package/src/components/index.ts +23 -23
  188. package/src/helpers/alignments.ts +7 -7
  189. package/src/helpers/borders.ts +11 -11
  190. package/src/helpers/colors.ts +42 -42
  191. package/src/helpers/index.ts +5 -5
  192. package/src/helpers/sizes.ts +39 -46
  193. package/src/index.ts +17 -17
  194. package/src/interfaces/Accordion.ts +12 -12
  195. package/src/interfaces/Avatar.tsx +15 -18
  196. package/src/interfaces/Badge.ts +19 -32
  197. package/src/interfaces/Button.ts +5 -10
  198. package/src/interfaces/Card.ts +11 -11
  199. package/src/interfaces/ChatMessage.ts +12 -12
  200. package/src/interfaces/CheckBox.ts +12 -18
  201. package/src/interfaces/DataGrid.ts +46 -51
  202. package/src/interfaces/DatePicker.ts +13 -13
  203. package/src/interfaces/DropDown.ts +14 -14
  204. package/src/interfaces/IconButton.ts +5 -10
  205. package/src/interfaces/Icons.ts +17 -17
  206. package/src/interfaces/Modal.ts +15 -15
  207. package/src/interfaces/Paper.ts +12 -12
  208. package/src/interfaces/ProgressBar.ts +18 -25
  209. package/src/interfaces/RadioGroup.ts +22 -28
  210. package/src/interfaces/RangerSlider.ts +21 -32
  211. package/src/interfaces/Select.ts +17 -17
  212. package/src/interfaces/Tabs.ts +19 -24
  213. package/src/interfaces/Tag.ts +17 -17
  214. package/src/interfaces/TextField.ts +14 -34
  215. package/src/interfaces/TimeLine.ts +11 -16
  216. package/src/interfaces/TimePicker.ts +13 -13
  217. package/src/interfaces/index.ts +23 -23
  218. package/src/sample-data.json +178 -178
  219. package/src/stories/Accordion.stories.tsx +65 -65
  220. package/src/stories/Avatar.stories.tsx +123 -139
  221. package/src/stories/Badge.stories.tsx +39 -47
  222. package/src/stories/Button.stories.tsx +18 -26
  223. package/src/stories/Card.stories.tsx +40 -55
  224. package/src/stories/ChatMessage.stories.tsx +84 -85
  225. package/src/stories/CheckBox.stories.tsx +17 -23
  226. package/src/stories/DataGrid.stories.tsx +28 -28
  227. package/src/stories/DatePicker.stories.tsx +50 -77
  228. package/src/stories/DropDown.stories.tsx +57 -57
  229. package/src/stories/IconButton.stories.tsx +78 -114
  230. package/src/stories/Modal.stories.tsx +190 -190
  231. package/src/stories/Paper.stories.tsx +53 -53
  232. package/src/stories/ProgressBar.stories.tsx +95 -139
  233. package/src/stories/RadioGroup.stories.tsx +21 -28
  234. package/src/stories/RangerSlider.stories.tsx +58 -68
  235. package/src/stories/Select.stories.tsx +100 -128
  236. package/src/stories/Tabs.stories.tsx +62 -62
  237. package/src/stories/Tag.stories.tsx +56 -74
  238. package/src/stories/TextField.stories.tsx +54 -189
  239. package/src/stories/TimeLine.stories.tsx +35 -43
  240. package/src/stories/TimePicker.stories.tsx +87 -113
  241. package/src/types/index.ts +90 -155
  242. package/tsconfig.json +1 -1
  243. package/buildcache/front-end +0 -1
  244. package/norma-library.tar +0 -0
  245. package/postcss.config.js +0 -6
  246. package/tailwind.config.js +0 -58
@@ -1,235 +1,212 @@
1
- import React, { useState, useEffect, Fragment } from "react";
2
- import NumberFilter from "./number-filter";
3
- import {
4
- Button,
5
- Typography,
6
- FormControl,
7
- InputLabel,
8
- OutlinedInput,
9
- InputAdornment,
10
- IconButton,
11
- } from "@mui/material";
12
- import Divider from "@mui/material/Divider";
13
- import MenuList from "@mui/material/MenuList";
14
- import MenuItem from "@mui/material/MenuItem";
15
- import ListItemIcon from "@mui/material/ListItemIcon";
16
- import ListItemText from "@mui/material/ListItemText";
17
-
18
- import List from "@mui/material/List";
19
- import ListItem from "@mui/material/ListItem";
20
- import ListItemButton from "@mui/material/ListItemButton";
21
- import Checkbox from "@mui/material/Checkbox";
22
-
23
- import { Search } from "@mui/icons-material";
24
- import { DropdownFilterProps } from "@/interfaces";
25
- import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight";
26
-
27
- import { DropDownStyled } from "../styled";
28
-
29
- import { ArrowSmallDownIcon, ArrowSmallUpIcon, FunnelIcon } from "../icons";
30
-
31
- const DropdownFilter = ({
32
- onOrder,
33
- onFilter,
34
- onSelected,
35
- onFilterSelected,
36
- itemsSelected,
37
- onSelectAll,
38
- onChecketAll,
39
- data,
40
- }: DropdownFilterProps) => {
41
- const [openFilter, setOpenFilter] = useState<boolean>(false);
42
- const [selectAll, setSelectAll] = useState(onSelectAll);
43
- const [selecteds, setItemsSelected] =
44
- useState<(string | number)[]>(itemsSelected);
45
-
46
- const handleFilter = () => {
47
- setOpenFilter((prevState) => !prevState);
48
- };
49
-
50
- const handleFilterSelected = () => {
51
- if (itemsSelected.length > 0) {
52
- onFilterSelected();
53
- } else {
54
- onSelected([]);
55
- onFilter("");
56
- onFilterSelected();
57
- }
58
- };
59
-
60
- const handleCheckboxChange = (option: string) => {
61
- const updatedSelection = selecteds.includes(option)
62
- ? selecteds.filter((selected) => selected !== option)
63
- : [...selecteds, option];
64
-
65
- setItemsSelected(updatedSelection);
66
- onSelected(updatedSelection);
67
- };
68
-
69
- const handleSelectAll = () => {
70
- setSelectAll(selectAll ? false : true);
71
- onChecketAll(selectAll ? false : true);
72
-
73
- if (!selectAll) {
74
- const allItems = data.map((item: any) => item.toString());
75
- setItemsSelected(allItems);
76
- onSelected(allItems);
77
- } else {
78
- setItemsSelected([]);
79
- onSelected([]);
80
- }
81
- };
82
-
83
- useEffect(() => {
84
- setItemsSelected(selectAll ? data.map(String) : []);
85
- onSelected(selectAll ? data.map(String) : []);
86
- }, [selectAll]);
87
-
88
- useEffect(() => {
89
- setItemsSelected(itemsSelected);
90
- }, [selecteds]);
91
-
92
- return (
93
- <DropDownStyled>
94
- <Fragment>
95
- <MenuList>
96
- <MenuItem
97
- onClick={() => {
98
- onOrder("down");
99
- setOpenFilter(false);
100
- }}
101
- >
102
- <ListItemIcon>
103
- <ArrowSmallUpIcon width="16" height="16" />
104
- </ListItemIcon>
105
- <ListItemText>Classificar de A a Z</ListItemText>
106
- </MenuItem>
107
- <MenuItem
108
- onClick={() => {
109
- onOrder("up");
110
- setOpenFilter(false);
111
- }}
112
- >
113
- <ListItemIcon>
114
- <ArrowSmallDownIcon width="16" height="16" />
115
- </ListItemIcon>
116
- <ListItemText>Classificar de Z a A</ListItemText>
117
- </MenuItem>
118
- <MenuItem onClick={handleFilter}>
119
- <ListItemIcon>
120
- <FunnelIcon width="16" height="16" />
121
- </ListItemIcon>
122
- <ListItemText>Filtro por números</ListItemText>
123
- <Typography variant="body2" color="text.secondary">
124
- <KeyboardArrowRightIcon
125
- fontSize="medium"
126
- style={{ position: "relative", top: "5px" }}
127
- />
128
- </Typography>
129
- {openFilter && (
130
- <React.Fragment>
131
- <NumberFilter onClick={() => console.log("Me clicou")} />
132
- </React.Fragment>
133
- )}
134
- </MenuItem>
135
- <Divider />
136
- <FormControl sx={{ m: 1 }} variant="outlined">
137
- <InputLabel htmlFor="outlined-adornment-search" size="small">
138
- Buscar
139
- </InputLabel>
140
- <OutlinedInput
141
- id="outlined-adornment-search"
142
- endAdornment={
143
- <InputAdornment position="end">
144
- <IconButton edge="end">
145
- <Search />
146
- </IconButton>
147
- </InputAdornment>
148
- }
149
- onChange={(event) => {
150
- onFilter(event.target.value);
151
- }}
152
- label="Buscar"
153
- fullWidth
154
- size="small"
155
- />
156
- </FormControl>
157
- <Divider />
158
- <List
159
- sx={{
160
- bgcolor: "#f2f2f2",
161
- padding: " 5px",
162
- overflow: " auto",
163
- width: " 100%",
164
- height: " 120px",
165
- }}
166
- >
167
- <ListItem disablePadding onClick={handleSelectAll}>
168
- <ListItemButton role={undefined} sx={{ py: 0, minHeight: 32 }}>
169
- <ListItemIcon>
170
- <Checkbox
171
- edge="start"
172
- tabIndex={-1}
173
- checked={selectAll}
174
- disableRipple
175
- inputProps={{ "aria-labelledby": "all" }}
176
- />
177
- </ListItemIcon>
178
- <ListItemText
179
- id={"all"}
180
- primary={selectAll ? "Deselect All" : "Select All"}
181
- primaryTypographyProps={{
182
- fontSize: 14,
183
- fontWeight: "medium",
184
- }}
185
- />
186
- </ListItemButton>
187
- </ListItem>
188
- {data.map((item: any, key: number) => {
189
- const labelId = `checkbox-list-label-${item.toString()}`;
190
- return (
191
- <ListItem
192
- key={key}
193
- disablePadding
194
- onClick={() => handleCheckboxChange(item.toString())}
195
- >
196
- <ListItemButton
197
- role={undefined}
198
- sx={{ py: 0, minHeight: 32 }}
199
- >
200
- <ListItemIcon>
201
- <Checkbox
202
- edge="start"
203
- tabIndex={-1}
204
- disableRipple
205
- inputProps={{ "aria-labelledby": labelId }}
206
- checked={selecteds.includes(item.toString())}
207
- />
208
- </ListItemIcon>
209
- <ListItemText
210
- id={labelId}
211
- primary={`${item}`}
212
- primaryTypographyProps={{
213
- fontSize: 14,
214
- fontWeight: "medium",
215
- }}
216
- />
217
- </ListItemButton>
218
- </ListItem>
219
- );
220
- })}
221
- </List>
222
- </MenuList>
223
- <Button
224
- variant="outlined"
225
- sx={{ align: "right" }}
226
- onClick={handleFilterSelected}
227
- >
228
- Confirm
229
- </Button>
230
- </Fragment>
231
- </DropDownStyled>
232
- );
233
- };
234
-
235
- export default DropdownFilter;
1
+ import React, { useState, useEffect, Fragment } from 'react';
2
+ import NumberFilter from './number-filter';
3
+ import { Button, Typography, FormControl, InputLabel, OutlinedInput, InputAdornment, IconButton } from '@mui/material';
4
+ import Divider from '@mui/material/Divider';
5
+ import MenuList from '@mui/material/MenuList';
6
+ import MenuItem from '@mui/material/MenuItem';
7
+ import ListItemIcon from '@mui/material/ListItemIcon';
8
+ import ListItemText from '@mui/material/ListItemText';
9
+
10
+ import List from '@mui/material/List';
11
+ import ListItem from '@mui/material/ListItem';
12
+ import ListItemButton from '@mui/material/ListItemButton';
13
+ import Checkbox from '@mui/material/Checkbox';
14
+
15
+ import { Search } from '@mui/icons-material';
16
+ import { DropdownFilterProps } from '@/interfaces';
17
+ import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
18
+
19
+ import { DropDownStyled } from '../styled';
20
+
21
+ import { ArrowSmallDownIcon, ArrowSmallUpIcon, FunnelIcon } from '../icons';
22
+
23
+ const DropdownFilter = ({
24
+ onOrder,
25
+ onFilter,
26
+ onSelected,
27
+ onFilterSelected,
28
+ itemsSelected,
29
+ onSelectAll,
30
+ onChecketAll,
31
+ data,
32
+ }: DropdownFilterProps) => {
33
+ const [openFilter, setOpenFilter] = useState<boolean>(false);
34
+ const [selectAll, setSelectAll] = useState(onSelectAll);
35
+ const [selecteds, setItemsSelected] = useState<(string | number)[]>(itemsSelected);
36
+
37
+ const handleFilter = () => {
38
+ setOpenFilter(prevState => !prevState);
39
+ };
40
+
41
+ const handleFilterSelected = () => {
42
+ if (itemsSelected.length > 0) {
43
+ onFilterSelected();
44
+ } else {
45
+ onSelected([]);
46
+ onFilter('');
47
+ onFilterSelected();
48
+ }
49
+ };
50
+
51
+ const handleCheckboxChange = (option: string) => {
52
+ const updatedSelection = selecteds.includes(option)
53
+ ? selecteds.filter(selected => selected !== option)
54
+ : [...selecteds, option];
55
+
56
+ setItemsSelected(updatedSelection);
57
+ onSelected(updatedSelection);
58
+ };
59
+
60
+ const handleSelectAll = () => {
61
+ setSelectAll(selectAll ? false : true);
62
+ onChecketAll(selectAll ? false : true);
63
+
64
+ if (!selectAll) {
65
+ const allItems = data.map((item: any) => item.toString());
66
+ setItemsSelected(allItems);
67
+ onSelected(allItems);
68
+ } else {
69
+ setItemsSelected([]);
70
+ onSelected([]);
71
+ }
72
+ };
73
+
74
+ useEffect(() => {
75
+ setItemsSelected(selectAll ? data.map(String) : []);
76
+ onSelected(selectAll ? data.map(String) : []);
77
+ }, [selectAll]);
78
+
79
+ useEffect(() => {
80
+ setItemsSelected(itemsSelected);
81
+ }, [selecteds]);
82
+
83
+ return (
84
+ <DropDownStyled>
85
+ <Fragment>
86
+ <MenuList>
87
+ <MenuItem
88
+ onClick={() => {
89
+ onOrder('down');
90
+ setOpenFilter(false);
91
+ }}
92
+ >
93
+ <ListItemIcon>
94
+ <ArrowSmallUpIcon width="16" height="16" />
95
+ </ListItemIcon>
96
+ <ListItemText>Classificar de A a Z</ListItemText>
97
+ </MenuItem>
98
+ <MenuItem
99
+ onClick={() => {
100
+ onOrder('up');
101
+ setOpenFilter(false);
102
+ }}
103
+ >
104
+ <ListItemIcon>
105
+ <ArrowSmallDownIcon width="16" height="16" />
106
+ </ListItemIcon>
107
+ <ListItemText>Classificar de Z a A</ListItemText>
108
+ </MenuItem>
109
+ <MenuItem onClick={handleFilter}>
110
+ <ListItemIcon>
111
+ <FunnelIcon width="16" height="16" />
112
+ </ListItemIcon>
113
+ <ListItemText>Filtro por números</ListItemText>
114
+ <Typography variant="body2" color="text.secondary">
115
+ <KeyboardArrowRightIcon fontSize="medium" style={{ position: 'relative', top: '5px' }} />
116
+ </Typography>
117
+ {openFilter && (
118
+ <React.Fragment>
119
+ <NumberFilter onClick={() => console.log('Me clicou')} />
120
+ </React.Fragment>
121
+ )}
122
+ </MenuItem>
123
+ <Divider />
124
+ <FormControl sx={{ m: 1 }} variant="outlined">
125
+ <InputLabel htmlFor="outlined-adornment-search" size="small">
126
+ Buscar
127
+ </InputLabel>
128
+ <OutlinedInput
129
+ id="outlined-adornment-search"
130
+ endAdornment={
131
+ <InputAdornment position="end">
132
+ <IconButton edge="end">
133
+ <Search />
134
+ </IconButton>
135
+ </InputAdornment>
136
+ }
137
+ onChange={event => {
138
+ onFilter(event.target.value);
139
+ }}
140
+ label="Buscar"
141
+ fullWidth
142
+ size="small"
143
+ />
144
+ </FormControl>
145
+ <Divider />
146
+ <List
147
+ sx={{
148
+ bgcolor: '#f2f2f2',
149
+ padding: ' 5px',
150
+ overflow: ' auto',
151
+ width: ' 100%',
152
+ height: ' 120px',
153
+ }}
154
+ >
155
+ <ListItem disablePadding onClick={handleSelectAll}>
156
+ <ListItemButton role={undefined} sx={{ py: 0, minHeight: 32 }}>
157
+ <ListItemIcon>
158
+ <Checkbox
159
+ edge="start"
160
+ tabIndex={-1}
161
+ checked={selectAll}
162
+ disableRipple
163
+ inputProps={{ 'aria-labelledby': 'all' }}
164
+ />
165
+ </ListItemIcon>
166
+ <ListItemText
167
+ id={'all'}
168
+ primary={selectAll ? 'Deselect All' : 'Select All'}
169
+ primaryTypographyProps={{
170
+ fontSize: 14,
171
+ fontWeight: 'medium',
172
+ }}
173
+ />
174
+ </ListItemButton>
175
+ </ListItem>
176
+ {data.map((item: any, key: number) => {
177
+ const labelId = `checkbox-list-label-${item.toString()}`;
178
+ return (
179
+ <ListItem key={key} disablePadding onClick={() => handleCheckboxChange(item.toString())}>
180
+ <ListItemButton role={undefined} sx={{ py: 0, minHeight: 32 }}>
181
+ <ListItemIcon>
182
+ <Checkbox
183
+ edge="start"
184
+ tabIndex={-1}
185
+ disableRipple
186
+ inputProps={{ 'aria-labelledby': labelId }}
187
+ checked={selecteds.includes(item.toString())}
188
+ />
189
+ </ListItemIcon>
190
+ <ListItemText
191
+ id={labelId}
192
+ primary={`${item}`}
193
+ primaryTypographyProps={{
194
+ fontSize: 14,
195
+ fontWeight: 'medium',
196
+ }}
197
+ />
198
+ </ListItemButton>
199
+ </ListItem>
200
+ );
201
+ })}
202
+ </List>
203
+ </MenuList>
204
+ <Button variant="outlined" sx={{ align: 'right' }} onClick={handleFilterSelected}>
205
+ Confirm
206
+ </Button>
207
+ </Fragment>
208
+ </DropDownStyled>
209
+ );
210
+ };
211
+
212
+ export default DropdownFilter;
@@ -1,43 +1,43 @@
1
- import React from "react";
2
-
3
- import List from "@mui/material/List";
4
- import ListItem from "@mui/material/ListItem";
5
- import ListItemText from "@mui/material/ListItemText";
6
- import { NumberFilterProps } from "@/interfaces";
7
-
8
- const items = [
9
- "Equal",
10
- "Does not equal",
11
- "Greater than",
12
- "Greater than or equal to",
13
- "Less than",
14
- "Less than or equal to",
15
- "Between",
16
- ];
17
-
18
- const NumberFilter: React.FC<NumberFilterProps> = () => {
19
- return (
20
- <List
21
- sx={{
22
- bgcolor: "#FFF",
23
- position: "absolute",
24
- minHeight: "190px",
25
- top: "0",
26
- left: "auto",
27
- right: "auto",
28
- minWidth: "240px",
29
- zIndex: "9",
30
- padding: "5px 10px",
31
- boxShadow: "0 0 10px #ccc",
32
- }}
33
- >
34
- {items.map((value, key) => (
35
- <ListItem key={key} disableGutters>
36
- <ListItemText primary={`${value}...`} />
37
- </ListItem>
38
- ))}
39
- </List>
40
- );
41
- };
42
-
43
- export default NumberFilter;
1
+ import React from 'react';
2
+
3
+ import List from '@mui/material/List';
4
+ import ListItem from '@mui/material/ListItem';
5
+ import ListItemText from '@mui/material/ListItemText';
6
+ import { NumberFilterProps } from '@/interfaces';
7
+
8
+ const items = [
9
+ 'Equal',
10
+ 'Does not equal',
11
+ 'Greater than',
12
+ 'Greater than or equal to',
13
+ 'Less than',
14
+ 'Less than or equal to',
15
+ 'Between',
16
+ ];
17
+
18
+ const NumberFilter: React.FC<NumberFilterProps> = () => {
19
+ return (
20
+ <List
21
+ sx={{
22
+ bgcolor: '#FFF',
23
+ position: 'absolute',
24
+ minHeight: '190px',
25
+ top: '0',
26
+ left: 'auto',
27
+ right: 'auto',
28
+ minWidth: '240px',
29
+ zIndex: '9',
30
+ padding: '5px 10px',
31
+ boxShadow: '0 0 10px #ccc',
32
+ }}
33
+ >
34
+ {items.map((value, key) => (
35
+ <ListItem key={key} disableGutters>
36
+ <ListItemText primary={`${value}...`} />
37
+ </ListItem>
38
+ ))}
39
+ </List>
40
+ );
41
+ };
42
+
43
+ export default NumberFilter;
@@ -1,35 +1,29 @@
1
- import React from "react";
2
-
3
- import { SortingProps } from "@/interfaces";
4
- // import { Icons } from "@/components/Icons";
5
-
6
- export function ArrowSmallUpIcon(props: any) {
7
- return (
8
- <svg
9
- fill="currentColor"
10
- viewBox="0 0 24 24"
11
- xmlns="http://www.w3.org/2000/svg"
12
- aria-hidden="true"
13
- {...props}
14
- >
15
- <path
16
- clipRule="evenodd"
17
- fillRule="evenodd"
18
- d="M12 20.25a.75.75 0 01-.75-.75V6.31l-5.47 5.47a.75.75 0 01-1.06-1.06l6.75-6.75a.75.75 0 011.06 0l6.75 6.75a.75.75 0 11-1.06 1.06l-5.47-5.47V19.5a.75.75 0 01-.75.75z"
19
- />
20
- </svg>
21
- );
22
- }
23
-
24
- const Sorting: React.FC<SortingProps> = ({ sort, active }) => {
25
- const sortIcon = <ArrowSmallUpIcon />;
26
- const opacityValue = active ? 1 : 0.5;
27
-
28
- return (
29
- <button type="button" style={{ opacity: opacityValue }} className="arrows">
30
- {sort && sortIcon}
31
- </button>
32
- );
33
- };
34
-
35
- export default Sorting;
1
+ import React from 'react';
2
+
3
+ import { SortingProps } from '@/interfaces';
4
+ // import { Icons } from "@/components/Icons";
5
+
6
+ export function ArrowSmallUpIcon(props: any) {
7
+ return (
8
+ <svg fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" {...props}>
9
+ <path
10
+ clipRule="evenodd"
11
+ fillRule="evenodd"
12
+ d="M12 20.25a.75.75 0 01-.75-.75V6.31l-5.47 5.47a.75.75 0 01-1.06-1.06l6.75-6.75a.75.75 0 011.06 0l6.75 6.75a.75.75 0 11-1.06 1.06l-5.47-5.47V19.5a.75.75 0 01-.75.75z"
13
+ />
14
+ </svg>
15
+ );
16
+ }
17
+
18
+ const Sorting: React.FC<SortingProps> = ({ sort, active }) => {
19
+ const sortIcon = <ArrowSmallUpIcon />;
20
+ const opacityValue = active ? 1 : 0.5;
21
+
22
+ return (
23
+ <button type="button" style={{ opacity: opacityValue }} className="arrows">
24
+ {sort && sortIcon}
25
+ </button>
26
+ );
27
+ };
28
+
29
+ export default Sorting;