norma-library 0.5.151 → 0.5.152

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 (167) 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/UncontrolledTabs/UncontrolledTabs.js +1 -1
  9. package/dist/esm/components/UncontrolledTabs/UncontrolledTabs.js.map +1 -1
  10. package/dist/esm/index.d.ts +2 -1
  11. package/dist/esm/index.js +2 -1
  12. package/dist/esm/index.js.map +1 -1
  13. package/docs/index.md +118 -118
  14. package/package.json +136 -136
  15. package/src/components/Accordion.tsx +39 -39
  16. package/src/components/Avatar.tsx +17 -17
  17. package/src/components/Badge.tsx +14 -14
  18. package/src/components/Box/index.tsx +12 -12
  19. package/src/components/Box/interfaces.ts +3 -3
  20. package/src/components/Box/styles.tsx +22 -22
  21. package/src/components/Breadcrumb/index.tsx +27 -27
  22. package/src/components/Breadcrumb/interface.ts +8 -8
  23. package/src/components/Breadcrumb/styles.tsx +32 -32
  24. package/src/components/Button.tsx +26 -26
  25. package/src/components/Card.tsx +37 -37
  26. package/src/components/ChatMessage.tsx +87 -87
  27. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  28. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  29. package/src/components/CheckBox.tsx +21 -21
  30. package/src/components/DateInput/index.tsx +34 -34
  31. package/src/components/DateInput/interface.ts +13 -13
  32. package/src/components/DateInput/styles.tsx +27 -27
  33. package/src/components/DatePicker.tsx +67 -67
  34. package/src/components/DropDown.tsx +24 -24
  35. package/src/components/IconButton.tsx +37 -37
  36. package/src/components/Icons.tsx +82 -82
  37. package/src/components/Modal.tsx +103 -103
  38. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  39. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  40. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  41. package/src/components/MultiSelectInput/index.tsx +60 -60
  42. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  43. package/src/components/MultiSelectInput/styles.tsx +43 -43
  44. package/src/components/Paper.tsx +12 -12
  45. package/src/components/ProgressBar.tsx +71 -71
  46. package/src/components/RadioGroup.tsx +43 -43
  47. package/src/components/RangerSlider.tsx +65 -65
  48. package/src/components/Select.tsx +74 -74
  49. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  50. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  51. package/src/components/SelectInput/index.tsx +45 -45
  52. package/src/components/SelectInput/interfaces.ts +15 -15
  53. package/src/components/SelectInput/styles.tsx +31 -31
  54. package/src/components/StatusModal/StatusModal.style.tsx +75 -75
  55. package/src/components/StatusModal/StatusModal.tsx +58 -58
  56. package/src/components/Svgs.tsx +506 -506
  57. package/src/components/Table/components/header/index.tsx +86 -86
  58. package/src/components/Table/components/header/styles.tsx +59 -59
  59. package/src/components/Table/components/index.tsx +8 -8
  60. package/src/components/Table/components/pagination/index.tsx +39 -39
  61. package/src/components/Table/components/pagination/styles.tsx +28 -28
  62. package/src/components/Table/components/tbody/index.tsx +30 -30
  63. package/src/components/Table/components/tbody/styles.tsx +4 -4
  64. package/src/components/Table/index.tsx +317 -317
  65. package/src/components/Table/interface.ts +23 -23
  66. package/src/components/Table/styles.tsx +117 -117
  67. package/src/components/Tabs.tsx +105 -105
  68. package/src/components/Tag.tsx +33 -33
  69. package/src/components/TextField.tsx +19 -19
  70. package/src/components/TextInput/index.tsx +37 -37
  71. package/src/components/TextInput/interface.ts +9 -9
  72. package/src/components/TextInput/styles.tsx +23 -23
  73. package/src/components/TimeLine.tsx +89 -89
  74. package/src/components/TimePicker.tsx +78 -78
  75. package/src/components/Typography/Text/index.tsx +20 -20
  76. package/src/components/Typography/Text/interfaces.ts +5 -5
  77. package/src/components/Typography/Text/styles.tsx +40 -40
  78. package/src/components/Typography/Title/index.tsx +22 -22
  79. package/src/components/Typography/Title/interfaces.ts +6 -6
  80. package/src/components/Typography/Title/styles.tsx +40 -40
  81. package/src/components/Typography/index.tsx +6 -6
  82. package/src/components/UncontrolledTable/components/header/index.tsx +65 -65
  83. package/src/components/UncontrolledTable/components/header/styles.tsx +63 -63
  84. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  85. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  86. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  87. package/src/components/UncontrolledTable/components/tbody/index.tsx +33 -33
  88. package/src/components/UncontrolledTable/components/tbody/styles.tsx +32 -32
  89. package/src/components/UncontrolledTable/index.tsx +221 -221
  90. package/src/components/UncontrolledTable/interface.ts +43 -43
  91. package/src/components/UncontrolledTable/styles.tsx +123 -123
  92. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +56 -56
  93. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  94. package/src/components/index.ts +24 -24
  95. package/src/helpers/alignments.ts +14 -14
  96. package/src/helpers/borders.ts +18 -18
  97. package/src/helpers/colors.ts +241 -241
  98. package/src/helpers/index.ts +5 -5
  99. package/src/helpers/radios.ts +24 -24
  100. package/src/helpers/sizes.ts +72 -72
  101. package/src/hooks/useClickOutside.tsx +18 -18
  102. package/src/index.ts +70 -68
  103. package/src/interfaces/Accordion.ts +12 -12
  104. package/src/interfaces/Avatar.tsx +15 -15
  105. package/src/interfaces/Badge.ts +19 -19
  106. package/src/interfaces/Button.ts +22 -22
  107. package/src/interfaces/Card.ts +11 -11
  108. package/src/interfaces/ChatMessage.ts +12 -12
  109. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  110. package/src/interfaces/CheckBox.ts +27 -27
  111. package/src/interfaces/DatePicker.ts +13 -13
  112. package/src/interfaces/DropDown.ts +14 -14
  113. package/src/interfaces/IconButton.ts +22 -22
  114. package/src/interfaces/Icons.ts +17 -17
  115. package/src/interfaces/Modal.ts +18 -18
  116. package/src/interfaces/Paper.ts +12 -12
  117. package/src/interfaces/ProgressBar.ts +29 -29
  118. package/src/interfaces/RadioGroup.ts +23 -23
  119. package/src/interfaces/RangerSlider.ts +21 -21
  120. package/src/interfaces/Select.ts +17 -17
  121. package/src/interfaces/Tabs.ts +19 -19
  122. package/src/interfaces/Tag.ts +17 -17
  123. package/src/interfaces/TextField.ts +44 -44
  124. package/src/interfaces/TimeLine.ts +11 -11
  125. package/src/interfaces/TimePicker.ts +13 -13
  126. package/src/interfaces/index.ts +23 -23
  127. package/src/providers/NormaProvider.tsx +13 -13
  128. package/src/sample-data-2.json +178 -178
  129. package/src/sample-data.json +177 -177
  130. package/src/stories/Accordion.stories.tsx +65 -65
  131. package/src/stories/Avatar.stories.tsx +123 -123
  132. package/src/stories/Badge.stories.tsx +39 -39
  133. package/src/stories/Box.stories.tsx +35 -35
  134. package/src/stories/Breadcrumb.stories.tsx +44 -44
  135. package/src/stories/Button.stories.tsx +93 -93
  136. package/src/stories/Card.stories.tsx +39 -39
  137. package/src/stories/ChatMessage.stories.tsx +84 -84
  138. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  139. package/src/stories/CheckBox.stories.tsx +88 -88
  140. package/src/stories/DateInput.stories.tsx +51 -51
  141. package/src/stories/DatePicker.stories.tsx +50 -50
  142. package/src/stories/DropDown.stories.tsx +57 -57
  143. package/src/stories/IconButton.stories.tsx +78 -78
  144. package/src/stories/Modal.stories.tsx +246 -246
  145. package/src/stories/ModalStatus.stories.tsx +46 -46
  146. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  147. package/src/stories/Paper.stories.tsx +53 -53
  148. package/src/stories/ProgressBar.stories.tsx +116 -116
  149. package/src/stories/RadioGroup.stories.tsx +87 -87
  150. package/src/stories/RangerSlider.stories.tsx +149 -149
  151. package/src/stories/Select.stories.tsx +100 -100
  152. package/src/stories/SelectInput.stories.tsx +78 -78
  153. package/src/stories/Table.stories.tsx +372 -372
  154. package/src/stories/Tabs.stories.tsx +61 -61
  155. package/src/stories/Tag.stories.tsx +56 -56
  156. package/src/stories/Text.stories.tsx +37 -37
  157. package/src/stories/TextField.stories.tsx +310 -310
  158. package/src/stories/TextInput.stories.tsx +52 -52
  159. package/src/stories/TimeLine.stories.tsx +35 -35
  160. package/src/stories/TimePicker.stories.tsx +87 -87
  161. package/src/stories/Title.stories.tsx +43 -43
  162. package/src/stories/UncontrolledTable.stories.tsx +305 -305
  163. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  164. package/src/styles/globals.scss +17 -17
  165. package/src/types/index.ts +204 -204
  166. package/src/utils/styledBreakpoints.ts +25 -25
  167. package/vite.config.ts +15 -15
