@@ -3,7 +3,7 @@ import React from 'react';
33import { dateTime } from '@gravity-ui/date-utils' ;
44import type { DateTime } from '@gravity-ui/date-utils' ;
55
6- import type { CalendarState , RangeCalendarState } from './types' ;
6+ import type { CalendarLayout , CalendarState , RangeCalendarState } from './types' ;
77
88export function useCalendarCellProps ( date : DateTime , state : CalendarState | RangeCalendarState ) {
99 const ref = React . useRef < HTMLDivElement > ( null ) ;
@@ -31,14 +31,7 @@ export function useCalendarCellProps(date: DateTime, state: CalendarState | Rang
3131 const isCurrent = dateTime ( ) . isSame ( date , state . mode ) ;
3232 const isWeekend = state . isWeekend ( date ) ;
3333
34- let label = '' ;
35- if ( state . mode === 'days' ) {
36- label = `${ date . format ( 'dddd' ) } , ${ date . format ( 'LL' ) } ` ;
37- } else if ( state . mode === 'months' ) {
38- label = `${ date . format ( 'MMMM YYYY' ) } ` ;
39- } else if ( state . mode === 'years' ) {
40- label = `${ date . format ( 'YYYY' ) } ` ;
41- }
34+ const label = getDateLabel ( date , state . mode ) ;
4235
4336 const cellProps : React . HTMLAttributes < unknown > = {
4437 role : 'gridcell' ,
@@ -55,11 +48,7 @@ export function useCalendarCellProps(date: DateTime, state: CalendarState | Rang
5548 onClick : isSelectable
5649 ? ( ) => {
5750 state . setFocusedDate ( date ) ;
58- if ( state . mode === 'days' ) {
59- state . selectDate ( date ) ;
60- } else {
61- state . zoomIn ( ) ;
62- }
51+ state . selectDate ( date ) ;
6352 }
6453 : undefined ,
6554 onPointerEnter ( ) {
@@ -79,6 +68,8 @@ export function useCalendarCellProps(date: DateTime, state: CalendarState | Rang
7968 let formattedDate = date . format ( 'D' ) ;
8069 if ( state . mode === 'months' ) {
8170 formattedDate = date . format ( 'MMM' ) ;
71+ } else if ( state . mode === 'quarters' ) {
72+ formattedDate = date . format ( '[Q]Q' ) ;
8273 } else if ( state . mode === 'years' ) {
8374 formattedDate = date . format ( 'YYYY' ) ;
8475 }
@@ -98,3 +89,17 @@ export function useCalendarCellProps(date: DateTime, state: CalendarState | Rang
9889 isWeekend,
9990 } ;
10091}
92+
93+ function getDateLabel ( date : DateTime , mode : CalendarLayout ) {
94+ let label = '' ;
95+ if ( mode === 'days' ) {
96+ label = `${ date . format ( 'dddd' ) } , ${ date . format ( 'LL' ) } ` ;
97+ } else if ( mode === 'months' ) {
98+ label = `${ date . format ( 'MMMM YYYY' ) } ` ;
99+ } else if ( mode === 'quarters' ) {
100+ label = `${ date . format ( '[Q]Q YYYY' ) } ` ;
101+ } else if ( mode === 'years' ) {
102+ label = `${ date . format ( 'YYYY' ) } ` ;
103+ }
104+ return label ;
105+ }
0 commit comments