@salutejs/plasma-new-hope 0.156.0-canary.1421.11068880918.0 → 0.156.0-canary.1421.11096156509.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
- package/cjs/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
- package/cjs/components/DatePicker/utils/{setInitValue.js → setInitialValue.js} +3 -3
- package/cjs/components/DatePicker/utils/setInitialValue.js.map +1 -0
- package/cjs/components/Slider/components/Double/Double.js +4 -4
- package/cjs/components/Slider/components/Double/Double.js.map +1 -1
- package/cjs/components/Slider/components/Single/Single.js +5 -5
- package/cjs/components/Slider/components/Single/Single.js.map +1 -1
- package/cjs/components/Slider/utils/index.js +2 -2
- package/cjs/components/Slider/utils/index.js.map +1 -1
- package/cjs/hooks/{useForm.js → useFormState.js} +7 -7
- package/cjs/hooks/useFormState.js.map +1 -0
- package/cjs/index.js +2 -2
- package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/{styled-components/cjs/components/DatePicker/utils/setInitValue.js → emotion/cjs/components/DatePicker/utils/setInitialValue.js} +2 -2
- package/emotion/cjs/components/Slider/components/Double/Double.js +4 -4
- package/emotion/cjs/components/Slider/components/Single/Single.js +5 -5
- package/emotion/cjs/components/Slider/utils/index.js +2 -2
- package/emotion/cjs/hooks/index.js +3 -3
- package/{styled-components/cjs/hooks/useForm.js → emotion/cjs/hooks/useFormState.js} +6 -6
- package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/{styled-components/es/components/DatePicker/utils/setInitValue.js → emotion/es/components/DatePicker/utils/setInitialValue.js} +1 -1
- package/emotion/es/components/Slider/components/Double/Double.js +5 -5
- package/emotion/es/components/Slider/components/Single/Single.js +6 -6
- package/emotion/es/components/Slider/utils/index.js +1 -1
- package/emotion/es/hooks/index.js +1 -1
- package/emotion/es/hooks/{useForm.js → useFormState.js} +5 -5
- package/es/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
- package/es/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
- package/es/components/DatePicker/utils/setInitialValue.js +8 -0
- package/es/components/DatePicker/utils/setInitialValue.js.map +1 -0
- package/es/components/Slider/components/Double/Double.js +5 -5
- package/es/components/Slider/components/Double/Double.js.map +1 -1
- package/es/components/Slider/components/Single/Single.js +6 -6
- package/es/components/Slider/components/Single/Single.js.map +1 -1
- package/es/components/Slider/utils/index.js +2 -2
- package/es/components/Slider/utils/index.js.map +1 -1
- package/es/hooks/{useForm.js → useFormState.js} +7 -7
- package/es/hooks/useFormState.js.map +1 -0
- package/es/index.js +1 -1
- package/package.json +2 -3
- package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/{emotion/cjs/components/DatePicker/utils/setInitValue.js → styled-components/cjs/components/DatePicker/utils/setInitialValue.js} +2 -2
- package/styled-components/cjs/components/Slider/components/Double/Double.js +4 -4
- package/styled-components/cjs/components/Slider/components/Single/Single.js +5 -5
- package/styled-components/cjs/components/Slider/utils/index.js +2 -2
- package/styled-components/cjs/hooks/index.js +3 -3
- package/{emotion/cjs/hooks/useForm.js → styled-components/cjs/hooks/useFormState.js} +6 -6
- package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +5 -5
- package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +6 -6
- package/{emotion/es/components/DatePicker/utils/setInitValue.js → styled-components/es/components/DatePicker/utils/setInitialValue.js} +1 -1
- package/styled-components/es/components/Slider/components/Double/Double.js +5 -5
- package/styled-components/es/components/Slider/components/Single/Single.js +6 -6
- package/styled-components/es/components/Slider/utils/index.js +1 -1
- package/styled-components/es/hooks/index.js +1 -1
- package/styled-components/es/hooks/{useForm.js → useFormState.js} +5 -5
- package/types/components/DatePicker/utils/setInitialValue.d.ts +2 -0
- package/types/components/DatePicker/utils/setInitialValue.d.ts.map +1 -0
- package/types/components/Slider/utils/index.d.ts +1 -1
- package/types/components/Slider/utils/index.d.ts.map +1 -1
- package/types/hooks/index.d.ts +1 -1
- package/types/hooks/index.d.ts.map +1 -1
- package/types/hooks/{useForm.d.ts → useFormState.d.ts} +2 -2
- package/types/hooks/useFormState.d.ts.map +1 -0
- package/cjs/components/DatePicker/utils/setInitValue.js.map +0 -1
- package/cjs/hooks/useForm.js.map +0 -1
- package/emotion/cjs/examples/plasma_b2c/components/Form/Form.stories.tsx +0 -193
- package/emotion/cjs/examples/plasma_web/components/Form/Form.stories.tsx +0 -193
- package/emotion/es/examples/plasma_b2c/components/Form/Form.stories.tsx +0 -193
- package/emotion/es/examples/plasma_web/components/Form/Form.stories.tsx +0 -193
- package/es/components/DatePicker/utils/setInitValue.js +0 -8
- package/es/components/DatePicker/utils/setInitValue.js.map +0 -1
- package/es/hooks/useForm.js.map +0 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Form/Form.stories.tsx +0 -193
- package/styled-components/cjs/examples/plasma_web/components/Form/Form.stories.tsx +0 -193
- package/styled-components/es/examples/plasma_b2c/components/Form/Form.stories.tsx +0 -193
- package/styled-components/es/examples/plasma_web/components/Form/Form.stories.tsx +0 -193
- package/types/components/DatePicker/utils/setInitValue.d.ts +0 -2
- package/types/components/DatePicker/utils/setInitValue.d.ts.map +0 -1
- package/types/hooks/useForm.d.ts.map +0 -1
@@ -1,193 +0,0 @@
|
|
1
|
-
import { useForm as useReactHookForm, Controller } from 'react-hook-form';
|
2
|
-
import React from 'react';
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
4
|
-
|
5
|
-
import { WithTheme } from '../../../_helpers';
|
6
|
-
import { Button } from '../Button/Button';
|
7
|
-
import { TextField } from '../TextField/TextField';
|
8
|
-
import { TextArea } from '../TextArea/TextArea';
|
9
|
-
import { Checkbox } from '../Checkbox/Checkbox';
|
10
|
-
import { Switch } from '../Switch/Switch';
|
11
|
-
import { Radiobox } from '../Radiobox/Radiobox';
|
12
|
-
import { RadioGroup } from '../../../../components/Radiobox';
|
13
|
-
import { Slider } from '../Slider/Slider';
|
14
|
-
import { useForm } from '../../../../hooks';
|
15
|
-
import { DatePicker, DatePickerRange } from '../DatePicker/DatePicker';
|
16
|
-
|
17
|
-
type StoryDropdownProps = {};
|
18
|
-
|
19
|
-
const langName = 'language';
|
20
|
-
const itemsRadiobox = [
|
21
|
-
{ langName, value: 'c', label: 'C', disabled: false },
|
22
|
-
{ langName, value: 'cpp', label: 'C++', disabled: false },
|
23
|
-
{ langName, value: 'assembly', label: 'Assembly', disabled: false },
|
24
|
-
];
|
25
|
-
|
26
|
-
const PlasmaForm = () => {
|
27
|
-
const onSubmit = (data) => {
|
28
|
-
console.log(data);
|
29
|
-
};
|
30
|
-
|
31
|
-
const { formRef, formData } = useForm(onSubmit, {
|
32
|
-
textfield: 'textfield',
|
33
|
-
textarea: 'textarea',
|
34
|
-
checkbox: 'checkobox',
|
35
|
-
switch: true,
|
36
|
-
radiobox: 'c',
|
37
|
-
slider: 10,
|
38
|
-
sliderd: [10, 20],
|
39
|
-
datepicker: '12.09.2024',
|
40
|
-
datepickerRange: ['09.09.2024', '12.09.2024'],
|
41
|
-
});
|
42
|
-
|
43
|
-
return (
|
44
|
-
<form onSubmit={formData} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }} ref={formRef}>
|
45
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
46
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
47
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
48
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
49
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
50
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
51
|
-
Выберите язык программирования для изучения.
|
52
|
-
</div>
|
53
|
-
{itemsRadiobox.map((item) => (
|
54
|
-
<Radiobox
|
55
|
-
name="radiobox"
|
56
|
-
key={item.value}
|
57
|
-
value={item.value}
|
58
|
-
label={item.label}
|
59
|
-
disabled={item.disabled}
|
60
|
-
/>
|
61
|
-
))}
|
62
|
-
</RadioGroup>
|
63
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
64
|
-
<Slider name="sliderd" label="Slider" type="double" min={0} max={100} />
|
65
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
66
|
-
<DatePickerRange label="DatePicker" name="datepickerRange" />
|
67
|
-
<Button type="submit">Отправить</Button>
|
68
|
-
</form>
|
69
|
-
);
|
70
|
-
};
|
71
|
-
|
72
|
-
const meta: Meta<StoryDropdownProps> = {
|
73
|
-
title: 'plasma_web/Form',
|
74
|
-
decorators: [WithTheme],
|
75
|
-
component: PlasmaForm,
|
76
|
-
};
|
77
|
-
|
78
|
-
export default meta;
|
79
|
-
|
80
|
-
const StoryPlasmaForm = () => {
|
81
|
-
return <PlasmaForm />;
|
82
|
-
};
|
83
|
-
|
84
|
-
export const DefaultPlasmaForm: StoryObj<StoryDropdownProps> = {
|
85
|
-
render: () => <StoryPlasmaForm />,
|
86
|
-
};
|
87
|
-
|
88
|
-
const DefaultForm = () => {
|
89
|
-
const onSubmit = (event) => {
|
90
|
-
event.preventDefault();
|
91
|
-
|
92
|
-
const fData = new FormData(event.target);
|
93
|
-
|
94
|
-
for (const p of fData) {
|
95
|
-
const name = p[0];
|
96
|
-
const value = p[1];
|
97
|
-
|
98
|
-
console.log(name, value);
|
99
|
-
}
|
100
|
-
};
|
101
|
-
return (
|
102
|
-
<form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
103
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
104
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
105
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
106
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
107
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
108
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
109
|
-
Выберите язык программирования для изучения.
|
110
|
-
</div>
|
111
|
-
{itemsRadiobox.map((item) => (
|
112
|
-
<Radiobox
|
113
|
-
name="radiobox"
|
114
|
-
key={item.value}
|
115
|
-
value={item.value}
|
116
|
-
label={item.label}
|
117
|
-
disabled={item.disabled}
|
118
|
-
/>
|
119
|
-
))}
|
120
|
-
</RadioGroup>
|
121
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
122
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
123
|
-
<Button type="submit">Отправить</Button>
|
124
|
-
</form>
|
125
|
-
);
|
126
|
-
};
|
127
|
-
|
128
|
-
const StoryDefaultForm = () => {
|
129
|
-
return <DefaultForm />;
|
130
|
-
};
|
131
|
-
|
132
|
-
export const FormDefault: StoryObj<StoryDropdownProps> = {
|
133
|
-
render: () => <StoryDefaultForm />,
|
134
|
-
};
|
135
|
-
|
136
|
-
const DefaultUseForm = () => {
|
137
|
-
const defaultValues = {
|
138
|
-
textfield: 'John Doe',
|
139
|
-
textarea: 'Default description',
|
140
|
-
checkbox: true,
|
141
|
-
switch: true,
|
142
|
-
radiobox: 'c',
|
143
|
-
slider: 10,
|
144
|
-
sliderdouble: [10, 20],
|
145
|
-
datepicker: null,
|
146
|
-
datepickerrange: null,
|
147
|
-
};
|
148
|
-
const { register, handleSubmit } = useReactHookForm({
|
149
|
-
defaultValues,
|
150
|
-
});
|
151
|
-
const onSubmit = (data) => {
|
152
|
-
console.log(data);
|
153
|
-
};
|
154
|
-
|
155
|
-
const datepicker = register('datepicker');
|
156
|
-
const datepickerrange = register('datepickerrange');
|
157
|
-
|
158
|
-
return (
|
159
|
-
<form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
160
|
-
<TextField {...register('textfield')} placeholder="Textfield" required={false} />
|
161
|
-
<TextArea {...register('textarea')} autoResize placeholder="Textarea" />
|
162
|
-
<Checkbox {...register('checkbox')} label="Checkbox" />
|
163
|
-
<Switch {...register('switch')} label="Switch" labelPosition="after" />
|
164
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
165
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
166
|
-
Выберите язык программирования для изучения.
|
167
|
-
</div>
|
168
|
-
{itemsRadiobox.map((item) => (
|
169
|
-
<Radiobox
|
170
|
-
{...register('radiobox')}
|
171
|
-
key={item.value}
|
172
|
-
value={item.value}
|
173
|
-
label={item.label}
|
174
|
-
disabled={item.disabled}
|
175
|
-
/>
|
176
|
-
))}
|
177
|
-
</RadioGroup>
|
178
|
-
<Slider {...register('slider')} label="Slider" type="single" min={0} max={100} />
|
179
|
-
<Slider {...register('sliderdouble')} label="Slider Double" type="double" min={0} max={100} />
|
180
|
-
<DatePicker name={datepicker.name} onChange={datepicker.onChange} label="DatePicker" />
|
181
|
-
<DatePickerRange name={datepickerrange.name} onChange={datepickerrange.onChange} label="DatePicker" />
|
182
|
-
<Button type="submit">Отправить</Button>
|
183
|
-
</form>
|
184
|
-
);
|
185
|
-
};
|
186
|
-
|
187
|
-
const StoryHookForm = () => {
|
188
|
-
return <DefaultUseForm />;
|
189
|
-
};
|
190
|
-
|
191
|
-
export const UseHookForm: StoryObj<StoryDropdownProps> = {
|
192
|
-
render: () => <StoryHookForm />,
|
193
|
-
};
|
@@ -1,193 +0,0 @@
|
|
1
|
-
import { useForm as useReactHookForm, Controller } from 'react-hook-form';
|
2
|
-
import React from 'react';
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
4
|
-
|
5
|
-
import { WithTheme } from '../../../_helpers';
|
6
|
-
import { Button } from '../Button/Button';
|
7
|
-
import { TextField } from '../TextField/TextField';
|
8
|
-
import { TextArea } from '../TextArea/TextArea';
|
9
|
-
import { Checkbox } from '../Checkbox/Checkbox';
|
10
|
-
import { Switch } from '../Switch/Switch';
|
11
|
-
import { Radiobox } from '../Radiobox/Radiobox';
|
12
|
-
import { RadioGroup } from '../../../../components/Radiobox';
|
13
|
-
import { Slider } from '../Slider/Slider';
|
14
|
-
import { useForm } from '../../../../hooks';
|
15
|
-
import { DatePicker, DatePickerRange } from '../DatePicker/DatePicker';
|
16
|
-
|
17
|
-
type StoryDropdownProps = {};
|
18
|
-
|
19
|
-
const langName = 'language';
|
20
|
-
const itemsRadiobox = [
|
21
|
-
{ langName, value: 'c', label: 'C', disabled: false },
|
22
|
-
{ langName, value: 'cpp', label: 'C++', disabled: false },
|
23
|
-
{ langName, value: 'assembly', label: 'Assembly', disabled: false },
|
24
|
-
];
|
25
|
-
|
26
|
-
const PlasmaForm = () => {
|
27
|
-
const onSubmit = (data) => {
|
28
|
-
console.log(data);
|
29
|
-
};
|
30
|
-
|
31
|
-
const { formRef, formData } = useForm(onSubmit, {
|
32
|
-
textfield: 'textfield',
|
33
|
-
textarea: 'textarea',
|
34
|
-
checkbox: 'checkobox',
|
35
|
-
switch: true,
|
36
|
-
radiobox: 'c',
|
37
|
-
slider: 10,
|
38
|
-
sliderd: [10, 20],
|
39
|
-
datepicker: '12.09.2024',
|
40
|
-
datepickerRange: ['09.09.2024', '12.09.2024'],
|
41
|
-
});
|
42
|
-
|
43
|
-
return (
|
44
|
-
<form onSubmit={formData} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }} ref={formRef}>
|
45
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
46
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
47
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
48
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
49
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
50
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
51
|
-
Выберите язык программирования для изучения.
|
52
|
-
</div>
|
53
|
-
{itemsRadiobox.map((item) => (
|
54
|
-
<Radiobox
|
55
|
-
name="radiobox"
|
56
|
-
key={item.value}
|
57
|
-
value={item.value}
|
58
|
-
label={item.label}
|
59
|
-
disabled={item.disabled}
|
60
|
-
/>
|
61
|
-
))}
|
62
|
-
</RadioGroup>
|
63
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
64
|
-
<Slider name="sliderd" label="Slider" type="double" min={0} max={100} />
|
65
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
66
|
-
<DatePickerRange label="DatePicker" name="datepickerRange" />
|
67
|
-
<Button type="submit">Отправить</Button>
|
68
|
-
</form>
|
69
|
-
);
|
70
|
-
};
|
71
|
-
|
72
|
-
const meta: Meta<StoryDropdownProps> = {
|
73
|
-
title: 'plasma_b2c/Form',
|
74
|
-
decorators: [WithTheme],
|
75
|
-
component: PlasmaForm,
|
76
|
-
};
|
77
|
-
|
78
|
-
export default meta;
|
79
|
-
|
80
|
-
const StoryPlasmaForm = () => {
|
81
|
-
return <PlasmaForm />;
|
82
|
-
};
|
83
|
-
|
84
|
-
export const DefaultPlasmaForm: StoryObj<StoryDropdownProps> = {
|
85
|
-
render: () => <StoryPlasmaForm />,
|
86
|
-
};
|
87
|
-
|
88
|
-
const DefaultForm = () => {
|
89
|
-
const onSubmit = (event) => {
|
90
|
-
event.preventDefault();
|
91
|
-
|
92
|
-
const fData = new FormData(event.target);
|
93
|
-
|
94
|
-
for (const p of fData) {
|
95
|
-
const name = p[0];
|
96
|
-
const value = p[1];
|
97
|
-
|
98
|
-
console.log(name, value);
|
99
|
-
}
|
100
|
-
};
|
101
|
-
return (
|
102
|
-
<form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
103
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
104
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
105
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
106
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
107
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
108
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
109
|
-
Выберите язык программирования для изучения.
|
110
|
-
</div>
|
111
|
-
{itemsRadiobox.map((item) => (
|
112
|
-
<Radiobox
|
113
|
-
name="radiobox"
|
114
|
-
key={item.value}
|
115
|
-
value={item.value}
|
116
|
-
label={item.label}
|
117
|
-
disabled={item.disabled}
|
118
|
-
/>
|
119
|
-
))}
|
120
|
-
</RadioGroup>
|
121
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
122
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
123
|
-
<Button type="submit">Отправить</Button>
|
124
|
-
</form>
|
125
|
-
);
|
126
|
-
};
|
127
|
-
|
128
|
-
const StoryDefaultForm = () => {
|
129
|
-
return <DefaultForm />;
|
130
|
-
};
|
131
|
-
|
132
|
-
export const FormDefault: StoryObj<StoryDropdownProps> = {
|
133
|
-
render: () => <StoryDefaultForm />,
|
134
|
-
};
|
135
|
-
|
136
|
-
const DefaultUseForm = () => {
|
137
|
-
const defaultValues = {
|
138
|
-
textfield: 'John Doe',
|
139
|
-
textarea: 'Default description',
|
140
|
-
checkbox: true,
|
141
|
-
switch: true,
|
142
|
-
radiobox: 'c',
|
143
|
-
slider: 10,
|
144
|
-
sliderdouble: [10, 20],
|
145
|
-
datepicker: null,
|
146
|
-
datepickerrange: null,
|
147
|
-
};
|
148
|
-
const { register, handleSubmit } = useReactHookForm({
|
149
|
-
defaultValues,
|
150
|
-
});
|
151
|
-
const onSubmit = (data) => {
|
152
|
-
console.log(data);
|
153
|
-
};
|
154
|
-
|
155
|
-
const datepicker = register('datepicker');
|
156
|
-
const datepickerrange = register('datepickerrange');
|
157
|
-
|
158
|
-
return (
|
159
|
-
<form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
160
|
-
<TextField {...register('textfield')} placeholder="Textfield" required={false} />
|
161
|
-
<TextArea {...register('textarea')} autoResize placeholder="Textarea" />
|
162
|
-
<Checkbox {...register('checkbox')} label="Checkbox" />
|
163
|
-
<Switch {...register('switch')} label="Switch" labelPosition="after" />
|
164
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
165
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
166
|
-
Выберите язык программирования для изучения.
|
167
|
-
</div>
|
168
|
-
{itemsRadiobox.map((item) => (
|
169
|
-
<Radiobox
|
170
|
-
{...register('radiobox')}
|
171
|
-
key={item.value}
|
172
|
-
value={item.value}
|
173
|
-
label={item.label}
|
174
|
-
disabled={item.disabled}
|
175
|
-
/>
|
176
|
-
))}
|
177
|
-
</RadioGroup>
|
178
|
-
<Slider {...register('slider')} label="Slider" type="single" min={0} max={100} />
|
179
|
-
<Slider {...register('sliderdouble')} label="Slider Double" type="double" min={0} max={100} />
|
180
|
-
<DatePicker name={datepicker.name} onChange={datepicker.onChange} label="DatePicker" />
|
181
|
-
<DatePickerRange name={datepickerrange.name} onChange={datepickerrange.onChange} label="DatePicker" />
|
182
|
-
<Button type="submit">Отправить</Button>
|
183
|
-
</form>
|
184
|
-
);
|
185
|
-
};
|
186
|
-
|
187
|
-
const StoryHookForm = () => {
|
188
|
-
return <DefaultUseForm />;
|
189
|
-
};
|
190
|
-
|
191
|
-
export const UseHookForm: StoryObj<StoryDropdownProps> = {
|
192
|
-
render: () => <StoryHookForm />,
|
193
|
-
};
|
@@ -1,193 +0,0 @@
|
|
1
|
-
import { useForm as useReactHookForm, Controller } from 'react-hook-form';
|
2
|
-
import React from 'react';
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
4
|
-
|
5
|
-
import { WithTheme } from '../../../_helpers';
|
6
|
-
import { Button } from '../Button/Button';
|
7
|
-
import { TextField } from '../TextField/TextField';
|
8
|
-
import { TextArea } from '../TextArea/TextArea';
|
9
|
-
import { Checkbox } from '../Checkbox/Checkbox';
|
10
|
-
import { Switch } from '../Switch/Switch';
|
11
|
-
import { Radiobox } from '../Radiobox/Radiobox';
|
12
|
-
import { RadioGroup } from '../../../../components/Radiobox';
|
13
|
-
import { Slider } from '../Slider/Slider';
|
14
|
-
import { useForm } from '../../../../hooks';
|
15
|
-
import { DatePicker, DatePickerRange } from '../DatePicker/DatePicker';
|
16
|
-
|
17
|
-
type StoryDropdownProps = {};
|
18
|
-
|
19
|
-
const langName = 'language';
|
20
|
-
const itemsRadiobox = [
|
21
|
-
{ langName, value: 'c', label: 'C', disabled: false },
|
22
|
-
{ langName, value: 'cpp', label: 'C++', disabled: false },
|
23
|
-
{ langName, value: 'assembly', label: 'Assembly', disabled: false },
|
24
|
-
];
|
25
|
-
|
26
|
-
const PlasmaForm = () => {
|
27
|
-
const onSubmit = (data) => {
|
28
|
-
console.log(data);
|
29
|
-
};
|
30
|
-
|
31
|
-
const { formRef, formData } = useForm(onSubmit, {
|
32
|
-
textfield: 'textfield',
|
33
|
-
textarea: 'textarea',
|
34
|
-
checkbox: 'checkobox',
|
35
|
-
switch: true,
|
36
|
-
radiobox: 'c',
|
37
|
-
slider: 10,
|
38
|
-
sliderd: [10, 20],
|
39
|
-
datepicker: '12.09.2024',
|
40
|
-
datepickerRange: ['09.09.2024', '12.09.2024'],
|
41
|
-
});
|
42
|
-
|
43
|
-
return (
|
44
|
-
<form onSubmit={formData} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }} ref={formRef}>
|
45
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
46
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
47
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
48
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
49
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
50
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
51
|
-
Выберите язык программирования для изучения.
|
52
|
-
</div>
|
53
|
-
{itemsRadiobox.map((item) => (
|
54
|
-
<Radiobox
|
55
|
-
name="radiobox"
|
56
|
-
key={item.value}
|
57
|
-
value={item.value}
|
58
|
-
label={item.label}
|
59
|
-
disabled={item.disabled}
|
60
|
-
/>
|
61
|
-
))}
|
62
|
-
</RadioGroup>
|
63
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
64
|
-
<Slider name="sliderd" label="Slider" type="double" min={0} max={100} />
|
65
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
66
|
-
<DatePickerRange label="DatePicker" name="datepickerRange" />
|
67
|
-
<Button type="submit">Отправить</Button>
|
68
|
-
</form>
|
69
|
-
);
|
70
|
-
};
|
71
|
-
|
72
|
-
const meta: Meta<StoryDropdownProps> = {
|
73
|
-
title: 'plasma_web/Form',
|
74
|
-
decorators: [WithTheme],
|
75
|
-
component: PlasmaForm,
|
76
|
-
};
|
77
|
-
|
78
|
-
export default meta;
|
79
|
-
|
80
|
-
const StoryPlasmaForm = () => {
|
81
|
-
return <PlasmaForm />;
|
82
|
-
};
|
83
|
-
|
84
|
-
export const DefaultPlasmaForm: StoryObj<StoryDropdownProps> = {
|
85
|
-
render: () => <StoryPlasmaForm />,
|
86
|
-
};
|
87
|
-
|
88
|
-
const DefaultForm = () => {
|
89
|
-
const onSubmit = (event) => {
|
90
|
-
event.preventDefault();
|
91
|
-
|
92
|
-
const fData = new FormData(event.target);
|
93
|
-
|
94
|
-
for (const p of fData) {
|
95
|
-
const name = p[0];
|
96
|
-
const value = p[1];
|
97
|
-
|
98
|
-
console.log(name, value);
|
99
|
-
}
|
100
|
-
};
|
101
|
-
return (
|
102
|
-
<form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
103
|
-
<TextField name="textfield" placeholder="Textfield" required={false} />
|
104
|
-
<TextArea name="textarea" autoResize placeholder="Textarea" />
|
105
|
-
<Checkbox name="checkbox" label="Checkbox" />
|
106
|
-
<Switch name="switch" label="Switch" labelPosition="after" />
|
107
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
108
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
109
|
-
Выберите язык программирования для изучения.
|
110
|
-
</div>
|
111
|
-
{itemsRadiobox.map((item) => (
|
112
|
-
<Radiobox
|
113
|
-
name="radiobox"
|
114
|
-
key={item.value}
|
115
|
-
value={item.value}
|
116
|
-
label={item.label}
|
117
|
-
disabled={item.disabled}
|
118
|
-
/>
|
119
|
-
))}
|
120
|
-
</RadioGroup>
|
121
|
-
<Slider name="slider" label="Slider" type="single" min={0} max={100} />
|
122
|
-
<DatePicker label="DatePicker" name="datepicker" />
|
123
|
-
<Button type="submit">Отправить</Button>
|
124
|
-
</form>
|
125
|
-
);
|
126
|
-
};
|
127
|
-
|
128
|
-
const StoryDefaultForm = () => {
|
129
|
-
return <DefaultForm />;
|
130
|
-
};
|
131
|
-
|
132
|
-
export const FormDefault: StoryObj<StoryDropdownProps> = {
|
133
|
-
render: () => <StoryDefaultForm />,
|
134
|
-
};
|
135
|
-
|
136
|
-
const DefaultUseForm = () => {
|
137
|
-
const defaultValues = {
|
138
|
-
textfield: 'John Doe',
|
139
|
-
textarea: 'Default description',
|
140
|
-
checkbox: true,
|
141
|
-
switch: true,
|
142
|
-
radiobox: 'c',
|
143
|
-
slider: 10,
|
144
|
-
sliderdouble: [10, 20],
|
145
|
-
datepicker: null,
|
146
|
-
datepickerrange: null,
|
147
|
-
};
|
148
|
-
const { register, handleSubmit } = useReactHookForm({
|
149
|
-
defaultValues,
|
150
|
-
});
|
151
|
-
const onSubmit = (data) => {
|
152
|
-
console.log(data);
|
153
|
-
};
|
154
|
-
|
155
|
-
const datepicker = register('datepicker');
|
156
|
-
const datepickerrange = register('datepickerrange');
|
157
|
-
|
158
|
-
return (
|
159
|
-
<form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
|
160
|
-
<TextField {...register('textfield')} placeholder="Textfield" required={false} />
|
161
|
-
<TextArea {...register('textarea')} autoResize placeholder="Textarea" />
|
162
|
-
<Checkbox {...register('checkbox')} label="Checkbox" />
|
163
|
-
<Switch {...register('switch')} label="Switch" labelPosition="after" />
|
164
|
-
<RadioGroup aria-labelledby="radiogroup-title-id">
|
165
|
-
<div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
|
166
|
-
Выберите язык программирования для изучения.
|
167
|
-
</div>
|
168
|
-
{itemsRadiobox.map((item) => (
|
169
|
-
<Radiobox
|
170
|
-
{...register('radiobox')}
|
171
|
-
key={item.value}
|
172
|
-
value={item.value}
|
173
|
-
label={item.label}
|
174
|
-
disabled={item.disabled}
|
175
|
-
/>
|
176
|
-
))}
|
177
|
-
</RadioGroup>
|
178
|
-
<Slider {...register('slider')} label="Slider" type="single" min={0} max={100} />
|
179
|
-
<Slider {...register('sliderdouble')} label="Slider Double" type="double" min={0} max={100} />
|
180
|
-
<DatePicker name={datepicker.name} onChange={datepicker.onChange} label="DatePicker" />
|
181
|
-
<DatePickerRange name={datepickerrange.name} onChange={datepickerrange.onChange} label="DatePicker" />
|
182
|
-
<Button type="submit">Отправить</Button>
|
183
|
-
</form>
|
184
|
-
);
|
185
|
-
};
|
186
|
-
|
187
|
-
const StoryHookForm = () => {
|
188
|
-
return <DefaultUseForm />;
|
189
|
-
};
|
190
|
-
|
191
|
-
export const UseHookForm: StoryObj<StoryDropdownProps> = {
|
192
|
-
render: () => <StoryHookForm />,
|
193
|
-
};
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"setInitValue.js","sources":["../../../../src/components/DatePicker/utils/setInitValue.ts"],"sourcesContent":["export const setInitValue = (e: Event): string => {\n const item = e.target as HTMLInputElement;\n const defaultValue = String(item.getAttribute('defaultValue'));\n\n return defaultValue;\n};\n"],"names":["setInitValue","e","item","target","defaultValue","String","getAttribute"],"mappings":"IAAaA,YAAY,GAAG,SAAfA,YAAYA,CAAIC,CAAQ,EAAa;AAC9C,EAAA,IAAMC,IAAI,GAAGD,CAAC,CAACE,MAA0B,CAAA;EACzC,IAAMC,YAAY,GAAGC,MAAM,CAACH,IAAI,CAACI,YAAY,CAAC,cAAc,CAAC,CAAC,CAAA;AAE9D,EAAA,OAAOF,YAAY,CAAA;AACvB;;;;"}
|
package/es/hooks/useForm.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useForm.js","sources":["../../src/hooks/useForm.ts"],"sourcesContent":["import React, { RefObject, useEffect } from 'react';\n\ntype DataType = { [name: string]: string | boolean | null | number | number[] | Date | string[] };\n\nconst initData = (ref: RefObject<HTMLFormElement>, defaultValues: DataType) => {\n if (!ref.current) {\n return;\n }\n\n const form = ref.current as HTMLFormElement;\n const items = form.elements;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i] as HTMLInputElement;\n const { name, value, type } = item;\n\n if ((type === 'text' || type === 'textarea') && defaultValues[name]) {\n item.value = String(defaultValues[name]);\n }\n\n if (type === 'checkbox' && defaultValues[name]) {\n item.checked = Boolean(defaultValues[name]);\n }\n\n if (type === 'radio' && defaultValues[name]) {\n item.checked = defaultValues[name] === value;\n }\n\n if (type === 'number' && defaultValues[name]) {\n const sliderType = item.getAttribute('datatype');\n\n if (sliderType === 'slider-single') {\n item.setAttribute('defaultValue', String(defaultValues[name]));\n const event = new Event('setInitValue');\n item.dispatchEvent(event);\n }\n\n if (sliderType === 'slider-double') {\n const isMax = item.getAttribute('data-slidertype') === 'max' ? 1 : 0;\n const data = defaultValues[name] as number[];\n\n item.setAttribute('defaultValue', String(data[isMax]));\n const event = new Event('setInitValue');\n item.dispatchEvent(event);\n }\n }\n\n if (type === 'hidden') {\n const datepickerType = item.getAttribute('datatype');\n\n if (datepickerType === 'datepicker-single') {\n item.setAttribute('defaultValue', String(defaultValues[name]));\n const event = new Event('setInitValue');\n item.dispatchEvent(event);\n }\n\n if (datepickerType === 'datepicker-double') {\n const isTo = item.getAttribute('data-datepicker') === 'to' ? 1 : 0;\n const data = defaultValues[name] as number[];\n\n item.setAttribute('defaultValue', String(data[isTo]));\n const event = new Event('setInitValue');\n item.dispatchEvent(event);\n }\n }\n }\n};\n\nconst valideParams = (name: string) => {\n return name && name !== '';\n};\n\nexport const useForm = (onSubmit: (data: DataType) => void, defaultValues: DataType) => {\n const formRef = React.createRef<HTMLFormElement>();\n\n useEffect(() => {\n initData(formRef, defaultValues);\n }, []);\n\n const formData = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n\n const result: DataType = {};\n\n const form = event.target as HTMLFormElement;\n const items = form.elements;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i] as HTMLInputElement;\n const { name, value, type } = item;\n\n if ((type === 'text' || type === 'textarea') && valideParams(name)) {\n result[name] = value;\n }\n\n if (type === 'checkbox' && valideParams(name)) {\n result[name] = item.checked;\n }\n\n if (type === 'radio' && valideParams(name)) {\n if (item.checked) {\n result[name] = value;\n } else if (!(name in result)) {\n result[name] = null;\n }\n }\n\n if (type === 'number' && valideParams(name)) {\n const sliderType = item.getAttribute('datatype');\n\n if (sliderType === 'slider-single') {\n result[name] = value;\n }\n\n if (sliderType === 'slider-double') {\n const isMin = item.getAttribute('data-slidertype') === 'min';\n if (isMin) {\n result[name] = [Number(value)];\n }\n\n if (!isMin && Array.isArray(result[name])) {\n result[name] = [...(result[name] as number[]), Number(value)];\n }\n }\n }\n\n if (type === 'hidden' && valideParams(name)) {\n const sliderType = item.getAttribute('datatype');\n\n if (sliderType === 'datepicker-single') {\n result[name] = value;\n }\n\n if (sliderType === 'datepicker-double') {\n const isMin = item.getAttribute('data-datepicker') === 'from';\n if (isMin) {\n result[name] = [String(value)];\n }\n\n if (!isMin && Array.isArray(result[name])) {\n result[name] = [...(result[name] as string[]), String(value)];\n }\n }\n }\n }\n\n onSubmit(result);\n };\n\n return { formRef, formData };\n};\n"],"names":["initData","ref","defaultValues","current","form","items","elements","i","length","item","name","value","type","String","checked","Boolean","sliderType","getAttribute","setAttribute","event","Event","dispatchEvent","isMax","data","datepickerType","isTo","valideParams","useForm","onSubmit","formRef","React","createRef","useEffect","formData","preventDefault","result","target","isMin","Number","Array","isArray","concat","_toConsumableArray"],"mappings":"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"}
|