import React, { Component, useState } from 'react'; import TimePickerPanel from '../index'; import { TimePicker as BasicTimePicker, Button, Form } 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', };