File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ import React , { useState } from 'react' ;
2+ import { Moment } from 'moment' ;
3+ import Picker from '../src/Picker' ;
4+ import momentGenerateConfig from '../src/generate/moment' ;
5+ import zhCN from '../src/locale/zh_CN' ;
6+ import '../assets/index.less' ;
7+
8+ const sharedProps = {
9+ generateConfig : momentGenerateConfig ,
10+ } ;
11+
12+ function PickerWithType ( { type, onChange } ) {
13+ if ( type === 'date' ) return < Picker < Moment > { ...sharedProps } onChange = { onChange } locale = { zhCN } /> ;
14+ return < Picker < Moment > { ...sharedProps } picker = { type } onChange = { onChange } locale = { zhCN } /> ;
15+ }
16+
17+ export default function SwitchablePicker ( ) {
18+ const [ type , setType ] = useState ( 'date' ) ;
19+ return (
20+ < >
21+ < select
22+ value = { type }
23+ onChange = { event => {
24+ setType ( event . target . value ) ;
25+ } }
26+ >
27+ < option value = "date" > Date</ option >
28+ < option value = "week" > Week</ option >
29+ < option value = "month" > Month</ option >
30+ < option value = "quarter" > Quarter</ option >
31+ < option value = "year" > Year</ option >
32+ </ select >
33+ < PickerWithType type = { type } onChange = { value => console . log ( value ) } />
34+ </ >
35+ ) ;
36+ }
Original file line number Diff line number Diff line change @@ -238,6 +238,10 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
238238 } ,
239239 ) ;
240240
241+ React . useEffect ( ( ) => {
242+ setInnerMode ( picker ) ;
243+ } , [ picker ] ) ;
244+
241245 const [ sourceMode , setSourceMode ] = React . useState < PanelMode > ( ( ) => mergedMode ) ;
242246
243247 const onInternalPanelChange = ( newMode : PanelMode | null , viewValue : DateType ) => {
Original file line number Diff line number Diff line change @@ -730,6 +730,15 @@ describe('Picker.Basic', () => {
730730 expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
731731 } ) ;
732732
733+ it ( 'change panel when `picker` changed' , ( ) => {
734+ const wrapper = mount ( < MomentPicker open picker = "week" /> ) ;
735+ expect ( wrapper . find ( '.rc-picker-week-panel' ) . length ) . toEqual ( 1 ) ;
736+ wrapper . setProps ( { picker : 'month' } ) ;
737+ wrapper . update ( ) ;
738+ expect ( wrapper . find ( '.rc-picker-week-panel' ) . length ) . toEqual ( 0 ) ;
739+ expect ( wrapper . find ( '.rc-picker-month-panel' ) . length ) . toEqual ( 1 ) ;
740+ } ) ;
741+
733742 describe ( 'hover value' , ( ) => {
734743 it ( 'should restore when leave' , ( ) => {
735744 const wrapper = mount ( < MomentPicker open defaultValue = { getMoment ( '2020-07-22' ) } /> ) ;
You can’t perform that action at this time.
0 commit comments