norma-library 0.6.6 → 0.6.62

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 (164) 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/helpers/colors.js +1 -1
  9. package/docs/index.md +118 -118
  10. package/package.json +136 -136
  11. package/src/components/Accordion.tsx +39 -39
  12. package/src/components/Avatar.tsx +17 -17
  13. package/src/components/Badge.tsx +14 -14
  14. package/src/components/Box/index.tsx +12 -12
  15. package/src/components/Box/interfaces.ts +3 -3
  16. package/src/components/Box/styles.tsx +22 -22
  17. package/src/components/Breadcrumb/index.tsx +27 -27
  18. package/src/components/Breadcrumb/interface.ts +8 -8
  19. package/src/components/Breadcrumb/styles.tsx +32 -32
  20. package/src/components/Button.tsx +26 -26
  21. package/src/components/Card.tsx +37 -37
  22. package/src/components/ChatMessage.tsx +87 -87
  23. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  24. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  25. package/src/components/CheckBox.tsx +21 -21
  26. package/src/components/DateInput/index.tsx +34 -34
  27. package/src/components/DateInput/interface.ts +13 -13
  28. package/src/components/DateInput/styles.tsx +27 -27
  29. package/src/components/DatePicker.tsx +67 -67
  30. package/src/components/DropDown.tsx +24 -24
  31. package/src/components/IconButton.tsx +37 -37
  32. package/src/components/Icons.tsx +82 -82
  33. package/src/components/Modal.tsx +103 -103
  34. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  35. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  36. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  37. package/src/components/MultiSelectInput/index.tsx +60 -60
  38. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  39. package/src/components/MultiSelectInput/styles.tsx +43 -43
  40. package/src/components/Paper.tsx +12 -12
  41. package/src/components/ProgressBar.tsx +71 -71
  42. package/src/components/RadioGroup.tsx +43 -43
  43. package/src/components/RangerSlider.tsx +65 -65
  44. package/src/components/Select.tsx +74 -74
  45. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  46. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  47. package/src/components/SelectInput/index.tsx +45 -45
  48. package/src/components/SelectInput/interfaces.ts +15 -15
  49. package/src/components/SelectInput/styles.tsx +31 -31
  50. package/src/components/StatusModal/StatusModal.style.tsx +75 -75
  51. package/src/components/StatusModal/StatusModal.tsx +58 -58
  52. package/src/components/Svgs.tsx +506 -506
  53. package/src/components/Table/components/header/index.tsx +86 -86
  54. package/src/components/Table/components/header/styles.tsx +59 -59
  55. package/src/components/Table/components/index.tsx +8 -8
  56. package/src/components/Table/components/pagination/index.tsx +39 -39
  57. package/src/components/Table/components/pagination/styles.tsx +28 -28
  58. package/src/components/Table/components/tbody/index.tsx +30 -30
  59. package/src/components/Table/components/tbody/styles.tsx +4 -4
  60. package/src/components/Table/index.tsx +317 -317
  61. package/src/components/Table/interface.ts +23 -23
  62. package/src/components/Table/styles.tsx +117 -117
  63. package/src/components/Tabs.tsx +105 -105
  64. package/src/components/Tag.tsx +33 -33
  65. package/src/components/TextField.tsx +19 -19
  66. package/src/components/TextInput/index.tsx +37 -37
  67. package/src/components/TextInput/interface.ts +9 -9
  68. package/src/components/TextInput/styles.tsx +23 -23
  69. package/src/components/TimeLine.tsx +89 -89
  70. package/src/components/TimePicker.tsx +78 -78
  71. package/src/components/Typography/Text/index.tsx +20 -20
  72. package/src/components/Typography/Text/interfaces.ts +5 -5
  73. package/src/components/Typography/Text/styles.tsx +40 -40
  74. package/src/components/Typography/Title/index.tsx +22 -22
  75. package/src/components/Typography/Title/interfaces.ts +6 -6
  76. package/src/components/Typography/Title/styles.tsx +40 -40
  77. package/src/components/Typography/index.tsx +6 -6
  78. package/src/components/UncontrolledTable/components/header/index.tsx +72 -72
  79. package/src/components/UncontrolledTable/components/header/styles.tsx +66 -66
  80. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  81. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  82. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  83. package/src/components/UncontrolledTable/components/tbody/index.tsx +33 -33
  84. package/src/components/UncontrolledTable/components/tbody/styles.tsx +32 -32
  85. package/src/components/UncontrolledTable/index.tsx +223 -223
  86. package/src/components/UncontrolledTable/interface.ts +46 -46
  87. package/src/components/UncontrolledTable/styles.tsx +123 -123
  88. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +58 -58
  89. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +71 -71
  90. package/src/components/UncontrolledTabs/UncontrolledTabsInfo.style.ts +8 -8
  91. package/src/components/index.ts +24 -24
  92. package/src/helpers/alignments.ts +14 -14
  93. package/src/helpers/borders.ts +18 -18
  94. package/src/helpers/colors.ts +258 -258
  95. package/src/helpers/index.ts +5 -5
  96. package/src/helpers/radios.ts +24 -24
  97. package/src/helpers/sizes.ts +72 -72
  98. package/src/hooks/useClickOutside.tsx +18 -18
  99. package/src/index.ts +70 -70
  100. package/src/interfaces/Accordion.ts +12 -12
  101. package/src/interfaces/Avatar.tsx +15 -15
  102. package/src/interfaces/Badge.ts +19 -19
  103. package/src/interfaces/Button.ts +22 -22
  104. package/src/interfaces/Card.ts +11 -11
  105. package/src/interfaces/ChatMessage.ts +12 -12
  106. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  107. package/src/interfaces/CheckBox.ts +27 -27
  108. package/src/interfaces/DatePicker.ts +13 -13
  109. package/src/interfaces/DropDown.ts +14 -14
  110. package/src/interfaces/IconButton.ts +22 -22
  111. package/src/interfaces/Icons.ts +17 -17
  112. package/src/interfaces/Modal.ts +18 -18
  113. package/src/interfaces/Paper.ts +12 -12
  114. package/src/interfaces/ProgressBar.ts +29 -29
  115. package/src/interfaces/RadioGroup.ts +23 -23
  116. package/src/interfaces/RangerSlider.ts +21 -21
  117. package/src/interfaces/Select.ts +17 -17
  118. package/src/interfaces/Tabs.ts +19 -19
  119. package/src/interfaces/Tag.ts +17 -17
  120. package/src/interfaces/TextField.ts +44 -44
  121. package/src/interfaces/TimeLine.ts +11 -11
  122. package/src/interfaces/TimePicker.ts +13 -13
  123. package/src/interfaces/index.ts +23 -23
  124. package/src/providers/NormaProvider.tsx +13 -13
  125. package/src/sample-data-2.json +178 -178
  126. package/src/sample-data.json +177 -177
  127. package/src/stories/Accordion.stories.tsx +65 -65
  128. package/src/stories/Avatar.stories.tsx +123 -123
  129. package/src/stories/Badge.stories.tsx +39 -39
  130. package/src/stories/Box.stories.tsx +35 -35
  131. package/src/stories/Breadcrumb.stories.tsx +44 -44
  132. package/src/stories/Button.stories.tsx +93 -93
  133. package/src/stories/Card.stories.tsx +39 -39
  134. package/src/stories/ChatMessage.stories.tsx +84 -84
  135. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  136. package/src/stories/CheckBox.stories.tsx +88 -88
  137. package/src/stories/DateInput.stories.tsx +51 -51
  138. package/src/stories/DatePicker.stories.tsx +50 -50
  139. package/src/stories/DropDown.stories.tsx +57 -57
  140. package/src/stories/IconButton.stories.tsx +78 -78
  141. package/src/stories/Modal.stories.tsx +246 -246
  142. package/src/stories/ModalStatus.stories.tsx +46 -46
  143. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  144. package/src/stories/Paper.stories.tsx +53 -53
  145. package/src/stories/ProgressBar.stories.tsx +116 -116
  146. package/src/stories/RadioGroup.stories.tsx +87 -87
  147. package/src/stories/RangerSlider.stories.tsx +149 -149
  148. package/src/stories/Select.stories.tsx +100 -100
  149. package/src/stories/SelectInput.stories.tsx +78 -78
  150. package/src/stories/Table.stories.tsx +372 -372
  151. package/src/stories/Tabs.stories.tsx +61 -61
  152. package/src/stories/Tag.stories.tsx +56 -56
  153. package/src/stories/Text.stories.tsx +37 -37
  154. package/src/stories/TextField.stories.tsx +310 -310
  155. package/src/stories/TextInput.stories.tsx +52 -52
  156. package/src/stories/TimeLine.stories.tsx +35 -35
  157. package/src/stories/TimePicker.stories.tsx +87 -87
  158. package/src/stories/Title.stories.tsx +43 -43
  159. package/src/stories/UncontrolledTable.stories.tsx +315 -315
  160. package/src/stories/UncontrolledTabs.stories.tsx +74 -74
  161. package/src/styles/globals.scss +17 -17
  162. package/src/types/index.ts +207 -207
  163. package/src/utils/styledBreakpoints.ts +25 -25
  164. 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