@true-engineering/true-react-common-ui-kit 4.0.0-alpha44 → 4.0.0-alpha45
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.
- package/dist/components/ControlWrapper/ControlWrapper.d.ts +2 -2
- package/dist/components/ControlWrapper/constants.d.ts +1 -0
- package/dist/components/ControlWrapper/index.d.ts +1 -0
- package/dist/components/ControlWrapper/types.d.ts +2 -0
- package/dist/components/index.d.ts +0 -1
- package/dist/helpers/misc.d.ts +1 -0
- package/dist/true-react-common-ui-kit.js +169 -259
- package/dist/true-react-common-ui-kit.js.map +1 -1
- package/dist/true-react-common-ui-kit.umd.cjs +169 -259
- package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
- package/package.json +3 -6
- package/src/components/AccountInfo/AccountInfo.stories.tsx +19 -27
- package/src/components/AddButton/AddButton.stories.tsx +14 -17
- package/src/components/Button/Button.stories.tsx +7 -24
- package/src/components/Checkbox/Checkbox.stories.tsx +24 -26
- package/src/components/CloseButton/CloseButton.stories.tsx +5 -6
- package/src/components/Colors/Colors.stories.tsx +63 -3
- package/src/components/ControlWrapper/ControlWrapper.stories.tsx +43 -38
- package/src/components/ControlWrapper/ControlWrapper.tsx +2 -11
- package/src/components/ControlWrapper/constants.ts +11 -0
- package/src/components/ControlWrapper/index.ts +1 -0
- package/src/components/ControlWrapper/types.ts +3 -0
- package/src/components/DateInput/DateInput.stories.tsx +13 -30
- package/src/components/DatePicker/DatePicker.stories.tsx +15 -52
- package/src/components/Description/Description.stories.tsx +11 -16
- package/src/components/FileInput/FileInput.stories.tsx +59 -63
- package/src/components/FileItem/FileItem.stories.tsx +46 -45
- package/src/components/FiltersPane/FiltersPane.stories.tsx +27 -30
- package/src/components/Flag/Flag.stories.tsx +15 -20
- package/src/components/FlexibleTable/FlexibleTable.stories.tsx +47 -50
- package/src/components/FloatDocActions/FloatDocActions.stories.tsx +18 -24
- package/src/components/Icon/Icon.stories.tsx +9 -5
- package/src/components/IconButton/IconButton.stories.tsx +7 -11
- package/src/components/IncrementInput/IncrementInput.stories.tsx +25 -25
- package/src/components/Input/Input.stories.tsx +35 -61
- package/src/components/List/List.stories.tsx +22 -17
- package/src/components/List/List.styles.ts +2 -1
- package/src/components/Modal/Modal.stories.tsx +50 -59
- package/src/components/MoreMenu/MoreMenu.stories.tsx +24 -15
- package/src/components/MultiSelect/MultiSelect.stories.tsx +23 -20
- package/src/components/NewMoreMenu/NewMoreMenu.stories.tsx +42 -40
- package/src/components/Notification/Notification.stories.tsx +34 -32
- package/src/components/NumberInput/NumberInput.stories.tsx +27 -27
- package/src/components/PhoneInput/PhoneInput.stories.tsx +28 -54
- package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +5 -11
- package/src/components/RadioButton/RadioButton.stories.tsx +27 -30
- package/src/components/SearchInput/SearchInput.stories.tsx +14 -14
- package/src/components/Select/CustomSelect.stories.tsx +29 -33
- package/src/components/Select/MultiSelect.stories.tsx +40 -45
- package/src/components/Select/Select.stories.tsx +40 -45
- package/src/components/Selector/Selector.stories.tsx +25 -27
- package/src/components/Skeleton/Skeleton.stories.tsx +13 -12
- package/src/components/SmartInput/SmartInput.stories.tsx +23 -23
- package/src/components/Status/Status.stories.tsx +28 -29
- package/src/components/Switch/Switch.stories.tsx +19 -26
- package/src/components/TextArea/TextArea.stories.tsx +31 -34
- package/src/components/TextButton/TextButton.stories.tsx +6 -16
- package/src/components/TextWithInfo/TextWithInfo.stories.tsx +13 -21
- package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +26 -25
- package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +12 -23
- package/src/components/Toaster/Toaster.stories.tsx +16 -14
- package/src/components/Tooltip/Tooltip.stories.tsx +5 -4
- package/src/components/WithMessages/WithMessages.stories.tsx +16 -20
- package/src/components/WithPopup/WithPopup.stories.tsx +27 -26
- package/src/components/WithTooltip/WithTooltip.stories.tsx +28 -28
- package/src/components/index.ts +0 -1
- package/src/helpers/misc.ts +3 -0
- package/dist/components/Colors/Colors.d.ts +0 -2
- package/dist/components/Colors/Colors.styles.d.ts +0 -1
- package/dist/components/Colors/index.d.ts +0 -1
- package/src/components/Colors/Colors.styles.ts +0 -36
- package/src/components/Colors/Colors.tsx +0 -26
- package/src/components/Colors/index.ts +0 -1
|
@@ -1,23 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { excludeStorybookParams } from '../../helpers';
|
|
2
4
|
import { colors } from '../../theme';
|
|
3
|
-
import {
|
|
5
|
+
import { IListItem } from '../List';
|
|
6
|
+
import { INewMoreMenuProps, NewMoreMenu } from './NewMoreMenu';
|
|
4
7
|
|
|
5
|
-
const
|
|
6
|
-
'top',
|
|
7
|
-
'bottom',
|
|
8
|
-
'right',
|
|
9
|
-
'left',
|
|
10
|
-
'top-start',
|
|
11
|
-
'top-end',
|
|
12
|
-
'bottom-start',
|
|
13
|
-
'bottom-end',
|
|
14
|
-
'right-start',
|
|
15
|
-
'right-end',
|
|
16
|
-
'left-start',
|
|
17
|
-
'left-end',
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
const menuItems = [
|
|
8
|
+
const menuItems: IListItem[] = [
|
|
21
9
|
{ item: 'Печатать билет', onClick: console.log },
|
|
22
10
|
{ item: 'Выписать', onClick: console.log },
|
|
23
11
|
{ item: 'Аннулировать', onClick: console.log, shouldDrawSpacerBelow: true },
|
|
@@ -31,15 +19,22 @@ const menuItems = [
|
|
|
31
19
|
},
|
|
32
20
|
];
|
|
33
21
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
22
|
+
const placements = [
|
|
23
|
+
'top',
|
|
24
|
+
'bottom',
|
|
25
|
+
'right',
|
|
26
|
+
'left',
|
|
27
|
+
'top-start',
|
|
28
|
+
'top-end',
|
|
29
|
+
'bottom-start',
|
|
30
|
+
'bottom-end',
|
|
31
|
+
'right-start',
|
|
32
|
+
'right-end',
|
|
33
|
+
'left-start',
|
|
34
|
+
'left-end',
|
|
35
|
+
];
|
|
41
36
|
|
|
42
|
-
const
|
|
37
|
+
const Story: FC<INewMoreMenuProps> = (args) => (
|
|
43
38
|
<div
|
|
44
39
|
style={{
|
|
45
40
|
display: 'flex',
|
|
@@ -56,19 +51,26 @@ const Template: ComponentStory<typeof NewMoreMenu> = (args) => (
|
|
|
56
51
|
</div>
|
|
57
52
|
);
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
54
|
+
const meta: Meta<typeof Story> = {
|
|
55
|
+
title: 'Data Display/NewMoreMenu',
|
|
56
|
+
component: Story,
|
|
57
|
+
args: {
|
|
58
|
+
canBeFlipped: false,
|
|
59
|
+
isDisabled: false,
|
|
60
|
+
hasDefaultStateBackground: true,
|
|
61
|
+
placement: 'bottom-end',
|
|
62
|
+
shouldRenderInBody: false,
|
|
63
|
+
shouldHideOnScroll: false,
|
|
64
|
+
},
|
|
65
|
+
argTypes: {
|
|
66
|
+
placement: { control: 'select', options: placements },
|
|
67
|
+
},
|
|
68
|
+
parameters: {
|
|
69
|
+
controls: {
|
|
70
|
+
exclude: excludeStorybookParams(['items', 'middlewares']),
|
|
71
|
+
},
|
|
73
72
|
},
|
|
74
73
|
};
|
|
74
|
+
|
|
75
|
+
export default meta;
|
|
76
|
+
export const Default = {};
|
|
@@ -1,50 +1,52 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { excludeStorybookParams } from '../../helpers';
|
|
2
4
|
import { iconsMap } from '../Icon';
|
|
3
5
|
import { INotificationProps, Notification } from './Notification';
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const lorem = 'Lorem ipsum dolor, sit amet consectetur adipisicing';
|
|
8
|
-
|
|
9
|
-
interface IStory extends INotificationProps {
|
|
7
|
+
interface INotificationCustomProps extends INotificationProps {
|
|
10
8
|
shouldUseChildrenInstead: boolean;
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
const Story: FC<INotificationCustomProps> = ({
|
|
12
|
+
shouldUseChildrenInstead,
|
|
13
|
+
title,
|
|
14
|
+
text,
|
|
15
|
+
...args
|
|
16
|
+
}) => (
|
|
17
|
+
<Notification
|
|
18
|
+
{...args}
|
|
19
|
+
title={!shouldUseChildrenInstead ? title : undefined}
|
|
20
|
+
text={!shouldUseChildrenInstead ? text : undefined}
|
|
21
|
+
>
|
|
22
|
+
{shouldUseChildrenInstead ? (
|
|
23
|
+
<div>
|
|
24
|
+
Some childrens with <a href="google.com">tags</a>
|
|
25
|
+
</div>
|
|
26
|
+
) : undefined}
|
|
27
|
+
</Notification>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const meta: Meta<typeof Story> = {
|
|
14
31
|
title: 'Data Display/Notification',
|
|
15
|
-
component:
|
|
32
|
+
component: Story,
|
|
16
33
|
args: {
|
|
17
34
|
title: 'Notification title',
|
|
18
|
-
text:
|
|
35
|
+
text: 'Lorem ipsum dolor, sit amet consectetur adipisicing',
|
|
19
36
|
size: 's',
|
|
20
37
|
type: 'info',
|
|
21
38
|
isFullWidth: false,
|
|
22
39
|
shouldUseChildrenInstead: false,
|
|
23
40
|
},
|
|
24
41
|
argTypes: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
icon: { options: [undefined, ...Object.keys(iconsMap)], control: 'select' },
|
|
43
|
+
},
|
|
44
|
+
parameters: {
|
|
45
|
+
controls: {
|
|
46
|
+
exclude: excludeStorybookParams(['children']),
|
|
30
47
|
},
|
|
31
48
|
},
|
|
32
|
-
} as Meta<IStory>;
|
|
33
|
-
|
|
34
|
-
export const Default: Story<IStory> = ({ title, text, shouldUseChildrenInstead, ...args }) => {
|
|
35
|
-
const children = (
|
|
36
|
-
<div>
|
|
37
|
-
Some childrens with <a href="google.com">tags</a>
|
|
38
|
-
</div>
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<Notification
|
|
43
|
-
{...args}
|
|
44
|
-
title={!shouldUseChildrenInstead ? title : undefined}
|
|
45
|
-
text={!shouldUseChildrenInstead ? text : undefined}
|
|
46
|
-
>
|
|
47
|
-
{shouldUseChildrenInstead ? children : undefined}
|
|
48
|
-
</Notification>
|
|
49
|
-
);
|
|
50
49
|
};
|
|
50
|
+
|
|
51
|
+
export default meta;
|
|
52
|
+
export const Default = {};
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { NumberInput } from './NumberInput';
|
|
1
|
+
import { FC, useState } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { INumberInputProps, NumberInput } from './NumberInput';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
title: 'Inputs/NumberInput',
|
|
7
|
-
component: NumberInput,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template: ComponentStory<typeof NumberInput> = (args) => {
|
|
5
|
+
const Story: FC<INumberInputProps> = (args) => {
|
|
11
6
|
const [value, setValue] = useState<number>();
|
|
12
7
|
return (
|
|
13
8
|
<div style={{ width: 300 }}>
|
|
@@ -16,22 +11,27 @@ const Template: ComponentStory<typeof NumberInput> = (args) => {
|
|
|
16
11
|
);
|
|
17
12
|
};
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
const meta: Meta<typeof Story> = {
|
|
15
|
+
title: 'Inputs/NumberInput',
|
|
16
|
+
component: Story,
|
|
17
|
+
args: {
|
|
18
|
+
min: 0,
|
|
19
|
+
max: 9999,
|
|
20
|
+
precision: 3,
|
|
21
|
+
intPartPrecision: 7,
|
|
22
|
+
canBeFloat: false,
|
|
23
|
+
canBeNegative: false,
|
|
24
|
+
label: 'Label',
|
|
25
|
+
placeholder: 'Placeholder',
|
|
26
|
+
infoMessage: 'Message Info',
|
|
27
|
+
units: 'RUB',
|
|
28
|
+
isInvalid: false,
|
|
29
|
+
errorMessage: 'Error Text',
|
|
30
|
+
isDisabled: false,
|
|
31
|
+
isRequired: false,
|
|
32
|
+
isReadonly: false,
|
|
33
|
+
},
|
|
37
34
|
};
|
|
35
|
+
|
|
36
|
+
export default meta;
|
|
37
|
+
export const Default = {};
|
|
@@ -1,67 +1,41 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { FC, useState } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { GROUP_PLACEMENTS } from '../ControlWrapper';
|
|
4
4
|
import { iconsMap } from '../Icon';
|
|
5
|
-
import { PhoneInput } from './PhoneInput';
|
|
5
|
+
import { IPhoneInputProps, PhoneInput } from './PhoneInput';
|
|
6
6
|
import { IPhoneValue } from './types';
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const groupPlacements = [undefined, 'left', 'right', 'middle'];
|
|
10
|
-
const borders = [undefined, 'left', 'top', 'right', 'bottom'];
|
|
11
|
-
const errorPositions = ['bottom', 'top'];
|
|
12
|
-
const countryCodes = phoneInfo.map((info) => info.countryCode);
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
title: 'Inputs/PhoneInput',
|
|
16
|
-
component: PhoneInput,
|
|
17
|
-
argTypes: {
|
|
18
|
-
icon: { control: 'select', options: icons },
|
|
19
|
-
errorPosition: { control: 'inline-radio', options: errorPositions },
|
|
20
|
-
border: { control: 'inline-radio', options: borders },
|
|
21
|
-
groupPlacement: { control: 'select', options: groupPlacements },
|
|
22
|
-
defaultCountryCode: { control: 'select', options: countryCodes },
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const Template: ComponentStory<typeof PhoneInput> = (args) => {
|
|
8
|
+
const Story: FC<IPhoneInputProps> = (args) => {
|
|
27
9
|
const [value, setValue] = useState<IPhoneValue>({
|
|
28
10
|
dialCode: '7',
|
|
29
11
|
phoneNumber: '9134567890',
|
|
30
12
|
countryCode: 'RU',
|
|
31
13
|
});
|
|
32
|
-
|
|
33
14
|
return <PhoneInput {...args} value={value} onChange={setValue} />;
|
|
34
15
|
};
|
|
35
16
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'testId',
|
|
57
|
-
'data',
|
|
58
|
-
'tabIndex',
|
|
59
|
-
'onChange',
|
|
60
|
-
'onFocus',
|
|
61
|
-
'onBlur',
|
|
62
|
-
'onPaste',
|
|
63
|
-
'onKeyDown',
|
|
64
|
-
'onIconClick',
|
|
65
|
-
],
|
|
17
|
+
const meta: Meta<typeof Story> = {
|
|
18
|
+
title: 'Inputs/PhoneInput',
|
|
19
|
+
component: Story,
|
|
20
|
+
args: {
|
|
21
|
+
label: 'Label',
|
|
22
|
+
infoMessage: 'Message Info',
|
|
23
|
+
icon: undefined,
|
|
24
|
+
isInvalid: false,
|
|
25
|
+
errorMessage: 'Error Text',
|
|
26
|
+
isActive: false,
|
|
27
|
+
isDisabled: false,
|
|
28
|
+
isRequired: false,
|
|
29
|
+
isReadonly: false,
|
|
30
|
+
isClearable: false,
|
|
31
|
+
isLoading: false,
|
|
32
|
+
groupPlacement: undefined,
|
|
33
|
+
},
|
|
34
|
+
argTypes: {
|
|
35
|
+
icon: { control: 'select', options: [undefined, ...Object.keys(iconsMap)] },
|
|
36
|
+
groupPlacement: { options: [undefined, ...GROUP_PLACEMENTS], control: 'select' },
|
|
66
37
|
},
|
|
67
38
|
};
|
|
39
|
+
|
|
40
|
+
export default meta;
|
|
41
|
+
export const Default = {};
|
package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type Meta } from '@storybook/react';
|
|
2
2
|
import { PhoneInputCountryList } from './PhoneInputCountryList';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const meta: Meta<typeof PhoneInputCountryList> = {
|
|
5
5
|
title: 'Inputs/PhoneInput/PhoneInputCountryList',
|
|
6
6
|
component: PhoneInputCountryList,
|
|
7
7
|
args: {
|
|
@@ -9,13 +9,7 @@ export default {
|
|
|
9
9
|
placeholder: 'Поиск',
|
|
10
10
|
noMatchesLabel: 'Ничего не найдено',
|
|
11
11
|
},
|
|
12
|
-
|
|
13
|
-
controls: {
|
|
14
|
-
exclude: ['data', 'tweakStyles', 'testId'],
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
} as ComponentMeta<typeof PhoneInputCountryList>;
|
|
12
|
+
};
|
|
18
13
|
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
);
|
|
14
|
+
export default meta;
|
|
15
|
+
export const Default = {};
|
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { FC, useState } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { excludeStorybookParams } from '../../helpers';
|
|
3
4
|
import { IExtendableProps } from '../../types';
|
|
4
|
-
import { RadioButton } from './RadioButton';
|
|
5
|
+
import { IRadioButtonProps, RadioButton } from './RadioButton';
|
|
5
6
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
title: 'Controls/RadioButton',
|
|
10
|
-
component: RadioButton,
|
|
11
|
-
};
|
|
7
|
+
const options = ['one', 'two', 'three'];
|
|
8
|
+
const SIZES = [undefined, 'micro'] as const;
|
|
12
9
|
|
|
13
10
|
declare module './types' {
|
|
14
11
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
15
|
-
export interface IRadioButtonSizes extends IExtendableProps<typeof
|
|
12
|
+
export interface IRadioButtonSizes extends IExtendableProps<typeof SIZES> {}
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const Template: ComponentStory<typeof RadioButton> = (args) => {
|
|
15
|
+
const Story: FC<IRadioButtonProps<string>> = (args) => {
|
|
21
16
|
const [activeIdx, setActiveIdx] = useState(0);
|
|
22
17
|
|
|
23
18
|
return (
|
|
@@ -38,22 +33,24 @@ const Template: ComponentStory<typeof RadioButton> = (args) => {
|
|
|
38
33
|
);
|
|
39
34
|
};
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
exclude: ['data', 'value', 'groupName', 'isChecked', 'onChange'],
|
|
36
|
+
const meta: Meta<typeof Story> = {
|
|
37
|
+
title: 'Controls/RadioButton',
|
|
38
|
+
component: Story,
|
|
39
|
+
args: {
|
|
40
|
+
children: 'Label',
|
|
41
|
+
size: undefined,
|
|
42
|
+
isInvalid: false,
|
|
43
|
+
isDisabled: false,
|
|
44
|
+
},
|
|
45
|
+
argTypes: {
|
|
46
|
+
size: { options: [undefined, ...SIZES], control: 'inline-radio' },
|
|
47
|
+
},
|
|
48
|
+
parameters: {
|
|
49
|
+
controls: {
|
|
50
|
+
exclude: excludeStorybookParams(['value', 'groupName', 'isChecked']),
|
|
51
|
+
},
|
|
58
52
|
},
|
|
59
53
|
};
|
|
54
|
+
|
|
55
|
+
export default meta;
|
|
56
|
+
export const Default = {};
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { SearchInput } from './SearchInput';
|
|
1
|
+
import { FC, useState } from 'react';
|
|
2
|
+
import { type Meta } from '@storybook/react';
|
|
3
|
+
import { ISearchInputProps, SearchInput } from './SearchInput';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
title: 'Inputs/SearchInput',
|
|
7
|
-
component: SearchInput,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const Template: ComponentStory<typeof SearchInput> = (args) => {
|
|
5
|
+
const Story: FC<ISearchInputProps> = (args) => {
|
|
11
6
|
const [value, setValue] = useState('');
|
|
12
7
|
return (
|
|
13
8
|
<div style={{ width: 320 }}>
|
|
@@ -16,9 +11,14 @@ const Template: ComponentStory<typeof SearchInput> = (args) => {
|
|
|
16
11
|
);
|
|
17
12
|
};
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
const meta: Meta<typeof Story> = {
|
|
15
|
+
title: 'Inputs/SearchInput',
|
|
16
|
+
component: Story,
|
|
17
|
+
args: {
|
|
18
|
+
placeholder: 'Поиск',
|
|
19
|
+
isAutoSized: false,
|
|
20
|
+
},
|
|
24
21
|
};
|
|
22
|
+
|
|
23
|
+
export default meta;
|
|
24
|
+
export const Default = {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
1
|
+
import { FC, useState } from 'react';
|
|
2
2
|
import { createUseStyles } from 'react-jss';
|
|
3
3
|
import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';
|
|
4
|
-
import { type
|
|
4
|
+
import { type Meta } from '@storybook/react';
|
|
5
5
|
import { Button, type IButtonStyles } from '../Button';
|
|
6
6
|
import { type IInputStyles, Input } from '../Input';
|
|
7
7
|
import { TextButton } from '../TextButton';
|
|
8
8
|
import { type ISelectProps, Select } from './Select';
|
|
9
9
|
|
|
10
|
-
interface
|
|
10
|
+
interface ISelectCustomProps<Option> extends ISelectProps<Option> {
|
|
11
11
|
shouldUsePopper?: boolean;
|
|
12
12
|
shouldRenderInBody?: boolean;
|
|
13
13
|
shouldHideOnScroll?: boolean;
|
|
@@ -136,15 +136,15 @@ function CustomListFooter({ onReset, onClear }: ICustomListFooterProps) {
|
|
|
136
136
|
);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
const Story: FC<ISelectCustomProps<string>> = ({
|
|
140
140
|
noMatchesLabel,
|
|
141
141
|
shouldUsePopper,
|
|
142
142
|
shouldRenderInBody,
|
|
143
143
|
shouldHideOnScroll,
|
|
144
144
|
canBeFlipped,
|
|
145
145
|
scrollParent,
|
|
146
|
-
...
|
|
147
|
-
}
|
|
146
|
+
...args
|
|
147
|
+
}) => {
|
|
148
148
|
const classes = useSelectStyles();
|
|
149
149
|
const [inputValue, setInputValue] = useState<string>();
|
|
150
150
|
const [options, setOptions] = useState<string[]>([]);
|
|
@@ -185,7 +185,7 @@ function SelectWithCustomProps({
|
|
|
185
185
|
);
|
|
186
186
|
|
|
187
187
|
const props = {
|
|
188
|
-
...
|
|
188
|
+
...args,
|
|
189
189
|
onChange: setInputValue,
|
|
190
190
|
value: inputValue,
|
|
191
191
|
options,
|
|
@@ -214,38 +214,34 @@ function SelectWithCustomProps({
|
|
|
214
214
|
}}
|
|
215
215
|
/>
|
|
216
216
|
);
|
|
217
|
-
}
|
|
217
|
+
};
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
const meta: Meta<typeof Story> = {
|
|
220
220
|
title: 'Controls/Select',
|
|
221
|
-
component:
|
|
221
|
+
component: Story,
|
|
222
|
+
args: {
|
|
223
|
+
label: 'Dropdown',
|
|
224
|
+
noMatchesLabel: 'No matches',
|
|
225
|
+
isInvalid: false,
|
|
226
|
+
errorMessage: '',
|
|
227
|
+
isDisabled: false,
|
|
228
|
+
isRequired: false,
|
|
229
|
+
isClearable: false,
|
|
230
|
+
shouldUsePopper: false,
|
|
231
|
+
shouldRenderInBody: false,
|
|
232
|
+
shouldHideOnScroll: false,
|
|
233
|
+
shouldScrollToList: true,
|
|
234
|
+
canBeFlipped: false,
|
|
235
|
+
scrollParent: 'document',
|
|
236
|
+
size: undefined,
|
|
237
|
+
},
|
|
222
238
|
argTypes: {
|
|
223
239
|
scrollParent: {
|
|
224
240
|
options: ['document', 'auto'],
|
|
225
241
|
control: { type: 'select' },
|
|
226
242
|
},
|
|
227
243
|
},
|
|
228
|
-
} as ComponentMeta<typeof SelectWithCustomProps>;
|
|
229
|
-
|
|
230
|
-
const Template: ComponentStory<typeof SelectWithCustomProps> = (args) => (
|
|
231
|
-
<SelectWithCustomProps {...args} />
|
|
232
|
-
);
|
|
233
|
-
|
|
234
|
-
export const CustomSelect = Template.bind({});
|
|
235
|
-
|
|
236
|
-
CustomSelect.args = {
|
|
237
|
-
label: 'Dropdown',
|
|
238
|
-
noMatchesLabel: 'No matches',
|
|
239
|
-
isInvalid: false,
|
|
240
|
-
errorMessage: '',
|
|
241
|
-
isDisabled: false,
|
|
242
|
-
isRequired: false,
|
|
243
|
-
isClearable: false,
|
|
244
|
-
shouldUsePopper: false,
|
|
245
|
-
shouldRenderInBody: false,
|
|
246
|
-
shouldHideOnScroll: false,
|
|
247
|
-
shouldScrollToList: true,
|
|
248
|
-
canBeFlipped: false,
|
|
249
|
-
scrollParent: 'document',
|
|
250
|
-
size: undefined,
|
|
251
244
|
};
|
|
245
|
+
|
|
246
|
+
export default meta;
|
|
247
|
+
export const CustomSelect = {};
|