norma-library 0.5.130 → 0.5.131

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 (159) 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/RadioGroup.js +1 -1
  9. package/dist/esm/components/RadioGroup.js.map +1 -1
  10. package/docs/index.md +118 -118
  11. package/package.json +136 -136
  12. package/src/components/Accordion.tsx +39 -39
  13. package/src/components/Avatar.tsx +17 -17
  14. package/src/components/Badge.tsx +14 -14
  15. package/src/components/Box/index.tsx +12 -12
  16. package/src/components/Box/interfaces.ts +3 -3
  17. package/src/components/Box/styles.tsx +22 -22
  18. package/src/components/Breadcrumb/index.tsx +27 -27
  19. package/src/components/Breadcrumb/interface.ts +8 -8
  20. package/src/components/Breadcrumb/styles.tsx +32 -32
  21. package/src/components/Button.tsx +26 -26
  22. package/src/components/Card.tsx +37 -37
  23. package/src/components/ChatMessage.tsx +87 -87
  24. package/src/components/ChatMessageBalloon/ChatMessageBalloon.style.ts +56 -56
  25. package/src/components/ChatMessageBalloon/ChatMessageBalloon.tsx +55 -55
  26. package/src/components/CheckBox.tsx +21 -21
  27. package/src/components/DateInput/index.tsx +34 -34
  28. package/src/components/DateInput/interface.ts +13 -13
  29. package/src/components/DateInput/styles.tsx +27 -27
  30. package/src/components/DatePicker.tsx +67 -67
  31. package/src/components/DropDown.tsx +24 -24
  32. package/src/components/IconButton.tsx +37 -37
  33. package/src/components/Icons.tsx +82 -82
  34. package/src/components/Modal.tsx +113 -113
  35. package/src/components/MultiSelectInput/components/MultiValue/index.tsx +44 -44
  36. package/src/components/MultiSelectInput/components/Option/index.tsx +62 -62
  37. package/src/components/MultiSelectInput/components/Option/styles.tsx +8 -8
  38. package/src/components/MultiSelectInput/index.tsx +60 -60
  39. package/src/components/MultiSelectInput/interfaces.ts +15 -15
  40. package/src/components/MultiSelectInput/styles.tsx +43 -43
  41. package/src/components/Paper.tsx +12 -12
  42. package/src/components/ProgressBar.tsx +50 -50
  43. package/src/components/RadioGroup.tsx +43 -43
  44. package/src/components/RangerSlider.tsx +65 -65
  45. package/src/components/Select.tsx +74 -74
  46. package/src/components/SelectInput/components/Option/index.tsx +61 -61
  47. package/src/components/SelectInput/components/Option/styles.tsx +8 -8
  48. package/src/components/SelectInput/index.tsx +45 -45
  49. package/src/components/SelectInput/interfaces.ts +15 -15
  50. package/src/components/SelectInput/styles.tsx +31 -31
  51. package/src/components/Svgs.tsx +506 -506
  52. package/src/components/Table/components/header/index.tsx +86 -86
  53. package/src/components/Table/components/header/styles.tsx +59 -59
  54. package/src/components/Table/components/index.tsx +8 -8
  55. package/src/components/Table/components/pagination/index.tsx +39 -39
  56. package/src/components/Table/components/pagination/styles.tsx +28 -28
  57. package/src/components/Table/components/tbody/index.tsx +30 -30
  58. package/src/components/Table/components/tbody/styles.tsx +4 -4
  59. package/src/components/Table/index.tsx +317 -317
  60. package/src/components/Table/interface.ts +23 -23
  61. package/src/components/Table/styles.tsx +117 -117
  62. package/src/components/Tabs.tsx +105 -105
  63. package/src/components/Tag.tsx +33 -33
  64. package/src/components/TextField.tsx +19 -19
  65. package/src/components/TextInput/index.tsx +37 -37
  66. package/src/components/TextInput/interface.ts +9 -9
  67. package/src/components/TextInput/styles.tsx +23 -23
  68. package/src/components/TimeLine.tsx +89 -89
  69. package/src/components/TimePicker.tsx +78 -78
  70. package/src/components/Typography/Text/index.tsx +20 -20
  71. package/src/components/Typography/Text/interfaces.ts +5 -5
  72. package/src/components/Typography/Text/styles.tsx +40 -40
  73. package/src/components/Typography/Title/index.tsx +22 -22
  74. package/src/components/Typography/Title/interfaces.ts +6 -6
  75. package/src/components/Typography/Title/styles.tsx +40 -40
  76. package/src/components/Typography/index.tsx +6 -6
  77. package/src/components/UncontrolledTable/components/header/index.tsx +63 -63
  78. package/src/components/UncontrolledTable/components/header/styles.tsx +59 -59
  79. package/src/components/UncontrolledTable/components/index.tsx +8 -8
  80. package/src/components/UncontrolledTable/components/pagination/index.tsx +43 -43
  81. package/src/components/UncontrolledTable/components/pagination/styles.tsx +28 -28
  82. package/src/components/UncontrolledTable/components/tbody/index.tsx +30 -30
  83. package/src/components/UncontrolledTable/components/tbody/styles.tsx +4 -4
  84. package/src/components/UncontrolledTable/index.tsx +226 -226
  85. package/src/components/UncontrolledTable/interface.ts +42 -42
  86. package/src/components/UncontrolledTable/styles.tsx +120 -120
  87. package/src/components/UncontrolledTabs/UncontrolledTabs.style.tsx +51 -51
  88. package/src/components/UncontrolledTabs/UncontrolledTabs.tsx +68 -68
  89. package/src/components/index.ts +24 -24
  90. package/src/helpers/alignments.ts +14 -14
  91. package/src/helpers/borders.ts +18 -18
  92. package/src/helpers/colors.ts +206 -206
  93. package/src/helpers/index.ts +5 -5
  94. package/src/helpers/radios.ts +24 -24
  95. package/src/helpers/sizes.ts +72 -72
  96. package/src/index.ts +66 -66
  97. package/src/interfaces/Accordion.ts +12 -12
  98. package/src/interfaces/Avatar.tsx +15 -15
  99. package/src/interfaces/Badge.ts +19 -19
  100. package/src/interfaces/Button.ts +22 -22
  101. package/src/interfaces/Card.ts +11 -11
  102. package/src/interfaces/ChatMessage.ts +12 -12
  103. package/src/interfaces/ChatMessageBalloon.ts +17 -17
  104. package/src/interfaces/CheckBox.ts +27 -27
  105. package/src/interfaces/DatePicker.ts +13 -13
  106. package/src/interfaces/DropDown.ts +14 -14
  107. package/src/interfaces/IconButton.ts +22 -22
  108. package/src/interfaces/Icons.ts +17 -17
  109. package/src/interfaces/Modal.ts +16 -16
  110. package/src/interfaces/Paper.ts +12 -12
  111. package/src/interfaces/ProgressBar.ts +19 -19
  112. package/src/interfaces/RadioGroup.ts +23 -23
  113. package/src/interfaces/RangerSlider.ts +21 -21
  114. package/src/interfaces/Select.ts +17 -17
  115. package/src/interfaces/Tabs.ts +19 -19
  116. package/src/interfaces/Tag.ts +17 -17
  117. package/src/interfaces/TextField.ts +44 -44
  118. package/src/interfaces/TimeLine.ts +11 -11
  119. package/src/interfaces/TimePicker.ts +13 -13
  120. package/src/interfaces/index.ts +23 -23
  121. package/src/providers/NormaProvider.tsx +13 -13
  122. package/src/sample-data-2.json +178 -178
  123. package/src/sample-data.json +177 -177
  124. package/src/stories/Accordion.stories.tsx +65 -65
  125. package/src/stories/Avatar.stories.tsx +123 -123
  126. package/src/stories/Badge.stories.tsx +39 -39
  127. package/src/stories/Box.stories.tsx +35 -35
  128. package/src/stories/Breadcrumb.stories.tsx +44 -44
  129. package/src/stories/Button.stories.tsx +93 -93
  130. package/src/stories/Card.stories.tsx +39 -39
  131. package/src/stories/ChatMessage.stories.tsx +84 -84
  132. package/src/stories/ChatMessageBalloon.stories.tsx +108 -108
  133. package/src/stories/CheckBox.stories.tsx +88 -88
  134. package/src/stories/DateInput.stories.tsx +51 -51
  135. package/src/stories/DatePicker.stories.tsx +50 -50
  136. package/src/stories/DropDown.stories.tsx +57 -57
  137. package/src/stories/IconButton.stories.tsx +78 -78
  138. package/src/stories/Modal.stories.tsx +195 -195
  139. package/src/stories/MultiSelectInput.stories.tsx +90 -90
  140. package/src/stories/Paper.stories.tsx +53 -53
  141. package/src/stories/ProgressBar.stories.tsx +95 -95
  142. package/src/stories/RadioGroup.stories.tsx +87 -87
  143. package/src/stories/RangerSlider.stories.tsx +58 -58
  144. package/src/stories/Select.stories.tsx +100 -100
  145. package/src/stories/SelectInput.stories.tsx +78 -78
  146. package/src/stories/Table.stories.tsx +372 -372
  147. package/src/stories/Tabs.stories.tsx +61 -61
  148. package/src/stories/Tag.stories.tsx +56 -56
  149. package/src/stories/Text.stories.tsx +37 -37
  150. package/src/stories/TextField.stories.tsx +310 -310
  151. package/src/stories/TextInput.stories.tsx +52 -52
  152. package/src/stories/TimeLine.stories.tsx +35 -35
  153. package/src/stories/TimePicker.stories.tsx +87 -87
  154. package/src/stories/Title.stories.tsx +43 -43
  155. package/src/stories/UncontrolledTable.stories.tsx +337 -337
  156. package/src/stories/UncontrolledTabs.stories.tsx +63 -63
  157. package/src/styles/globals.scss +17 -17
  158. package/src/types/index.ts +204 -204
  159. package/vite.config.ts +15 -15
