norma-library 0.4.9 → 0.5.1

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 +65 -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,55 +1,47 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- FormControl,
4
- FormControlLabel,
5
- FormLabel,
6
- Radio as MuiRadio,
7
- RadioGroup as MuiRadioGroup,
8
- ThemeProvider,
9
- useMediaQuery,
10
- } from "@mui/material";
11
-
12
- import { themes } from "../helpers";
13
- import { styled } from "@mui/material/styles";
14
- import { RadioBaseProps } from "../interfaces/RadioGroup";
15
- import { TextFieldSizeVariant } from "../types";
16
-
17
- const RadioStyled = styled(MuiRadio)({});
18
- const sizes: TextFieldSizeVariant[] = ["small", "medium"];
19
-
20
- export const RadioGroup = ({ ...props }: RadioBaseProps) => {
21
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
22
- const theme = useMemo(
23
- () => (prefersDarkMode ? themes.light : themes.dark),
24
- [prefersDarkMode]
25
- );
26
-
27
- return (
28
- <ThemeProvider theme={theme}>
29
- <FormControl>
30
- <FormLabel id={props.id}>{props.label}</FormLabel>
31
- <MuiRadioGroup
32
- aria-labelledby={props.id}
33
- defaultValue={props.checked}
34
- name="radio-buttons-group"
35
- row={props.direction === "horizontal" ? true : false}
36
- >
37
- {props.options &&
38
- props.options.map((item, key) => (
39
- <FormControlLabel
40
- value={item.value}
41
- control={
42
- <RadioStyled
43
- color={props.color}
44
- size={item.size ? item.size : sizes[1]}
45
- />
46
- }
47
- label={item.label}
48
- key={key}
49
- />
50
- ))}
51
- </MuiRadioGroup>
52
- </FormControl>
53
- </ThemeProvider>
54
- );
55
- };
1
+ import React, { useMemo } from 'react';
2
+ import {
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormLabel,
6
+ Radio as MuiRadio,
7
+ RadioGroup as MuiRadioGroup,
8
+ ThemeProvider,
9
+ useMediaQuery,
10
+ } from '@mui/material';
11
+
12
+ import { themes } from '../helpers';
13
+ import { styled } from '@mui/material/styles';
14
+ import { RadioBaseProps } from '../interfaces/RadioGroup';
15
+ import { TextFieldSizeVariant } from '../types';
16
+
17
+ const RadioStyled = styled(MuiRadio)({});
18
+ const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
19
+
20
+ export const RadioGroup = ({ ...props }: RadioBaseProps) => {
21
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
22
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
23
+
24
+ return (
25
+ <ThemeProvider theme={theme}>
26
+ <FormControl>
27
+ <FormLabel id={props.id}>{props.label}</FormLabel>
28
+ <MuiRadioGroup
29
+ aria-labelledby={props.id}
30
+ defaultValue={props.checked}
31
+ name="radio-buttons-group"
32
+ row={props.direction === 'horizontal' ? true : false}
33
+ >
34
+ {props.options &&
35
+ props.options.map((item, key) => (
36
+ <FormControlLabel
37
+ value={item.value}
38
+ control={<RadioStyled color={props.color} size={item.size ? item.size : sizes[1]} />}
39
+ label={item.label}
40
+ key={key}
41
+ />
42
+ ))}
43
+ </MuiRadioGroup>
44
+ </FormControl>
45
+ </ThemeProvider>
46
+ );
47
+ };
@@ -1,81 +1,70 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- Slider as MuiSlider,
4
- ThemeProvider,
5
- useMediaQuery,
6
- } from "@mui/material";
7
- import { palette, themes } from "../helpers";
8
- import { styled } from "@mui/material/styles";
9
- import { ColorVariant } from "@/types";
10
- import { RangerSliderBaseProps } from "@/interfaces/RangerSlider";
11
-
12
- const colorMap: Record<ColorVariant, string> = {
13
- inherit: palette.inherit,
14
- primary: palette.primary,
15
- secondary: palette.secondary,
16
- error: palette.error,
17
- warning: palette.warning,
18
- info: palette.info,
19
- success: palette.success,
20
- };
21
-
22
- const RangerSliderStyled = styled(MuiSlider)(() => ({
23
- height: 8,
24
- "& .MuiSlider-track": {
25
- border: "none",
26
- },
27
- "& .MuiSlider-thumb": {
28
- height: 18,
29
- width: 18,
30
- backgroundColor: "#FFF",
31
- border: `2px solid ${colorMap["primary"]}`,
32
- "&:focus, &:hover, &.Mui-active, &.Mui-focusVisible": {
33
- boxShadow: "inherit",
34
- },
35
- "&:before": {
36
- width: "8px",
37
- height: "8px",
38
- position: "absolute",
39
- display: "block",
40
- background: colorMap["primary"],
41
- },
42
- },
43
- "& .MuiSlider-valueLabel": {
44
- fontSize: 12,
45
- fontWeight: "normal",
46
- top: 40,
47
- position: "absolute",
48
- backgroundColor: "unset",
49
- color: colorMap["primary"],
50
- "&:before": {
51
- display: "none",
52
- },
53
- "& *": {
54
- background: "transparent",
55
- color: "#000",
56
- },
57
- },
58
- "& .MuiSlider-rail": {
59
- color: "#F0F2F8 ",
60
- opacity: 1,
61
- height: 10,
62
- },
63
- }));
64
-
65
- export const RangerSlider = ({
66
- defaultValue = 50,
67
- color = "primary",
68
- ...props
69
- }: RangerSliderBaseProps) => {
70
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
71
- const theme = useMemo(
72
- () => (prefersDarkMode ? themes.light : themes.dark),
73
- [prefersDarkMode]
74
- );
75
-
76
- return (
77
- <ThemeProvider theme={theme}>
78
- <RangerSliderStyled aria-label="Default" color={color} {...props} />
79
- </ThemeProvider>
80
- );
81
- };
1
+ import React, { useMemo } from 'react';
2
+ import { Slider as MuiSlider, ThemeProvider, useMediaQuery } from '@mui/material';
3
+ import { palette, themes } from '../helpers';
4
+ import { styled } from '@mui/material/styles';
5
+ import { ColorVariant } from '@/types';
6
+ import { RangerSliderBaseProps } from '@/interfaces/RangerSlider';
7
+
8
+ const colorMap: Record<ColorVariant, string> = {
9
+ inherit: palette.inherit,
10
+ primary: palette.primary,
11
+ secondary: palette.secondary,
12
+ error: palette.error,
13
+ warning: palette.warning,
14
+ info: palette.info,
15
+ success: palette.success,
16
+ };
17
+
18
+ const RangerSliderStyled = styled(MuiSlider)(() => ({
19
+ height: 8,
20
+ '& .MuiSlider-track': {
21
+ border: 'none',
22
+ },
23
+ '& .MuiSlider-thumb': {
24
+ height: 18,
25
+ width: 18,
26
+ backgroundColor: '#FFF',
27
+ border: `2px solid ${colorMap['primary']}`,
28
+ '&:focus, &:hover, &.Mui-active, &.Mui-focusVisible': {
29
+ boxShadow: 'inherit',
30
+ },
31
+ '&:before': {
32
+ width: '8px',
33
+ height: '8px',
34
+ position: 'absolute',
35
+ display: 'block',
36
+ background: colorMap['primary'],
37
+ },
38
+ },
39
+ '& .MuiSlider-valueLabel': {
40
+ fontSize: 12,
41
+ fontWeight: 'normal',
42
+ top: 40,
43
+ position: 'absolute',
44
+ backgroundColor: 'unset',
45
+ color: colorMap['primary'],
46
+ '&:before': {
47
+ display: 'none',
48
+ },
49
+ '& *': {
50
+ background: 'transparent',
51
+ color: '#000',
52
+ },
53
+ },
54
+ '& .MuiSlider-rail': {
55
+ color: '#F0F2F8 ',
56
+ opacity: 1,
57
+ height: 10,
58
+ },
59
+ }));
60
+
61
+ export const RangerSlider = ({ defaultValue = 50, color = 'primary', ...props }: RangerSliderBaseProps) => {
62
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
63
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
64
+
65
+ return (
66
+ <ThemeProvider theme={theme}>
67
+ <RangerSliderStyled aria-label="Default" color={color} {...props} />
68
+ </ThemeProvider>
69
+ );
70
+ };
@@ -1,98 +1,82 @@
1
- import React, { useMemo } from "react";
2
- import {
3
- FormControl,
4
- InputLabel,
5
- ListItemText,
6
- MenuItem,
7
- Select as MuiSelect,
8
- OutlinedInput,
9
- ThemeProvider,
10
- useMediaQuery,
11
- } from "@mui/material";
12
- import { SelectBaseProps } from "../interfaces";
13
- import { themes } from "../helpers";
14
- import { styled } from "@mui/material/styles";
15
- import { CheckBox } from "./CheckBox";
16
-
17
- const ITEM_HEIGHT = 48;
18
- const ITEM_PADDING_TOP = 8;
19
- const MenuProps = {
20
- PaperProps: {
21
- style: {
22
- maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
23
- width: 250,
24
- },
25
- },
26
- };
27
-
28
- const SelectStyled = styled(MuiSelect)(({ multiple, variant }) => ({
29
- "& .MuiOutlinedInput-notchedOutline": {
30
- border: multiple === true ? "none" : "1px solid #666666 ",
31
- borderRadius: multiple === true ? 0 : 4,
32
- borderBottom: "1px solid #666666",
33
- },
34
- "& .MuiFormLabel-root": {
35
- backgroundColor: variant === "standard" ? "#fff" : "inherit",
36
- padding: variant === "standard" ? "0 5px" : 0,
37
- },
38
- }));
39
-
40
- export const Select = ({
41
- label,
42
- onChange,
43
- data = [],
44
- value = "",
45
- multiple = false,
46
- ...props
47
- }: SelectBaseProps) => {
48
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
49
- const theme = useMemo(
50
- () => (prefersDarkMode ? themes.light : themes.dark),
51
- [prefersDarkMode]
52
- );
53
-
54
- return (
55
- <ThemeProvider theme={theme}>
56
- <FormControl fullWidth>
57
- <InputLabel id={props.id}>{label}</InputLabel>
58
-
59
- {multiple ? (
60
- <SelectStyled
61
- labelId={props.id}
62
- id="demo-simple-select"
63
- value={value}
64
- MenuProps={MenuProps}
65
- input={<OutlinedInput label="Tag" />}
66
- renderValue={(selected: any) => selected.join(", ")}
67
- onChange={onChange}
68
- multiple
69
- {...props}
70
- >
71
- {data &&
72
- data.map((item, key) => (
73
- <MenuItem value={item.value} key={key}>
74
- <CheckBox checked={value.includes(String(item.value))} />
75
- <ListItemText primary={String(item.label)} />
76
- </MenuItem>
77
- ))}
78
- </SelectStyled>
79
- ) : (
80
- <SelectStyled
81
- labelId={props.id}
82
- id="demo-simple-select"
83
- value={value}
84
- onChange={onChange}
85
- {...props}
86
- >
87
- {data &&
88
- data.map((item, key) => (
89
- <MenuItem value={item.value} key={key}>
90
- <ListItemText primary={String(item.label)} />
91
- </MenuItem>
92
- ))}
93
- </SelectStyled>
94
- )}
95
- </FormControl>
96
- </ThemeProvider>
97
- );
98
- };
1
+ import React, { useMemo } from 'react';
2
+ import {
3
+ FormControl,
4
+ InputLabel,
5
+ ListItemText,
6
+ MenuItem,
7
+ Select as MuiSelect,
8
+ OutlinedInput,
9
+ ThemeProvider,
10
+ useMediaQuery,
11
+ } from '@mui/material';
12
+ import { SelectBaseProps } from '../interfaces';
13
+ import { themes } from '../helpers';
14
+ import { styled } from '@mui/material/styles';
15
+ import { CheckBox } from './CheckBox';
16
+
17
+ const ITEM_HEIGHT = 48;
18
+ const ITEM_PADDING_TOP = 8;
19
+ const MenuProps = {
20
+ PaperProps: {
21
+ style: {
22
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
23
+ width: 250,
24
+ },
25
+ },
26
+ };
27
+
28
+ const SelectStyled = styled(MuiSelect)(({ multiple, variant }) => ({
29
+ '& .MuiOutlinedInput-notchedOutline': {
30
+ border: multiple === true ? 'none' : '1px solid #666666 ',
31
+ borderRadius: multiple === true ? 0 : 4,
32
+ borderBottom: '1px solid #666666',
33
+ },
34
+ '& .MuiFormLabel-root': {
35
+ backgroundColor: variant === 'standard' ? '#fff' : 'inherit',
36
+ padding: variant === 'standard' ? '0 5px' : 0,
37
+ },
38
+ }));
39
+
40
+ export const Select = ({ label, onChange, data = [], value = '', multiple = false, ...props }: SelectBaseProps) => {
41
+ const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
42
+ const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
43
+
44
+ return (
45
+ <ThemeProvider theme={theme}>
46
+ <FormControl fullWidth>
47
+ <InputLabel id={props.id}>{label}</InputLabel>
48
+
49
+ {multiple ? (
50
+ <SelectStyled
51
+ labelId={props.id}
52
+ id="demo-simple-select"
53
+ value={value}
54
+ MenuProps={MenuProps}
55
+ input={<OutlinedInput label="Tag" />}
56
+ renderValue={(selected: any) => selected.join(', ')}
57
+ onChange={onChange}
58
+ multiple
59
+ {...props}
60
+ >
61
+ {data &&
62
+ data.map((item, key) => (
63
+ <MenuItem value={item.value} key={key}>
64
+ <CheckBox checked={value.includes(String(item.value))} />
65
+ <ListItemText primary={String(item.label)} />
66
+ </MenuItem>
67
+ ))}
68
+ </SelectStyled>
69
+ ) : (
70
+ <SelectStyled labelId={props.id} id="demo-simple-select" value={value} onChange={onChange} {...props}>
71
+ {data &&
72
+ data.map((item, key) => (
73
+ <MenuItem value={item.value} key={key}>
74
+ <ListItemText primary={String(item.label)} />
75
+ </MenuItem>
76
+ ))}
77
+ </SelectStyled>
78
+ )}
79
+ </FormControl>
80
+ </ThemeProvider>
81
+ );
82
+ };