@@ -1,12 +1,12 @@
1
- import React from 'react';
2
- import { Paper as MuiPaper } from '@mui/material';
3
- import { PaperBaseProps } from '../interfaces';
4
- import { styled } from '@mui/material/styles';
5
-
6
- const PaperStyled = styled(MuiPaper)({});
7
-
8
- export const Paper = ({ children, ...props }: PaperBaseProps & {}) => {
9
- return (
10
- <PaperStyled {...props}>{children}</PaperStyled>
11
- );
12
- };
1
+ import React from 'react';
2
+ import { Paper as MuiPaper } from '@mui/material';
3
+ import { PaperBaseProps } from '../interfaces';
4
+ import { styled } from '@mui/material/styles';
5
+
6
+ const PaperStyled = styled(MuiPaper)({});
7
+
8
+ export const Paper = ({ children, ...props }: PaperBaseProps & {}) => {
9
+ return (
10
+ <PaperStyled {...props}>{children}</PaperStyled>
11
+ );
12
+ };
@@ -1,71 +1,71 @@
1
- import React from 'react';
2
- import { LinearProgress as MuiProgressBar, linearProgressClasses, Typography } from '@mui/material';
3
- import { styled } from '@mui/material/styles';
4
- import { ProgressBarBaseProps, CustomColor } from '../interfaces';
5
-
6
- const ProgressBarStyled = styled(MuiProgressBar)<{ colorCustom?: CustomColor; $h?: number }>(({ colorCustom, $h }) => ({
7
- width: '100%',
8
- height: $h ? `${$h}px` : '10px',
9
- borderRadius: '10px',
10
- position: 'relative',
11
- backgroundColor: colorCustom ? colorCustom.root : undefined,
12
- [`&.${linearProgressClasses.determinate}`]: {
13
- backgroundColor: colorCustom ? colorCustom.root : undefined,
14
- },
15
- [`& .${linearProgressClasses.bar}`]: {
16
- backgroundColor: colorCustom ? colorCustom.bar : undefined,
17
- },
18
- }));
19
-
20
- const ProgressBarLabelStyled = styled(Typography)<{ $fSize?: string }>`
21
- display: flex;
22
- justify-content: space-between;
23
- align-items: center;
24
- margin-bottom: 8px;
25
- position: relative;
26
- text-align: left;
27
- font-size: ${({ $fSize }) => $fSize || '1rem'};
28
- `;
29
-
30
- export const ProgressBar = ({
31
- value = 0,
32
- label,
33
- variant = 'determinate',
34
- total,
35
- className,
36
- localeString,
37
- colorCustom,
38
- color = 'primary',
39
- htmlLabel,
40
- ...props
41
- }: ProgressBarBaseProps) => {
42
- const percentage = value && total ? (value / total) * 100 : 0;
43
-
44
- return (
45
- <div className={className} style={{ minWidth: '100px' }}>
46
- {label ? (
47
- <ProgressBarLabelStyled $fSize={props.fSize} className="ProgressBarLabel">
48
- <>
49
- {label}
50
- {!props.hideValue && (
51
- <span style={{ right: 0 }}>
52
- {localeString ? value.toLocaleString() : value} ({percentage.toFixed(2)}%)
53
- </span>
54
- )}
55
- </>
56
- </ProgressBarLabelStyled>
57
- ) : (
58
- htmlLabel
59
- )}
60
-
61
- <ProgressBarStyled
62
- value={percentage}
63
- variant={variant}
64
- colorCustom={colorCustom}
65
- $h={props.h}
66
- color={colorCustom ? undefined : color}
67
- {...props}
68
- />
69
- </div>
70
- );
71
- };
1
+ import React from 'react';
2
+ import { LinearProgress as MuiProgressBar, linearProgressClasses, Typography } from '@mui/material';
3
+ import { styled } from '@mui/material/styles';
4
+ import { ProgressBarBaseProps, CustomColor } from '../interfaces';
5
+
6
+ const ProgressBarStyled = styled(MuiProgressBar)<{ colorCustom?: CustomColor; $h?: number }>(({ colorCustom, $h }) => ({
7
+ width: '100%',
8
+ height: $h ? `${$h}px` : '10px',
9
+ borderRadius: '10px',
10
+ position: 'relative',
11
+ backgroundColor: colorCustom ? colorCustom.root : undefined,
12
+ [`&.${linearProgressClasses.determinate}`]: {
13
+ backgroundColor: colorCustom ? colorCustom.root : undefined,
14
+ },
15
+ [`& .${linearProgressClasses.bar}`]: {
16
+ backgroundColor: colorCustom ? colorCustom.bar : undefined,
17
+ },
18
+ }));
19
+
20
+ const ProgressBarLabelStyled = styled(Typography)<{ $fSize?: string }>`
21
+ display: flex;
22
+ justify-content: space-between;
23
+ align-items: center;
24
+ margin-bottom: 8px;
25
+ position: relative;
26
+ text-align: left;
27
+ font-size: ${({ $fSize }) => $fSize || '1rem'};
28
+ `;
29
+
30
+ export const ProgressBar = ({
31
+ value = 0,
32
+ label,
33
+ variant = 'determinate',
34
+ total,
35
+ className,
36
+ localeString,
37
+ colorCustom,
38
+ color = 'primary',
39
+ htmlLabel,
40
+ ...props
41
+ }: ProgressBarBaseProps) => {
42
+ const percentage = value && total ? (value / total) * 100 : 0;
43
+
44
+ return (
45
+ <div className={className} style={{ minWidth: '100px' }}>
46
+ {label ? (
47
+ <ProgressBarLabelStyled $fSize={props.fSize} className="ProgressBarLabel">
48
+ <>
49
+ {label}
50
+ {!props.hideValue && (
51
+ <span style={{ right: 0 }}>
52
+ {localeString ? value.toLocaleString() : value} ({percentage.toFixed(2)}%)
53
+ </span>
54
+ )}
55
+ </>
56
+ </ProgressBarLabelStyled>
57
+ ) : (
58
+ htmlLabel
59
+ )}
60
+
61
+ <ProgressBarStyled
62
+ value={percentage}
63
+ variant={variant}
64
+ colorCustom={colorCustom}
65
+ $h={props.h}
66
+ color={colorCustom ? undefined : color}
67
+ {...props}
68
+ />
69
+ </div>
70
+ );
71
+ };
@@ -1,43 +1,43 @@
1
- import React from 'react';
2
- import {
3
- FormControl,
4
- FormControlLabel,
5
- FormLabel,
6
- Radio as MuiRadio,
7
- RadioGroup as MuiRadioGroup,
8
- } from '@mui/material';
9
-
10
- import { styled } from '@mui/material/styles';
11
- import { RadioBaseProps } from '../interfaces/RadioGroup';
12
- import { TextFieldSizeVariant } from '../types';
13
-
14
- const RadioStyled = styled(MuiRadio)({});
15
- const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
16
-
17
- export const RadioGroup = ({ ...props }: RadioBaseProps) => {
18
- const { onChange } = props;
19
-
20
- return (
21
- <FormControl disabled={props.disabled}>
22
- <FormLabel id={props.id}>{props.label}</FormLabel>
23
- <MuiRadioGroup
24
- aria-labelledby={props.id}
25
- defaultValue={props.checked}
26
- name="radio-buttons-group"
27
- row={props.direction === 'horizontal' ? true : false}
28
- onChange={!!onChange ? (event, value) => onChange(event, value) : undefined}
29
- >
30
- {props.options &&
31
- props.options.map((item, key) => (
32
- <FormControlLabel
33
- value={item.value}
34
- control={<RadioStyled color={props.color} size={item.size ? item.size : sizes[1]} />}
35
- label={item.label}
36
- key={key}
37
- sx={{alignItems: "start"}}
38
- />
39
- ))}
40
- </MuiRadioGroup>
41
- </FormControl>
42
- );
43
- };
1
+ import React from 'react';
2
+ import {
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormLabel,
6
+ Radio as MuiRadio,
7
+ RadioGroup as MuiRadioGroup,
8
+ } from '@mui/material';
9
+
10
+ import { styled } from '@mui/material/styles';
11
+ import { RadioBaseProps } from '../interfaces/RadioGroup';
12
+ import { TextFieldSizeVariant } from '../types';
13
+
14
+ const RadioStyled = styled(MuiRadio)({});
15
+ const sizes: TextFieldSizeVariant[] = ['small', 'medium'];
16
+
17
+ export const RadioGroup = ({ ...props }: RadioBaseProps) => {
18
+ const { onChange } = props;
19
+
20
+ return (
21
+ <FormControl disabled={props.disabled}>
22
+ <FormLabel id={props.id}>{props.label}</FormLabel>
23
+ <MuiRadioGroup
24
+ aria-labelledby={props.id}
25
+ defaultValue={props.checked}
26
+ name="radio-buttons-group"
27
+ row={props.direction === 'horizontal' ? true : false}
28
+ onChange={!!onChange ? (event, value) => onChange(event, value) : undefined}
29
+ >
30
+ {props.options &&
31
+ props.options.map((item, key) => (
32
+ <FormControlLabel
33
+ value={item.value}
34
+ control={<RadioStyled color={props.color} size={item.size ? item.size : sizes[1]} />}
35
+ label={item.label}
36
+ key={key}
37
+ sx={{alignItems: "start"}}
38
+ />
39
+ ))}
40
+ </MuiRadioGroup>
41
+ </FormControl>
42
+ );
43
+ };
@@ -1,65 +1,65 @@
1
- import React from 'react';
2
- import { Slider as MuiSlider } from '@mui/material';
3
- import { palette } 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
- color: colorMap['primary'],
21
- '& .MuiSlider-track': {
22
- border: 'none',
23
- },
24
- '& .MuiSlider-thumb': {
25
- height: 18,
26
- width: 18,
27
- backgroundColor: '#FFF',
28
- border: `2px solid ${colorMap['primary']}`,
29
- '&:focus, &:hover, &.Mui-active, &.Mui-focusVisible': {
30
- boxShadow: 'inherit',
31
- },
32
- '&:before': {
33
- width: '8px',
34
- height: '8px',
35
- position: 'absolute',
36
- display: 'block',
37
- background: colorMap['primary'],
38
- },
39
- },
40
- '& .MuiSlider-valueLabel': {
41
- fontSize: 12,
42
- fontWeight: 'normal',
43
- top: 48,
44
- position: 'absolute',
45
- transition: 'none',
46
- color: colorMap['primary'],
47
- '&:before': {
48
- bottom: 'inherit',
49
- top: '-8px',
50
- },
51
- '& *': {
52
- background: 'transparent',
53
- color: '#FFF',
54
- },
55
- },
56
- '& .MuiSlider-rail': {
57
- color: '#F0F2F8 ',
58
- opacity: 1,
59
- height: 10,
60
- },
61
- }));
62
-
63
- export const RangerSlider = ({ defaultValue = 50, color = 'primary', ...props }: RangerSliderBaseProps) => {
64
- return <RangerSliderStyled aria-label="Default" color={color} {...props} />;
65
- };
1
+ import React from 'react';
2
+ import { Slider as MuiSlider } from '@mui/material';
3
+ import { palette } 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
+ color: colorMap['primary'],
21
+ '& .MuiSlider-track': {
22
+ border: 'none',
23
+ },
24
+ '& .MuiSlider-thumb': {
25
+ height: 18,
26
+ width: 18,
27
+ backgroundColor: '#FFF',
28
+ border: `2px solid ${colorMap['primary']}`,
29
+ '&:focus, &:hover, &.Mui-active, &.Mui-focusVisible': {
30
+ boxShadow: 'inherit',
31
+ },
32
+ '&:before': {
33
+ width: '8px',
34
+ height: '8px',
35
+ position: 'absolute',
36
+ display: 'block',
37
+ background: colorMap['primary'],
38
+ },
39
+ },
40
+ '& .MuiSlider-valueLabel': {
41
+ fontSize: 12,
42
+ fontWeight: 'normal',
43
+ top: 48,
44
+ position: 'absolute',
45
+ transition: 'none',
46
+ color: colorMap['primary'],
47
+ '&:before': {
48
+ bottom: 'inherit',
49
+ top: '-8px',
50
+ },
51
+ '& *': {
52
+ background: 'transparent',
53
+ color: '#FFF',
54
+ },
55
+ },
56
+ '& .MuiSlider-rail': {
57
+ color: '#F0F2F8 ',
58
+ opacity: 1,
59
+ height: 10,
60
+ },
61
+ }));
62
+
63
+ export const RangerSlider = ({ defaultValue = 50, color = 'primary', ...props }: RangerSliderBaseProps) => {
64
+ return <RangerSliderStyled aria-label="Default" color={color} {...props} />;
65
+ };
@@ -1,74 +1,74 @@
1
- import React from 'react';
2
- import {
3
- FormControl,
4
- InputLabel,
5
- ListItemText,
6
- MenuItem,
7
- Select as MuiSelect,
8
- OutlinedInput,
9
- } from '@mui/material';
10
- import { SelectBaseProps } from '../interfaces';
11
- import { styled } from '@mui/material/styles';
12
- import { CheckBox } from './CheckBox';
13
-
14
- const ITEM_HEIGHT = 48;
15
- const ITEM_PADDING_TOP = 8;
16
- const MenuProps = {
17
- PaperProps: {
18
- style: {
19
- maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
20
- width: 250,
21
- },
22
- },
23
- };
24
-
25
- const SelectStyled = styled(MuiSelect)(({ multiple, variant }) => ({
26
- '& .MuiOutlinedInput-notchedOutline': {
27
- border: multiple === true ? 'none' : '1px solid #666666 ',
28
- borderRadius: multiple === true ? 0 : 4,
29
- borderBottom: '1px solid #666666',
30
- },
31
- '& .MuiFormLabel-root': {
32
- backgroundColor: variant === 'standard' ? '#fff' : 'inherit',
33
- padding: variant === 'standard' ? '0 5px' : 0,
34
- },
35
- }));
36
-
37
- export const Select = ({ label, onChange, data = [], value = '', multiple = false, ...props }: SelectBaseProps) => {
38
- return (
39
- <FormControl fullWidth>
40
- <InputLabel id={props.id}>{label}</InputLabel>
41
-
42
- {multiple ? (
43
- <SelectStyled
44
- labelId={props.id}
45
- id="demo-simple-select"
46
- value={value}
47
- MenuProps={MenuProps}
48
- input={<OutlinedInput label="Tag" />}
49
- renderValue={(selected: any) => selected.join(', ')}
50
- onChange={onChange}
51
- multiple
52
- {...props}
53
- >
54
- {data &&
55
- data.map((item, key) => (
56
- <MenuItem value={item.value} key={key}>
57
- <CheckBox checked={value.includes(String(item.value))} />
58
- <ListItemText primary={String(item.label)} />
59
- </MenuItem>
60
- ))}
61
- </SelectStyled>
62
- ) : (
63
- <SelectStyled labelId={props.id} id="demo-simple-select" value={value} onChange={onChange} {...props}>
64
- {data &&
65
- data.map((item, key) => (
66
- <MenuItem value={item.value} key={key}>
67
- <ListItemText primary={String(item.label)} />
68
- </MenuItem>
69
- ))}
70
- </SelectStyled>
71
- )}
72
- </FormControl>
73
- );
74
- };
1
+ import React from 'react';
2
+ import {
3
+ FormControl,
4
+ InputLabel,
5
+ ListItemText,
6
+ MenuItem,
7
+ Select as MuiSelect,
8
+ OutlinedInput,
9
+ } from '@mui/material';
10
+ import { SelectBaseProps } from '../interfaces';
11
+ import { styled } from '@mui/material/styles';
12
+ import { CheckBox } from './CheckBox';
13
+
14
+ const ITEM_HEIGHT = 48;
15
+ const ITEM_PADDING_TOP = 8;
16
+ const MenuProps = {
17
+ PaperProps: {
18
+ style: {
19
+ maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
20
+ width: 250,
21
+ },
22
+ },
23
+ };
24
+
25
+ const SelectStyled = styled(MuiSelect)(({ multiple, variant }) => ({
26
+ '& .MuiOutlinedInput-notchedOutline': {
27
+ border: multiple === true ? 'none' : '1px solid #666666 ',
28
+ borderRadius: multiple === true ? 0 : 4,
29
+ borderBottom: '1px solid #666666',
30
+ },
31
+ '& .MuiFormLabel-root': {
32
+ backgroundColor: variant === 'standard' ? '#fff' : 'inherit',
33
+ padding: variant === 'standard' ? '0 5px' : 0,
34
+ },
35
+ }));
36
+
37
+ export const Select = ({ label, onChange, data = [], value = '', multiple = false, ...props }: SelectBaseProps) => {
38
+ return (
39
+ <FormControl fullWidth>
40
+ <InputLabel id={props.id}>{label}</InputLabel>
41
+
42
+ {multiple ? (
43
+ <SelectStyled
44
+ labelId={props.id}
45
+ id="demo-simple-select"
46
+ value={value}
47
+ MenuProps={MenuProps}
48
+ input={<OutlinedInput label="Tag" />}
49
+ renderValue={(selected: any) => selected.join(', ')}
50
+ onChange={onChange}
51
+ multiple
52
+ {...props}
53
+ >
54
+ {data &&
55
+ data.map((item, key) => (
56
+ <MenuItem value={item.value} key={key}>
57
+ <CheckBox checked={value.includes(String(item.value))} />
58
+ <ListItemText primary={String(item.label)} />
59
+ </MenuItem>
60
+ ))}
61
+ </SelectStyled>
62
+ ) : (
63
+ <SelectStyled labelId={props.id} id="demo-simple-select" value={value} onChange={onChange} {...props}>
64
+ {data &&
65
+ data.map((item, key) => (
66
+ <MenuItem value={item.value} key={key}>
67
+ <ListItemText primary={String(item.label)} />
68
+ </MenuItem>
69
+ ))}
70
+ </SelectStyled>
71
+ )}
72
+ </FormControl>
73
+ );
74
+ };
@@ -1,62 +1,62 @@
1
- import React, { useState } from "react"
2
- import { components } from "react-select"
3
- import * as S from "./styles";
4
-
5
- const Option:React.FC<any> = ({
6
- isFocused,
7
- isSelected,
8
- innerProps,
9
- children,
10
- getStyles,
11
- isDisabled,
12
- ...rest
13
- }) => {
14
- const [isActive, setIsActive] = useState(false);
15
- const onMouseDown = () => setIsActive(true);
16
- const onMouseUp = () => setIsActive(false);
17
- const onMouseLeave = () => setIsActive(false);
18
-
19
- let bg = "transparent"
20
- let color = "#000"
21
-
22
- if (isFocused) {
23
- bg = "#f1f1f1"
24
- };
25
- if (isActive) {
26
- bg = "#F8F9FA"
27
- };
28
-
29
- const style = {
30
- alignItems: "center",
31
- transition: "0.3s",
32
- backgroundColor: bg,
33
- color: color,
34
- display: "flex ",
35
- gap: '8px'
36
- };
37
-
38
- const props = {
39
- ...innerProps,
40
- onMouseDown,
41
- onMouseUp,
42
- onMouseLeave,
43
- style,
44
- ...rest
45
- };
46
-
47
- return (
48
- <S.Container>
49
- <components.Option
50
- {...rest}
51
- isDisabled={isDisabled}
52
- isFocused={isFocused}
53
- isSelected={isSelected}
54
- getStyles={getStyles}
55
- innerProps={props}>
56
- {children}
57
- </components.Option>
58
- </S.Container>
59
- );
60
- };
61
-
1
+ import React, { useState } from "react"
2
+ import { components } from "react-select"
3
+ import * as S from "./styles";
4
+
5
+ const Option:React.FC<any> = ({
6
+ isFocused,
7
+ isSelected,
8
+ innerProps,
9
+ children,
10
+ getStyles,
11
+ isDisabled,
12
+ ...rest
13
+ }) => {
14
+ const [isActive, setIsActive] = useState(false);
15
+ const onMouseDown = () => setIsActive(true);
16
+ const onMouseUp = () => setIsActive(false);
17
+ const onMouseLeave = () => setIsActive(false);
18
+
19
+ let bg = "transparent"
20
+ let color = "#000"
21
+
22
+ if (isFocused) {
23
+ bg = "#f1f1f1"
24
+ };
25
+ if (isActive) {
26
+ bg = "#F8F9FA"
27
+ };
28
+
29
+ const style = {
30
+ alignItems: "center",
31
+ transition: "0.3s",
32
+ backgroundColor: bg,
33
+ color: color,
34
+ display: "flex ",
35
+ gap: '8px'
36
+ };
37
+
38
+ const props = {
39
+ ...innerProps,
40
+ onMouseDown,
41
+ onMouseUp,
42
+ onMouseLeave,
43
+ style,
44
+ ...rest
45
+ };
46
+
47
+ return (
48
+ <S.Container>
49
+ <components.Option
50
+ {...rest}
51
+ isDisabled={isDisabled}
52
+ isFocused={isFocused}
53
+ isSelected={isSelected}
54
+ getStyles={getStyles}
55
+ innerProps={props}>
56
+ {children}
57
+ </components.Option>
58
+ </S.Container>
59
+ );
60
+ };
61
+
62
62
  export default Option