@fluentui/react-calendar-compat 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -2
- package/dist/index.d.ts +32 -0
- package/lib/components/Calendar/Calendar.js +3 -0
- package/lib/components/Calendar/Calendar.js.map +1 -1
- package/lib/components/Calendar/calendarNavigationIcons.js +7 -0
- package/lib/components/Calendar/calendarNavigationIcons.js.map +1 -0
- package/lib/components/CalendarDay/CalendarDay.js +4 -5
- package/lib/components/CalendarDay/CalendarDay.js.map +1 -1
- package/lib/components/CalendarDay/CalendarDay.types.js.map +1 -1
- package/lib/components/CalendarMonth/CalendarMonth.js +4 -6
- package/lib/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/lib/components/CalendarMonth/CalendarMonth.types.js.map +1 -1
- package/lib/components/CalendarYear/CalendarYear.js +2 -7
- package/lib/components/CalendarYear/CalendarYear.js.map +1 -1
- package/lib/components/CalendarYear/CalendarYear.types.js.map +1 -1
- package/lib-commonjs/components/Calendar/Calendar.js +3 -0
- package/lib-commonjs/components/Calendar/Calendar.js.map +1 -1
- package/lib-commonjs/components/Calendar/calendarNavigationIcons.js +18 -0
- package/lib-commonjs/components/Calendar/calendarNavigationIcons.js.map +1 -0
- package/lib-commonjs/components/CalendarDay/CalendarDay.js +4 -5
- package/lib-commonjs/components/CalendarDay/CalendarDay.js.map +1 -1
- package/lib-commonjs/components/CalendarMonth/CalendarMonth.js +4 -6
- package/lib-commonjs/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/lib-commonjs/components/CalendarYear/CalendarYear.js +2 -7
- package/lib-commonjs/components/CalendarYear/CalendarYear.js.map +1 -1
- package/package.json +4 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["CalendarYear.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Enter, Space } from '@fluentui/keyboard-keys';\nimport { ArrowDownRegular, ArrowUpRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { mergeClasses } from '@griffel/react';\nimport { useCalendarYearStyles_unstable } from './useCalendarYearStyles.styles';\nimport type {\n CalendarYearStrings,\n CalendarYearProps,\n CalendarYearRange,\n CalendarYearHeaderProps,\n} from './CalendarYear.types';\n\nconst CELL_COUNT = 12;\nconst CELLS_PER_ROW = 4;\n\nconst DefaultCalendarYearStrings: CalendarYearStrings = {\n prevRangeAriaLabel: undefined,\n nextRangeAriaLabel: undefined,\n};\ninterface CalendarYearGrid {\n focus(): void;\n}\n\ninterface CalendarYearGridCellProps extends CalendarYearProps {\n year: number;\n current?: boolean;\n selected?: boolean;\n disabled?: boolean;\n onSelectYear?: (year: number) => void;\n onRenderYear?: (year: number) => React.ReactNode;\n}\n\ninterface CalendarYearGridProps extends CalendarYearProps, CalendarYearRange {\n selectedYear?: number;\n animateBackwards?: boolean;\n componentRef?: React.RefObject<CalendarYearGridCell>;\n}\n\ninterface CalendarYearGridCell {\n focus(): void;\n}\n\nconst CalendarYearGridCell: React.FunctionComponent<CalendarYearGridCellProps> = props => {\n const {\n className,\n highlightCurrentYear,\n highlightSelectedYear,\n year,\n selected,\n disabled,\n componentRef,\n onSelectYear,\n onRenderYear,\n } = props;\n\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useImperativeHandle(\n componentRef,\n () => ({\n focus() {\n buttonRef.current?.focus?.();\n },\n }),\n [],\n );\n\n const onClick = () => {\n onSelectYear?.(year);\n };\n\n const onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter) {\n onSelectYear?.(year);\n }\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n highlightCurrent: highlightCurrentYear,\n highlightSelected: highlightSelectedYear,\n });\n\n return (\n <button\n className={mergeClasses(classNames.itemButton, selected && classNames.selected, disabled && classNames.disabled)}\n type=\"button\"\n role=\"gridcell\"\n onClick={!disabled ? onClick : undefined}\n onKeyDown={!disabled ? onKeyDown : undefined}\n disabled={disabled}\n aria-selected={selected}\n ref={buttonRef}\n >\n {onRenderYear?.(year) ?? year}\n </button>\n );\n};\nCalendarYearGridCell.displayName = 'CalendarYearGridCell';\n\nconst CalendarYearGrid: React.FunctionComponent<CalendarYearGridProps> = props => {\n const {\n className,\n fromYear,\n toYear,\n animationDirection,\n animateBackwards,\n minYear,\n maxYear,\n onSelectYear,\n selectedYear,\n componentRef,\n } = props;\n\n const selectedCellRef = React.useRef<CalendarYearGridCell>(null);\n const currentCellRef = React.useRef<CalendarYearGridCell>(null);\n\n React.useImperativeHandle(\n componentRef,\n () => ({\n focus() {\n (selectedCellRef.current || currentCellRef.current)?.focus?.();\n },\n }),\n [],\n );\n\n const renderCell = (yearToRender: number): React.ReactNode => {\n const selected = yearToRender === selectedYear;\n const disabled =\n (minYear !== undefined && yearToRender < minYear) || (maxYear !== undefined && yearToRender > maxYear);\n const current = yearToRender === new Date().getFullYear();\n\n return (\n <CalendarYearGridCell\n {...props}\n key={yearToRender}\n year={yearToRender}\n selected={selected}\n current={current}\n disabled={disabled}\n onSelectYear={onSelectYear}\n componentRef={selected ? selectedCellRef : current ? currentCellRef : undefined}\n />\n );\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n animateBackwards,\n animationDirection,\n });\n\n const onRenderYear = (value: number) => {\n return props.onRenderYear?.(value) ?? value;\n };\n\n const gridAriaLabel = `${onRenderYear(fromYear)} - ${onRenderYear(toYear)}`;\n\n let year = fromYear;\n const cells: React.ReactNode[][] = [];\n\n for (let i = 0; i < (toYear - fromYear + 1) / CELLS_PER_ROW; i++) {\n cells.push([]);\n for (let j = 0; j < CELLS_PER_ROW; j++) {\n cells[i].push(renderCell(year));\n year++;\n }\n }\n\n const arrowNavigationAttributes = useArrowNavigationGroup({ axis: 'both' });\n\n return (\n <div {...arrowNavigationAttributes}>\n <div className={classNames.gridContainer} role=\"grid\" aria-label={gridAriaLabel}>\n {cells.map((cellRow: React.ReactNode[], index: number) => {\n return (\n <div key={'yearPickerRow_' + index + '_' + fromYear} role=\"row\" className={classNames.buttonRow}>\n {cellRow}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\nCalendarYearGrid.displayName = 'CalendarYearGrid';\n\nconst CalendarYearNavDirection = {\n Previous: 0 as const,\n Next: 1 as const,\n};\n\ninterface CalendarYearNavArrowProps extends CalendarYearHeaderProps {\n direction: (typeof CalendarYearNavDirection)[keyof typeof CalendarYearNavDirection];\n}\n\nconst CalendarYearNavArrow: React.FunctionComponent<CalendarYearNavArrowProps> = props => {\n const {\n className,\n strings = DefaultCalendarYearStrings,\n direction,\n onSelectPrev,\n onSelectNext,\n fromYear,\n toYear,\n maxYear,\n minYear,\n } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n const ariaLabel =\n direction === CalendarYearNavDirection.Previous ? strings.prevRangeAriaLabel : strings.nextRangeAriaLabel;\n const newRangeOffset = direction === CalendarYearNavDirection.Previous ? -CELL_COUNT : CELL_COUNT;\n const newRange = { fromYear: fromYear + newRangeOffset, toYear: toYear + newRangeOffset };\n const ariaLabelString = ariaLabel ? (typeof ariaLabel === 'string' ? ariaLabel : ariaLabel(newRange)) : undefined;\n const disabled =\n direction === CalendarYearNavDirection.Previous\n ? minYear !== undefined && fromYear < minYear\n : maxYear !== undefined && props.fromYear + CELL_COUNT > maxYear;\n\n const onNavigate = () => {\n direction === CalendarYearNavDirection.Previous ? onSelectPrev?.() : onSelectNext?.();\n };\n\n const onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter) {\n onNavigate();\n }\n };\n\n const { dir } = useFluent_unstable();\n\n // can be condensed, but leaving verbose for clarity due to regressions\n const isLeftNavigation =\n dir === 'rtl' ? direction === CalendarYearNavDirection.Next : direction === CalendarYearNavDirection.Previous;\n\n return (\n <button\n className={mergeClasses(classNames.navigationButton, disabled && classNames.disabled)}\n onClick={!disabled ? onNavigate : undefined}\n onKeyDown={!disabled ? onKeyDown : undefined}\n type=\"button\"\n title={ariaLabelString}\n disabled={disabled}\n >\n {isLeftNavigation ? <ArrowUpRegular /> : <ArrowDownRegular />}\n </button>\n );\n};\nCalendarYearNavArrow.displayName = 'CalendarYearNavArrow';\n\nconst CalendarYearNav: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const { className } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n return (\n <div className={classNames.navigationButtonsContainer}>\n <CalendarYearNavArrow {...props} direction={CalendarYearNavDirection.Previous} />\n <CalendarYearNavArrow {...props} direction={CalendarYearNavDirection.Next} />\n </div>\n );\n};\nCalendarYearNav.displayName = 'CalendarYearNav';\n\nconst CalendarYearTitle: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const {\n className,\n fromYear,\n toYear,\n strings = DefaultCalendarYearStrings,\n animateBackwards,\n animationDirection,\n } = props;\n\n const onHeaderSelect = () => {\n props.onHeaderSelect?.(true);\n };\n\n const onHeaderKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter || ev.key === Space) {\n onHeaderSelect();\n }\n };\n\n const onRenderYear = (year: number) => {\n return props.onRenderYear?.(year) ?? year;\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n hasHeaderClickCallback: !!props.onHeaderSelect,\n animateBackwards,\n animationDirection,\n });\n\n if (props.onHeaderSelect) {\n const rangeAriaLabel = strings.rangeAriaLabel;\n const headerAriaLabelFormatString = strings.headerAriaLabelFormatString;\n const currentDateRange = rangeAriaLabel\n ? typeof rangeAriaLabel === 'string'\n ? rangeAriaLabel\n : rangeAriaLabel(props)\n : undefined;\n\n const ariaLabel = headerAriaLabelFormatString\n ? headerAriaLabelFormatString.replace('{0}', currentDateRange ?? '')\n : currentDateRange;\n\n return (\n <button\n className={classNames.currentItemButton}\n onClick={onHeaderSelect}\n onKeyDown={onHeaderKeyDown}\n aria-label={ariaLabel}\n role=\"button\"\n type=\"button\"\n >\n <span aria-live=\"assertive\" aria-atomic=\"true\">\n {onRenderYear(fromYear)} - {onRenderYear(toYear)}\n </span>\n </button>\n );\n }\n\n return (\n <div className={classNames.current}>\n {onRenderYear(fromYear)} - {onRenderYear(toYear)}\n </div>\n );\n};\nCalendarYearTitle.displayName = 'CalendarYearTitle';\n\nconst CalendarYearHeader: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const { className, animateBackwards, animationDirection, onRenderTitle } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n hasHeaderClickCallback: !!props.onHeaderSelect,\n animateBackwards,\n animationDirection,\n });\n\n return (\n <div className={classNames.headerContainer}>\n {onRenderTitle?.(props) ?? <CalendarYearTitle {...props} />}\n <CalendarYearNav {...props} />\n </div>\n );\n};\nCalendarYearHeader.displayName = 'CalendarYearHeader';\n\nfunction useAnimateBackwards({ selectedYear, navigatedYear }: CalendarYearProps) {\n const rangeYear = selectedYear || navigatedYear || new Date().getFullYear();\n const fromYear = Math.floor(rangeYear / 10) * 10;\n\n const previousFromYearRef = React.useRef<number | undefined>(fromYear);\n React.useRef(() => {\n previousFromYearRef.current = fromYear;\n });\n const previousFromYear = previousFromYearRef.current;\n\n if (!previousFromYear || previousFromYear === fromYear) {\n return undefined;\n } else if (previousFromYear > fromYear) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction useYearRangeState({ selectedYear, navigatedYear }: CalendarYearProps) {\n const rangeYear = React.useMemo(() => {\n return selectedYear || navigatedYear || Math.floor(new Date().getFullYear() / 10) * 10;\n }, [navigatedYear, selectedYear]);\n\n const [fromYear, setFromYear] = React.useState<number>(rangeYear);\n\n const onNavNext = () => {\n setFromYear(year => year + CELL_COUNT);\n };\n\n const onNavPrevious = () => {\n setFromYear(year => year - CELL_COUNT);\n };\n\n React.useEffect(() => {\n setFromYear(rangeYear);\n }, [rangeYear]);\n\n const toYear = fromYear + CELL_COUNT - 1;\n\n return [fromYear, toYear, onNavNext, onNavPrevious] as const;\n}\n\n/**\n * @internal\n */\nexport const CalendarYear: React.FunctionComponent<CalendarYearProps> = props => {\n const animateBackwards = useAnimateBackwards(props);\n const [fromYear, toYear, onNavNext, onNavPrevious] = useYearRangeState(props);\n\n const gridRef = React.useRef<CalendarYearGrid>(null);\n\n React.useImperativeHandle(props.componentRef, () => ({\n focus() {\n gridRef.current?.focus?.();\n },\n }));\n\n const { className } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n return (\n <div className={classNames.root}>\n <CalendarYearHeader\n {...props}\n fromYear={fromYear}\n toYear={toYear}\n onSelectPrev={onNavPrevious}\n onSelectNext={onNavNext}\n animateBackwards={animateBackwards}\n />\n <CalendarYearGrid\n {...props}\n fromYear={fromYear}\n toYear={toYear}\n animateBackwards={animateBackwards}\n componentRef={gridRef}\n />\n </div>\n );\n};\nCalendarYear.displayName = 'CalendarYear';\n"],"names":["React","Enter","Space","ArrowDownRegular","ArrowUpRegular","useFluent_unstable","useArrowNavigationGroup","mergeClasses","useCalendarYearStyles_unstable","CELL_COUNT","CELLS_PER_ROW","DefaultCalendarYearStrings","prevRangeAriaLabel","undefined","nextRangeAriaLabel","CalendarYearGridCell","props","className","highlightCurrentYear","highlightSelectedYear","year","selected","disabled","componentRef","onSelectYear","onRenderYear","buttonRef","useRef","useImperativeHandle","focus","current","onClick","onKeyDown","ev","key","classNames","highlightCurrent","highlightSelected","button","itemButton","type","role","aria-selected","ref","displayName","CalendarYearGrid","fromYear","toYear","animationDirection","animateBackwards","minYear","maxYear","selectedYear","selectedCellRef","currentCellRef","renderCell","yearToRender","Date","getFullYear","value","gridAriaLabel","cells","i","push","j","arrowNavigationAttributes","axis","div","gridContainer","aria-label","map","cellRow","index","buttonRow","CalendarYearNavDirection","Previous","Next","CalendarYearNavArrow","strings","direction","onSelectPrev","onSelectNext","ariaLabel","newRangeOffset","newRange","ariaLabelString","onNavigate","dir","isLeftNavigation","navigationButton","title","CalendarYearNav","navigationButtonsContainer","CalendarYearTitle","onHeaderSelect","onHeaderKeyDown","hasHeaderClickCallback","rangeAriaLabel","headerAriaLabelFormatString","currentDateRange","replace","currentItemButton","span","aria-live","aria-atomic","CalendarYearHeader","onRenderTitle","headerContainer","useAnimateBackwards","navigatedYear","rangeYear","Math","floor","previousFromYearRef","previousFromYear","useYearRangeState","useMemo","setFromYear","useState","onNavNext","onNavPrevious","useEffect","CalendarYear","gridRef","root"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["CalendarYear.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Enter, Space } from '@fluentui/keyboard-keys';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { mergeClasses } from '@griffel/react';\nimport { useCalendarYearStyles_unstable } from './useCalendarYearStyles.styles';\nimport type {\n CalendarYearStrings,\n CalendarYearProps,\n CalendarYearRange,\n CalendarYearHeaderProps,\n} from './CalendarYear.types';\n\nconst CELL_COUNT = 12;\nconst CELLS_PER_ROW = 4;\n\nconst DefaultCalendarYearStrings: CalendarYearStrings = {\n prevRangeAriaLabel: undefined,\n nextRangeAriaLabel: undefined,\n};\ninterface CalendarYearGrid {\n focus(): void;\n}\n\ninterface CalendarYearGridCellProps extends CalendarYearProps {\n year: number;\n current?: boolean;\n selected?: boolean;\n disabled?: boolean;\n onSelectYear?: (year: number) => void;\n onRenderYear?: (year: number) => React.ReactNode;\n}\n\ninterface CalendarYearGridProps extends CalendarYearProps, CalendarYearRange {\n selectedYear?: number;\n animateBackwards?: boolean;\n componentRef?: React.RefObject<CalendarYearGridCell>;\n}\n\ninterface CalendarYearGridCell {\n focus(): void;\n}\n\nconst CalendarYearGridCell: React.FunctionComponent<CalendarYearGridCellProps> = props => {\n const {\n className,\n highlightCurrentYear,\n highlightSelectedYear,\n year,\n selected,\n disabled,\n componentRef,\n onSelectYear,\n onRenderYear,\n } = props;\n\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n React.useImperativeHandle(\n componentRef,\n () => ({\n focus() {\n buttonRef.current?.focus?.();\n },\n }),\n [],\n );\n\n const onClick = () => {\n onSelectYear?.(year);\n };\n\n const onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter) {\n onSelectYear?.(year);\n }\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n highlightCurrent: highlightCurrentYear,\n highlightSelected: highlightSelectedYear,\n });\n\n return (\n <button\n className={mergeClasses(classNames.itemButton, selected && classNames.selected, disabled && classNames.disabled)}\n type=\"button\"\n role=\"gridcell\"\n onClick={!disabled ? onClick : undefined}\n onKeyDown={!disabled ? onKeyDown : undefined}\n disabled={disabled}\n aria-selected={selected}\n ref={buttonRef}\n >\n {onRenderYear?.(year) ?? year}\n </button>\n );\n};\nCalendarYearGridCell.displayName = 'CalendarYearGridCell';\n\nconst CalendarYearGrid: React.FunctionComponent<CalendarYearGridProps> = props => {\n const {\n className,\n fromYear,\n toYear,\n animationDirection,\n animateBackwards,\n minYear,\n maxYear,\n onSelectYear,\n selectedYear,\n componentRef,\n } = props;\n\n const selectedCellRef = React.useRef<CalendarYearGridCell>(null);\n const currentCellRef = React.useRef<CalendarYearGridCell>(null);\n\n React.useImperativeHandle(\n componentRef,\n () => ({\n focus() {\n (selectedCellRef.current || currentCellRef.current)?.focus?.();\n },\n }),\n [],\n );\n\n const renderCell = (yearToRender: number): React.ReactNode => {\n const selected = yearToRender === selectedYear;\n const disabled =\n (minYear !== undefined && yearToRender < minYear) || (maxYear !== undefined && yearToRender > maxYear);\n const current = yearToRender === new Date().getFullYear();\n\n return (\n <CalendarYearGridCell\n {...props}\n key={yearToRender}\n year={yearToRender}\n selected={selected}\n current={current}\n disabled={disabled}\n onSelectYear={onSelectYear}\n componentRef={selected ? selectedCellRef : current ? currentCellRef : undefined}\n />\n );\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n animateBackwards,\n animationDirection,\n });\n\n const onRenderYear = (value: number) => {\n return props.onRenderYear?.(value) ?? value;\n };\n\n const gridAriaLabel = `${onRenderYear(fromYear)} - ${onRenderYear(toYear)}`;\n\n let year = fromYear;\n const cells: React.ReactNode[][] = [];\n\n for (let i = 0; i < (toYear - fromYear + 1) / CELLS_PER_ROW; i++) {\n cells.push([]);\n for (let j = 0; j < CELLS_PER_ROW; j++) {\n cells[i].push(renderCell(year));\n year++;\n }\n }\n\n const arrowNavigationAttributes = useArrowNavigationGroup({ axis: 'both' });\n\n return (\n <div {...arrowNavigationAttributes}>\n <div className={classNames.gridContainer} role=\"grid\" aria-label={gridAriaLabel}>\n {cells.map((cellRow: React.ReactNode[], index: number) => {\n return (\n <div key={'yearPickerRow_' + index + '_' + fromYear} role=\"row\" className={classNames.buttonRow}>\n {cellRow}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\nCalendarYearGrid.displayName = 'CalendarYearGrid';\n\nconst CalendarYearNavDirection = {\n Previous: 0 as const,\n Next: 1 as const,\n};\n\ninterface CalendarYearNavArrowProps extends CalendarYearHeaderProps {\n direction: (typeof CalendarYearNavDirection)[keyof typeof CalendarYearNavDirection];\n}\n\nconst CalendarYearNavArrow: React.FunctionComponent<CalendarYearNavArrowProps> = props => {\n const {\n className,\n strings = DefaultCalendarYearStrings,\n direction,\n onSelectPrev,\n onSelectNext,\n fromYear,\n toYear,\n maxYear,\n minYear,\n navigationIcons,\n } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n const ariaLabel =\n direction === CalendarYearNavDirection.Previous ? strings.prevRangeAriaLabel : strings.nextRangeAriaLabel;\n const newRangeOffset = direction === CalendarYearNavDirection.Previous ? -CELL_COUNT : CELL_COUNT;\n const newRange = { fromYear: fromYear + newRangeOffset, toYear: toYear + newRangeOffset };\n const ariaLabelString = ariaLabel ? (typeof ariaLabel === 'string' ? ariaLabel : ariaLabel(newRange)) : undefined;\n const disabled =\n direction === CalendarYearNavDirection.Previous\n ? minYear !== undefined && fromYear < minYear\n : maxYear !== undefined && props.fromYear + CELL_COUNT > maxYear;\n\n const onNavigate = () => {\n direction === CalendarYearNavDirection.Previous ? onSelectPrev?.() : onSelectNext?.();\n };\n\n const onKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter) {\n onNavigate();\n }\n };\n\n return (\n <button\n className={mergeClasses(classNames.navigationButton, disabled && classNames.disabled)}\n onClick={!disabled ? onNavigate : undefined}\n onKeyDown={!disabled ? onKeyDown : undefined}\n type=\"button\"\n title={ariaLabelString}\n disabled={disabled}\n >\n {direction === CalendarYearNavDirection.Previous ? navigationIcons.upNavigation : navigationIcons.downNavigation}\n </button>\n );\n};\nCalendarYearNavArrow.displayName = 'CalendarYearNavArrow';\n\nconst CalendarYearNav: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const { className } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n return (\n <div className={classNames.navigationButtonsContainer}>\n <CalendarYearNavArrow {...props} direction={CalendarYearNavDirection.Previous} />\n <CalendarYearNavArrow {...props} direction={CalendarYearNavDirection.Next} />\n </div>\n );\n};\nCalendarYearNav.displayName = 'CalendarYearNav';\n\nconst CalendarYearTitle: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const {\n className,\n fromYear,\n toYear,\n strings = DefaultCalendarYearStrings,\n animateBackwards,\n animationDirection,\n } = props;\n\n const onHeaderSelect = () => {\n props.onHeaderSelect?.(true);\n };\n\n const onHeaderKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n if (ev.key === Enter || ev.key === Space) {\n onHeaderSelect();\n }\n };\n\n const onRenderYear = (year: number) => {\n return props.onRenderYear?.(year) ?? year;\n };\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n hasHeaderClickCallback: !!props.onHeaderSelect,\n animateBackwards,\n animationDirection,\n });\n\n if (props.onHeaderSelect) {\n const rangeAriaLabel = strings.rangeAriaLabel;\n const headerAriaLabelFormatString = strings.headerAriaLabelFormatString;\n const currentDateRange = rangeAriaLabel\n ? typeof rangeAriaLabel === 'string'\n ? rangeAriaLabel\n : rangeAriaLabel(props)\n : undefined;\n\n const ariaLabel = headerAriaLabelFormatString\n ? headerAriaLabelFormatString.replace('{0}', currentDateRange ?? '')\n : currentDateRange;\n\n return (\n <button\n className={classNames.currentItemButton}\n onClick={onHeaderSelect}\n onKeyDown={onHeaderKeyDown}\n aria-label={ariaLabel}\n role=\"button\"\n type=\"button\"\n >\n <span aria-live=\"assertive\" aria-atomic=\"true\">\n {onRenderYear(fromYear)} - {onRenderYear(toYear)}\n </span>\n </button>\n );\n }\n\n return (\n <div className={classNames.current}>\n {onRenderYear(fromYear)} - {onRenderYear(toYear)}\n </div>\n );\n};\nCalendarYearTitle.displayName = 'CalendarYearTitle';\n\nconst CalendarYearHeader: React.FunctionComponent<CalendarYearHeaderProps> = props => {\n const { className, animateBackwards, animationDirection, onRenderTitle } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n hasHeaderClickCallback: !!props.onHeaderSelect,\n animateBackwards,\n animationDirection,\n });\n\n return (\n <div className={classNames.headerContainer}>\n {onRenderTitle?.(props) ?? <CalendarYearTitle {...props} />}\n <CalendarYearNav {...props} />\n </div>\n );\n};\nCalendarYearHeader.displayName = 'CalendarYearHeader';\n\nfunction useAnimateBackwards({ selectedYear, navigatedYear }: CalendarYearProps) {\n const rangeYear = selectedYear || navigatedYear || new Date().getFullYear();\n const fromYear = Math.floor(rangeYear / 10) * 10;\n\n const previousFromYearRef = React.useRef<number | undefined>(fromYear);\n React.useRef(() => {\n previousFromYearRef.current = fromYear;\n });\n const previousFromYear = previousFromYearRef.current;\n\n if (!previousFromYear || previousFromYear === fromYear) {\n return undefined;\n } else if (previousFromYear > fromYear) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction useYearRangeState({ selectedYear, navigatedYear }: CalendarYearProps) {\n const rangeYear = React.useMemo(() => {\n return selectedYear || navigatedYear || Math.floor(new Date().getFullYear() / 10) * 10;\n }, [navigatedYear, selectedYear]);\n\n const [fromYear, setFromYear] = React.useState<number>(rangeYear);\n\n const onNavNext = () => {\n setFromYear(year => year + CELL_COUNT);\n };\n\n const onNavPrevious = () => {\n setFromYear(year => year - CELL_COUNT);\n };\n\n React.useEffect(() => {\n setFromYear(rangeYear);\n }, [rangeYear]);\n\n const toYear = fromYear + CELL_COUNT - 1;\n\n return [fromYear, toYear, onNavNext, onNavPrevious] as const;\n}\n\n/**\n * @internal\n */\nexport const CalendarYear: React.FunctionComponent<CalendarYearProps> = props => {\n const animateBackwards = useAnimateBackwards(props);\n const [fromYear, toYear, onNavNext, onNavPrevious] = useYearRangeState(props);\n\n const gridRef = React.useRef<CalendarYearGrid>(null);\n\n React.useImperativeHandle(props.componentRef, () => ({\n focus() {\n gridRef.current?.focus?.();\n },\n }));\n\n const { className } = props;\n\n const classNames = useCalendarYearStyles_unstable({\n className,\n });\n\n return (\n <div className={classNames.root}>\n <CalendarYearHeader\n {...props}\n fromYear={fromYear}\n toYear={toYear}\n onSelectPrev={onNavPrevious}\n onSelectNext={onNavNext}\n animateBackwards={animateBackwards}\n />\n <CalendarYearGrid\n {...props}\n fromYear={fromYear}\n toYear={toYear}\n animateBackwards={animateBackwards}\n componentRef={gridRef}\n />\n </div>\n );\n};\nCalendarYear.displayName = 'CalendarYear';\n"],"names":["React","Enter","Space","useArrowNavigationGroup","mergeClasses","useCalendarYearStyles_unstable","CELL_COUNT","CELLS_PER_ROW","DefaultCalendarYearStrings","prevRangeAriaLabel","undefined","nextRangeAriaLabel","CalendarYearGridCell","props","className","highlightCurrentYear","highlightSelectedYear","year","selected","disabled","componentRef","onSelectYear","onRenderYear","buttonRef","useRef","useImperativeHandle","focus","current","onClick","onKeyDown","ev","key","classNames","highlightCurrent","highlightSelected","button","itemButton","type","role","aria-selected","ref","displayName","CalendarYearGrid","fromYear","toYear","animationDirection","animateBackwards","minYear","maxYear","selectedYear","selectedCellRef","currentCellRef","renderCell","yearToRender","Date","getFullYear","value","gridAriaLabel","cells","i","push","j","arrowNavigationAttributes","axis","div","gridContainer","aria-label","map","cellRow","index","buttonRow","CalendarYearNavDirection","Previous","Next","CalendarYearNavArrow","strings","direction","onSelectPrev","onSelectNext","navigationIcons","ariaLabel","newRangeOffset","newRange","ariaLabelString","onNavigate","navigationButton","title","upNavigation","downNavigation","CalendarYearNav","navigationButtonsContainer","CalendarYearTitle","onHeaderSelect","onHeaderKeyDown","hasHeaderClickCallback","rangeAriaLabel","headerAriaLabelFormatString","currentDateRange","replace","currentItemButton","span","aria-live","aria-atomic","CalendarYearHeader","onRenderTitle","headerContainer","useAnimateBackwards","navigatedYear","rangeYear","Math","floor","previousFromYearRef","previousFromYear","useYearRangeState","useMemo","setFromYear","useState","onNavNext","onNavPrevious","useEffect","CalendarYear","gridRef","root"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["CalendarYear.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { AnimationDirection } from '../Calendar/Calendar.types';\nimport type { CalendarPickerStyleProps, CalendarPickerStyles } from '../CalendarPicker/CalendarPicker.types';\n\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface ICalendarYear {\n focus(): void;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearRange {\n fromYear: number;\n toYear: number;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearRangeToString {\n (range: CalendarYearRange): string;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearStrings {\n rangeAriaLabel?: string | CalendarYearRangeToString;\n prevRangeAriaLabel?: string | CalendarYearRangeToString;\n nextRangeAriaLabel?: string | CalendarYearRangeToString;\n headerAriaLabelFormatString?: string;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearProps {\n /**\n * Optional callback to access the ICalendarYear interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<ICalendarYear>;\n\n /**\n * Localized strings to use in the Calendar\n */\n strings?: CalendarYearStrings;\n\n /**\n * The currently selected year\n */\n selectedYear?: number;\n\n /**\n * The currently navigated year\n */\n navigatedYear?: number;\n\n /**\n * Callback action when a year is selected\n * @param year - The year the user selected\n */\n onSelectYear?: (year: number) => void;\n\n /**\n * Callback action when the header is selected\n */\n onHeaderSelect?: (focus: boolean) => void;\n\n /**\n * If set the Calendar will not allow navigation to or selection of a year earlier than this value.\n */\n minYear?: number;\n\n /**\n * If set the Calendar will not allow navigation to or selection of a year later than this value.\n */\n maxYear?: number;\n\n /**\n * Whether the year picker should highlight the current year\n * @default false\n */\n highlightCurrentYear?: boolean;\n\n /**\n * Whether the year picker should highlight the selected year\n * @default false\n */\n highlightSelectedYear?: boolean;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * Custom renderer for the title\n */\n onRenderTitle?: (props: CalendarYearHeaderProps) => React.ReactNode;\n\n /**\n * Custom renderer for the year\n */\n onRenderYear?: (year: number) => React.ReactNode;\n\n /**\n * The cardinal directions for animation to occur during transitions, either horizontal or veritcal\n */\n animationDirection?: AnimationDirection;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearStyleProps extends CalendarPickerStyleProps {}\n\n/**\n * @internal\n */\nexport interface CalendarYearStyles extends CalendarPickerStyles {}\n\n/**\n * @internal\n */\nexport interface CalendarYearHeaderProps extends CalendarYearProps, CalendarYearRange {\n /**\n * Callback action when the 'previous' navigation button is selected\n */\n onSelectPrev?: () => void;\n\n /**\n * Callback action when the 'next' navigation button is selected\n */\n onSelectNext?: () => void;\n\n /**\n * Whether title entering animation should be forwards or backwards\n */\n animateBackwards?: boolean;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|
1
|
+
{"version":3,"sources":["CalendarYear.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { AnimationDirection } from '../Calendar/Calendar.types';\nimport type { CalendarNavigationIcons } from '../Calendar/calendarNavigationIcons';\nimport type { CalendarPickerStyleProps, CalendarPickerStyles } from '../CalendarPicker/CalendarPicker.types';\n\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface ICalendarYear {\n focus(): void;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearRange {\n fromYear: number;\n toYear: number;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearRangeToString {\n (range: CalendarYearRange): string;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearStrings {\n rangeAriaLabel?: string | CalendarYearRangeToString;\n prevRangeAriaLabel?: string | CalendarYearRangeToString;\n nextRangeAriaLabel?: string | CalendarYearRangeToString;\n headerAriaLabelFormatString?: string;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearProps {\n /**\n * Optional callback to access the ICalendarYear interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<ICalendarYear>;\n\n /**\n * Localized strings to use in the Calendar\n */\n strings?: CalendarYearStrings;\n\n /**\n * The currently selected year\n */\n selectedYear?: number;\n\n /**\n * The currently navigated year\n */\n navigatedYear?: number;\n\n /**\n * Callback action when a year is selected\n * @param year - The year the user selected\n */\n onSelectYear?: (year: number) => void;\n\n /**\n * Callback action when the header is selected\n */\n onHeaderSelect?: (focus: boolean) => void;\n\n /**\n * If set the Calendar will not allow navigation to or selection of a year earlier than this value.\n */\n minYear?: number;\n\n /**\n * If set the Calendar will not allow navigation to or selection of a year later than this value.\n */\n maxYear?: number;\n\n /**\n * Whether the year picker should highlight the current year\n * @default false\n */\n highlightCurrentYear?: boolean;\n\n /**\n * Whether the year picker should highlight the selected year\n * @default false\n */\n highlightSelectedYear?: boolean;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * Custom renderer for the title\n */\n onRenderTitle?: (props: CalendarYearHeaderProps) => React.ReactNode;\n\n /**\n * Custom renderer for the year\n */\n onRenderYear?: (year: number) => React.ReactNode;\n\n /**\n * The cardinal directions for animation to occur during transitions, either horizontal or veritcal\n */\n animationDirection?: AnimationDirection;\n\n /**\n * Custom navigation icons.\n */\n navigationIcons: CalendarNavigationIcons;\n}\n\n/**\n * @internal\n */\nexport interface CalendarYearStyleProps extends CalendarPickerStyleProps {}\n\n/**\n * @internal\n */\nexport interface CalendarYearStyles extends CalendarPickerStyles {}\n\n/**\n * @internal\n */\nexport interface CalendarYearHeaderProps extends CalendarYearProps, CalendarYearRange {\n /**\n * Callback action when the 'previous' navigation button is selected\n */\n onSelectPrev?: () => void;\n\n /**\n * Callback action when the 'next' navigation button is selected\n */\n onSelectNext?: () => void;\n\n /**\n * Whether title entering animation should be forwards or backwards\n */\n animateBackwards?: boolean;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|
@@ -16,6 +16,7 @@ const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
|
|
16
16
|
const _utils = require("../../utils");
|
17
17
|
const _CalendarDay = require("../CalendarDay/CalendarDay");
|
18
18
|
const _CalendarMonth = require("../CalendarMonth/CalendarMonth");
|
19
|
+
const _calendarNavigationIcons = require("./calendarNavigationIcons");
|
19
20
|
const _useCalendarStylesstyles = require("./useCalendarStyles.styles");
|
20
21
|
const MIN_SIZE_FORCE_OVERLAY = 440;
|
21
22
|
const defaultWorkWeekDays = [
|
@@ -284,6 +285,7 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
284
285
|
showSixWeeksByDefault: showSixWeeksByDefault,
|
285
286
|
minDate: minDate,
|
286
287
|
maxDate: maxDate,
|
288
|
+
navigationIcons: _calendarNavigationIcons.defaultNavigationIcons,
|
287
289
|
restrictedDates: restrictedDates,
|
288
290
|
workWeekDays: workWeekDays,
|
289
291
|
componentRef: dayPicker,
|
@@ -309,6 +311,7 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
309
311
|
minDate: minDate,
|
310
312
|
maxDate: maxDate,
|
311
313
|
componentRef: monthPicker,
|
314
|
+
navigationIcons: _calendarNavigationIcons.defaultNavigationIcons,
|
312
315
|
...calendarMonthProps
|
313
316
|
}), renderGoToTodayButton()) : renderGoToTodayButton());
|
314
317
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Calendar.js"],"sourcesContent":["import * as React from 'react';\nimport { Backspace, Enter, Escape, PageDown, PageUp, Space } from '@fluentui/keyboard-keys';\nimport { useControllableState } from '@fluentui/react-utilities';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync } from '../../utils';\nimport { CalendarDay } from '../CalendarDay/CalendarDay';\nimport { CalendarMonth } from '../CalendarMonth/CalendarMonth';\nimport { useCalendarStyles_unstable } from './useCalendarStyles.styles';\nconst MIN_SIZE_FORCE_OVERLAY = 440;\nconst defaultWorkWeekDays = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday\n];\nfunction useDateState(props) {\n const { value, today: todayProp, onSelectDate } = props;\n const today = React.useMemo(()=>{\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [\n todayProp\n ]);\n /** The currently selected date in the calendar */ const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value\n });\n /** The currently focused date in the day picker, but not necessarily selected */ const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n /** The currently focused date in the month picker, but not necessarily selected */ const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n /** If using a controlled value, when that value changes, navigate to that date */ const [lastSelectedDate = today, setLastSelectedDate] = React.useState(value);\n if (value && lastSelectedDate.valueOf() !== value.valueOf()) {\n setNavigatedDay(value);\n setNavigatedMonth(value);\n setLastSelectedDate(value);\n }\n const navigateMonth = (date)=>{\n setNavigatedMonth(date);\n };\n const navigateDay = (date)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n const onDateSelected = (date, selectedDateRangeArray)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(date, selectedDateRangeArray);\n };\n return [\n selectedDate,\n navigatedDay,\n navigatedMonth,\n onDateSelected,\n navigateDay,\n navigateMonth\n ];\n}\nfunction useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {\n /** State used to show/hide month picker */ const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n });\n const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp\n });\n /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp\n });\n const toggleDayMonthPickerVisibility = ()=>{\n setIsMonthPickerVisible(!isMonthPickerVisible);\n setIsDayPickerVisible(!isDayPickerVisible);\n };\n return [\n isMonthPickerVisible,\n isDayPickerVisible,\n toggleDayMonthPickerVisibility\n ];\n}\nfunction useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisible) {\n const dayPicker = React.useRef(null);\n const monthPicker = React.useRef(null);\n const focusOnUpdate = React.useRef(false);\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const focus = React.useCallback(()=>{\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current, win);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current, win);\n }\n }, [\n isDayPickerVisible,\n isMonthPickerVisible,\n win\n ]);\n React.useImperativeHandle(componentRef, ()=>({\n focus\n }), [\n focus\n ]);\n React.useEffect(()=>{\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n const focusOnNextUpdate = ()=>{\n focusOnUpdate.current = true;\n };\n return [\n dayPicker,\n monthPicker,\n focusOnNextUpdate\n ];\n}\n/**\n * @internal\n */ export const Calendar = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{\n const { allFocusable = false, calendarDayProps, calendarMonthProps, className, componentRef, dateRangeType = DateRangeType.Day, dateTimeFormatter = DEFAULT_DATE_FORMATTING, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, highlightCurrentMonth = false, highlightSelectedMonth = false, id, isDayPickerVisible: isDayPickerVisibleProp = true, isMonthPickerVisible: isMonthPickerVisibleProp = true, maxDate, minDate, onDismiss, onSelectDate, restrictedDates, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay: showMonthPickerAsOverlayProp = false, showSixWeeksByDefault = false, showWeekNumbers = false, strings = DEFAULT_CALENDAR_STRINGS, today = new Date(), value, workWeekDays = defaultWorkWeekDays } = props;\n const [selectedDate, navigatedDay, navigatedMonth, onDateSelected, navigateDay, navigateMonth] = useDateState({\n onSelectDate,\n value,\n today\n });\n const [isMonthPickerVisible, isDayPickerVisible, toggleDayMonthPickerVisibility] = useVisibilityState({\n isDayPickerVisible: isDayPickerVisibleProp,\n isMonthPickerVisible: isMonthPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const [dayPicker, monthPicker, focusOnNextUpdate] = useFocusLogic({\n componentRef\n }, isDayPickerVisible, isMonthPickerVisible);\n const renderGoToTodayButton = ()=>{\n let goTodayEnabled = showGoToToday;\n if (goTodayEnabled && today) {\n goTodayEnabled = navigatedDay.getFullYear() !== today.getFullYear() || navigatedDay.getMonth() !== today.getMonth() || navigatedMonth.getFullYear() !== today.getFullYear() || navigatedMonth.getMonth() !== today.getMonth();\n }\n return showGoToToday && /*#__PURE__*/ React.createElement(\"button\", {\n className: classes.goTodayButton,\n onClick: onGotoToday,\n onKeyDown: onButtonKeyDown(onGotoToday),\n type: \"button\",\n disabled: !goTodayEnabled\n }, strings.goToToday);\n };\n const onNavigateDayDate = (date, focusOnNavigatedDay)=>{\n navigateDay(date);\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n };\n const onNavigateMonthDate = (date, focusOnNavigatedDay)=>{\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n if (!focusOnNavigatedDay) {\n navigateMonth(date);\n return;\n }\n if (monthPickerOnly) {\n onDateSelected(date);\n }\n navigateDay(date);\n };\n const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const onHeaderSelect = showMonthPickerAsOverlay ? ()=>{\n toggleDayMonthPickerVisibility();\n focusOnNextUpdate();\n } : undefined;\n const onGotoToday = ()=>{\n navigateDay(today);\n focusOnNextUpdate();\n };\n const onButtonKeyDown = (callback)=>{\n return (ev)=>{\n switch(ev.key){\n case Enter:\n case Space:\n callback();\n break;\n }\n };\n };\n const onDatePickerPopupKeyDown = (ev)=>{\n switch(ev.key){\n case Enter:\n ev.preventDefault();\n break;\n case Backspace:\n ev.preventDefault();\n break;\n case Escape:\n ev.stopPropagation();\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();\n break;\n case PageUp:\n if (ev.ctrlKey) {\n // go to next year\n navigateDay(addYears(navigatedDay, 1));\n } else {\n // go to next month\n navigateDay(addMonths(navigatedDay, 1));\n }\n ev.preventDefault();\n break;\n case PageDown:\n if (ev.ctrlKey) {\n // go to previous year\n navigateDay(addYears(navigatedDay, -1));\n } else {\n // go to previous month\n navigateDay(addMonths(navigatedDay, -1));\n }\n ev.preventDefault();\n break;\n default:\n break;\n }\n };\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers\n });\n let todayDateString = '';\n let selectedDateString = '';\n if (dateTimeFormatter && strings.todayDateFormatString) {\n todayDateString = strings.todayDateFormatString.replace('{0}', dateTimeFormatter.formatMonthDayYear(today, strings));\n }\n if (dateTimeFormatter && strings.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly ? dateTimeFormatter.formatMonthYear : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings.selectedDateFormatString.replace('{0}', dateStringFormatter(selectedDate, strings));\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n id: id,\n ref: forwardedRef,\n role: \"group\",\n \"aria-label\": selectionAndTodayString,\n className: classes.root,\n onKeyDown: onDatePickerPopupKeyDown\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.liveRegion,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, /*#__PURE__*/ React.createElement(\"span\", null, selectedDateString)), isDayPickerVisible && /*#__PURE__*/ React.createElement(CalendarDay, {\n selectedDate: selectedDate,\n navigatedDate: navigatedDay,\n today: today,\n onSelectDate: onDateSelected,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateDayDate,\n onDismiss: onDismiss,\n firstDayOfWeek: firstDayOfWeek,\n dateRangeType: dateRangeType,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n showWeekNumbers: showWeekNumbers,\n firstWeekOfYear: firstWeekOfYear,\n dateTimeFormatter: dateTimeFormatter,\n showSixWeeksByDefault: showSixWeeksByDefault,\n minDate: minDate,\n maxDate: maxDate,\n restrictedDates: restrictedDates,\n workWeekDays: workWeekDays,\n componentRef: dayPicker,\n showCloseButton: showCloseButton,\n allFocusable: allFocusable,\n ...calendarDayProps\n }), isDayPickerVisible && isMonthPickerVisible && /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.divider\n }), isMonthPickerVisible ? /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.monthPickerWrapper\n }, /*#__PURE__*/ React.createElement(CalendarMonth, {\n navigatedDate: navigatedMonth,\n selectedDate: navigatedDay,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateMonthDate,\n today: today,\n highlightCurrentMonth: highlightCurrentMonth,\n highlightSelectedMonth: highlightSelectedMonth,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n componentRef: monthPicker,\n ...calendarMonthProps\n }), renderGoToTodayButton()) : renderGoToTodayButton());\n});\nCalendar.displayName = 'Calendar';\nconst useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay })=>{\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n return showMonthPickerAsOverlay || isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY;\n};\n"],"names":["Calendar","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","DayOfWeek","Monday","Tuesday","Wednesday","Thursday","Friday","useDateState","props","value","today","todayProp","onSelectDate","React","useMemo","undefined","Date","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","showMonthPickerAsOverlayState","useShowMonthPickerAsOverlay","setIsMonthPickerVisible","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","targetDocument","useFluent","win","defaultView","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","DateRangeType","Day","dateTimeFormatter","DEFAULT_DATE_FORMATTING","firstDayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","DEFAULT_CALENDAR_STRINGS","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","createElement","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","Enter","Space","onDatePickerPopupKeyDown","preventDefault","Backspace","Escape","stopPropagation","PageUp","ctrlKey","addYears","addMonths","PageDown","useCalendarStyles_unstable","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","ref","role","root","liveRegion","CalendarDay","navigatedDate","onNavigateDate","divider","monthPickerWrapper","CalendarMonth","displayName","innerWidth"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["Calendar.js"],"sourcesContent":["import * as React from 'react';\nimport { Backspace, Enter, Escape, PageDown, PageUp, Space } from '@fluentui/keyboard-keys';\nimport { useControllableState } from '@fluentui/react-utilities';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync } from '../../utils';\nimport { CalendarDay } from '../CalendarDay/CalendarDay';\nimport { CalendarMonth } from '../CalendarMonth/CalendarMonth';\nimport { defaultNavigationIcons } from './calendarNavigationIcons';\nimport { useCalendarStyles_unstable } from './useCalendarStyles.styles';\nconst MIN_SIZE_FORCE_OVERLAY = 440;\nconst defaultWorkWeekDays = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday\n];\nfunction useDateState(props) {\n const { value, today: todayProp, onSelectDate } = props;\n const today = React.useMemo(()=>{\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [\n todayProp\n ]);\n /** The currently selected date in the calendar */ const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value\n });\n /** The currently focused date in the day picker, but not necessarily selected */ const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n /** The currently focused date in the month picker, but not necessarily selected */ const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n /** If using a controlled value, when that value changes, navigate to that date */ const [lastSelectedDate = today, setLastSelectedDate] = React.useState(value);\n if (value && lastSelectedDate.valueOf() !== value.valueOf()) {\n setNavigatedDay(value);\n setNavigatedMonth(value);\n setLastSelectedDate(value);\n }\n const navigateMonth = (date)=>{\n setNavigatedMonth(date);\n };\n const navigateDay = (date)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n const onDateSelected = (date, selectedDateRangeArray)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(date, selectedDateRangeArray);\n };\n return [\n selectedDate,\n navigatedDay,\n navigatedMonth,\n onDateSelected,\n navigateDay,\n navigateMonth\n ];\n}\nfunction useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {\n /** State used to show/hide month picker */ const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n });\n const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp\n });\n /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp\n });\n const toggleDayMonthPickerVisibility = ()=>{\n setIsMonthPickerVisible(!isMonthPickerVisible);\n setIsDayPickerVisible(!isDayPickerVisible);\n };\n return [\n isMonthPickerVisible,\n isDayPickerVisible,\n toggleDayMonthPickerVisibility\n ];\n}\nfunction useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisible) {\n const dayPicker = React.useRef(null);\n const monthPicker = React.useRef(null);\n const focusOnUpdate = React.useRef(false);\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const focus = React.useCallback(()=>{\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current, win);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current, win);\n }\n }, [\n isDayPickerVisible,\n isMonthPickerVisible,\n win\n ]);\n React.useImperativeHandle(componentRef, ()=>({\n focus\n }), [\n focus\n ]);\n React.useEffect(()=>{\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n const focusOnNextUpdate = ()=>{\n focusOnUpdate.current = true;\n };\n return [\n dayPicker,\n monthPicker,\n focusOnNextUpdate\n ];\n}\n/**\n * @internal\n */ export const Calendar = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{\n const { allFocusable = false, calendarDayProps, calendarMonthProps, className, componentRef, dateRangeType = DateRangeType.Day, dateTimeFormatter = DEFAULT_DATE_FORMATTING, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, highlightCurrentMonth = false, highlightSelectedMonth = false, id, isDayPickerVisible: isDayPickerVisibleProp = true, isMonthPickerVisible: isMonthPickerVisibleProp = true, maxDate, minDate, onDismiss, onSelectDate, restrictedDates, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay: showMonthPickerAsOverlayProp = false, showSixWeeksByDefault = false, showWeekNumbers = false, strings = DEFAULT_CALENDAR_STRINGS, today = new Date(), value, workWeekDays = defaultWorkWeekDays } = props;\n const [selectedDate, navigatedDay, navigatedMonth, onDateSelected, navigateDay, navigateMonth] = useDateState({\n onSelectDate,\n value,\n today\n });\n const [isMonthPickerVisible, isDayPickerVisible, toggleDayMonthPickerVisibility] = useVisibilityState({\n isDayPickerVisible: isDayPickerVisibleProp,\n isMonthPickerVisible: isMonthPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const [dayPicker, monthPicker, focusOnNextUpdate] = useFocusLogic({\n componentRef\n }, isDayPickerVisible, isMonthPickerVisible);\n const renderGoToTodayButton = ()=>{\n let goTodayEnabled = showGoToToday;\n if (goTodayEnabled && today) {\n goTodayEnabled = navigatedDay.getFullYear() !== today.getFullYear() || navigatedDay.getMonth() !== today.getMonth() || navigatedMonth.getFullYear() !== today.getFullYear() || navigatedMonth.getMonth() !== today.getMonth();\n }\n return showGoToToday && /*#__PURE__*/ React.createElement(\"button\", {\n className: classes.goTodayButton,\n onClick: onGotoToday,\n onKeyDown: onButtonKeyDown(onGotoToday),\n type: \"button\",\n disabled: !goTodayEnabled\n }, strings.goToToday);\n };\n const onNavigateDayDate = (date, focusOnNavigatedDay)=>{\n navigateDay(date);\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n };\n const onNavigateMonthDate = (date, focusOnNavigatedDay)=>{\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n if (!focusOnNavigatedDay) {\n navigateMonth(date);\n return;\n }\n if (monthPickerOnly) {\n onDateSelected(date);\n }\n navigateDay(date);\n };\n const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const onHeaderSelect = showMonthPickerAsOverlay ? ()=>{\n toggleDayMonthPickerVisibility();\n focusOnNextUpdate();\n } : undefined;\n const onGotoToday = ()=>{\n navigateDay(today);\n focusOnNextUpdate();\n };\n const onButtonKeyDown = (callback)=>{\n return (ev)=>{\n switch(ev.key){\n case Enter:\n case Space:\n callback();\n break;\n }\n };\n };\n const onDatePickerPopupKeyDown = (ev)=>{\n switch(ev.key){\n case Enter:\n ev.preventDefault();\n break;\n case Backspace:\n ev.preventDefault();\n break;\n case Escape:\n ev.stopPropagation();\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();\n break;\n case PageUp:\n if (ev.ctrlKey) {\n // go to next year\n navigateDay(addYears(navigatedDay, 1));\n } else {\n // go to next month\n navigateDay(addMonths(navigatedDay, 1));\n }\n ev.preventDefault();\n break;\n case PageDown:\n if (ev.ctrlKey) {\n // go to previous year\n navigateDay(addYears(navigatedDay, -1));\n } else {\n // go to previous month\n navigateDay(addMonths(navigatedDay, -1));\n }\n ev.preventDefault();\n break;\n default:\n break;\n }\n };\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers\n });\n let todayDateString = '';\n let selectedDateString = '';\n if (dateTimeFormatter && strings.todayDateFormatString) {\n todayDateString = strings.todayDateFormatString.replace('{0}', dateTimeFormatter.formatMonthDayYear(today, strings));\n }\n if (dateTimeFormatter && strings.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly ? dateTimeFormatter.formatMonthYear : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings.selectedDateFormatString.replace('{0}', dateStringFormatter(selectedDate, strings));\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n id: id,\n ref: forwardedRef,\n role: \"group\",\n \"aria-label\": selectionAndTodayString,\n className: classes.root,\n onKeyDown: onDatePickerPopupKeyDown\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.liveRegion,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, /*#__PURE__*/ React.createElement(\"span\", null, selectedDateString)), isDayPickerVisible && /*#__PURE__*/ React.createElement(CalendarDay, {\n selectedDate: selectedDate,\n navigatedDate: navigatedDay,\n today: today,\n onSelectDate: onDateSelected,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateDayDate,\n onDismiss: onDismiss,\n firstDayOfWeek: firstDayOfWeek,\n dateRangeType: dateRangeType,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n showWeekNumbers: showWeekNumbers,\n firstWeekOfYear: firstWeekOfYear,\n dateTimeFormatter: dateTimeFormatter,\n showSixWeeksByDefault: showSixWeeksByDefault,\n minDate: minDate,\n maxDate: maxDate,\n navigationIcons: defaultNavigationIcons,\n restrictedDates: restrictedDates,\n workWeekDays: workWeekDays,\n componentRef: dayPicker,\n showCloseButton: showCloseButton,\n allFocusable: allFocusable,\n ...calendarDayProps\n }), isDayPickerVisible && isMonthPickerVisible && /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.divider\n }), isMonthPickerVisible ? /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.monthPickerWrapper\n }, /*#__PURE__*/ React.createElement(CalendarMonth, {\n navigatedDate: navigatedMonth,\n selectedDate: navigatedDay,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateMonthDate,\n today: today,\n highlightCurrentMonth: highlightCurrentMonth,\n highlightSelectedMonth: highlightSelectedMonth,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n componentRef: monthPicker,\n navigationIcons: defaultNavigationIcons,\n ...calendarMonthProps\n }), renderGoToTodayButton()) : renderGoToTodayButton());\n});\nCalendar.displayName = 'Calendar';\nconst useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay })=>{\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n return showMonthPickerAsOverlay || isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY;\n};\n"],"names":["Calendar","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","DayOfWeek","Monday","Tuesday","Wednesday","Thursday","Friday","useDateState","props","value","today","todayProp","onSelectDate","React","useMemo","undefined","Date","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","showMonthPickerAsOverlayState","useShowMonthPickerAsOverlay","setIsMonthPickerVisible","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","targetDocument","useFluent","win","defaultView","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","DateRangeType","Day","dateTimeFormatter","DEFAULT_DATE_FORMATTING","firstDayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","DEFAULT_CALENDAR_STRINGS","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","createElement","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","Enter","Space","onDatePickerPopupKeyDown","preventDefault","Backspace","Escape","stopPropagation","PageUp","ctrlKey","addYears","addMonths","PageDown","useCalendarStyles_unstable","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","ref","role","root","liveRegion","CalendarDay","navigatedDate","onNavigateDate","navigationIcons","defaultNavigationIcons","divider","monthPickerWrapper","CalendarMonth","displayName","innerWidth"],"mappings":"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"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "defaultNavigationIcons", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return defaultNavigationIcons;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
12
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
13
|
+
const _reacticons = require("@fluentui/react-icons");
|
14
|
+
const defaultNavigationIcons = {
|
15
|
+
dismiss: /*#__PURE__*/ _react.createElement(_reacticons.DismissRegular, null),
|
16
|
+
downNavigation: /*#__PURE__*/ _react.createElement(_reacticons.ArrowDownRegular, null),
|
17
|
+
upNavigation: /*#__PURE__*/ _react.createElement(_reacticons.ArrowUpRegular, null)
|
18
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["calendarNavigationIcons.js"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDownRegular, ArrowUpRegular, DismissRegular } from '@fluentui/react-icons';\nexport const defaultNavigationIcons = {\n dismiss: /*#__PURE__*/ React.createElement(DismissRegular, null),\n downNavigation: /*#__PURE__*/ React.createElement(ArrowDownRegular, null),\n upNavigation: /*#__PURE__*/ React.createElement(ArrowUpRegular, null)\n};\n"],"names":["defaultNavigationIcons","dismiss","React","createElement","DismissRegular","downNavigation","ArrowDownRegular","upNavigation","ArrowUpRegular"],"mappings":";;;;+BAEaA;;;eAAAA;;;;iEAFU;4BAC0C;AAC1D,MAAMA,yBAAyB;IAClCC,SAAS,WAAW,GAAGC,OAAMC,aAAa,CAACC,0BAAc,EAAE;IAC3DC,gBAAgB,WAAW,GAAGH,OAAMC,aAAa,CAACG,4BAAgB,EAAE;IACpEC,cAAc,WAAW,GAAGL,OAAMC,aAAa,CAACK,0BAAc,EAAE;AACpE"}
|
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "CalendarDay", {
|
|
11
11
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
12
12
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
13
13
|
const _keyboardkeys = require("@fluentui/keyboard-keys");
|
14
|
-
const _reacticons = require("@fluentui/react-icons");
|
15
14
|
const _reactutilities = require("@fluentui/react-utilities");
|
16
15
|
const _react1 = require("@griffel/react");
|
17
16
|
const _utils = require("../../utils");
|
@@ -72,7 +71,7 @@ const CalendarDay = (props)=>{
|
|
72
71
|
};
|
73
72
|
CalendarDay.displayName = 'CalendarDay';
|
74
73
|
const CalendarDayNavigationButtons = (props)=>{
|
75
|
-
const { minDate, maxDate, navigatedDate, allFocusable, strings, showCloseButton, classNames, onNavigateDate, onDismiss } = props;
|
74
|
+
const { minDate, maxDate, navigatedDate, navigationIcons, allFocusable, strings, showCloseButton, classNames, onNavigateDate, onDismiss } = props;
|
76
75
|
const onSelectNextMonth = ()=>{
|
77
76
|
onNavigateDate((0, _utils.addMonths)(navigatedDate, 1), false);
|
78
77
|
};
|
@@ -94,7 +93,7 @@ const CalendarDayNavigationButtons = (props)=>{
|
|
94
93
|
onKeyDown: prevMonthInBounds ? onButtonKeyDown(onSelectPrevMonth) : undefined,
|
95
94
|
title: strings.prevMonthAriaLabel ? strings.prevMonthAriaLabel + ' ' + strings.months[(0, _utils.addMonths)(navigatedDate, -1).getMonth()] : undefined,
|
96
95
|
type: "button"
|
97
|
-
},
|
96
|
+
}, navigationIcons.upNavigation), /*#__PURE__*/ _react.createElement("button", {
|
98
97
|
className: (0, _react1.mergeClasses)(classNames.headerIconButton, !nextMonthInBounds && classNames.disabledStyle),
|
99
98
|
tabIndex: nextMonthInBounds ? undefined : allFocusable ? 0 : -1,
|
100
99
|
"aria-disabled": !nextMonthInBounds,
|
@@ -102,13 +101,13 @@ const CalendarDayNavigationButtons = (props)=>{
|
|
102
101
|
onKeyDown: nextMonthInBounds ? onButtonKeyDown(onSelectNextMonth) : undefined,
|
103
102
|
title: strings.nextMonthAriaLabel ? strings.nextMonthAriaLabel + ' ' + strings.months[(0, _utils.addMonths)(navigatedDate, 1).getMonth()] : undefined,
|
104
103
|
type: "button"
|
105
|
-
},
|
104
|
+
}, navigationIcons.downNavigation), showCloseButton && /*#__PURE__*/ _react.createElement("button", {
|
106
105
|
className: classNames.headerIconButton,
|
107
106
|
onClick: onDismiss,
|
108
107
|
onKeyDown: onButtonKeyDown(onDismiss),
|
109
108
|
title: strings.closeButtonAriaLabel,
|
110
109
|
type: "button"
|
111
|
-
},
|
110
|
+
}, navigationIcons.dismiss));
|
112
111
|
};
|
113
112
|
CalendarDayNavigationButtons.displayName = 'CalendarDayNavigationButtons';
|
114
113
|
const onButtonKeyDown = (callback)=>(ev)=>{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["CalendarDay.js"],"sourcesContent":["import * as React from 'react';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { ArrowDownRegular, ArrowUpRegular, DismissRegular } from '@fluentui/react-icons';\nimport { useId } from '@fluentui/react-utilities';\nimport { mergeClasses } from '@griffel/react';\nimport { addMonths, compareDatePart, getMonthEnd, getMonthStart } from '../../utils';\nimport { CalendarDayGrid } from '../CalendarDayGrid/CalendarDayGrid';\nimport { useCalendarDayStyles_unstable } from './useCalendarDayStyles.styles';\n/**\n * @internal\n */ export const CalendarDay = (props)=>{\n const dayGrid = React.useRef(null);\n React.useImperativeHandle(props.componentRef, ()=>({\n focus () {\n var _dayGrid_current_focus, _dayGrid_current;\n (_dayGrid_current = dayGrid.current) === null || _dayGrid_current === void 0 ? void 0 : (_dayGrid_current_focus = _dayGrid_current.focus) === null || _dayGrid_current_focus === void 0 ? void 0 : _dayGrid_current_focus.call(_dayGrid_current);\n }\n }), []);\n const { strings, navigatedDate, dateTimeFormatter, className, onHeaderSelect, showSixWeeksByDefault, minDate, maxDate, restrictedDates, onNavigateDate, showWeekNumbers, dateRangeType, animationDirection } = props;\n const monthAndYearId = useId();\n const classNames = useCalendarDayStyles_unstable({\n className,\n headerIsClickable: !!onHeaderSelect,\n showWeekNumbers,\n animationDirection\n });\n const monthAndYear = dateTimeFormatter.formatMonthYear(navigatedDate, strings);\n const HeaderButtonComponentType = onHeaderSelect ? 'button' : 'div';\n const headerAriaLabel = strings.yearPickerHeaderAriaLabel ? strings.yearPickerHeaderAriaLabel.replace('{0}', monthAndYear) : monthAndYear;\n const { ...propsWithoutStyles } = props;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.root\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.header\n }, /*#__PURE__*/ React.createElement(HeaderButtonComponentType, {\n \"aria-label\": onHeaderSelect ? headerAriaLabel : undefined,\n className: classNames.monthAndYear,\n onClick: onHeaderSelect,\n tabIndex: onHeaderSelect ? 0 : -1,\n onKeyDown: onButtonKeyDown(onHeaderSelect),\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(\"span\", {\n id: monthAndYearId,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, monthAndYear)), /*#__PURE__*/ React.createElement(CalendarDayNavigationButtons, {\n ...props,\n classNames: classNames\n })), /*#__PURE__*/ React.createElement(CalendarDayGrid, {\n ...propsWithoutStyles,\n componentRef: dayGrid,\n strings: strings,\n navigatedDate: navigatedDate,\n weeksToShow: showSixWeeksByDefault ? 6 : undefined,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n restrictedDates: restrictedDates,\n onNavigateDate: onNavigateDate,\n labelledBy: monthAndYearId,\n dateRangeType: dateRangeType\n }));\n};\nCalendarDay.displayName = 'CalendarDay';\nconst CalendarDayNavigationButtons = (props)=>{\n const { minDate, maxDate, navigatedDate, allFocusable, strings, showCloseButton, classNames, onNavigateDate, onDismiss } = props;\n const onSelectNextMonth = ()=>{\n onNavigateDate(addMonths(navigatedDate, 1), false);\n };\n const onSelectPrevMonth = ()=>{\n onNavigateDate(addMonths(navigatedDate, -1), false);\n };\n // determine if previous/next months are in bounds\n const prevMonthInBounds = minDate ? compareDatePart(minDate, getMonthStart(navigatedDate)) < 0 : true;\n const nextMonthInBounds = maxDate ? compareDatePart(getMonthEnd(navigatedDate), maxDate) < 0 : true;\n // use aria-disabled instead of disabled so focus is not lost\n // when a prev/next button becomes disabled after being clicked\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.monthComponents\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.headerIconButton, !prevMonthInBounds && classNames.disabledStyle),\n tabIndex: prevMonthInBounds ? undefined : allFocusable ? 0 : -1,\n \"aria-disabled\": !prevMonthInBounds,\n onClick: prevMonthInBounds ? onSelectPrevMonth : undefined,\n onKeyDown: prevMonthInBounds ? onButtonKeyDown(onSelectPrevMonth) : undefined,\n title: strings.prevMonthAriaLabel ? strings.prevMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, -1).getMonth()] : undefined,\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(ArrowUpRegular, null)), /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.headerIconButton, !nextMonthInBounds && classNames.disabledStyle),\n tabIndex: nextMonthInBounds ? undefined : allFocusable ? 0 : -1,\n \"aria-disabled\": !nextMonthInBounds,\n onClick: nextMonthInBounds ? onSelectNextMonth : undefined,\n onKeyDown: nextMonthInBounds ? onButtonKeyDown(onSelectNextMonth) : undefined,\n title: strings.nextMonthAriaLabel ? strings.nextMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, 1).getMonth()] : undefined,\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(ArrowDownRegular, null)), showCloseButton && /*#__PURE__*/ React.createElement(\"button\", {\n className: classNames.headerIconButton,\n onClick: onDismiss,\n onKeyDown: onButtonKeyDown(onDismiss),\n title: strings.closeButtonAriaLabel,\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(DismissRegular, null)));\n};\nCalendarDayNavigationButtons.displayName = 'CalendarDayNavigationButtons';\nconst onButtonKeyDown = (callback)=>(ev)=>{\n switch(ev.key){\n case Enter:\n callback === null || callback === void 0 ? void 0 : callback();\n break;\n }\n };\n"],"names":["CalendarDay","props","dayGrid","React","useRef","useImperativeHandle","componentRef","focus","_dayGrid_current_focus","_dayGrid_current","current","call","strings","navigatedDate","dateTimeFormatter","className","onHeaderSelect","showSixWeeksByDefault","minDate","maxDate","restrictedDates","onNavigateDate","showWeekNumbers","dateRangeType","animationDirection","monthAndYearId","useId","classNames","useCalendarDayStyles_unstable","headerIsClickable","monthAndYear","formatMonthYear","HeaderButtonComponentType","headerAriaLabel","yearPickerHeaderAriaLabel","replace","propsWithoutStyles","createElement","root","header","undefined","onClick","tabIndex","onKeyDown","onButtonKeyDown","type","id","CalendarDayNavigationButtons","CalendarDayGrid","weeksToShow","labelledBy","displayName","allFocusable","showCloseButton","onDismiss","onSelectNextMonth","addMonths","onSelectPrevMonth","prevMonthInBounds","compareDatePart","getMonthStart","nextMonthInBounds","getMonthEnd","monthComponents","mergeClasses","headerIconButton","disabledStyle","title","prevMonthAriaLabel","months","getMonth","ArrowUpRegular","nextMonthAriaLabel","ArrowDownRegular","closeButtonAriaLabel","DismissRegular","callback","ev","key","Enter"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["CalendarDay.js"],"sourcesContent":["import * as React from 'react';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { useId } from '@fluentui/react-utilities';\nimport { mergeClasses } from '@griffel/react';\nimport { addMonths, compareDatePart, getMonthEnd, getMonthStart } from '../../utils';\nimport { CalendarDayGrid } from '../CalendarDayGrid/CalendarDayGrid';\nimport { useCalendarDayStyles_unstable } from './useCalendarDayStyles.styles';\n/**\n * @internal\n */ export const CalendarDay = (props)=>{\n const dayGrid = React.useRef(null);\n React.useImperativeHandle(props.componentRef, ()=>({\n focus () {\n var _dayGrid_current_focus, _dayGrid_current;\n (_dayGrid_current = dayGrid.current) === null || _dayGrid_current === void 0 ? void 0 : (_dayGrid_current_focus = _dayGrid_current.focus) === null || _dayGrid_current_focus === void 0 ? void 0 : _dayGrid_current_focus.call(_dayGrid_current);\n }\n }), []);\n const { strings, navigatedDate, dateTimeFormatter, className, onHeaderSelect, showSixWeeksByDefault, minDate, maxDate, restrictedDates, onNavigateDate, showWeekNumbers, dateRangeType, animationDirection } = props;\n const monthAndYearId = useId();\n const classNames = useCalendarDayStyles_unstable({\n className,\n headerIsClickable: !!onHeaderSelect,\n showWeekNumbers,\n animationDirection\n });\n const monthAndYear = dateTimeFormatter.formatMonthYear(navigatedDate, strings);\n const HeaderButtonComponentType = onHeaderSelect ? 'button' : 'div';\n const headerAriaLabel = strings.yearPickerHeaderAriaLabel ? strings.yearPickerHeaderAriaLabel.replace('{0}', monthAndYear) : monthAndYear;\n const { ...propsWithoutStyles } = props;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.root\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.header\n }, /*#__PURE__*/ React.createElement(HeaderButtonComponentType, {\n \"aria-label\": onHeaderSelect ? headerAriaLabel : undefined,\n className: classNames.monthAndYear,\n onClick: onHeaderSelect,\n tabIndex: onHeaderSelect ? 0 : -1,\n onKeyDown: onButtonKeyDown(onHeaderSelect),\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(\"span\", {\n id: monthAndYearId,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, monthAndYear)), /*#__PURE__*/ React.createElement(CalendarDayNavigationButtons, {\n ...props,\n classNames: classNames\n })), /*#__PURE__*/ React.createElement(CalendarDayGrid, {\n ...propsWithoutStyles,\n componentRef: dayGrid,\n strings: strings,\n navigatedDate: navigatedDate,\n weeksToShow: showSixWeeksByDefault ? 6 : undefined,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n restrictedDates: restrictedDates,\n onNavigateDate: onNavigateDate,\n labelledBy: monthAndYearId,\n dateRangeType: dateRangeType\n }));\n};\nCalendarDay.displayName = 'CalendarDay';\nconst CalendarDayNavigationButtons = (props)=>{\n const { minDate, maxDate, navigatedDate, navigationIcons, allFocusable, strings, showCloseButton, classNames, onNavigateDate, onDismiss } = props;\n const onSelectNextMonth = ()=>{\n onNavigateDate(addMonths(navigatedDate, 1), false);\n };\n const onSelectPrevMonth = ()=>{\n onNavigateDate(addMonths(navigatedDate, -1), false);\n };\n // determine if previous/next months are in bounds\n const prevMonthInBounds = minDate ? compareDatePart(minDate, getMonthStart(navigatedDate)) < 0 : true;\n const nextMonthInBounds = maxDate ? compareDatePart(getMonthEnd(navigatedDate), maxDate) < 0 : true;\n // use aria-disabled instead of disabled so focus is not lost\n // when a prev/next button becomes disabled after being clicked\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.monthComponents\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.headerIconButton, !prevMonthInBounds && classNames.disabledStyle),\n tabIndex: prevMonthInBounds ? undefined : allFocusable ? 0 : -1,\n \"aria-disabled\": !prevMonthInBounds,\n onClick: prevMonthInBounds ? onSelectPrevMonth : undefined,\n onKeyDown: prevMonthInBounds ? onButtonKeyDown(onSelectPrevMonth) : undefined,\n title: strings.prevMonthAriaLabel ? strings.prevMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, -1).getMonth()] : undefined,\n type: \"button\"\n }, navigationIcons.upNavigation), /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.headerIconButton, !nextMonthInBounds && classNames.disabledStyle),\n tabIndex: nextMonthInBounds ? undefined : allFocusable ? 0 : -1,\n \"aria-disabled\": !nextMonthInBounds,\n onClick: nextMonthInBounds ? onSelectNextMonth : undefined,\n onKeyDown: nextMonthInBounds ? onButtonKeyDown(onSelectNextMonth) : undefined,\n title: strings.nextMonthAriaLabel ? strings.nextMonthAriaLabel + ' ' + strings.months[addMonths(navigatedDate, 1).getMonth()] : undefined,\n type: \"button\"\n }, navigationIcons.downNavigation), showCloseButton && /*#__PURE__*/ React.createElement(\"button\", {\n className: classNames.headerIconButton,\n onClick: onDismiss,\n onKeyDown: onButtonKeyDown(onDismiss),\n title: strings.closeButtonAriaLabel,\n type: \"button\"\n }, navigationIcons.dismiss));\n};\nCalendarDayNavigationButtons.displayName = 'CalendarDayNavigationButtons';\nconst onButtonKeyDown = (callback)=>(ev)=>{\n switch(ev.key){\n case Enter:\n callback === null || callback === void 0 ? void 0 : callback();\n break;\n }\n };\n"],"names":["CalendarDay","props","dayGrid","React","useRef","useImperativeHandle","componentRef","focus","_dayGrid_current_focus","_dayGrid_current","current","call","strings","navigatedDate","dateTimeFormatter","className","onHeaderSelect","showSixWeeksByDefault","minDate","maxDate","restrictedDates","onNavigateDate","showWeekNumbers","dateRangeType","animationDirection","monthAndYearId","useId","classNames","useCalendarDayStyles_unstable","headerIsClickable","monthAndYear","formatMonthYear","HeaderButtonComponentType","headerAriaLabel","yearPickerHeaderAriaLabel","replace","propsWithoutStyles","createElement","root","header","undefined","onClick","tabIndex","onKeyDown","onButtonKeyDown","type","id","CalendarDayNavigationButtons","CalendarDayGrid","weeksToShow","labelledBy","displayName","navigationIcons","allFocusable","showCloseButton","onDismiss","onSelectNextMonth","addMonths","onSelectPrevMonth","prevMonthInBounds","compareDatePart","getMonthStart","nextMonthInBounds","getMonthEnd","monthComponents","mergeClasses","headerIconButton","disabledStyle","title","prevMonthAriaLabel","months","getMonth","upNavigation","nextMonthAriaLabel","downNavigation","closeButtonAriaLabel","dismiss","callback","ev","key","Enter"],"mappings":";;;;+BASiBA;;;eAAAA;;;;iEATM;8BACD;gCACA;wBACO;uBAC0C;iCACvC;4CACc;AAGnC,MAAMA,cAAc,CAACC;IAC5B,MAAMC,UAAUC,OAAMC,MAAM,CAAC;IAC7BD,OAAME,mBAAmB,CAACJ,MAAMK,YAAY,EAAE,IAAK,CAAA;YAC3CC;gBACI,IAAIC,wBAAwBC;gBAC3BA,CAAAA,mBAAmBP,QAAQQ,OAAO,AAAD,MAAO,QAAQD,qBAAqB,KAAK,IAAI,KAAK,IAAI,AAACD,CAAAA,yBAAyBC,iBAAiBF,KAAK,AAAD,MAAO,QAAQC,2BAA2B,KAAK,IAAI,KAAK,IAAIA,uBAAuBG,IAAI,CAACF;YACnO;QACJ,CAAA,GAAI,EAAE;IACV,MAAM,EAAEG,OAAO,EAAEC,aAAa,EAAEC,iBAAiB,EAAEC,SAAS,EAAEC,cAAc,EAAEC,qBAAqB,EAAEC,OAAO,EAAEC,OAAO,EAAEC,eAAe,EAAEC,cAAc,EAAEC,eAAe,EAAEC,aAAa,EAAEC,kBAAkB,EAAE,GAAGvB;IAC/M,MAAMwB,iBAAiBC,IAAAA,qBAAK;IAC5B,MAAMC,aAAaC,IAAAA,yDAA6B,EAAC;QAC7Cb;QACAc,mBAAmB,CAAC,CAACb;QACrBM;QACAE;IACJ;IACA,MAAMM,eAAehB,kBAAkBiB,eAAe,CAAClB,eAAeD;IACtE,MAAMoB,4BAA4BhB,iBAAiB,WAAW;IAC9D,MAAMiB,kBAAkBrB,QAAQsB,yBAAyB,GAAGtB,QAAQsB,yBAAyB,CAACC,OAAO,CAAC,OAAOL,gBAAgBA;IAC7H,MAAM,EAAE,GAAGM,oBAAoB,GAAGnC;IAClC,OAAO,WAAW,GAAGE,OAAMkC,aAAa,CAAC,OAAO;QAC5CtB,WAAWY,WAAWW,IAAI;IAC9B,GAAG,WAAW,GAAGnC,OAAMkC,aAAa,CAAC,OAAO;QACxCtB,WAAWY,WAAWY,MAAM;IAChC,GAAG,WAAW,GAAGpC,OAAMkC,aAAa,CAACL,2BAA2B;QAC5D,cAAchB,iBAAiBiB,kBAAkBO;QACjDzB,WAAWY,WAAWG,YAAY;QAClCW,SAASzB;QACT0B,UAAU1B,iBAAiB,IAAI,CAAC;QAChC2B,WAAWC,gBAAgB5B;QAC3B6B,MAAM;IACV,GAAG,WAAW,GAAG1C,OAAMkC,aAAa,CAAC,QAAQ;QACzCS,IAAIrB;QACJ,aAAa;QACb,eAAe;IACnB,GAAGK,gBAAgB,WAAW,GAAG3B,OAAMkC,aAAa,CAACU,8BAA8B;QAC/E,GAAG9C,KAAK;QACR0B,YAAYA;IAChB,KAAK,WAAW,GAAGxB,OAAMkC,aAAa,CAACW,gCAAe,EAAE;QACpD,GAAGZ,kBAAkB;QACrB9B,cAAcJ;QACdU,SAASA;QACTC,eAAeA;QACfoC,aAAahC,wBAAwB,IAAIuB;QACzC1B,mBAAmBA;QACnBI,SAASA;QACTC,SAASA;QACTC,iBAAiBA;QACjBC,gBAAgBA;QAChB6B,YAAYzB;QACZF,eAAeA;IACnB;AACJ;AACAvB,YAAYmD,WAAW,GAAG;AAC1B,MAAMJ,+BAA+B,CAAC9C;IAClC,MAAM,EAAEiB,OAAO,EAAEC,OAAO,EAAEN,aAAa,EAAEuC,eAAe,EAAEC,YAAY,EAAEzC,OAAO,EAAE0C,eAAe,EAAE3B,UAAU,EAAEN,cAAc,EAAEkC,SAAS,EAAE,GAAGtD;IAC5I,MAAMuD,oBAAoB;QACtBnC,eAAeoC,IAAAA,gBAAS,EAAC5C,eAAe,IAAI;IAChD;IACA,MAAM6C,oBAAoB;QACtBrC,eAAeoC,IAAAA,gBAAS,EAAC5C,eAAe,CAAC,IAAI;IACjD;IACA,kDAAkD;IAClD,MAAM8C,oBAAoBzC,UAAU0C,IAAAA,sBAAe,EAAC1C,SAAS2C,IAAAA,oBAAa,EAAChD,kBAAkB,IAAI;IACjG,MAAMiD,oBAAoB3C,UAAUyC,IAAAA,sBAAe,EAACG,IAAAA,kBAAW,EAAClD,gBAAgBM,WAAW,IAAI;IAC/F,6DAA6D;IAC7D,+DAA+D;IAC/D,OAAO,WAAW,GAAGhB,OAAMkC,aAAa,CAAC,OAAO;QAC5CtB,WAAWY,WAAWqC,eAAe;IACzC,GAAG,WAAW,GAAG7D,OAAMkC,aAAa,CAAC,UAAU;QAC3CtB,WAAWkD,IAAAA,oBAAY,EAACtC,WAAWuC,gBAAgB,EAAE,CAACP,qBAAqBhC,WAAWwC,aAAa;QACnGzB,UAAUiB,oBAAoBnB,YAAYa,eAAe,IAAI,CAAC;QAC9D,iBAAiB,CAACM;QAClBlB,SAASkB,oBAAoBD,oBAAoBlB;QACjDG,WAAWgB,oBAAoBf,gBAAgBc,qBAAqBlB;QACpE4B,OAAOxD,QAAQyD,kBAAkB,GAAGzD,QAAQyD,kBAAkB,GAAG,MAAMzD,QAAQ0D,MAAM,CAACb,IAAAA,gBAAS,EAAC5C,eAAe,CAAC,GAAG0D,QAAQ,GAAG,GAAG/B;QACjIK,MAAM;IACV,GAAGO,gBAAgBoB,YAAY,GAAG,WAAW,GAAGrE,OAAMkC,aAAa,CAAC,UAAU;QAC1EtB,WAAWkD,IAAAA,oBAAY,EAACtC,WAAWuC,gBAAgB,EAAE,CAACJ,qBAAqBnC,WAAWwC,aAAa;QACnGzB,UAAUoB,oBAAoBtB,YAAYa,eAAe,IAAI,CAAC;QAC9D,iBAAiB,CAACS;QAClBrB,SAASqB,oBAAoBN,oBAAoBhB;QACjDG,WAAWmB,oBAAoBlB,gBAAgBY,qBAAqBhB;QACpE4B,OAAOxD,QAAQ6D,kBAAkB,GAAG7D,QAAQ6D,kBAAkB,GAAG,MAAM7D,QAAQ0D,MAAM,CAACb,IAAAA,gBAAS,EAAC5C,eAAe,GAAG0D,QAAQ,GAAG,GAAG/B;QAChIK,MAAM;IACV,GAAGO,gBAAgBsB,cAAc,GAAGpB,mBAAmB,WAAW,GAAGnD,OAAMkC,aAAa,CAAC,UAAU;QAC/FtB,WAAWY,WAAWuC,gBAAgB;QACtCzB,SAASc;QACTZ,WAAWC,gBAAgBW;QAC3Ba,OAAOxD,QAAQ+D,oBAAoB;QACnC9B,MAAM;IACV,GAAGO,gBAAgBwB,OAAO;AAC9B;AACA7B,6BAA6BI,WAAW,GAAG;AAC3C,MAAMP,kBAAkB,CAACiC,WAAW,CAACC;QAC7B,OAAOA,GAAGC,GAAG;YACT,KAAKC,mBAAK;gBACNH,aAAa,QAAQA,aAAa,KAAK,IAAI,KAAK,IAAIA;gBACpD;QACR;IACJ"}
|
@@ -11,8 +11,6 @@ Object.defineProperty(exports, "CalendarMonth", {
|
|
11
11
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
12
12
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
13
13
|
const _keyboardkeys = require("@fluentui/keyboard-keys");
|
14
|
-
const _reacticons = require("@fluentui/react-icons");
|
15
|
-
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
|
16
14
|
const _reacttabster = require("@fluentui/react-tabster");
|
17
15
|
const _react1 = require("@griffel/react");
|
18
16
|
const _utils = require("../../utils");
|
@@ -64,7 +62,7 @@ function useFocusLogic({ componentRef }) {
|
|
64
62
|
];
|
65
63
|
}
|
66
64
|
const CalendarMonth = (props)=>{
|
67
|
-
const { allFocusable, animationDirection, className, componentRef, dateTimeFormatter = _utils.DEFAULT_DATE_FORMATTING, highlightCurrentMonth, highlightSelectedMonth, maxDate, minDate, navigatedDate, onHeaderSelect: onUserHeaderSelect, onNavigateDate, selectedDate, strings, today = new Date(), yearPickerHidden = false } = props;
|
65
|
+
const { allFocusable, animationDirection, className, componentRef, dateTimeFormatter = _utils.DEFAULT_DATE_FORMATTING, highlightCurrentMonth, highlightSelectedMonth, maxDate, minDate, navigatedDate, navigationIcons, onHeaderSelect: onUserHeaderSelect, onNavigateDate, selectedDate, strings, today = new Date(), yearPickerHidden = false } = props;
|
68
66
|
const [navigatedMonthRef, calendarYearRef, focusOnNextUpdate] = useFocusLogic({
|
69
67
|
componentRef
|
70
68
|
});
|
@@ -127,7 +125,6 @@ const CalendarMonth = (props)=>{
|
|
127
125
|
animateBackwards,
|
128
126
|
animationDirection
|
129
127
|
});
|
130
|
-
const { dir } = (0, _reactsharedcontexts.useFluent_unstable)();
|
131
128
|
const arrowNavigationAttributes = (0, _reacttabster.useArrowNavigationGroup)({
|
132
129
|
axis: 'both'
|
133
130
|
});
|
@@ -148,6 +145,7 @@ const CalendarMonth = (props)=>{
|
|
148
145
|
onHeaderSelect: onYearPickerHeaderSelect,
|
149
146
|
selectedYear: selectedDate ? selectedDate.getFullYear() : navigatedDate ? navigatedDate.getFullYear() : undefined,
|
150
147
|
navigatedYear: navigatedDate.getFullYear(),
|
148
|
+
navigationIcons: navigationIcons,
|
151
149
|
onRenderYear: onRenderYear,
|
152
150
|
strings: yearStrings,
|
153
151
|
componentRef: calendarYearRef,
|
@@ -186,7 +184,7 @@ const CalendarMonth = (props)=>{
|
|
186
184
|
onKeyDown: isPrevYearInBounds ? onButtonKeyDown(onSelectPrevYear) : undefined,
|
187
185
|
title: strings.prevYearAriaLabel ? strings.prevYearAriaLabel + ' ' + dateFormatter.formatYear((0, _utils.addYears)(navigatedDate, -1)) : undefined,
|
188
186
|
type: "button"
|
189
|
-
},
|
187
|
+
}, navigationIcons.upNavigation), /*#__PURE__*/ _react.createElement("button", {
|
190
188
|
className: (0, _react1.mergeClasses)(classNames.navigationButton, !isNextYearInBounds && classNames.disabled),
|
191
189
|
"aria-disabled": !isNextYearInBounds,
|
192
190
|
tabIndex: isNextYearInBounds ? undefined : allFocusable ? 0 : -1,
|
@@ -194,7 +192,7 @@ const CalendarMonth = (props)=>{
|
|
194
192
|
onKeyDown: isNextYearInBounds ? onButtonKeyDown(onSelectNextYear) : undefined,
|
195
193
|
title: strings.nextYearAriaLabel ? strings.nextYearAriaLabel + ' ' + dateFormatter.formatYear((0, _utils.addYears)(navigatedDate, 1)) : undefined,
|
196
194
|
type: "button"
|
197
|
-
},
|
195
|
+
}, navigationIcons.downNavigation))), /*#__PURE__*/ _react.createElement("div", {
|
198
196
|
...arrowNavigationAttributes,
|
199
197
|
className: classNames.gridContainer,
|
200
198
|
role: "grid",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["CalendarMonth.js"],"sourcesContent":["import * as React from 'react';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { ArrowDownRegular, ArrowUpRegular } from '@fluentui/react-icons';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { mergeClasses } from '@griffel/react';\nimport { addYears, compareDatePart, getMonthEnd, getMonthStart, getYearEnd, getYearStart, setMonth, DEFAULT_DATE_FORMATTING } from '../../utils';\nimport { CalendarYear } from '../CalendarYear/CalendarYear';\nimport { useCalendarMonthStyles_unstable } from './useCalendarMonthStyles';\nconst MONTHS_PER_ROW = 4;\nfunction useAnimateBackwards({ navigatedDate }) {\n const currentYear = navigatedDate.getFullYear();\n const previousYearRef = React.useRef();\n React.useEffect(()=>{\n previousYearRef.current = currentYear;\n });\n const previousYear = previousYearRef.current;\n if (previousYear === undefined || previousYear === currentYear) {\n return undefined;\n } else {\n return previousYear > currentYear;\n }\n}\nfunction useFocusLogic({ componentRef }) {\n const navigatedMonthRef = React.useRef(null);\n const calendarYearRef = React.useRef(null);\n const focusOnUpdate = React.useRef(false);\n const focus = React.useCallback(()=>{\n if (calendarYearRef.current) {\n calendarYearRef.current.focus();\n } else if (navigatedMonthRef.current) {\n navigatedMonthRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(componentRef, ()=>({\n focus\n }), [\n focus\n ]);\n React.useEffect(()=>{\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n const focusOnNextUpdate = ()=>{\n focusOnUpdate.current = true;\n };\n return [\n navigatedMonthRef,\n calendarYearRef,\n focusOnNextUpdate\n ];\n}\n/**\n * @internal\n */ export const CalendarMonth = (props)=>{\n const { allFocusable, animationDirection, className, componentRef, dateTimeFormatter = DEFAULT_DATE_FORMATTING, highlightCurrentMonth, highlightSelectedMonth, maxDate, minDate, navigatedDate, onHeaderSelect: onUserHeaderSelect, onNavigateDate, selectedDate, strings, today = new Date(), yearPickerHidden = false } = props;\n const [navigatedMonthRef, calendarYearRef, focusOnNextUpdate] = useFocusLogic({\n componentRef\n });\n const [isYearPickerVisible, setIsYearPickerVisible] = React.useState(false);\n const animateBackwards = useAnimateBackwards({\n navigatedDate\n });\n const selectMonthCallback = (newMonth)=>{\n return ()=>onSelectMonth(newMonth);\n };\n const onSelectNextYear = ()=>{\n onNavigateDate(addYears(navigatedDate, 1), false);\n };\n const onSelectPrevYear = ()=>{\n onNavigateDate(addYears(navigatedDate, -1), false);\n };\n const onSelectMonth = (newMonth)=>{\n // If header is clickable the calendars are overlayed, switch back to day picker when month is clicked\n onUserHeaderSelect === null || onUserHeaderSelect === void 0 ? void 0 : onUserHeaderSelect();\n onNavigateDate(setMonth(navigatedDate, newMonth), true);\n };\n const onHeaderSelect = ()=>{\n if (!yearPickerHidden) {\n focusOnNextUpdate();\n setIsYearPickerVisible(true);\n } else {\n onUserHeaderSelect === null || onUserHeaderSelect === void 0 ? void 0 : onUserHeaderSelect();\n }\n };\n const onSelectYear = (selectedYear)=>{\n focusOnNextUpdate();\n const navYear = navigatedDate.getFullYear();\n if (navYear !== selectedYear) {\n let newNavigationDate = new Date(navigatedDate.getTime());\n newNavigationDate.setFullYear(selectedYear);\n // for min and max dates, adjust the new navigation date - perhaps this should be\n // checked on the master navigation date handler (i.e. in Calendar)\n if (maxDate && newNavigationDate > maxDate) {\n newNavigationDate = setMonth(newNavigationDate, maxDate.getMonth());\n } else if (minDate && newNavigationDate < minDate) {\n newNavigationDate = setMonth(newNavigationDate, minDate.getMonth());\n }\n onNavigateDate(newNavigationDate, true);\n }\n setIsYearPickerVisible(false);\n };\n const onYearPickerHeaderSelect = (focus)=>{\n focusOnNextUpdate();\n setIsYearPickerVisible(false);\n };\n const dateFormatter = dateTimeFormatter;\n // determine if previous/next years are in bounds\n const isPrevYearInBounds = minDate ? compareDatePart(minDate, getYearStart(navigatedDate)) < 0 : true;\n const isNextYearInBounds = maxDate ? compareDatePart(getYearEnd(navigatedDate), maxDate) < 0 : true;\n const classNames = useCalendarMonthStyles_unstable({\n className,\n hasHeaderClickCallback: !!onUserHeaderSelect || !yearPickerHidden,\n highlightCurrent: highlightCurrentMonth,\n highlightSelected: highlightSelectedMonth,\n animateBackwards,\n animationDirection\n });\n const { dir } = useFluent_unstable();\n const arrowNavigationAttributes = useArrowNavigationGroup({\n axis: 'both'\n });\n if (isYearPickerVisible) {\n const [onRenderYear, yearStrings] = getYearStrings({\n dateTimeFormatter,\n navigatedDate,\n strings\n });\n // use navigated date for the year picker\n return /*#__PURE__*/ React.createElement(CalendarYear, {\n key: 'calendarYear',\n minYear: minDate ? minDate.getFullYear() : undefined,\n maxYear: maxDate ? maxDate.getFullYear() : undefined,\n // eslint-disable-next-line react/jsx-no-bind\n onSelectYear: onSelectYear,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onYearPickerHeaderSelect,\n selectedYear: selectedDate ? selectedDate.getFullYear() : navigatedDate ? navigatedDate.getFullYear() : undefined,\n navigatedYear: navigatedDate.getFullYear(),\n onRenderYear: onRenderYear,\n strings: yearStrings,\n componentRef: calendarYearRef,\n highlightCurrentYear: highlightCurrentMonth,\n highlightSelectedYear: highlightSelectedMonth,\n animationDirection: animationDirection\n });\n }\n const rowIndexes = [];\n for(let i = 0; i < strings.shortMonths.length / MONTHS_PER_ROW; i++){\n rowIndexes.push(i);\n }\n const yearString = dateFormatter.formatYear(navigatedDate);\n const headerAriaLabel = strings.monthPickerHeaderAriaLabel ? strings.monthPickerHeaderAriaLabel.replace('{0}', yearString) : yearString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.root\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.headerContainer\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: classNames.currentItemButton,\n onClick: onHeaderSelect,\n onKeyDown: onButtonKeyDown(onHeaderSelect),\n \"aria-label\": headerAriaLabel,\n tabIndex: !!onUserHeaderSelect || !yearPickerHidden ? 0 : -1,\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(\"span\", {\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, yearString)), /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.navigationButtonsContainer\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.navigationButton, !isPrevYearInBounds && classNames.disabled),\n \"aria-disabled\": !isPrevYearInBounds,\n tabIndex: isPrevYearInBounds ? undefined : allFocusable ? 0 : -1,\n onClick: isPrevYearInBounds ? onSelectPrevYear : undefined,\n onKeyDown: isPrevYearInBounds ? onButtonKeyDown(onSelectPrevYear) : undefined,\n title: strings.prevYearAriaLabel ? strings.prevYearAriaLabel + ' ' + dateFormatter.formatYear(addYears(navigatedDate, -1)) : undefined,\n type: \"button\"\n }, dir === 'ltr' ? /*#__PURE__*/ React.createElement(ArrowUpRegular, null) : /*#__PURE__*/ React.createElement(ArrowDownRegular, null)), /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.navigationButton, !isNextYearInBounds && classNames.disabled),\n \"aria-disabled\": !isNextYearInBounds,\n tabIndex: isNextYearInBounds ? undefined : allFocusable ? 0 : -1,\n onClick: isNextYearInBounds ? onSelectNextYear : undefined,\n onKeyDown: isNextYearInBounds ? onButtonKeyDown(onSelectNextYear) : undefined,\n title: strings.nextYearAriaLabel ? strings.nextYearAriaLabel + ' ' + dateFormatter.formatYear(addYears(navigatedDate, 1)) : undefined,\n type: \"button\"\n }, dir === 'ltr' ? /*#__PURE__*/ React.createElement(ArrowDownRegular, null) : /*#__PURE__*/ React.createElement(ArrowUpRegular, null)))), /*#__PURE__*/ React.createElement(\"div\", {\n ...arrowNavigationAttributes,\n className: classNames.gridContainer,\n role: \"grid\",\n \"aria-label\": yearString\n }, rowIndexes.map((rowNum)=>{\n const monthsForRow = strings.shortMonths.slice(rowNum * MONTHS_PER_ROW, (rowNum + 1) * MONTHS_PER_ROW);\n return /*#__PURE__*/ React.createElement(\"div\", {\n key: 'monthRow_' + rowNum + navigatedDate.getFullYear(),\n role: \"row\",\n className: classNames.buttonRow\n }, monthsForRow.map((month, index)=>{\n const monthIndex = rowNum * MONTHS_PER_ROW + index;\n const indexedMonth = setMonth(navigatedDate, monthIndex);\n const isNavigatedMonth = navigatedDate.getMonth() === monthIndex;\n const isSelectedMonth = selectedDate.getMonth() === monthIndex;\n const isSelectedYear = selectedDate.getFullYear() === navigatedDate.getFullYear();\n const isInBounds = (minDate ? compareDatePart(minDate, getMonthEnd(indexedMonth)) < 1 : true) && (maxDate ? compareDatePart(getMonthStart(indexedMonth), maxDate) < 1 : true);\n return /*#__PURE__*/ React.createElement(\"button\", {\n ref: isNavigatedMonth ? navigatedMonthRef : undefined,\n role: 'gridcell',\n className: mergeClasses(classNames.itemButton, highlightCurrentMonth && isCurrentMonth(monthIndex, navigatedDate.getFullYear(), today) && classNames.current, highlightSelectedMonth && isSelectedMonth && isSelectedYear && classNames.selected, !isInBounds && classNames.disabled),\n disabled: !allFocusable && !isInBounds,\n key: monthIndex,\n onClick: isInBounds ? selectMonthCallback(monthIndex) : undefined,\n onKeyDown: isInBounds ? onButtonKeyDown(selectMonthCallback(monthIndex)) : undefined,\n \"aria-label\": dateFormatter.formatMonth(indexedMonth, strings),\n \"aria-selected\": isNavigatedMonth,\n tabIndex: isInBounds ? 0 : -1,\n type: \"button\"\n }, month);\n }));\n })));\n};\nCalendarMonth.displayName = 'CalendarMonth';\nfunction getYearStrings({ dateTimeFormatter, navigatedDate, strings }) {\n const yearToString = (year)=>{\n if (dateTimeFormatter) {\n // create a date based on the current nav date\n const yearFormattingDate = new Date(navigatedDate.getTime());\n yearFormattingDate.setFullYear(year);\n return dateTimeFormatter.formatYear(yearFormattingDate);\n }\n return String(year);\n };\n const yearRangeToString = (yearRange)=>{\n return `${yearToString(yearRange.fromYear)} - ${yearToString(yearRange.toYear)}`;\n };\n const yearRangeToNextDecadeLabel = (yearRange)=>{\n return strings.nextYearRangeAriaLabel ? `${strings.nextYearRangeAriaLabel} ${yearRangeToString(yearRange)}` : '';\n };\n const yearRangeToPrevDecadeLabel = (yearRange)=>{\n return strings.prevYearRangeAriaLabel ? `${strings.prevYearRangeAriaLabel} ${yearRangeToString(yearRange)}` : '';\n };\n return [\n yearToString,\n {\n rangeAriaLabel: yearRangeToString,\n prevRangeAriaLabel: yearRangeToPrevDecadeLabel,\n nextRangeAriaLabel: yearRangeToNextDecadeLabel,\n headerAriaLabelFormatString: strings.yearPickerHeaderAriaLabel\n }\n ];\n}\nfunction isCurrentMonth(month, year, today) {\n return today.getFullYear() === year && today.getMonth() === month;\n}\nfunction onButtonKeyDown(callback) {\n return (ev)=>{\n switch(ev.key){\n case Enter:\n callback();\n break;\n }\n };\n}\n"],"names":["CalendarMonth","MONTHS_PER_ROW","useAnimateBackwards","navigatedDate","currentYear","getFullYear","previousYearRef","React","useRef","useEffect","current","previousYear","undefined","useFocusLogic","componentRef","navigatedMonthRef","calendarYearRef","focusOnUpdate","focus","useCallback","useImperativeHandle","focusOnNextUpdate","props","allFocusable","animationDirection","className","dateTimeFormatter","DEFAULT_DATE_FORMATTING","highlightCurrentMonth","highlightSelectedMonth","maxDate","minDate","onHeaderSelect","onUserHeaderSelect","onNavigateDate","selectedDate","strings","today","Date","yearPickerHidden","isYearPickerVisible","setIsYearPickerVisible","useState","animateBackwards","selectMonthCallback","newMonth","onSelectMonth","onSelectNextYear","addYears","onSelectPrevYear","setMonth","onSelectYear","selectedYear","navYear","newNavigationDate","getTime","setFullYear","getMonth","onYearPickerHeaderSelect","dateFormatter","isPrevYearInBounds","compareDatePart","getYearStart","isNextYearInBounds","getYearEnd","classNames","useCalendarMonthStyles_unstable","hasHeaderClickCallback","highlightCurrent","highlightSelected","dir","useFluent_unstable","arrowNavigationAttributes","useArrowNavigationGroup","axis","onRenderYear","yearStrings","getYearStrings","createElement","CalendarYear","key","minYear","maxYear","navigatedYear","highlightCurrentYear","highlightSelectedYear","rowIndexes","i","shortMonths","length","push","yearString","formatYear","headerAriaLabel","monthPickerHeaderAriaLabel","replace","root","headerContainer","currentItemButton","onClick","onKeyDown","onButtonKeyDown","tabIndex","type","navigationButtonsContainer","mergeClasses","navigationButton","disabled","title","prevYearAriaLabel","ArrowUpRegular","ArrowDownRegular","nextYearAriaLabel","gridContainer","role","map","rowNum","monthsForRow","slice","buttonRow","month","index","monthIndex","indexedMonth","isNavigatedMonth","isSelectedMonth","isSelectedYear","isInBounds","getMonthEnd","getMonthStart","ref","itemButton","isCurrentMonth","selected","formatMonth","displayName","yearToString","year","yearFormattingDate","String","yearRangeToString","yearRange","fromYear","toYear","yearRangeToNextDecadeLabel","nextYearRangeAriaLabel","yearRangeToPrevDecadeLabel","prevYearRangeAriaLabel","rangeAriaLabel","prevRangeAriaLabel","nextRangeAriaLabel","headerAriaLabelFormatString","yearPickerHeaderAriaLabel","callback","ev","Enter"],"mappings":";;;;+BAwDiBA;;;eAAAA;;;;iEAxDM;8BACD;4BAC2B;qCACd;8BACK;wBACX;uBACsG;8BACtG;wCACmB;AAChD,MAAMC,iBAAiB;AACvB,SAASC,oBAAoB,EAAEC,aAAa,EAAE;IAC1C,MAAMC,cAAcD,cAAcE,WAAW;IAC7C,MAAMC,kBAAkBC,OAAMC,MAAM;IACpCD,OAAME,SAAS,CAAC;QACZH,gBAAgBI,OAAO,GAAGN;IAC9B;IACA,MAAMO,eAAeL,gBAAgBI,OAAO;IAC5C,IAAIC,iBAAiBC,aAAaD,iBAAiBP,aAAa;QAC5D,OAAOQ;IACX,OAAO;QACH,OAAOD,eAAeP;IAC1B;AACJ;AACA,SAASS,cAAc,EAAEC,YAAY,EAAE;IACnC,MAAMC,oBAAoBR,OAAMC,MAAM,CAAC;IACvC,MAAMQ,kBAAkBT,OAAMC,MAAM,CAAC;IACrC,MAAMS,gBAAgBV,OAAMC,MAAM,CAAC;IACnC,MAAMU,QAAQX,OAAMY,WAAW,CAAC;QAC5B,IAAIH,gBAAgBN,OAAO,EAAE;YACzBM,gBAAgBN,OAAO,CAACQ,KAAK;QACjC,OAAO,IAAIH,kBAAkBL,OAAO,EAAE;YAClCK,kBAAkBL,OAAO,CAACQ,KAAK;QACnC;IACJ,GAAG,EAAE;IACLX,OAAMa,mBAAmB,CAACN,cAAc,IAAK,CAAA;YACrCI;QACJ,CAAA,GAAI;QACJA;KACH;IACDX,OAAME,SAAS,CAAC;QACZ,IAAIQ,cAAcP,OAAO,EAAE;YACvBQ;YACAD,cAAcP,OAAO,GAAG;QAC5B;IACJ;IACA,MAAMW,oBAAoB;QACtBJ,cAAcP,OAAO,GAAG;IAC5B;IACA,OAAO;QACHK;QACAC;QACAK;KACH;AACL;AAGW,MAAMrB,gBAAgB,CAACsB;IAC9B,MAAM,EAAEC,YAAY,EAAEC,kBAAkB,EAAEC,SAAS,EAAEX,YAAY,EAAEY,oBAAoBC,8BAAuB,EAAEC,qBAAqB,EAAEC,sBAAsB,EAAEC,OAAO,EAAEC,OAAO,EAAE5B,aAAa,EAAE6B,gBAAgBC,kBAAkB,EAAEC,cAAc,EAAEC,YAAY,EAAEC,OAAO,EAAEC,QAAQ,IAAIC,MAAM,EAAEC,mBAAmB,KAAK,EAAE,GAAGjB;IAC5T,MAAM,CAACP,mBAAmBC,iBAAiBK,kBAAkB,GAAGR,cAAc;QAC1EC;IACJ;IACA,MAAM,CAAC0B,qBAAqBC,uBAAuB,GAAGlC,OAAMmC,QAAQ,CAAC;IACrE,MAAMC,mBAAmBzC,oBAAoB;QACzCC;IACJ;IACA,MAAMyC,sBAAsB,CAACC;QACzB,OAAO,IAAIC,cAAcD;IAC7B;IACA,MAAME,mBAAmB;QACrBb,eAAec,IAAAA,eAAQ,EAAC7C,eAAe,IAAI;IAC/C;IACA,MAAM8C,mBAAmB;QACrBf,eAAec,IAAAA,eAAQ,EAAC7C,eAAe,CAAC,IAAI;IAChD;IACA,MAAM2C,gBAAgB,CAACD;QACnB,sGAAsG;QACtGZ,uBAAuB,QAAQA,uBAAuB,KAAK,IAAI,KAAK,IAAIA;QACxEC,eAAegB,IAAAA,eAAQ,EAAC/C,eAAe0C,WAAW;IACtD;IACA,MAAMb,iBAAiB;QACnB,IAAI,CAACO,kBAAkB;YACnBlB;YACAoB,uBAAuB;QAC3B,OAAO;YACHR,uBAAuB,QAAQA,uBAAuB,KAAK,IAAI,KAAK,IAAIA;QAC5E;IACJ;IACA,MAAMkB,eAAe,CAACC;QAClB/B;QACA,MAAMgC,UAAUlD,cAAcE,WAAW;QACzC,IAAIgD,YAAYD,cAAc;YAC1B,IAAIE,oBAAoB,IAAIhB,KAAKnC,cAAcoD,OAAO;YACtDD,kBAAkBE,WAAW,CAACJ;YAC9B,iFAAiF;YACjF,mEAAmE;YACnE,IAAItB,WAAWwB,oBAAoBxB,SAAS;gBACxCwB,oBAAoBJ,IAAAA,eAAQ,EAACI,mBAAmBxB,QAAQ2B,QAAQ;YACpE,OAAO,IAAI1B,WAAWuB,oBAAoBvB,SAAS;gBAC/CuB,oBAAoBJ,IAAAA,eAAQ,EAACI,mBAAmBvB,QAAQ0B,QAAQ;YACpE;YACAvB,eAAeoB,mBAAmB;QACtC;QACAb,uBAAuB;IAC3B;IACA,MAAMiB,2BAA2B,CAACxC;QAC9BG;QACAoB,uBAAuB;IAC3B;IACA,MAAMkB,gBAAgBjC;IACtB,iDAAiD;IACjD,MAAMkC,qBAAqB7B,UAAU8B,IAAAA,sBAAe,EAAC9B,SAAS+B,IAAAA,mBAAY,EAAC3D,kBAAkB,IAAI;IACjG,MAAM4D,qBAAqBjC,UAAU+B,IAAAA,sBAAe,EAACG,IAAAA,iBAAU,EAAC7D,gBAAgB2B,WAAW,IAAI;IAC/F,MAAMmC,aAAaC,IAAAA,uDAA+B,EAAC;QAC/CzC;QACA0C,wBAAwB,CAAC,CAAClC,sBAAsB,CAACM;QACjD6B,kBAAkBxC;QAClByC,mBAAmBxC;QACnBc;QACAnB;IACJ;IACA,MAAM,EAAE8C,GAAG,EAAE,GAAGC,IAAAA,uCAAkB;IAClC,MAAMC,4BAA4BC,IAAAA,qCAAuB,EAAC;QACtDC,MAAM;IACV;IACA,IAAIlC,qBAAqB;QACrB,MAAM,CAACmC,cAAcC,YAAY,GAAGC,eAAe;YAC/CnD;YACAvB;YACAiC;QACJ;QACA,yCAAyC;QACzC,OAAO,WAAW,GAAG7B,OAAMuE,aAAa,CAACC,0BAAY,EAAE;YACnDC,KAAK;YACLC,SAASlD,UAAUA,QAAQ1B,WAAW,KAAKO;YAC3CsE,SAASpD,UAAUA,QAAQzB,WAAW,KAAKO;YAC3C,6CAA6C;YAC7CuC,cAAcA;YACd,6CAA6C;YAC7CnB,gBAAgB0B;YAChBN,cAAcjB,eAAeA,aAAa9B,WAAW,KAAKF,gBAAgBA,cAAcE,WAAW,KAAKO;YACxGuE,eAAehF,cAAcE,WAAW;YACxCsE,cAAcA;YACdvC,SAASwC;YACT9D,cAAcE;YACdoE,sBAAsBxD;YACtByD,uBAAuBxD;YACvBL,oBAAoBA;QACxB;IACJ;IACA,MAAM8D,aAAa,EAAE;IACrB,IAAI,IAAIC,IAAI,GAAGA,IAAInD,QAAQoD,WAAW,CAACC,MAAM,GAAGxF,gBAAgBsF,IAAI;QAChED,WAAWI,IAAI,CAACH;IACpB;IACA,MAAMI,aAAahC,cAAciC,UAAU,CAACzF;IAC5C,MAAM0F,kBAAkBzD,QAAQ0D,0BAA0B,GAAG1D,QAAQ0D,0BAA0B,CAACC,OAAO,CAAC,OAAOJ,cAAcA;IAC7H,OAAO,WAAW,GAAGpF,OAAMuE,aAAa,CAAC,OAAO;QAC5CrD,WAAWwC,WAAW+B,IAAI;IAC9B,GAAG,WAAW,GAAGzF,OAAMuE,aAAa,CAAC,OAAO;QACxCrD,WAAWwC,WAAWgC,eAAe;IACzC,GAAG,WAAW,GAAG1F,OAAMuE,aAAa,CAAC,UAAU;QAC3CrD,WAAWwC,WAAWiC,iBAAiB;QACvCC,SAASnE;QACToE,WAAWC,gBAAgBrE;QAC3B,cAAc6D;QACdS,UAAU,CAAC,CAACrE,sBAAsB,CAACM,mBAAmB,IAAI,CAAC;QAC3DgE,MAAM;IACV,GAAG,WAAW,GAAGhG,OAAMuE,aAAa,CAAC,QAAQ;QACzC,aAAa;QACb,eAAe;IACnB,GAAGa,cAAc,WAAW,GAAGpF,OAAMuE,aAAa,CAAC,OAAO;QACtDrD,WAAWwC,WAAWuC,0BAA0B;IACpD,GAAG,WAAW,GAAGjG,OAAMuE,aAAa,CAAC,UAAU;QAC3CrD,WAAWgF,IAAAA,oBAAY,EAACxC,WAAWyC,gBAAgB,EAAE,CAAC9C,sBAAsBK,WAAW0C,QAAQ;QAC/F,iBAAiB,CAAC/C;QAClB0C,UAAU1C,qBAAqBhD,YAAYW,eAAe,IAAI,CAAC;QAC/D4E,SAASvC,qBAAqBX,mBAAmBrC;QACjDwF,WAAWxC,qBAAqByC,gBAAgBpD,oBAAoBrC;QACpEgG,OAAOxE,QAAQyE,iBAAiB,GAAGzE,QAAQyE,iBAAiB,GAAG,MAAMlD,cAAciC,UAAU,CAAC5C,IAAAA,eAAQ,EAAC7C,eAAe,CAAC,MAAMS;QAC7H2F,MAAM;IACV,GAAGjC,QAAQ,QAAQ,WAAW,GAAG/D,OAAMuE,aAAa,CAACgC,0BAAc,EAAE,QAAQ,WAAW,GAAGvG,OAAMuE,aAAa,CAACiC,4BAAgB,EAAE,QAAQ,WAAW,GAAGxG,OAAMuE,aAAa,CAAC,UAAU;QACjLrD,WAAWgF,IAAAA,oBAAY,EAACxC,WAAWyC,gBAAgB,EAAE,CAAC3C,sBAAsBE,WAAW0C,QAAQ;QAC/F,iBAAiB,CAAC5C;QAClBuC,UAAUvC,qBAAqBnD,YAAYW,eAAe,IAAI,CAAC;QAC/D4E,SAASpC,qBAAqBhB,mBAAmBnC;QACjDwF,WAAWrC,qBAAqBsC,gBAAgBtD,oBAAoBnC;QACpEgG,OAAOxE,QAAQ4E,iBAAiB,GAAG5E,QAAQ4E,iBAAiB,GAAG,MAAMrD,cAAciC,UAAU,CAAC5C,IAAAA,eAAQ,EAAC7C,eAAe,MAAMS;QAC5H2F,MAAM;IACV,GAAGjC,QAAQ,QAAQ,WAAW,GAAG/D,OAAMuE,aAAa,CAACiC,4BAAgB,EAAE,QAAQ,WAAW,GAAGxG,OAAMuE,aAAa,CAACgC,0BAAc,EAAE,UAAU,WAAW,GAAGvG,OAAMuE,aAAa,CAAC,OAAO;QAChL,GAAGN,yBAAyB;QAC5B/C,WAAWwC,WAAWgD,aAAa;QACnCC,MAAM;QACN,cAAcvB;IAClB,GAAGL,WAAW6B,GAAG,CAAC,CAACC;QACf,MAAMC,eAAejF,QAAQoD,WAAW,CAAC8B,KAAK,CAACF,SAASnH,gBAAgB,AAACmH,CAAAA,SAAS,CAAA,IAAKnH;QACvF,OAAO,WAAW,GAAGM,OAAMuE,aAAa,CAAC,OAAO;YAC5CE,KAAK,cAAcoC,SAASjH,cAAcE,WAAW;YACrD6G,MAAM;YACNzF,WAAWwC,WAAWsD,SAAS;QACnC,GAAGF,aAAaF,GAAG,CAAC,CAACK,OAAOC;YACxB,MAAMC,aAAaN,SAASnH,iBAAiBwH;YAC7C,MAAME,eAAezE,IAAAA,eAAQ,EAAC/C,eAAeuH;YAC7C,MAAME,mBAAmBzH,cAAcsD,QAAQ,OAAOiE;YACtD,MAAMG,kBAAkB1F,aAAasB,QAAQ,OAAOiE;YACpD,MAAMI,iBAAiB3F,aAAa9B,WAAW,OAAOF,cAAcE,WAAW;YAC/E,MAAM0H,aAAa,AAAChG,CAAAA,UAAU8B,IAAAA,sBAAe,EAAC9B,SAASiG,IAAAA,kBAAW,EAACL,iBAAiB,IAAI,IAAG,KAAO7F,CAAAA,UAAU+B,IAAAA,sBAAe,EAACoE,IAAAA,oBAAa,EAACN,eAAe7F,WAAW,IAAI,IAAG;YAC3K,OAAO,WAAW,GAAGvB,OAAMuE,aAAa,CAAC,UAAU;gBAC/CoD,KAAKN,mBAAmB7G,oBAAoBH;gBAC5CsG,MAAM;gBACNzF,WAAWgF,IAAAA,oBAAY,EAACxC,WAAWkE,UAAU,EAAEvG,yBAAyBwG,eAAeV,YAAYvH,cAAcE,WAAW,IAAIgC,UAAU4B,WAAWvD,OAAO,EAAEmB,0BAA0BgG,mBAAmBC,kBAAkB7D,WAAWoE,QAAQ,EAAE,CAACN,cAAc9D,WAAW0C,QAAQ;gBACpRA,UAAU,CAACpF,gBAAgB,CAACwG;gBAC5B/C,KAAK0C;gBACLvB,SAAS4B,aAAanF,oBAAoB8E,cAAc9G;gBACxDwF,WAAW2B,aAAa1B,gBAAgBzD,oBAAoB8E,eAAe9G;gBAC3E,cAAc+C,cAAc2E,WAAW,CAACX,cAAcvF;gBACtD,iBAAiBwF;gBACjBtB,UAAUyB,aAAa,IAAI,CAAC;gBAC5BxB,MAAM;YACV,GAAGiB;QACP;IACJ;AACJ;AACAxH,cAAcuI,WAAW,GAAG;AAC5B,SAAS1D,eAAe,EAAEnD,iBAAiB,EAAEvB,aAAa,EAAEiC,OAAO,EAAE;IACjE,MAAMoG,eAAe,CAACC;QAClB,IAAI/G,mBAAmB;YACnB,8CAA8C;YAC9C,MAAMgH,qBAAqB,IAAIpG,KAAKnC,cAAcoD,OAAO;YACzDmF,mBAAmBlF,WAAW,CAACiF;YAC/B,OAAO/G,kBAAkBkE,UAAU,CAAC8C;QACxC;QACA,OAAOC,OAAOF;IAClB;IACA,MAAMG,oBAAoB,CAACC;QACvB,OAAO,CAAC,EAAEL,aAAaK,UAAUC,QAAQ,EAAE,GAAG,EAAEN,aAAaK,UAAUE,MAAM,EAAE,CAAC;IACpF;IACA,MAAMC,6BAA6B,CAACH;QAChC,OAAOzG,QAAQ6G,sBAAsB,GAAG,CAAC,EAAE7G,QAAQ6G,sBAAsB,CAAC,CAAC,EAAEL,kBAAkBC,WAAW,CAAC,GAAG;IAClH;IACA,MAAMK,6BAA6B,CAACL;QAChC,OAAOzG,QAAQ+G,sBAAsB,GAAG,CAAC,EAAE/G,QAAQ+G,sBAAsB,CAAC,CAAC,EAAEP,kBAAkBC,WAAW,CAAC,GAAG;IAClH;IACA,OAAO;QACHL;QACA;YACIY,gBAAgBR;YAChBS,oBAAoBH;YACpBI,oBAAoBN;YACpBO,6BAA6BnH,QAAQoH,yBAAyB;QAClE;KACH;AACL;AACA,SAASpB,eAAeZ,KAAK,EAAEiB,IAAI,EAAEpG,KAAK;IACtC,OAAOA,MAAMhC,WAAW,OAAOoI,QAAQpG,MAAMoB,QAAQ,OAAO+D;AAChE;AACA,SAASnB,gBAAgBoD,QAAQ;IAC7B,OAAO,CAACC;QACJ,OAAOA,GAAG1E,GAAG;YACT,KAAK2E,mBAAK;gBACNF;gBACA;QACR;IACJ;AACJ"}
|
1
|
+
{"version":3,"sources":["CalendarMonth.js"],"sourcesContent":["import * as React from 'react';\nimport { Enter } from '@fluentui/keyboard-keys';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { mergeClasses } from '@griffel/react';\nimport { addYears, compareDatePart, getMonthEnd, getMonthStart, getYearEnd, getYearStart, setMonth, DEFAULT_DATE_FORMATTING } from '../../utils';\nimport { CalendarYear } from '../CalendarYear/CalendarYear';\nimport { useCalendarMonthStyles_unstable } from './useCalendarMonthStyles';\nconst MONTHS_PER_ROW = 4;\nfunction useAnimateBackwards({ navigatedDate }) {\n const currentYear = navigatedDate.getFullYear();\n const previousYearRef = React.useRef();\n React.useEffect(()=>{\n previousYearRef.current = currentYear;\n });\n const previousYear = previousYearRef.current;\n if (previousYear === undefined || previousYear === currentYear) {\n return undefined;\n } else {\n return previousYear > currentYear;\n }\n}\nfunction useFocusLogic({ componentRef }) {\n const navigatedMonthRef = React.useRef(null);\n const calendarYearRef = React.useRef(null);\n const focusOnUpdate = React.useRef(false);\n const focus = React.useCallback(()=>{\n if (calendarYearRef.current) {\n calendarYearRef.current.focus();\n } else if (navigatedMonthRef.current) {\n navigatedMonthRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(componentRef, ()=>({\n focus\n }), [\n focus\n ]);\n React.useEffect(()=>{\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n const focusOnNextUpdate = ()=>{\n focusOnUpdate.current = true;\n };\n return [\n navigatedMonthRef,\n calendarYearRef,\n focusOnNextUpdate\n ];\n}\n/**\n * @internal\n */ export const CalendarMonth = (props)=>{\n const { allFocusable, animationDirection, className, componentRef, dateTimeFormatter = DEFAULT_DATE_FORMATTING, highlightCurrentMonth, highlightSelectedMonth, maxDate, minDate, navigatedDate, navigationIcons, onHeaderSelect: onUserHeaderSelect, onNavigateDate, selectedDate, strings, today = new Date(), yearPickerHidden = false } = props;\n const [navigatedMonthRef, calendarYearRef, focusOnNextUpdate] = useFocusLogic({\n componentRef\n });\n const [isYearPickerVisible, setIsYearPickerVisible] = React.useState(false);\n const animateBackwards = useAnimateBackwards({\n navigatedDate\n });\n const selectMonthCallback = (newMonth)=>{\n return ()=>onSelectMonth(newMonth);\n };\n const onSelectNextYear = ()=>{\n onNavigateDate(addYears(navigatedDate, 1), false);\n };\n const onSelectPrevYear = ()=>{\n onNavigateDate(addYears(navigatedDate, -1), false);\n };\n const onSelectMonth = (newMonth)=>{\n // If header is clickable the calendars are overlayed, switch back to day picker when month is clicked\n onUserHeaderSelect === null || onUserHeaderSelect === void 0 ? void 0 : onUserHeaderSelect();\n onNavigateDate(setMonth(navigatedDate, newMonth), true);\n };\n const onHeaderSelect = ()=>{\n if (!yearPickerHidden) {\n focusOnNextUpdate();\n setIsYearPickerVisible(true);\n } else {\n onUserHeaderSelect === null || onUserHeaderSelect === void 0 ? void 0 : onUserHeaderSelect();\n }\n };\n const onSelectYear = (selectedYear)=>{\n focusOnNextUpdate();\n const navYear = navigatedDate.getFullYear();\n if (navYear !== selectedYear) {\n let newNavigationDate = new Date(navigatedDate.getTime());\n newNavigationDate.setFullYear(selectedYear);\n // for min and max dates, adjust the new navigation date - perhaps this should be\n // checked on the master navigation date handler (i.e. in Calendar)\n if (maxDate && newNavigationDate > maxDate) {\n newNavigationDate = setMonth(newNavigationDate, maxDate.getMonth());\n } else if (minDate && newNavigationDate < minDate) {\n newNavigationDate = setMonth(newNavigationDate, minDate.getMonth());\n }\n onNavigateDate(newNavigationDate, true);\n }\n setIsYearPickerVisible(false);\n };\n const onYearPickerHeaderSelect = (focus)=>{\n focusOnNextUpdate();\n setIsYearPickerVisible(false);\n };\n const dateFormatter = dateTimeFormatter;\n // determine if previous/next years are in bounds\n const isPrevYearInBounds = minDate ? compareDatePart(minDate, getYearStart(navigatedDate)) < 0 : true;\n const isNextYearInBounds = maxDate ? compareDatePart(getYearEnd(navigatedDate), maxDate) < 0 : true;\n const classNames = useCalendarMonthStyles_unstable({\n className,\n hasHeaderClickCallback: !!onUserHeaderSelect || !yearPickerHidden,\n highlightCurrent: highlightCurrentMonth,\n highlightSelected: highlightSelectedMonth,\n animateBackwards,\n animationDirection\n });\n const arrowNavigationAttributes = useArrowNavigationGroup({\n axis: 'both'\n });\n if (isYearPickerVisible) {\n const [onRenderYear, yearStrings] = getYearStrings({\n dateTimeFormatter,\n navigatedDate,\n strings\n });\n // use navigated date for the year picker\n return /*#__PURE__*/ React.createElement(CalendarYear, {\n key: 'calendarYear',\n minYear: minDate ? minDate.getFullYear() : undefined,\n maxYear: maxDate ? maxDate.getFullYear() : undefined,\n // eslint-disable-next-line react/jsx-no-bind\n onSelectYear: onSelectYear,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onYearPickerHeaderSelect,\n selectedYear: selectedDate ? selectedDate.getFullYear() : navigatedDate ? navigatedDate.getFullYear() : undefined,\n navigatedYear: navigatedDate.getFullYear(),\n navigationIcons: navigationIcons,\n onRenderYear: onRenderYear,\n strings: yearStrings,\n componentRef: calendarYearRef,\n highlightCurrentYear: highlightCurrentMonth,\n highlightSelectedYear: highlightSelectedMonth,\n animationDirection: animationDirection\n });\n }\n const rowIndexes = [];\n for(let i = 0; i < strings.shortMonths.length / MONTHS_PER_ROW; i++){\n rowIndexes.push(i);\n }\n const yearString = dateFormatter.formatYear(navigatedDate);\n const headerAriaLabel = strings.monthPickerHeaderAriaLabel ? strings.monthPickerHeaderAriaLabel.replace('{0}', yearString) : yearString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.root\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.headerContainer\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: classNames.currentItemButton,\n onClick: onHeaderSelect,\n onKeyDown: onButtonKeyDown(onHeaderSelect),\n \"aria-label\": headerAriaLabel,\n tabIndex: !!onUserHeaderSelect || !yearPickerHidden ? 0 : -1,\n type: \"button\"\n }, /*#__PURE__*/ React.createElement(\"span\", {\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, yearString)), /*#__PURE__*/ React.createElement(\"div\", {\n className: classNames.navigationButtonsContainer\n }, /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.navigationButton, !isPrevYearInBounds && classNames.disabled),\n \"aria-disabled\": !isPrevYearInBounds,\n tabIndex: isPrevYearInBounds ? undefined : allFocusable ? 0 : -1,\n onClick: isPrevYearInBounds ? onSelectPrevYear : undefined,\n onKeyDown: isPrevYearInBounds ? onButtonKeyDown(onSelectPrevYear) : undefined,\n title: strings.prevYearAriaLabel ? strings.prevYearAriaLabel + ' ' + dateFormatter.formatYear(addYears(navigatedDate, -1)) : undefined,\n type: \"button\"\n }, navigationIcons.upNavigation), /*#__PURE__*/ React.createElement(\"button\", {\n className: mergeClasses(classNames.navigationButton, !isNextYearInBounds && classNames.disabled),\n \"aria-disabled\": !isNextYearInBounds,\n tabIndex: isNextYearInBounds ? undefined : allFocusable ? 0 : -1,\n onClick: isNextYearInBounds ? onSelectNextYear : undefined,\n onKeyDown: isNextYearInBounds ? onButtonKeyDown(onSelectNextYear) : undefined,\n title: strings.nextYearAriaLabel ? strings.nextYearAriaLabel + ' ' + dateFormatter.formatYear(addYears(navigatedDate, 1)) : undefined,\n type: \"button\"\n }, navigationIcons.downNavigation))), /*#__PURE__*/ React.createElement(\"div\", {\n ...arrowNavigationAttributes,\n className: classNames.gridContainer,\n role: \"grid\",\n \"aria-label\": yearString\n }, rowIndexes.map((rowNum)=>{\n const monthsForRow = strings.shortMonths.slice(rowNum * MONTHS_PER_ROW, (rowNum + 1) * MONTHS_PER_ROW);\n return /*#__PURE__*/ React.createElement(\"div\", {\n key: 'monthRow_' + rowNum + navigatedDate.getFullYear(),\n role: \"row\",\n className: classNames.buttonRow\n }, monthsForRow.map((month, index)=>{\n const monthIndex = rowNum * MONTHS_PER_ROW + index;\n const indexedMonth = setMonth(navigatedDate, monthIndex);\n const isNavigatedMonth = navigatedDate.getMonth() === monthIndex;\n const isSelectedMonth = selectedDate.getMonth() === monthIndex;\n const isSelectedYear = selectedDate.getFullYear() === navigatedDate.getFullYear();\n const isInBounds = (minDate ? compareDatePart(minDate, getMonthEnd(indexedMonth)) < 1 : true) && (maxDate ? compareDatePart(getMonthStart(indexedMonth), maxDate) < 1 : true);\n return /*#__PURE__*/ React.createElement(\"button\", {\n ref: isNavigatedMonth ? navigatedMonthRef : undefined,\n role: 'gridcell',\n className: mergeClasses(classNames.itemButton, highlightCurrentMonth && isCurrentMonth(monthIndex, navigatedDate.getFullYear(), today) && classNames.current, highlightSelectedMonth && isSelectedMonth && isSelectedYear && classNames.selected, !isInBounds && classNames.disabled),\n disabled: !allFocusable && !isInBounds,\n key: monthIndex,\n onClick: isInBounds ? selectMonthCallback(monthIndex) : undefined,\n onKeyDown: isInBounds ? onButtonKeyDown(selectMonthCallback(monthIndex)) : undefined,\n \"aria-label\": dateFormatter.formatMonth(indexedMonth, strings),\n \"aria-selected\": isNavigatedMonth,\n tabIndex: isInBounds ? 0 : -1,\n type: \"button\"\n }, month);\n }));\n })));\n};\nCalendarMonth.displayName = 'CalendarMonth';\nfunction getYearStrings({ dateTimeFormatter, navigatedDate, strings }) {\n const yearToString = (year)=>{\n if (dateTimeFormatter) {\n // create a date based on the current nav date\n const yearFormattingDate = new Date(navigatedDate.getTime());\n yearFormattingDate.setFullYear(year);\n return dateTimeFormatter.formatYear(yearFormattingDate);\n }\n return String(year);\n };\n const yearRangeToString = (yearRange)=>{\n return `${yearToString(yearRange.fromYear)} - ${yearToString(yearRange.toYear)}`;\n };\n const yearRangeToNextDecadeLabel = (yearRange)=>{\n return strings.nextYearRangeAriaLabel ? `${strings.nextYearRangeAriaLabel} ${yearRangeToString(yearRange)}` : '';\n };\n const yearRangeToPrevDecadeLabel = (yearRange)=>{\n return strings.prevYearRangeAriaLabel ? `${strings.prevYearRangeAriaLabel} ${yearRangeToString(yearRange)}` : '';\n };\n return [\n yearToString,\n {\n rangeAriaLabel: yearRangeToString,\n prevRangeAriaLabel: yearRangeToPrevDecadeLabel,\n nextRangeAriaLabel: yearRangeToNextDecadeLabel,\n headerAriaLabelFormatString: strings.yearPickerHeaderAriaLabel\n }\n ];\n}\nfunction isCurrentMonth(month, year, today) {\n return today.getFullYear() === year && today.getMonth() === month;\n}\nfunction onButtonKeyDown(callback) {\n return (ev)=>{\n switch(ev.key){\n case Enter:\n callback();\n break;\n }\n };\n}\n"],"names":["CalendarMonth","MONTHS_PER_ROW","useAnimateBackwards","navigatedDate","currentYear","getFullYear","previousYearRef","React","useRef","useEffect","current","previousYear","undefined","useFocusLogic","componentRef","navigatedMonthRef","calendarYearRef","focusOnUpdate","focus","useCallback","useImperativeHandle","focusOnNextUpdate","props","allFocusable","animationDirection","className","dateTimeFormatter","DEFAULT_DATE_FORMATTING","highlightCurrentMonth","highlightSelectedMonth","maxDate","minDate","navigationIcons","onHeaderSelect","onUserHeaderSelect","onNavigateDate","selectedDate","strings","today","Date","yearPickerHidden","isYearPickerVisible","setIsYearPickerVisible","useState","animateBackwards","selectMonthCallback","newMonth","onSelectMonth","onSelectNextYear","addYears","onSelectPrevYear","setMonth","onSelectYear","selectedYear","navYear","newNavigationDate","getTime","setFullYear","getMonth","onYearPickerHeaderSelect","dateFormatter","isPrevYearInBounds","compareDatePart","getYearStart","isNextYearInBounds","getYearEnd","classNames","useCalendarMonthStyles_unstable","hasHeaderClickCallback","highlightCurrent","highlightSelected","arrowNavigationAttributes","useArrowNavigationGroup","axis","onRenderYear","yearStrings","getYearStrings","createElement","CalendarYear","key","minYear","maxYear","navigatedYear","highlightCurrentYear","highlightSelectedYear","rowIndexes","i","shortMonths","length","push","yearString","formatYear","headerAriaLabel","monthPickerHeaderAriaLabel","replace","root","headerContainer","currentItemButton","onClick","onKeyDown","onButtonKeyDown","tabIndex","type","navigationButtonsContainer","mergeClasses","navigationButton","disabled","title","prevYearAriaLabel","upNavigation","nextYearAriaLabel","downNavigation","gridContainer","role","map","rowNum","monthsForRow","slice","buttonRow","month","index","monthIndex","indexedMonth","isNavigatedMonth","isSelectedMonth","isSelectedYear","isInBounds","getMonthEnd","getMonthStart","ref","itemButton","isCurrentMonth","selected","formatMonth","displayName","yearToString","year","yearFormattingDate","String","yearRangeToString","yearRange","fromYear","toYear","yearRangeToNextDecadeLabel","nextYearRangeAriaLabel","yearRangeToPrevDecadeLabel","prevYearRangeAriaLabel","rangeAriaLabel","prevRangeAriaLabel","nextRangeAriaLabel","headerAriaLabelFormatString","yearPickerHeaderAriaLabel","callback","ev","Enter"],"mappings":"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"}
|