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