@@ -32,17 +32,21 @@ export default function CalendarSpecificPeriodSelector({
3232 singleSelection,
3333 allowFuturePeriods,
3434} : CalendarSpecificPeriodSelectorProps ) {
35- const periodInstance = new Period ( ) . setCalendar ( CalendarTypes . ETHIOPIAN ) ;
35+ const periodInstance = new Period ( ) . setCalendar ( CalendarTypes . ETHIOPIAN ) . setPreferences ( { allowFuturePeriods : true } ) ;
36+ const selectedPeriod = ! isEmpty ( selectedPeriods ) ? periodInstance . getById ( head ( selectedPeriods ) ?. id as unknown as string ) : undefined ;
37+ const defaultPeriodType = selectedPeriod ?. type ;
3638
37- const [ year , setYear ] = useState < number > ( new Date ( ) . getFullYear ( ) ) ;
39+ const defaultPeriodTypeIsFixed = typeof selectedPeriod ?. id === "string" && / \d { 4 } / . test ( selectedPeriod ?. id ) ;
40+
41+ const [ year , setYear ] = useState < number > (
42+ defaultPeriodTypeIsFixed ? new Date ( selectedPeriod ?. startDate as unknown as string ) . getFullYear ( ) ?? new Date ( ) . getFullYear ( ) : new Date ( ) . getFullYear ( )
43+ ) ;
3844
3945 useEffect ( ( ) => {
4046 periodInstance . setPreferences ( { openFuturePeriods : 4 , allowFuturePeriods : true } ) ;
4147 periodInstance . setCalendar ( calendar ) ;
4248 if ( calendar === CalendarTypes . ETHIOPIAN ) {
4349 setYear ( new Date ( ) . getFullYear ( ) - 7 ) ;
44- } else {
45- setYear ( new Date ( ) . getFullYear ( ) ) ;
4650 }
4751 } , [ calendar ] ) ;
4852 const periodType = new PeriodType ( ) ;
@@ -54,8 +58,12 @@ export default function CalendarSpecificPeriodSelector({
5458 const relativePeriodTypes = filter ( filteredPeriodTypes , ( { id } ) => id . toLowerCase ( ) . match ( RegExp ( "relative" . toLowerCase ( ) ) ) ) ;
5559 const fixedPeriodTypes = filter ( filteredPeriodTypes , ( { id } ) => ! id . toLowerCase ( ) . match ( RegExp ( "relative" . toLowerCase ( ) ) ) ) ;
5660
57- const [ selectedRelativePeriodType , setSelectedRelativePeriodType ] = useState ( head ( relativePeriodTypes ) ?. id ) ;
58- const [ selectedFixedPeriodType , setSelectedFixedPeriodType ] = useState ( head ( fixedPeriodTypes ) ?. id ) ;
61+ const [ selectedRelativePeriodType , setSelectedRelativePeriodType ] = useState (
62+ defaultPeriodTypeIsFixed ? head ( relativePeriodTypes ) ?. id : defaultPeriodType ?? head ( relativePeriodTypes ) ?. id
63+ ) ;
64+ const [ selectedFixedPeriodType , setSelectedFixedPeriodType ] = useState (
65+ defaultPeriodTypeIsFixed ? defaultPeriodType ?? head ( fixedPeriodTypes ) ?. id : head ( fixedPeriodTypes ) ?. id
66+ ) ;
5967
6068 const tabs = useMemo ( ( ) => {
6169 const tabs = [ ] ;
@@ -69,7 +77,9 @@ export default function CalendarSpecificPeriodSelector({
6977 return tabs ;
7078 } , [ ] ) ;
7179
72- const [ selectedPeriodCategory , setSelectedPeriodCategory ] = useState ( head ( tabs ) ) ;
80+ const defaultTab = find ( Object . values ( PeriodCategories ) , [ "key" , defaultPeriodTypeIsFixed ? "fixed" : "relative" ] ) ;
81+
82+ const [ selectedPeriodCategory , setSelectedPeriodCategory ] = useState ( defaultTab ) ;
7383
7484 useEffect ( ( ) => {
7585 if ( excludeFixedPeriods && excludeRelativePeriods ) {
@@ -100,8 +110,6 @@ export default function CalendarSpecificPeriodSelector({
100110 . get ( )
101111 . list ( ) ;
102112
103- console . log ( periods ) ;
104-
105113 if ( allowFuturePeriods ) {
106114 return periods ;
107115 } else {
@@ -171,7 +179,7 @@ export default function CalendarSpecificPeriodSelector({
171179 dense
172180 label = { i18n . t ( "Year" ) }
173181 type = { "number" }
174- value = { year }
182+ value = { year . toString ( ) }
175183 onChange = { ( { value } : { value : number } ) => setYear ( value ) }
176184 />
177185 </ div >
0 commit comments