@true-engineering/true-react-common-ui-kit 3.31.0 → 3.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +7 -0
  3. package/dist/components/Notification/Notification.d.ts +2 -0
  4. package/dist/components/Notification/Notification.styles.d.ts +1 -1
  5. package/dist/components/Notification/types.d.ts +1 -1
  6. package/dist/true-react-common-ui-kit.js +64 -61
  7. package/dist/true-react-common-ui-kit.js.map +1 -1
  8. package/dist/true-react-common-ui-kit.umd.cjs +64 -61
  9. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  10. package/package.json +98 -98
  11. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  12. package/src/components/AccountInfo/AccountInfo.tsx +80 -80
  13. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  14. package/src/components/AddButton/AddButton.tsx +52 -52
  15. package/src/components/Colors/Colors.stories.tsx +7 -7
  16. package/src/components/DateInput/DateInput.tsx +90 -90
  17. package/src/components/DateInput/constants.ts +2 -2
  18. package/src/components/Description/Description.stories.tsx +27 -27
  19. package/src/components/Description/Description.tsx +61 -61
  20. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +166 -166
  21. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +210 -210
  22. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +177 -177
  23. package/src/components/Flag/Flag.stories.tsx +29 -29
  24. package/src/components/Flag/Flag.tsx +26 -26
  25. package/src/components/Flag/augment.d.ts +1 -1
  26. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts +38 -38
  27. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.ts +25 -25
  28. package/src/components/FlexibleTable/types.ts +70 -70
  29. package/src/components/Icon/Icon.stories.tsx +86 -86
  30. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  31. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  32. package/src/components/Icon/complexIcons/index.ts +1 -1
  33. package/src/components/Icon/icons-list.ts +856 -856
  34. package/src/components/IncrementInput/IncrementInput.tsx +105 -105
  35. package/src/components/Input/types.ts +32 -32
  36. package/src/components/Modal/Modal.stories.tsx +105 -105
  37. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  38. package/src/components/MultiSelect/MultiSelect.tsx +106 -106
  39. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx +53 -53
  40. package/src/components/Notification/Notification.stories.tsx +55 -46
  41. package/src/components/Notification/Notification.styles.ts +57 -55
  42. package/src/components/Notification/Notification.tsx +77 -69
  43. package/src/components/Notification/types.ts +1 -1
  44. package/src/components/NumberInput/NumberInput.tsx +137 -137
  45. package/src/components/NumberInput/index.ts +1 -1
  46. package/src/components/PhoneInput/PhoneInput.tsx +214 -214
  47. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +155 -155
  48. package/src/components/PhoneInput/types.ts +16 -16
  49. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  50. package/src/components/RadioButton/RadioButton.tsx +57 -57
  51. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  52. package/src/components/Select/Select.stories.tsx +235 -235
  53. package/src/components/Select/constants.ts +2 -2
  54. package/src/components/Select/types.ts +1 -1
  55. package/src/components/Selector/Selector.stories.tsx +62 -62
  56. package/src/components/Selector/Selector.tsx +115 -115
  57. package/src/components/Selector/index.ts +2 -2
  58. package/src/components/Selector/types.ts +12 -12
  59. package/src/components/Skeleton/Skeleton.stories.tsx +19 -19
  60. package/src/components/SmartInput/SmartInput.tsx +134 -134
  61. package/src/components/Status/Status.stories.tsx +73 -73
  62. package/src/components/Status/Status.styles.ts +143 -143
  63. package/src/components/Status/Status.tsx +49 -49
  64. package/src/components/Status/constants.ts +11 -11
  65. package/src/components/Status/index.ts +3 -3
  66. package/src/components/Status/types.ts +5 -5
  67. package/src/components/Switch/Switch.stories.tsx +40 -40
  68. package/src/components/Switch/Switch.tsx +75 -75
  69. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  70. package/src/components/TextWithInfo/TextWithInfo.tsx +62 -62
  71. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  72. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  73. package/src/components/ThemedPreloader/ThemedPreloader.tsx +54 -54
  74. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  75. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  76. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  77. package/src/components/Tooltip/Tooltip.tsx +35 -35
  78. package/src/components/Tooltip/types.ts +1 -1
  79. package/src/helpers/popper-helpers.ts +17 -17
  80. package/src/hooks/use-dropdown.ts +84 -84
  81. package/src/hooks/use-is-mounted.ts +15 -15
  82. package/src/theme/helpers.ts +76 -76
  83. package/src/vite-env.d.ts +1 -1