@@ -1,44 +1,44 @@
1
- import styled from "styled-components";
2
-
3
- export const Container = styled.div`
4
- width: 100%;
5
- display: flex;
6
- flex-direction: column;
7
- .react-select {
8
- &__control {
9
- border-radius: 0;
10
- border: none;
11
- border-bottom: 1px solid #00000033;
12
- }
13
- &__control--is-focused {
14
- border-bottom: 1px solid #00000033;
15
- box-shadow: none;
16
- }
17
- &__control:hover {
18
- border: none;
19
- border-bottom: 1px solid #00000033 !important;
20
- box-shadow: 0 0 0 #fff;
21
- }
22
- &__indicator-separator {
23
- background: #fff;
24
- }
25
- &__multi-value {
26
- background: transparent;
27
- border-radius: 4px;
28
- &__label {
29
- color: #4D4F5C;
30
- font-size: 18px;
31
- padding: 0;
32
- }
33
- &__remove {
34
- display: none;
35
- }
36
- }
37
- }
38
- `
39
-
40
- export const Label = styled.label`
41
- font-size: 14px;
42
- margin: 0 0 4px 0;
43
- color: #4D4F5C;
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ width: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ .react-select {
8
+ &__control {
9
+ border-radius: 0;
10
+ border: none;
11
+ border-bottom: 1px solid #00000033;
12
+ }
13
+ &__control--is-focused {
14
+ border-bottom: 1px solid #00000033;
15
+ box-shadow: none;
16
+ }
17
+ &__control:hover {
18
+ border: none;
19
+ border-bottom: 1px solid #00000033 !important;
20
+ box-shadow: 0 0 0 #fff;
21
+ }
22
+ &__indicator-separator {
23
+ background: #fff;
24
+ }
25
+ &__multi-value {
26
+ background: transparent;
27
+ border-radius: 4px;
28
+ &__label {
29
+ color: #4D4F5C;
30
+ font-size: 18px;
31
+ padding: 0;
32
+ }
33
+ &__remove {
34
+ display: none;
35
+ }
36
+ }
37
+ }
38
+ `
39
+
40
+ export const Label = styled.label`
41
+ font-size: 14px;
42
+ margin: 0 0 4px 0;
43
+ color: #4D4F5C;
44
44
  `
