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>) {
238
238
} ,
239
239
) ;
240
240
241
+ React . useEffect ( ( ) => {
242
+ setInnerMode ( picker ) ;
243
+ } , [ picker ] ) ;
244
+
241
245
const [ sourceMode , setSourceMode ] = React . useState < PanelMode > ( ( ) => mergedMode ) ;
242
246
243
247
const onInternalPanelChange = ( newMode : PanelMode | null , viewValue : DateType ) => {
Original file line number Diff line number Diff line change @@ -730,6 +730,15 @@ describe('Picker.Basic', () => {
730
730
expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
731
731
} ) ;
732
732
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
+
733
742
describe ( 'hover value' , ( ) => {
734
743
it ( 'should restore when leave' , ( ) => {
735
744
const wrapper = mount ( < MomentPicker open defaultValue = { getMoment ( '2020-07-22' ) } /> ) ;
You can’t perform that action at this time.
0 commit comments