| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 | 
							- 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 <BasicTimePicker {...props} scrollItemProps={scrollItemProps} />;
 
- };
 
- 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 (
 
-     <div>
 
-       <TimePicker panelHeader={'Time Select'} onChange={val => console.log(val)} />
 
-       <TimePicker
 
-         format={'HH:mm:ss'}
 
-         defaultValue={'10:24:18'}
 
-         defaultOpen={true}
 
-         scrollItemProps={{ cycled: false }}
 
-       />
 
-       <TimePicker use12Hours defaultValue={"上午 10:32:33"}/>
 
-       <br/><br/>
 
-       <TimePicker type="timeRange" use12Hours format="a h:mm"  defaultValue={["下午 08:11", "上午 11:21"]} />
 
-       <Form initValues={initValues}>
 
-       <pre>{JSON.stringify(initValues)}</pre>
 
-       <Form.TimePicker
 
-         use12Hours
 
-         field="testRange"
 
-         label="Time Range"
 
-         type="timeRange"
 
-         format="a hh:mm"
 
-       />
 
-     </Form>
 
-     </div>
 
-   );
 
- };
 
- TimePickerPanelDefault.story = {
 
-   name: 'TimePickerPanel default',
 
- };
 
- export const BasicUsage = () => <TimePicker />;
 
- 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 <TimePicker value={this.state.value} onChange={this.onChange} />;
 
-   }
 
- }
 
- export const PanelHeader = () => {
 
-   const Demo = () => {
 
-     const [value, setValue] = useState(new Date());
 
-     const onChange = (date, str) => setValue(date);
 
-     return (
 
-       <div>
 
-         <TimePicker panelHeader={'Time Select'} value={new Date()} />
 
-         <TimePicker panelHeader={'Time Select'} value={value} onChange={onChange} />
 
-         <TimePicker open />
 
-       </div>
 
-     );
 
-   };
 
-   return <Demo />;
 
- };
 
- PanelHeader.story = {
 
-   name: 'panelHeader',
 
- };
 
- function CustomDemo() {
 
-   const [open, setOpen] = useState(false);
 
-   const closePanel = () => setOpen(false);
 
-   const onOpenChange = open => {
 
-     setOpen(open);
 
-     console.log(open);
 
-   };
 
-   return (
 
-     <TimePicker
 
-       open={open}
 
-       onOpenChange={onOpenChange}
 
-       panelHeader={'Time Select'}
 
-       panelFooter={<Button onClick={closePanel}>close</Button>}
 
-     />
 
-   );
 
- }
 
- export const HeaderAndFooter = () => <CustomDemo />;
 
- HeaderAndFooter.story = {
 
-   name: 'header and footer',
 
- };
 
- export const Format = () => <TimePicker format={'HH:mm'} defaultValue={'10:24'} />;
 
- Format.story = {
 
-   name: 'format',
 
- };
 
- export const Disabled = () => {
 
-   return <TimePicker defaultValue={'12:08:23'} disabled />;
 
- };
 
- Disabled.story = {
 
-   name: 'disabled',
 
- };
 
- export const MinuteStepAndSecondStep = () => {
 
-   return <TimePicker minuteStep={15} secondStep={10} />;
 
- };
 
- MinuteStepAndSecondStep.story = {
 
-   name: 'minuteStep and secondStep',
 
- };
 
- export const InputReadOnly = () => {
 
-   return <TimePicker inputReadOnly />;
 
- };
 
- 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 (
 
-       <div style={{ margin: 200 }}>
 
-         <div>
 
-           <p>基本</p>
 
-           <TimePicker type={strings.TYPE_TIME_RANGE_PICKER} onChange={log} />
 
-         </div>
 
-         <br />
 
-         <div>
 
-           <p>默认值</p>
 
-           <TimePicker
 
-             defaultValue={defaultValue}
 
-             type={strings.TYPE_TIME_RANGE_PICKER}
 
-             onChange={log}
 
-           />
 
-         </div>
 
-         <div>
 
-           <p>受控</p>
 
-           <TimePicker value={value} type={strings.TYPE_TIME_RANGE_PICKER} onChange={onChange} />
 
-         </div>
 
-         <div>
 
-           <p>默认值+format</p>
 
-           <TimePicker
 
-             format="HH:mm"
 
-             disabledHours={disabledHours}
 
-             disabledMinutes={disabledMinutes}
 
-             disabledSeconds={disabledSeconds}
 
-             defaultValue={['10:12', '18:08']}
 
-             type={strings.TYPE_TIME_RANGE_PICKER}
 
-             onChange={log}
 
-           />
 
-           <br />
 
-         </div>
 
-         <div>
 
-           <p>默认值+use12Hours+format</p>
 
-           <TimePicker
 
-             use12Hours
 
-             format="a hh:mm"
 
-             disabledHours={disabledHours}
 
-             disabledMinutes={disabledMinutes}
 
-             disabledSeconds={disabledSeconds}
 
-             defaultValue={['上午 10:12', '上午 11:08']}
 
-             type={strings.TYPE_TIME_RANGE_PICKER}
 
-             onChange={log}
 
-             scrollItemProps={{ mode: 'normal' }}
 
-           />
 
-           <br />
 
-         </div>
 
-       </div>
 
-     );
 
-   };
 
-   return <RangePickerDemo />;
 
- };
 
- RangePicker.story = {
 
-   name: 'range picker',
 
- };
 
- RangePicker.parameters = {
 
-   chromatic: { disableSnapshot: false },
 
- }
 
- export const ShowClear = () => (
 
-   <>
 
-     <TimePicker
 
-       defaultValue={new Date()}
 
-       showClear
 
-       onChange={(...args) => {
 
-         console.log('clear', ...args);
 
-       }}
 
-     />
 
-     <TimePicker
 
-       type="timeRange"
 
-       defaultValue={(new Date(), new Date())}
 
-       showClear
 
-       onChange={(...args) => {
 
-         console.log('clear', ...args);
 
-       }}
 
-     />
 
-   </>
 
- );
 
- export const TimePickerWithOnChangeWithDateFirst = () => {
 
-   return (
 
-     <div>
 
-       onChangeWithDateFirst=true (default)
 
-       <TimePicker onChange={(...val) => console.log(...val)} />
 
-       <br />
 
-       onChangeWithDateFirst=false
 
-       <TimePicker onChangeWithDateFirst={false} onChange={(...val) => console.log(...val)} />
 
-       
 
-     </div>
 
-   );
 
- };
 
- TimePickerWithOnChangeWithDateFirst.story = {
 
-   name: 'OnChangeWithDateFirst',
 
- };
 
 
  |