@@ -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,50 +1,50 @@
1
- import React from 'react';
2
- import { LinearProgress as MuiProgressBar, linearProgressClasses, Typography } from '@mui/material';
3
-
4
- import { ProgressBarBaseProps } from '../interfaces';
5
- import { styled } from '@mui/material/styles';
6
-
7
- const ProgressBarStyled = styled(MuiProgressBar)({
8
- width: '100%',
9
- height: '10px',
10
- borderRadius: '10px',
11
- position: 'relative',
12
- backgroundColor: `&.${linearProgressClasses.determinate} {
13
- background-color: #e0e0e0,
14
- }`,
15
- });
16
-
17
- const ProgressBarLabelStyled = styled(Typography)`
18
- display: flex;
19
- justify-content: space-between;
20
- align-items: center;
21
- margin-bottom: 8px;
22
- position: relative;
23
- text-align: left;
24
- `;
25
-
26
- export const ProgressBar = ({
27
- value = 0,
28
- label,
29
- variant = 'determinate',
30
- total,
31
- className,
32
- localeString,
33
- ...props
34
- }: ProgressBarBaseProps) => {
35
- const percentage = value && total ? (value / total) * 100 : 0;
36
-
37
- return (
38
- <div className={className} style={{ minWidth: '100px' }}>
39
- {label && (
40
- <ProgressBarLabelStyled>
41
- {label}
42
- <span style={{ right: 0 }}>
43
- {localeString ? value.toLocaleString() : value} ({percentage.toFixed(2)}%)
44
- </span>
45
- </ProgressBarLabelStyled>
46
- )}
47
- <ProgressBarStyled value={percentage} variant={variant} {...props} />
48
- </div>
49
- );
50
- };
1
+ import React from 'react';
2
+ import { LinearProgress as MuiProgressBar, linearProgressClasses, Typography } from '@mui/material';
3
+
4
+ import { ProgressBarBaseProps } from '../interfaces';
5
+ import { styled } from '@mui/material/styles';
6
+
7
+ const ProgressBarStyled = styled(MuiProgressBar)({
8
+ width: '100%',
9
+ height: '10px',
10
+ borderRadius: '10px',
11
+ position: 'relative',
12
+ backgroundColor: `&.${linearProgressClasses.determinate} {
13
+ background-color: #e0e0e0,
14
+ }`,
15
+ });
16
+
17
+ const ProgressBarLabelStyled = styled(Typography)`
18
+ display: flex;
19
+ justify-content: space-between;
20
+ align-items: center;
21
+ margin-bottom: 8px;
22
+ position: relative;
23
+ text-align: left;
24
+ `;
25
+
26
+ export const ProgressBar = ({
27
+ value = 0,
28
+ label,
29
+ variant = 'determinate',
30
+ total,
31
+ className,
32
+ localeString,
33
+ ...props
34
+ }: ProgressBarBaseProps) => {
35
+ const percentage = value && total ? (value / total) * 100 : 0;
36
+
37
+ return (
38
+ <div className={className} style={{ minWidth: '100px' }}>
39
+ {label && (
40
+ <ProgressBarLabelStyled>
41
+ {label}
42
+ <span style={{ right: 0 }}>
43
+ {localeString ? value.toLocaleString() : value} ({percentage.toFixed(2)}%)
44
+ </span>
45
+ </ProgressBarLabelStyled>
46
+ )}
47
+ <ProgressBarStyled value={percentage} variant={variant} {...props} />
48
+ </div>
49
+ );
50
+ };
@@ -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>
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
- '& .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
- return (
63
- <RangerSliderStyled aria-label="Default" color={color} {...props} />
64
- );
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
+ '& .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
+ return (
63
+ <RangerSliderStyled aria-label="Default" color={color} {...props} />
64
+ );
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
+ };