@@ -1,235 +1,235 @@
1
- import { ReactNode, useEffect, useState } from 'react';
2
- import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';
3
- import { ComponentMeta, ComponentStory } from '@storybook/react';
4
- import { Select, ISelectProps } from './Select';
5
-
6
- interface ObjectValue {
7
- name: string;
8
- age: number;
9
- isDisabled?: boolean;
10
- }
11
-
12
- const inlineStyles = [undefined, 'left', 'right', 'middle'];
13
- const borders: Array<ISelectProps<any>['border']> = [undefined, 'left', 'top', 'right', 'bottom'];
14
- const errorPositions: Array<ISelectProps<any>['errorPosition']> = ['bottom', 'top'];
15
-
16
- const genLetters = (qnt = 1): string =>
17
- Math.random()
18
- .toString(36)
19
- .replace(/[^a-z]+/g, '')
20
- .substr(0, qnt);
21
-
22
- const convertObjectToString = (v: ObjectValue): string => v.name;
23
-
24
- const convertObjectToId = (v: ObjectValue): string => `${v.name}${v.age}`;
25
-
26
- const convertObjectToReactNode = (v: ObjectValue, isDisabled: boolean): ReactNode => (
27
- <span style={{ color: isDisabled ? 'red' : undefined }}>
28
- <i>{v.name}</i>, {v.age}
29
- </span>
30
- );
31
-
32
- const convertStringToReactNode = (v: string): ReactNode => <i>{v}</i>;
33
-
34
- const isOptionDisabled = (option: string) => option.startsWith('Опция');
35
- const isObjectOptionDisabled = (option: ObjectValue) => option.age > 30;
36
-
37
- const stringOptions = [
38
- 'Опция 1',
39
- 'Опция 11',
40
- 'Еще одна опция',
41
- 'Еще выбор',
42
- 'Очень длинная опция вот такой текст',
43
- '1',
44
- '2',
45
- '3',
46
- '4',
47
- ];
48
-
49
- const objectOptions: ObjectValue[] = [
50
- { name: 'Ivan', age: 34 },
51
- { name: 'Ivan', age: 42 },
52
- { name: 'Konstantin', age: 11 },
53
- { name: 'Mikhail', age: 24 },
54
- { name: 'Maria', age: 45, isDisabled: true },
55
- { name: 'Elena', age: 14 },
56
- { name: 'Artem', age: 23 },
57
- ];
58
-
59
- // Максимум не включается, минимум включается
60
- const getRandomInt = (min: number, max: number) =>
61
- Math.floor(Math.random() * (Math.floor(max) - Math.ceil(min))) + Math.ceil(min);
62
-
63
- interface ISelectWithCustomProps<T> extends ISelectProps<T> {
64
- valuesType: 'strings' | 'objects';
65
- shouldUseReactNodes?: boolean;
66
- shouldUsePopper?: boolean;
67
- shouldRenderInBody?: boolean;
68
- shouldHideOnScroll?: boolean;
69
- shouldUseCustomIsDisabledFunction?: boolean;
70
- shouldRenderSearchInputInList?: boolean;
71
- canBeFlipped?: boolean;
72
- scrollParent?: 'document' | 'auto';
73
- }
74
-
75
- function SelectWithCustomProps<T>({
76
- valuesType,
77
- optionsMode,
78
- shouldUseReactNodes,
79
- shouldUsePopper,
80
- shouldRenderInBody,
81
- shouldHideOnScroll,
82
- shouldUseCustomIsDisabledFunction,
83
- shouldRenderSearchInputInList,
84
- canBeFlipped,
85
- scrollParent,
86
- noMatchesLabel,
87
- ...rest
88
- }: ISelectWithCustomProps<T>) {
89
- const [stringValue, setStringValue] = useState<string>();
90
- const stringHandler = (newValue?: string) => {
91
- console.log('change');
92
- setStringValue(newValue);
93
- };
94
-
95
- const [objectValue, setObjectValue] = useState<ObjectValue>();
96
- const objectHandler = (newValue?: ObjectValue) => {
97
- console.log('change');
98
- setObjectValue(newValue);
99
- };
100
-
101
- const selectValuesType = valuesType;
102
- const shouldRenderAsReactNodes = shouldUseReactNodes;
103
-
104
- const getOptions = async (): Promise<Array<string | ObjectValue>> =>
105
- new Promise((resolve) =>
106
- setTimeout(() => {
107
- resolve(
108
- [...Array(10)].map((_) => {
109
- if (selectValuesType === 'strings') {
110
- return genLetters(getRandomInt(3, 10));
111
- }
112
- return {
113
- name: genLetters(getRandomInt(3, 10)),
114
- age: getRandomInt(10, 70),
115
- } as ObjectValue;
116
- }),
117
- );
118
- }, 1000),
119
- );
120
-
121
- const [dynamicOptions, setDynamicOptions] = useState<Array<string | ObjectValue>>([]);
122
-
123
- const handleOpen = () => {
124
- console.log('isOpen');
125
- };
126
-
127
- const handleBlur = () => {
128
- console.log('blur');
129
- };
130
-
131
- useEffect(() => {
132
- const api = async () => {
133
- setDynamicOptions(await getOptions());
134
- };
135
-
136
- api();
137
- }, [selectValuesType]);
138
-
139
- const props =
140
- selectValuesType === 'strings'
141
- ? {
142
- onChange: stringHandler,
143
- value: stringValue,
144
- options: optionsMode === 'dynamic' ? dynamicOptions : stringOptions,
145
- convertValueToReactNode: shouldRenderAsReactNodes ? convertStringToReactNode : undefined,
146
- isOptionDisabled: shouldUseCustomIsDisabledFunction ? isOptionDisabled : undefined,
147
- }
148
- : {
149
- onChange: objectHandler,
150
- value: objectValue,
151
- options: optionsMode === 'dynamic' ? dynamicOptions : objectOptions,
152
- convertValueToString: convertObjectToString,
153
- convertValueToId: convertObjectToId,
154
- convertValueToReactNode: shouldRenderAsReactNodes ? convertObjectToReactNode : undefined,
155
- isOptionDisabled: shouldUseCustomIsDisabledFunction ? isObjectOptionDisabled : undefined,
156
- };
157
-
158
- return (
159
- <Select
160
- {...rest}
161
- {...(props as unknown as ISelectProps<any>)}
162
- {...(shouldRenderSearchInputInList && {
163
- searchInput: { shouldRenderInList: true },
164
- })}
165
- noMatchesLabel={isStringNotEmpty(noMatchesLabel) ? noMatchesLabel : undefined}
166
- optionsMode={optionsMode}
167
- onType={async () => setDynamicOptions(await getOptions())}
168
- onOpen={handleOpen}
169
- onBlur={handleBlur}
170
- dropdownOptions={{
171
- shouldUsePopper,
172
- shouldRenderInBody,
173
- shouldHideOnScroll,
174
- canBeFlipped,
175
- scrollParent,
176
- }}
177
- />
178
- );
179
- }
180
-
181
- export default {
182
- title: 'Controls/Select',
183
- component: SelectWithCustomProps,
184
- argTypes: {
185
- debounceTime: {
186
- control: { type: 'range', min: 0, max: 1000, step: 100 },
187
- },
188
- errorPosition: { control: 'inline-radio', options: errorPositions },
189
- border: { control: 'inline-radio', options: borders },
190
- inlineStyle: { control: 'select', options: inlineStyles },
191
- optionsMode: {
192
- control: 'inline-radio',
193
- options: ['normal', 'search', 'dynamic'],
194
- },
195
- valuesType: {
196
- control: 'inline-radio',
197
- options: ['strings', 'objects'],
198
- },
199
- },
200
- } as ComponentMeta<typeof SelectWithCustomProps>;
201
-
202
- const Template: ComponentStory<typeof SelectWithCustomProps> = (args) => (
203
- <SelectWithCustomProps {...args} />
204
- );
205
-
206
- export const Default = Template.bind({});
207
-
208
- Default.args = {
209
- label: 'Dropdown',
210
- defaultOptionLabel: 'Default Option',
211
- noMatchesLabel: 'No matches',
212
- border: undefined,
213
- isInvalid: false,
214
- errorMessage: 'Error Text',
215
- errorPosition: 'bottom',
216
- hasFloatingLabel: true,
217
- hasRequiredLabel: true,
218
- isDisabled: false,
219
- isRequired: false,
220
- isClearable: false,
221
- isLoading: false,
222
- debounceTime: 400,
223
- // custom options
224
- shouldUseReactNodes: false,
225
- valuesType: 'strings',
226
- optionsMode: 'normal',
227
- shouldUsePopper: false,
228
- shouldRenderInBody: false,
229
- shouldHideOnScroll: false,
230
- shouldUseCustomIsDisabledFunction: false,
231
- shouldRenderSearchInputInList: false,
232
- shouldScrollToList: true,
233
- canBeFlipped: false,
234
- scrollParent: 'document',
235
- };
1
+ import { ReactNode, useEffect, useState } from 'react';
2
+ import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';
3
+ import { ComponentMeta, ComponentStory } from '@storybook/react';
4
+ import { Select, ISelectProps } from './Select';
5
+
6
+ interface ObjectValue {
7
+ name: string;
8
+ age: number;
9
+ isDisabled?: boolean;
10
+ }
11
+
12
+ const inlineStyles = [undefined, 'left', 'right', 'middle'];
13
+ const borders: Array<ISelectProps<any>['border']> = [undefined, 'left', 'top', 'right', 'bottom'];
14
+ const errorPositions: Array<ISelectProps<any>['errorPosition']> = ['bottom', 'top'];
15
+
16
+ const genLetters = (qnt = 1): string =>
17
+ Math.random()
18
+ .toString(36)
19
+ .replace(/[^a-z]+/g, '')
20
+ .substr(0, qnt);
21
+
22
+ const convertObjectToString = (v: ObjectValue): string => v.name;
23
+
24
+ const convertObjectToId = (v: ObjectValue): string => `${v.name}${v.age}`;
25
+
26
+ const convertObjectToReactNode = (v: ObjectValue, isDisabled: boolean): ReactNode => (
27
+ <span style={{ color: isDisabled ? 'red' : undefined }}>
28
+ <i>{v.name}</i>, {v.age}
29
+ </span>
30
+ );
31
+
32
+ const convertStringToReactNode = (v: string): ReactNode => <i>{v}</i>;
33
+
34
+ const isOptionDisabled = (option: string) => option.startsWith('Опция');
35
+ const isObjectOptionDisabled = (option: ObjectValue) => option.age > 30;
36
+
37
+ const stringOptions = [
38
+ 'Опция 1',
39
+ 'Опция 11',
40
+ 'Еще одна опция',
41
+ 'Еще выбор',
42
+ 'Очень длинная опция вот такой текст',
43
+ '1',
44
+ '2',
45
+ '3',
46
+ '4',
47
+ ];
48
+
49
+ const objectOptions: ObjectValue[] = [
50
+ { name: 'Ivan', age: 34 },
51
+ { name: 'Ivan', age: 42 },
52
+ { name: 'Konstantin', age: 11 },
53
+ { name: 'Mikhail', age: 24 },
54
+ { name: 'Maria', age: 45, isDisabled: true },
55
+ { name: 'Elena', age: 14 },
56
+ { name: 'Artem', age: 23 },
57
+ ];
58
+
59
+ // Максимум не включается, минимум включается
60
+ const getRandomInt = (min: number, max: number) =>
61
+ Math.floor(Math.random() * (Math.floor(max) - Math.ceil(min))) + Math.ceil(min);
62
+
63
+ interface ISelectWithCustomProps<T> extends ISelectProps<T> {
64
+ valuesType: 'strings' | 'objects';
65
+ shouldUseReactNodes?: boolean;
66
+ shouldUsePopper?: boolean;
67
+ shouldRenderInBody?: boolean;
68
+ shouldHideOnScroll?: boolean;
69
+ shouldUseCustomIsDisabledFunction?: boolean;
70
+ shouldRenderSearchInputInList?: boolean;
71
+ canBeFlipped?: boolean;
72
+ scrollParent?: 'document' | 'auto';
73
+ }
74
+
75
+ function SelectWithCustomProps<T>({
76
+ valuesType,
77
+ optionsMode,
78
+ shouldUseReactNodes,
79
+ shouldUsePopper,
80
+ shouldRenderInBody,
81
+ shouldHideOnScroll,
82
+ shouldUseCustomIsDisabledFunction,
83
+ shouldRenderSearchInputInList,
84
+ canBeFlipped,
85
+ scrollParent,
86
+ noMatchesLabel,
87
+ ...rest
88
+ }: ISelectWithCustomProps<T>) {
89
+ const [stringValue, setStringValue] = useState<string>();
90
+ const stringHandler = (newValue?: string) => {
91
+ console.log('change');
92
+ setStringValue(newValue);
93
+ };
94
+
95
+ const [objectValue, setObjectValue] = useState<ObjectValue>();
96
+ const objectHandler = (newValue?: ObjectValue) => {
97
+ console.log('change');
98
+ setObjectValue(newValue);
99
+ };
100
+
101
+ const selectValuesType = valuesType;
102
+ const shouldRenderAsReactNodes = shouldUseReactNodes;
103
+
104
+ const getOptions = async (): Promise<Array<string | ObjectValue>> =>
105
+ new Promise((resolve) =>
106
+ setTimeout(() => {
107
+ resolve(
108
+ [...Array(10)].map((_) => {
109
+ if (selectValuesType === 'strings') {
110
+ return genLetters(getRandomInt(3, 10));
111
+ }
112
+ return {
113
+ name: genLetters(getRandomInt(3, 10)),
114
+ age: getRandomInt(10, 70),
115
+ } as ObjectValue;
116
+ }),
117
+ );
118
+ }, 1000),
119
+ );
120
+
121
+ const [dynamicOptions, setDynamicOptions] = useState<Array<string | ObjectValue>>([]);
122
+
123
+ const handleOpen = () => {
124
+ console.log('isOpen');
125
+ };
126
+
127
+ const handleBlur = () => {
128
+ console.log('blur');
129
+ };
130
+
131
+ useEffect(() => {
132
+ const api = async () => {
133
+ setDynamicOptions(await getOptions());
134
+ };
135
+
136
+ api();
137
+ }, [selectValuesType]);
138
+
139
+ const props =
140
+ selectValuesType === 'strings'
141
+ ? {
142
+ onChange: stringHandler,
143
+ value: stringValue,
144
+ options: optionsMode === 'dynamic' ? dynamicOptions : stringOptions,
145
+ convertValueToReactNode: shouldRenderAsReactNodes ? convertStringToReactNode : undefined,
146
+ isOptionDisabled: shouldUseCustomIsDisabledFunction ? isOptionDisabled : undefined,
147
+ }
148
+ : {
149
+ onChange: objectHandler,
150
+ value: objectValue,
151
+ options: optionsMode === 'dynamic' ? dynamicOptions : objectOptions,
152
+ convertValueToString: convertObjectToString,
153
+ convertValueToId: convertObjectToId,
154
+ convertValueToReactNode: shouldRenderAsReactNodes ? convertObjectToReactNode : undefined,
155
+ isOptionDisabled: shouldUseCustomIsDisabledFunction ? isObjectOptionDisabled : undefined,
156
+ };
157
+
158
+ return (
159
+ <Select
160
+ {...rest}
161
+ {...(props as unknown as ISelectProps<any>)}
162
+ {...(shouldRenderSearchInputInList && {
163
+ searchInput: { shouldRenderInList: true },
164
+ })}
165
+ noMatchesLabel={isStringNotEmpty(noMatchesLabel) ? noMatchesLabel : undefined}
166
+ optionsMode={optionsMode}
167
+ onType={async () => setDynamicOptions(await getOptions())}
168
+ onOpen={handleOpen}
169
+ onBlur={handleBlur}
170
+ dropdownOptions={{
171
+ shouldUsePopper,
172
+ shouldRenderInBody,
173
+ shouldHideOnScroll,
174
+ canBeFlipped,
175
+ scrollParent,
176
+ }}
177
+ />
178
+ );
179
+ }
180
+
181
+ export default {
182
+ title: 'Controls/Select',
183
+ component: SelectWithCustomProps,
184
+ argTypes: {
185
+ debounceTime: {
186
+ control: { type: 'range', min: 0, max: 1000, step: 100 },
187
+ },
188
+ errorPosition: { control: 'inline-radio', options: errorPositions },
189
+ border: { control: 'inline-radio', options: borders },
190
+ inlineStyle: { control: 'select', options: inlineStyles },
191
+ optionsMode: {
192
+ control: 'inline-radio',
193
+ options: ['normal', 'search', 'dynamic'],
194
+ },
195
+ valuesType: {
196
+ control: 'inline-radio',
197
+ options: ['strings', 'objects'],
198
+ },
199
+ },
200
+ } as ComponentMeta<typeof SelectWithCustomProps>;
201
+
202
+ const Template: ComponentStory<typeof SelectWithCustomProps> = (args) => (
203
+ <SelectWithCustomProps {...args} />
204
+ );
205
+
206
+ export const Default = Template.bind({});
207
+
208
+ Default.args = {
209
+ label: 'Dropdown',
210
+ defaultOptionLabel: 'Default Option',
211
+ noMatchesLabel: 'No matches',
212
+ border: undefined,
213
+ isInvalid: false,
214
+ errorMessage: 'Error Text',
215
+ errorPosition: 'bottom',
216
+ hasFloatingLabel: true,
217
+ hasRequiredLabel: true,
218
+ isDisabled: false,
219
+ isRequired: false,
220
+ isClearable: false,
221
+ isLoading: false,
222
+ debounceTime: 400,
223
+ // custom options
224
+ shouldUseReactNodes: false,
225
+ valuesType: 'strings',
226
+ optionsMode: 'normal',
227
+ shouldUsePopper: false,
228
+ shouldRenderInBody: false,
229
+ shouldHideOnScroll: false,
230
+ shouldUseCustomIsDisabledFunction: false,
231
+ shouldRenderSearchInputInList: false,
232
+ shouldScrollToList: true,
233
+ canBeFlipped: false,
234
+ scrollParent: 'document',
235
+ };
@@ -1,2 +1,2 @@
1
- export const DEFAULT_OPTION_INDEX = -2;
2
- export const ALL_OPTION_INDEX = -1;
1
+ export const DEFAULT_OPTION_INDEX = -2;
2
+ export const ALL_OPTION_INDEX = -1;
@@ -1 +1 @@
1
- export type IMultipleSelectValue<Value> = Array<NonNullable<Value>>;
1
+ export type IMultipleSelectValue<Value> = Array<NonNullable<Value>>;
@@ -1,62 +1,62 @@
1
- import { useState } from 'react';
2
- import { ComponentStory } from '@storybook/react';
3
- import { Status } from '../Status';
4
- import { Selector } from './Selector';
5
- import { ISelectorOption } from './types';
6
-
7
- const options: Array<ISelectorOption<string>> = [
8
- {
9
- label: 'Label 1',
10
- value: '1',
11
- icon: 'eye',
12
- },
13
- {
14
- label: 'My label 2',
15
- value: '2',
16
- },
17
- {
18
- label: (
19
- <>
20
- This is Label 3{' '}
21
- <Status size="xs" color="teal">
22
- P
23
- </Status>
24
- </>
25
- ),
26
- value: '3',
27
- },
28
- {
29
- label: 'This is disabled',
30
- value: '4',
31
- isDisabled: true,
32
- },
33
- ];
34
-
35
- export default {
36
- title: 'Controls/Selector',
37
- component: Selector,
38
- };
39
-
40
- const Template: ComponentStory<typeof Selector> = (args) => {
41
- const [value, setValue] = useState(options[0].value);
42
- return <Selector {...args} value={value} options={options} onChange={setValue} />;
43
- };
44
-
45
- export const Default = Template.bind({});
46
-
47
- Default.args = {
48
- size: 'l',
49
- iconPosition: 'left',
50
- hasSameOptionsWidth: true,
51
- isDisabled: false,
52
- isInvalid: false,
53
- isRequired: false,
54
- };
55
-
56
- Default.argTypes = {};
57
-
58
- Default.parameters = {
59
- controls: {
60
- exclude: ['options', 'value', 'testId', 'onChange'],
61
- },
62
- };
1
+ import { useState } from 'react';
2
+ import { ComponentStory } from '@storybook/react';
3
+ import { Status } from '../Status';
4
+ import { Selector } from './Selector';
5
+ import { ISelectorOption } from './types';
6
+
7
+ const options: Array<ISelectorOption<string>> = [
8
+ {
9
+ label: 'Label 1',
10
+ value: '1',
11
+ icon: 'eye',
12
+ },
13
+ {
14
+ label: 'My label 2',
15
+ value: '2',
16
+ },
17
+ {
18
+ label: (
19
+ <>
20
+ This is Label 3{' '}
21
+ <Status size="xs" color="teal">
22
+ P
23
+ </Status>
24
+ </>
25
+ ),
26
+ value: '3',
27
+ },
28
+ {
29
+ label: 'This is disabled',
30
+ value: '4',
31
+ isDisabled: true,
32
+ },
33
+ ];
34
+
35
+ export default {
36
+ title: 'Controls/Selector',
37
+ component: Selector,
38
+ };
39
+
40
+ const Template: ComponentStory<typeof Selector> = (args) => {
41
+ const [value, setValue] = useState(options[0].value);
42
+ return <Selector {...args} value={value} options={options} onChange={setValue} />;
43
+ };
44
+
45
+ export const Default = Template.bind({});
46
+
47
+ Default.args = {
48
+ size: 'l',
49
+ iconPosition: 'left',
50
+ hasSameOptionsWidth: true,
51
+ isDisabled: false,
52
+ isInvalid: false,
53
+ isRequired: false,
54
+ };
55
+
56
+ Default.argTypes = {};
57
+
58
+ Default.parameters = {
59
+ controls: {
60
+ exclude: ['options', 'value', 'testId', 'onChange'],
61
+ },
62
+ };