import React, { Component, useState } from 'react'; import TimePickerPanel from '../index'; import { TimePicker as BasicTimePicker, Button, Form, Popover, ConfigProvider } from '../../index'; import { strings } from '@douyinfe/semi-foundation/timePicker/constants'; import { get } from 'lodash'; import Callbacks from './Callbacks'; import CustomTrigger from './CustomTrigger'; import DisabledTime from './DisabledTime'; let TimePicker; export default { title: 'TimePicker', parameters: { chromatic: { disableSnapshot: true }, }, } export { Callbacks, CustomTrigger, DisabledTime } // auto add scrollItemProps.cycled = false, prevent waiting indefinitely in snapshot testing const TimePickerForTest = props => { let scrollItemProps = {}; if (!props.scrollItemProps) { scrollItemProps = { cycled: false }; } else { scrollItemProps = { ...props.scrollItemProps, cycled: false }; } return ; }; const init = () => { if (process.env.NODE_ENV === 'development') { TimePicker = BasicTimePicker; } else { TimePicker = TimePickerForTest; } }; init(); export const TimePickerPanelDefault = () => { const initValues = { testRange: [ new Date("2022-04-17T15:00:00"), new Date("2022-04-17T18:00:00"), ], }; return (
console.log(val)} />

{JSON.stringify(initValues)}
); }; TimePickerPanelDefault.story = { name: 'TimePickerPanel default', }; export const BasicUsage = () => ; BasicUsage.story = { name: 'basic usage', }; class Demo extends React.Component { constructor() { super(); this.state = { value: null, }; this.onChange = this.onChange.bind(this); } onChange(time) { // console.log(time); this.setState({ value: time }); } render() { return ; } } export const PanelHeader = () => { const Demo = () => { const [value, setValue] = useState(new Date()); const onChange = (date, str) => setValue(date); return (
); }; return ; }; PanelHeader.story = { name: 'panelHeader', }; function CustomDemo() { const [open, setOpen] = useState(false); const closePanel = () => setOpen(false); const onOpenChange = open => { setOpen(open); console.log(open); }; return ( close} /> ); } export const HeaderAndFooter = () => ; HeaderAndFooter.story = { name: 'header and footer', }; export const Format = () => ; Format.story = { name: 'format', }; export const Disabled = () => { return ; }; Disabled.story = { name: 'disabled', }; export const MinuteStepAndSecondStep = () => { return ; }; MinuteStepAndSecondStep.story = { name: 'minuteStep and secondStep', }; export const InputReadOnly = () => { return ; }; InputReadOnly.story = { name: 'inputReadOnly', }; export const RangePicker = () => { const RangePickerDemo = () => { const log = (...args) => { console.log(...args); }; const disabledHM = { 3: [3, 6, 12, 24, 48], 9: [9, 18, 36] }; const disabledHMS = { 6: { 6: [6, 12, 24, 48] }, 18: { 18: [18, 36] } }; const defaultValue = ['10:11:12', '12:11:23']; const [value, setValue] = useState(['10:11:12', '12:11:23']); const disabledHours = () => [1, 2, 4, 8, 16]; const disabledMinutes = hours => get(disabledHM, [hours], []); const disabledSeconds = (hours, seconds) => get(disabledHMS, [hours, seconds], []); const onChange = (dates, str) => { log(dates, str); setValue(dates); }; return (

基本


默认值

受控

默认值+format


默认值+use12Hours+format


); }; return ; }; RangePicker.story = { name: 'range picker', }; RangePicker.parameters = { chromatic: { disableSnapshot: false }, } export const ShowClear = () => ( <> { console.log('clear', ...args); }} /> { console.log('clear', ...args); }} /> ); export const TimePickerWithOnChangeWithDateFirst = () => { return (
onChangeWithDateFirst=true (default) console.log(...val)} />
onChangeWithDateFirst=false console.log(...val)} />
); }; TimePickerWithOnChangeWithDateFirst.story = { name: 'OnChangeWithDateFirst', }; export const Fix1604 = () => { const [value, setValue] = useState(); return (
{console.log('onChange', value); setValue(value);}} timeZone={0}/>
); }; Fix1604.story = { name: 'Fix Time Zone', }; export const Fix1716 = () => { const [v, setV] = useState([]); const handleChange = (value) => { console.log(value); setV(value); } return (

非受控的timepicker,正常

受控的timepicker,修改后正常

); }; Fix1716.story = { name: 'Fix 1716', }; export const StopPropagation = () => { return ( } trigger="click" > ); } export const Fix1953 = () => { return ( ); }; export const Fix2082 = () => { const [date, setDate] = useState(new Date()); return (
TimePicker:
[5]} format="HH:mm" value={date} onChange={(date, dateString) => { console.log('日期', date); setDate(date)} } />
); }; export const Fix2375 = () => { const [dateString, setDateString] = useState(); const onChange = (time) => { setDateString(time); }; return (


console.log(values)}> validateTimeRange(fieldValue, values)} label="起始时间" width="md" field="time_range" type="timeRange" onChangeWithDateFirst={false} onChange={(...props) => {console.log('props', props)}} />
); }; export const CustomHeader = () => { return ( ); };