-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathTimePicker.stories.tsx
106 lines (97 loc) · 2.28 KB
/
TimePicker.stories.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import React, { useState, useEffect } from 'react';
import { type Meta, type StoryObj } from '@storybook/react';
import TimePicker, { type TimePickerProps } from '../components/inputs/TimePicker';
import '@osrd-project/ui-core/dist/theme.css';
const TimePickerStory = (props: TimePickerProps) => {
const [selectedHour, setSelectedHour] = useState(props.hours);
const [selectedMinute, setSelectedMinute] = useState(props.minutes);
const [selectedSecond, setSelectedSecond] = useState(props.seconds);
const onTimeChange = (newTime: { hours: number; minutes: number; seconds?: number }) => {
setSelectedHour(newTime.hours);
setSelectedMinute(newTime.minutes);
setSelectedSecond(newTime.seconds);
};
useEffect(() => {
setSelectedHour(props.hours);
setSelectedMinute(props.minutes);
setSelectedSecond(props.seconds);
}, [props.hours, props.minutes, props.seconds]);
return (
<TimePicker
{...props}
hours={selectedHour}
minutes={selectedMinute}
seconds={selectedSecond}
onTimeChange={onTimeChange}
/>
);
};
const meta: Meta<typeof TimePicker> = {
component: TimePicker,
args: {
disabled: false,
readOnly: false,
displaySeconds: false,
},
argTypes: {
hours: {
control: {
type: 'number',
min: 0,
max: 23,
step: 1,
},
},
minutes: {
control: {
type: 'number',
min: 0,
max: 59,
step: 1,
},
},
},
title: 'Core/TimePicker',
tags: ['autodocs'],
render: TimePickerStory,
};
export default meta;
type Story = StoryObj<typeof TimePicker>;
export const Default: Story = {
args: {
label: 'Time',
},
decorators: [
(Story) => (
<div style={{ maxWidth: '6.7rem', minHeight: '500px' }}>
<Story />
</div>
),
],
};
export const DisabledTimePicker: Story = {
args: {
disabled: true,
label: 'Time',
},
decorators: [
(Story) => (
<div style={{ maxWidth: '6.7rem', minHeight: '500px' }}>
<Story />
</div>
),
],
};
export const TimePickerWithSeconds: Story = {
args: {
displaySeconds: true,
label: 'Time',
},
decorators: [
(Story) => (
<div style={{ maxWidth: '8.5rem', minHeight: '500px' }}>
<Story />
</div>
),
],
};