@fluentui/react-datepicker-compat 0.3.13 → 0.3.16

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.
Files changed (39) hide show
  1. package/CHANGELOG.json +220 -1
  2. package/CHANGELOG.md +58 -2
  3. package/lib/components/Calendar/Calendar.js +2 -4
  4. package/lib/components/Calendar/Calendar.js.map +1 -1
  5. package/lib/components/CalendarDay/CalendarDay.js +1 -2
  6. package/lib/components/CalendarDay/CalendarDay.js.map +1 -1
  7. package/lib/components/CalendarDayGrid/CalendarDayGrid.js +3 -3
  8. package/lib/components/CalendarDayGrid/CalendarDayGrid.js.map +1 -1
  9. package/lib/components/CalendarDayGrid/CalendarGridDayCell.js +3 -6
  10. package/lib/components/CalendarDayGrid/CalendarGridDayCell.js.map +1 -1
  11. package/lib/components/CalendarDayGrid/useWeeks.js +3 -4
  12. package/lib/components/CalendarDayGrid/useWeeks.js.map +1 -1
  13. package/lib/components/CalendarMonth/CalendarMonth.js +3 -5
  14. package/lib/components/CalendarMonth/CalendarMonth.js.map +1 -1
  15. package/lib/components/CalendarYear/CalendarYear.js +13 -18
  16. package/lib/components/CalendarYear/CalendarYear.js.map +1 -1
  17. package/lib/components/DatePicker/useDatePicker.js +7 -12
  18. package/lib/components/DatePicker/useDatePicker.js.map +1 -1
  19. package/lib/utils/dateGrid/getDayGrid.js +1 -2
  20. package/lib/utils/dateGrid/getDayGrid.js.map +1 -1
  21. package/lib-commonjs/components/Calendar/Calendar.js +2 -4
  22. package/lib-commonjs/components/Calendar/Calendar.js.map +1 -1
  23. package/lib-commonjs/components/CalendarDay/CalendarDay.js +1 -2
  24. package/lib-commonjs/components/CalendarDay/CalendarDay.js.map +1 -1
  25. package/lib-commonjs/components/CalendarDayGrid/CalendarDayGrid.js +3 -3
  26. package/lib-commonjs/components/CalendarDayGrid/CalendarDayGrid.js.map +1 -1
  27. package/lib-commonjs/components/CalendarDayGrid/CalendarGridDayCell.js +3 -6
  28. package/lib-commonjs/components/CalendarDayGrid/CalendarGridDayCell.js.map +1 -1
  29. package/lib-commonjs/components/CalendarDayGrid/useWeeks.js +3 -4
  30. package/lib-commonjs/components/CalendarDayGrid/useWeeks.js.map +1 -1
  31. package/lib-commonjs/components/CalendarMonth/CalendarMonth.js +3 -4
  32. package/lib-commonjs/components/CalendarMonth/CalendarMonth.js.map +1 -1
  33. package/lib-commonjs/components/CalendarYear/CalendarYear.js +13 -18
  34. package/lib-commonjs/components/CalendarYear/CalendarYear.js.map +1 -1
  35. package/lib-commonjs/components/DatePicker/useDatePicker.js +7 -12
  36. package/lib-commonjs/components/DatePicker/useDatePicker.js.map +1 -1
  37. package/lib-commonjs/utils/dateGrid/getDayGrid.js +1 -2
  38. package/lib-commonjs/utils/dateGrid/getDayGrid.js.map +1 -1
  39. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"sources":["useDatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar } from '../Calendar/Calendar';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\nimport { compareDatePart, DayOfWeek, FirstWeekOfYear } from '../../utils';\nimport { defaultDatePickerStrings } from './defaults';\nimport { Input } from '@fluentui/react-input';\nimport {\n mergeCallbacks,\n useControllableState,\n useEventCallback,\n useId,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n slot,\n} from '@fluentui/react-utilities';\nimport { useFieldContext_unstable as useFieldContext } from '@fluentui/react-field';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useModalAttributes } from '@fluentui/react-tabster';\nimport { usePopupPositioning } from '../../utils/usePopupPositioning';\nimport type { CalendarProps, ICalendar } from '../Calendar/Calendar.types';\nimport type { DatePickerProps, DatePickerState, DatePickerValidationResultData } from './DatePicker.types';\nimport type { InputProps, InputOnChangeData } from '@fluentui/react-input';\n\nfunction isDateOutOfBounds(date: Date, minDate?: Date, maxDate?: Date): boolean {\n return (!!minDate && compareDatePart(minDate!, date) > 0) || (!!maxDate && compareDatePart(maxDate!, date) < 0);\n}\n\nfunction useFocusLogic() {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const preventFocusOpeningPicker = React.useRef(false);\n\n const focus = React.useCallback(() => {\n inputRef.current?.focus?.();\n }, []);\n\n const preventNextFocusOpeningPicker = React.useCallback(() => {\n preventFocusOpeningPicker.current = true;\n }, []);\n\n return [focus, inputRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] as const;\n}\n\nfunction usePopupVisibility(props: DatePickerProps) {\n const [open, setOpen] = useControllableState({\n initialState: false,\n defaultState: props.defaultOpen,\n state: props.open,\n });\n const isMounted = React.useRef(false);\n\n React.useEffect(\n () => {\n if (isMounted.current && !open) {\n // If DatePicker's menu (Calendar) is closed, run onAfterMenuDismiss\n props.onOpenChange?.(false);\n }\n isMounted.current = true;\n },\n // Should only run on allowTextInput or open change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.allowTextInput, open],\n );\n\n return [open, setOpen] as const;\n}\n\nfunction useSelectedDate({ formatDate, onSelectDate, value }: DatePickerProps) {\n const [selectedDate, setSelectedDateState] = useControllableState<Date | null | undefined>({\n initialState: null,\n state: value,\n });\n const [formattedDate, setFormattedDate] = React.useState(() => (value && formatDate ? formatDate(value) : ''));\n\n const setSelectedDate = (newDate: Date | null | undefined) => {\n onSelectDate?.(newDate);\n setSelectedDateState(newDate);\n setFormattedDate(newDate && formatDate ? formatDate(newDate) : '');\n };\n\n React.useEffect(() => {\n setFormattedDate(value && formatDate ? formatDate(value) : '');\n }, [formatDate, value]);\n\n return [selectedDate, formattedDate, setSelectedDate, setFormattedDate] as const;\n}\n\nconst defaultFormatDate = (date?: Date) => (date ? date.toDateString() : '');\nconst defaultParseDateFromString = (dateStr: string) => {\n const date = Date.parse(dateStr);\n return date ? new Date(date) : null;\n};\n\n/**\n * Create the state required to render DatePicker.\n *\n * The returned state can be modified with hooks such as useDatePickerStyles_unstable,\n * before being passed to renderDatePicker_unstable.\n *\n * @param props - props from this instance of DatePicker\n * @param ref - reference to root Input slot\n */\nexport const useDatePicker_unstable = (props: DatePickerProps, ref: React.Ref<HTMLInputElement>): DatePickerState => {\n const {\n allowTextInput = false,\n allFocusable = false,\n borderless = false,\n dateTimeFormatter,\n defaultOpen = false,\n disableAutoFocus = true,\n firstDayOfWeek = DayOfWeek.Sunday,\n firstWeekOfYear = FirstWeekOfYear.FirstDay,\n formatDate = defaultFormatDate,\n highlightCurrentMonth = false,\n highlightSelectedMonth = false,\n initialPickerDate = new Date(),\n inlinePopup = false,\n isMonthPickerVisible = true,\n maxDate,\n minDate,\n mountNode,\n onOpenChange,\n onSelectDate: onUserSelectDate,\n openOnClick = true,\n onValidationResult,\n parseDateFromString = defaultParseDateFromString,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay = false,\n showWeekNumbers = false,\n strings = defaultDatePickerStrings,\n today,\n underlined = false,\n value,\n ...restOfProps\n } = props;\n const calendar = React.useRef<ICalendar>(null);\n const [focus, rootRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] = useFocusLogic();\n const [selectedDate, formattedDate, setSelectedDate, setFormattedDate] = useSelectedDate({\n formatDate,\n onSelectDate: onUserSelectDate,\n value,\n });\n const [open, setOpenState] = usePopupVisibility(props);\n const fieldContext = useFieldContext();\n const required = fieldContext?.required ?? props.required;\n const popupSurfaceId = useId('datePicker-popupSurface');\n\n const validateTextInput = React.useCallback(\n (date: Date | null = null): void => {\n let error: DatePickerValidationResultData['error'];\n\n if (allowTextInput) {\n if (formattedDate || date) {\n // Don't parse if the selected date has the same formatted string as what we're about to parse.\n // The formatted string might be ambiguous (ex: \"1/2/3\" or \"New Year Eve\") and the parser might\n // not be able to come up with the exact same date.\n if (selectedDate && formatDate && formatDate(date ?? selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString!(formattedDate);\n\n // Check if date is null or date is an invalid date\n if (!date || isNaN(date.getTime())) {\n // Reset input if formatting is available\n setSelectedDate(selectedDate);\n error = 'invalid-input';\n } else {\n if (isDateOutOfBounds(date, minDate, maxDate)) {\n error = 'out-of-bounds';\n } else {\n setSelectedDate(date);\n }\n }\n } else {\n if (required) {\n error = 'required-input';\n }\n\n onUserSelectDate?.(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n\n onValidationResult?.({ error });\n },\n [\n allowTextInput,\n formatDate,\n formattedDate,\n maxDate,\n minDate,\n onUserSelectDate,\n onValidationResult,\n parseDateFromString,\n required,\n selectedDate,\n setSelectedDate,\n ],\n );\n\n const setOpen = React.useCallback(\n (newState: boolean) => {\n onOpenChange?.(newState);\n setOpenState(newState);\n\n if (!open && !props.disabled) {\n focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focus, onOpenChange, props.disabled, setOpenState],\n );\n\n const dismissDatePickerPopup = React.useCallback(\n (newlySelectedDate?: Date | null): void => {\n if (open) {\n setOpen(false);\n\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n },\n [allowTextInput, open, setOpen, setSelectedDate, validateTextInput],\n );\n\n const showDatePickerPopup = React.useCallback((): void => {\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [open, preventNextFocusOpeningPicker, setOpen]);\n\n /**\n * Callback for closing the calendar callout\n */\n const calendarDismissed = React.useCallback(\n (newlySelectedDate?: Date): void => {\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n },\n [dismissDatePickerPopup, preventNextFocusOpeningPicker],\n );\n\n const onInputChange = React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>, data: InputOnChangeData) => {\n const { value: newValue } = data;\n\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n\n setFormattedDate(newValue);\n }\n },\n [allowTextInput, dismissDatePickerPopup, open, setFormattedDate],\n );\n\n const onInputBlur: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n validateTextInput();\n }, [validateTextInput]);\n\n const onInputKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n ev.stopPropagation();\n if (!open) {\n validateTextInput();\n showDatePickerPopup();\n } else {\n // When DatePicker allows input date string directly,\n // it is expected to hit another enter to close the popup\n if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n }\n break;\n\n case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n\n case ArrowDown:\n ev.preventDefault();\n if (ev.altKey && !open) {\n showDatePickerPopup();\n }\n break;\n\n default:\n break;\n }\n },\n [calendarDismissed, dismissDatePickerPopup, open, props.allowTextInput, showDatePickerPopup, validateTextInput],\n );\n\n const onInputFocus: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n if (disableAutoFocus) {\n return;\n }\n\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [allowTextInput, disableAutoFocus, preventFocusOpeningPicker, showDatePickerPopup]);\n\n const onInputClick: React.MouseEventHandler<HTMLInputElement> = React.useCallback((): void => {\n // default openOnClick to !props.disableAutoFocus for legacy support of disableAutoFocus behavior\n if ((props.openOnClick || !props.disableAutoFocus) && !open && !props.disabled) {\n showDatePickerPopup();\n return;\n }\n\n if (allowTextInput) {\n dismissDatePickerPopup();\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n props.disabled,\n props.disableAutoFocus,\n props.openOnClick,\n showDatePickerPopup,\n ]);\n\n const onIconClick = (ev: React.MouseEvent<HTMLElement>): void => {\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n\n const inputAppearance: InputProps['appearance'] = underlined\n ? 'underline'\n : borderless\n ? 'filled-lighter'\n : 'outline';\n\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\n const root = slot.always(restOfProps, {\n defaultProps: {\n appearance: inputAppearance,\n 'aria-controls': open ? popupSurfaceId : undefined,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n contentAfter: <CalendarMonthRegular onClick={onIconClick as unknown as React.MouseEventHandler<SVGElement>} />,\n readOnly: !allowTextInput,\n role: 'combobox',\n },\n elementType: Input,\n });\n\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n 'aria-owns': open ? popupSurfaceId : undefined,\n ref: triggerWrapperRef,\n },\n elementType: 'span',\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n root.root = inputRoot;\n const inputShorthand = slot.always(props.input, {\n elementType: 'input',\n });\n inputShorthand.ref = useMergedRefs(inputShorthand.ref, ref, rootRef);\n root.input = inputShorthand;\n root.onChange = useEventCallback(mergeCallbacks(root.onChange, onInputChange));\n root.onBlur = useEventCallback(mergeCallbacks(root.onBlur, onInputBlur));\n root.onKeyDown = useEventCallback(mergeCallbacks(root.onKeyDown, onInputKeyDown));\n root.onFocus = useEventCallback(mergeCallbacks(root.onFocus, onInputFocus));\n root.onClick = useEventCallback(mergeCallbacks(root.onClick, onInputClick));\n const { modalAttributes } = useModalAttributes({ trapFocus: true, alwaysFocusable: true, legacyTrapFocus: false });\n const popupSurface = open\n ? slot.optional(props.popupSurface, {\n renderByDefault: true,\n defaultProps: {\n 'aria-label': 'Calendar',\n 'aria-modal': true,\n id: popupSurfaceId,\n role: 'dialog',\n ref: popupRef,\n ...modalAttributes,\n },\n elementType: 'div',\n })\n : undefined;\n const { targetDocument } = useFluent();\n useOnClickOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n });\n useOnScrollOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n }); // When the popup is opened, focus should go to the calendar.\n // In v8 this was done by focusing after the callout was positioned, but in v9 this can be simulated by using a\n // useEffect hook.\n React.useEffect(() => {\n if (open && !props.disabled && calendar.current) {\n calendar.current.focus();\n }\n }, [disableAutoFocus, open, props.disabled]);\n const calendarShorthand = slot.always(props.calendar, {\n defaultProps: {\n allFocusable,\n componentRef: calendar,\n dateTimeFormatter,\n firstDayOfWeek,\n firstWeekOfYear,\n highlightCurrentMonth,\n highlightSelectedMonth,\n isMonthPickerVisible,\n maxDate,\n minDate,\n showCloseButton,\n showGoToToday,\n showMonthPickerAsOverlay,\n showWeekNumbers,\n strings,\n today,\n value: selectedDate || initialPickerDate,\n },\n elementType: Calendar,\n });\n calendarShorthand.onDismiss = useEventCallback(mergeCallbacks(calendarShorthand.onDismiss, calendarDismissed));\n calendarShorthand.onSelectDate = useEventCallback(mergeCallbacks(calendarShorthand.onSelectDate, calendarDismissed));\n const state: DatePickerState = {\n disabled: !!props.disabled,\n inlinePopup,\n components: { root: Input, calendar: Calendar as React.FC<Partial<CalendarProps>>, popupSurface: 'div' },\n calendar: calendarShorthand,\n mountNode,\n root,\n popupSurface,\n };\n\n state.root.value = formattedDate;\n\n return state;\n};\n"],"names":["React","ArrowDown","Enter","Escape","Calendar","CalendarMonthRegular","compareDatePart","DayOfWeek","FirstWeekOfYear","defaultDatePickerStrings","Input","mergeCallbacks","useControllableState","useEventCallback","useId","useMergedRefs","useOnClickOutside","useOnScrollOutside","slot","useFieldContext_unstable","useFieldContext","useFluent_unstable","useFluent","useModalAttributes","usePopupPositioning","isDateOutOfBounds","date","minDate","maxDate","useFocusLogic","inputRef","useRef","preventFocusOpeningPicker","focus","useCallback","current","preventNextFocusOpeningPicker","usePopupVisibility","props","open","setOpen","initialState","defaultState","defaultOpen","state","isMounted","useEffect","onOpenChange","allowTextInput","useSelectedDate","formatDate","onSelectDate","value","selectedDate","setSelectedDateState","formattedDate","setFormattedDate","useState","setSelectedDate","newDate","defaultFormatDate","toDateString","defaultParseDateFromString","dateStr","Date","parse","useDatePicker_unstable","ref","fieldContext","allFocusable","borderless","dateTimeFormatter","disableAutoFocus","firstDayOfWeek","Sunday","firstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","initialPickerDate","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","calendar","rootRef","setOpenState","required","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","root","always","defaultProps","appearance","undefined","contentAfter","onClick","readOnly","role","elementType","inputRoot","inputShorthand","input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"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"}
1
+ {"version":3,"sources":["useDatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar } from '../Calendar/Calendar';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\nimport { compareDatePart, DayOfWeek, FirstWeekOfYear } from '../../utils';\nimport { defaultDatePickerStrings } from './defaults';\nimport { Input } from '@fluentui/react-input';\nimport {\n mergeCallbacks,\n useControllableState,\n useEventCallback,\n useId,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n slot,\n} from '@fluentui/react-utilities';\nimport { useFieldContext_unstable as useFieldContext } from '@fluentui/react-field';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useModalAttributes } from '@fluentui/react-tabster';\nimport { usePopupPositioning } from '../../utils/usePopupPositioning';\nimport type { CalendarProps, ICalendar } from '../Calendar/Calendar.types';\nimport type { DatePickerProps, DatePickerState, DatePickerValidationResultData } from './DatePicker.types';\nimport type { InputProps, InputOnChangeData } from '@fluentui/react-input';\n\nfunction isDateOutOfBounds(date: Date, minDate?: Date, maxDate?: Date): boolean {\n return (!!minDate && compareDatePart(minDate!, date) > 0) || (!!maxDate && compareDatePart(maxDate!, date) < 0);\n}\n\nfunction useFocusLogic() {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const preventFocusOpeningPicker = React.useRef(false);\n\n const focus = React.useCallback(() => {\n inputRef.current?.focus?.();\n }, []);\n\n const preventNextFocusOpeningPicker = React.useCallback(() => {\n preventFocusOpeningPicker.current = true;\n }, []);\n\n return [focus, inputRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] as const;\n}\n\nfunction usePopupVisibility(props: DatePickerProps) {\n const [open, setOpen] = useControllableState({\n initialState: false,\n defaultState: props.defaultOpen,\n state: props.open,\n });\n const isMounted = React.useRef(false);\n\n React.useEffect(\n () => {\n if (isMounted.current && !open) {\n // If DatePicker's menu (Calendar) is closed, run onAfterMenuDismiss\n props.onOpenChange?.(false);\n }\n isMounted.current = true;\n },\n // Should only run on allowTextInput or open change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.allowTextInput, open],\n );\n\n return [open, setOpen] as const;\n}\n\nfunction useSelectedDate({ formatDate, onSelectDate, value }: DatePickerProps) {\n const [selectedDate, setSelectedDateState] = useControllableState<Date | null | undefined>({\n initialState: null,\n state: value,\n });\n const [formattedDate, setFormattedDate] = React.useState(() => (value && formatDate ? formatDate(value) : ''));\n\n const setSelectedDate = (newDate: Date | null | undefined) => {\n onSelectDate?.(newDate);\n setSelectedDateState(newDate);\n setFormattedDate(newDate && formatDate ? formatDate(newDate) : '');\n };\n\n React.useEffect(() => {\n setFormattedDate(value && formatDate ? formatDate(value) : '');\n }, [formatDate, value]);\n\n return [selectedDate, formattedDate, setSelectedDate, setFormattedDate] as const;\n}\n\nconst defaultFormatDate = (date?: Date) => (date ? date.toDateString() : '');\nconst defaultParseDateFromString = (dateStr: string) => {\n const date = Date.parse(dateStr);\n return date ? new Date(date) : null;\n};\n\n/**\n * Create the state required to render DatePicker.\n *\n * The returned state can be modified with hooks such as useDatePickerStyles_unstable,\n * before being passed to renderDatePicker_unstable.\n *\n * @param props - props from this instance of DatePicker\n * @param ref - reference to root Input slot\n */\nexport const useDatePicker_unstable = (props: DatePickerProps, ref: React.Ref<HTMLInputElement>): DatePickerState => {\n const {\n allowTextInput = false,\n allFocusable = false,\n borderless = false,\n dateTimeFormatter,\n defaultOpen = false,\n disableAutoFocus = true,\n firstDayOfWeek = DayOfWeek.Sunday,\n firstWeekOfYear = FirstWeekOfYear.FirstDay,\n formatDate = defaultFormatDate,\n highlightCurrentMonth = false,\n highlightSelectedMonth = false,\n initialPickerDate = new Date(),\n inlinePopup = false,\n isMonthPickerVisible = true,\n maxDate,\n minDate,\n mountNode,\n onOpenChange,\n onSelectDate: onUserSelectDate,\n openOnClick = true,\n onValidationResult,\n parseDateFromString = defaultParseDateFromString,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay = false,\n showWeekNumbers = false,\n strings = defaultDatePickerStrings,\n today,\n underlined = false,\n value,\n ...restOfProps\n } = props;\n const calendar = React.useRef<ICalendar>(null);\n const [focus, rootRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] = useFocusLogic();\n const [selectedDate, formattedDate, setSelectedDate, setFormattedDate] = useSelectedDate({\n formatDate,\n onSelectDate: onUserSelectDate,\n value,\n });\n const [open, setOpenState] = usePopupVisibility(props);\n const fieldContext = useFieldContext();\n const required = fieldContext?.required ?? props.required;\n const popupSurfaceId = useId('datePicker-popupSurface');\n\n const validateTextInput = React.useCallback(\n (date: Date | null = null): void => {\n let error: DatePickerValidationResultData['error'];\n\n if (allowTextInput) {\n if (formattedDate || date) {\n // Don't parse if the selected date has the same formatted string as what we're about to parse.\n // The formatted string might be ambiguous (ex: \"1/2/3\" or \"New Year Eve\") and the parser might\n // not be able to come up with the exact same date.\n if (selectedDate && formatDate && formatDate(date ?? selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString!(formattedDate);\n\n // Check if date is null or date is an invalid date\n if (!date || isNaN(date.getTime())) {\n // Reset input if formatting is available\n setSelectedDate(selectedDate);\n error = 'invalid-input';\n } else {\n if (isDateOutOfBounds(date, minDate, maxDate)) {\n error = 'out-of-bounds';\n } else {\n setSelectedDate(date);\n }\n }\n } else {\n if (required) {\n error = 'required-input';\n }\n\n onUserSelectDate?.(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n\n onValidationResult?.({ error });\n },\n [\n allowTextInput,\n formatDate,\n formattedDate,\n maxDate,\n minDate,\n onUserSelectDate,\n onValidationResult,\n parseDateFromString,\n required,\n selectedDate,\n setSelectedDate,\n ],\n );\n\n const setOpen = React.useCallback(\n (newState: boolean) => {\n onOpenChange?.(newState);\n setOpenState(newState);\n\n if (!open && !props.disabled) {\n focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focus, onOpenChange, props.disabled, setOpenState],\n );\n\n const dismissDatePickerPopup = React.useCallback(\n (newlySelectedDate?: Date | null): void => {\n if (open) {\n setOpen(false);\n\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n },\n [allowTextInput, open, setOpen, setSelectedDate, validateTextInput],\n );\n\n const showDatePickerPopup = React.useCallback((): void => {\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [open, preventNextFocusOpeningPicker, setOpen]);\n\n /**\n * Callback for closing the calendar callout\n */\n const calendarDismissed = React.useCallback(\n (newlySelectedDate?: Date): void => {\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n },\n [dismissDatePickerPopup, preventNextFocusOpeningPicker],\n );\n\n const onInputChange = React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>, data: InputOnChangeData) => {\n const { value: newValue } = data;\n\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n\n setFormattedDate(newValue);\n }\n },\n [allowTextInput, dismissDatePickerPopup, open, setFormattedDate],\n );\n\n const onInputBlur: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n validateTextInput();\n }, [validateTextInput]);\n\n const onInputKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n ev.stopPropagation();\n if (!open) {\n validateTextInput();\n showDatePickerPopup();\n } else {\n // When DatePicker allows input date string directly,\n // it is expected to hit another enter to close the popup\n if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n }\n break;\n\n case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n\n case ArrowDown:\n ev.preventDefault();\n if (ev.altKey && !open) {\n showDatePickerPopup();\n }\n break;\n\n default:\n break;\n }\n },\n [calendarDismissed, dismissDatePickerPopup, open, props.allowTextInput, showDatePickerPopup, validateTextInput],\n );\n\n const onInputFocus: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n if (disableAutoFocus) {\n return;\n }\n\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [allowTextInput, disableAutoFocus, preventFocusOpeningPicker, showDatePickerPopup]);\n\n const onInputClick: React.MouseEventHandler<HTMLInputElement> = React.useCallback((): void => {\n // default openOnClick to !props.disableAutoFocus for legacy support of disableAutoFocus behavior\n if ((props.openOnClick || !props.disableAutoFocus) && !open && !props.disabled) {\n showDatePickerPopup();\n return;\n }\n\n if (allowTextInput) {\n dismissDatePickerPopup();\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n props.disabled,\n props.disableAutoFocus,\n props.openOnClick,\n showDatePickerPopup,\n ]);\n\n const onIconClick = (ev: React.MouseEvent<HTMLElement>): void => {\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n\n const inputAppearance: InputProps['appearance'] = underlined\n ? 'underline'\n : borderless\n ? 'filled-lighter'\n : 'outline';\n\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\n const root = slot.always(restOfProps, {\n defaultProps: {\n appearance: inputAppearance,\n 'aria-controls': open ? popupSurfaceId : undefined,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n contentAfter: <CalendarMonthRegular onClick={onIconClick as unknown as React.MouseEventHandler<SVGElement>} />,\n readOnly: !allowTextInput,\n role: 'combobox',\n },\n elementType: Input,\n });\n\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n 'aria-owns': open ? popupSurfaceId : undefined,\n ref: triggerWrapperRef,\n },\n elementType: 'span',\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n root.root = inputRoot;\n const inputShorthand = slot.always(props.input, {\n elementType: 'input',\n });\n inputShorthand.ref = useMergedRefs(inputShorthand.ref, ref, rootRef);\n root.input = inputShorthand;\n root.onChange = useEventCallback(mergeCallbacks(root.onChange, onInputChange));\n root.onBlur = useEventCallback(mergeCallbacks(root.onBlur, onInputBlur));\n root.onKeyDown = useEventCallback(mergeCallbacks(root.onKeyDown, onInputKeyDown));\n root.onFocus = useEventCallback(mergeCallbacks(root.onFocus, onInputFocus));\n root.onClick = useEventCallback(mergeCallbacks(root.onClick, onInputClick));\n const { modalAttributes } = useModalAttributes({ trapFocus: true, alwaysFocusable: true, legacyTrapFocus: false });\n const popupSurface = open\n ? slot.optional(props.popupSurface, {\n renderByDefault: true,\n defaultProps: {\n 'aria-label': 'Calendar',\n 'aria-modal': true,\n id: popupSurfaceId,\n role: 'dialog',\n ref: popupRef,\n ...modalAttributes,\n },\n elementType: 'div',\n })\n : undefined;\n const { targetDocument } = useFluent();\n useOnClickOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n });\n useOnScrollOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n }); // When the popup is opened, focus should go to the calendar.\n // In v8 this was done by focusing after the callout was positioned, but in v9 this can be simulated by using a\n // useEffect hook.\n React.useEffect(() => {\n if (open && !props.disabled && calendar.current) {\n calendar.current.focus();\n }\n }, [disableAutoFocus, open, props.disabled]);\n const calendarShorthand = slot.always(props.calendar, {\n defaultProps: {\n allFocusable,\n componentRef: calendar,\n dateTimeFormatter,\n firstDayOfWeek,\n firstWeekOfYear,\n highlightCurrentMonth,\n highlightSelectedMonth,\n isMonthPickerVisible,\n maxDate,\n minDate,\n showCloseButton,\n showGoToToday,\n showMonthPickerAsOverlay,\n showWeekNumbers,\n strings,\n today,\n value: selectedDate || initialPickerDate,\n },\n elementType: Calendar,\n });\n calendarShorthand.onDismiss = useEventCallback(mergeCallbacks(calendarShorthand.onDismiss, calendarDismissed));\n calendarShorthand.onSelectDate = useEventCallback(mergeCallbacks(calendarShorthand.onSelectDate, calendarDismissed));\n const state: DatePickerState = {\n disabled: !!props.disabled,\n inlinePopup,\n components: { root: Input, calendar: Calendar as React.FC<Partial<CalendarProps>>, popupSurface: 'div' },\n calendar: calendarShorthand,\n mountNode,\n root,\n popupSurface,\n };\n\n state.root.value = formattedDate;\n\n return state;\n};\n"],"names":["React","ArrowDown","Enter","Escape","Calendar","CalendarMonthRegular","compareDatePart","DayOfWeek","FirstWeekOfYear","defaultDatePickerStrings","Input","mergeCallbacks","useControllableState","useEventCallback","useId","useMergedRefs","useOnClickOutside","useOnScrollOutside","slot","useFieldContext_unstable","useFieldContext","useFluent_unstable","useFluent","useModalAttributes","usePopupPositioning","isDateOutOfBounds","date","minDate","maxDate","useFocusLogic","inputRef","useRef","preventFocusOpeningPicker","focus","useCallback","current","preventNextFocusOpeningPicker","usePopupVisibility","props","open","setOpen","initialState","defaultState","defaultOpen","state","isMounted","useEffect","onOpenChange","allowTextInput","useSelectedDate","formatDate","onSelectDate","value","selectedDate","setSelectedDateState","formattedDate","setFormattedDate","useState","setSelectedDate","newDate","defaultFormatDate","toDateString","defaultParseDateFromString","dateStr","Date","parse","useDatePicker_unstable","ref","allFocusable","borderless","dateTimeFormatter","disableAutoFocus","firstDayOfWeek","Sunday","firstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","initialPickerDate","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","calendar","rootRef","setOpenState","fieldContext","required","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","root","always","defaultProps","appearance","undefined","contentAfter","onClick","readOnly","role","elementType","inputRoot","inputShorthand","input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"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"}
@@ -45,7 +45,6 @@ import { isRestrictedDate } from './isRestrictedDate';
45
45
  const week = [];
46
46
  isAllDaysOfWeekOutOfMonth = true;
47
47
  for(let dayIndex = 0; dayIndex < DAYS_IN_WEEK; dayIndex++){
48
- var _markedDays;
49
48
  const originalDate = new Date(date.getTime());
50
49
  const dayInfo = {
51
50
  key: date.toString(),
@@ -55,7 +54,7 @@ import { isRestrictedDate } from './isRestrictedDate';
55
54
  isToday: compareDates(todaysDate, date),
56
55
  isSelected: isInDateRangeArray(date, selectedDates),
57
56
  isInBounds: !isRestrictedDate(date, restrictedDateOptions),
58
- isMarked: ((_markedDays = markedDays) === null || _markedDays === void 0 ? void 0 : _markedDays.some((markedDay)=>compareDates(originalDate, markedDay))) || false
57
+ isMarked: (markedDays === null || markedDays === void 0 ? void 0 : markedDays.some((markedDay)=>compareDates(originalDate, markedDay))) || false
59
58
  };
60
59
  week.push(dayInfo);
61
60
  if (dayInfo.isInMonth) {
@@ -1 +1 @@
1
- {"version":3,"sources":["getDayGrid.ts"],"sourcesContent":["import { addDays, compareDates, getDateRangeArray, isInDateRangeArray } from '../dateMath/dateMath';\nimport { DAYS_IN_WEEK } from '../constants';\nimport { Day, DayGridOptions } from './dateGrid.types';\nimport { getDateRangeTypeToUse } from './getDateRangeTypeToUse';\nimport { getBoundedDateRange } from './getBoundedDateRange';\nimport { isRestrictedDate } from './isRestrictedDate';\n\n/**\n * Generates a grid of days, given the `options`.\n * Returns one additional week at the begining from the previous range\n * and one at the end from the future range\n * @param options - parameters to specify date related restrictions for the resulting grid\n */\nexport const getDayGrid = (options: DayGridOptions): Day[][] => {\n const {\n selectedDate,\n dateRangeType,\n firstDayOfWeek,\n today,\n minDate,\n maxDate,\n weeksToShow,\n workWeekDays,\n daysToSelectInDayView,\n restrictedDates,\n markedDays,\n } = options;\n const restrictedDateOptions = { minDate, maxDate, restrictedDates };\n\n const todaysDate = today || new Date();\n\n const navigatedDate = options.navigatedDate ? options.navigatedDate : todaysDate;\n\n let date;\n if (weeksToShow && weeksToShow <= 4) {\n // if showing less than a full month, just use date == navigatedDate\n date = new Date(navigatedDate.getFullYear(), navigatedDate.getMonth(), navigatedDate.getDate());\n } else {\n date = new Date(navigatedDate.getFullYear(), navigatedDate.getMonth(), 1);\n }\n const weeks: Day[][] = [];\n\n // Cycle the date backwards to get to the first day of the week.\n while (date.getDay() !== firstDayOfWeek) {\n date.setDate(date.getDate() - 1);\n }\n\n // add the transition week as last week of previous range\n date = addDays(date, -DAYS_IN_WEEK);\n\n // a flag to indicate whether all days of the week are outside the month\n let isAllDaysOfWeekOutOfMonth = false;\n\n // in work week view if the days aren't contiguous we use week view instead\n const selectedDateRangeType = getDateRangeTypeToUse(dateRangeType, workWeekDays, firstDayOfWeek);\n\n let selectedDates: Date[] = [];\n\n if (selectedDate) {\n selectedDates = getDateRangeArray(\n selectedDate,\n selectedDateRangeType,\n firstDayOfWeek,\n workWeekDays,\n daysToSelectInDayView,\n );\n selectedDates = getBoundedDateRange(selectedDates, minDate, maxDate);\n }\n\n let shouldGetWeeks = true;\n\n for (let weekIndex = 0; shouldGetWeeks; weekIndex++) {\n const week: Day[] = [];\n\n isAllDaysOfWeekOutOfMonth = true;\n\n for (let dayIndex = 0; dayIndex < DAYS_IN_WEEK; dayIndex++) {\n const originalDate = new Date(date.getTime());\n const dayInfo: Day = {\n key: date.toString(),\n date: date.getDate().toString(),\n originalDate,\n isInMonth: date.getMonth() === navigatedDate.getMonth(),\n isToday: compareDates(todaysDate, date),\n isSelected: isInDateRangeArray(date, selectedDates),\n isInBounds: !isRestrictedDate(date, restrictedDateOptions),\n isMarked: markedDays?.some((markedDay: Date) => compareDates(originalDate, markedDay)) || false,\n };\n\n week.push(dayInfo);\n\n if (dayInfo.isInMonth) {\n isAllDaysOfWeekOutOfMonth = false;\n }\n\n date.setDate(date.getDate() + 1);\n }\n\n // We append the condition of the loop depending upon the showSixWeeksByDefault prop.\n shouldGetWeeks = weeksToShow ? weekIndex < weeksToShow + 1 : !isAllDaysOfWeekOutOfMonth || weekIndex === 0;\n\n // we don't check shouldGetWeeks before pushing because we want to add one extra week for transition state\n weeks.push(week);\n }\n\n return weeks;\n};\n"],"names":["addDays","compareDates","getDateRangeArray","isInDateRangeArray","DAYS_IN_WEEK","getDateRangeTypeToUse","getBoundedDateRange","isRestrictedDate","getDayGrid","options","selectedDate","dateRangeType","firstDayOfWeek","today","minDate","maxDate","weeksToShow","workWeekDays","daysToSelectInDayView","restrictedDates","markedDays","restrictedDateOptions","todaysDate","Date","navigatedDate","date","getFullYear","getMonth","getDate","weeks","getDay","setDate","isAllDaysOfWeekOutOfMonth","selectedDateRangeType","selectedDates","shouldGetWeeks","weekIndex","week","dayIndex","originalDate","getTime","dayInfo","key","toString","isInMonth","isToday","isSelected","isInBounds","isMarked","some","markedDay","push"],"mappings":"AAAA,SAASA,OAAO,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,kBAAkB,QAAQ,uBAAuB;AACpG,SAASC,YAAY,QAAQ,eAAe;AAE5C,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD;;;;;CAKC,GACD,OAAO,MAAMC,aAAa,CAACC;IACzB,MAAM,EACJC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,KAAK,EACLC,OAAO,EACPC,OAAO,EACPC,WAAW,EACXC,YAAY,EACZC,qBAAqB,EACrBC,eAAe,EACfC,UAAU,EACX,GAAGX;IACJ,MAAMY,wBAAwB;QAAEP;QAASC;QAASI;IAAgB;IAElE,MAAMG,aAAaT,SAAS,IAAIU;IAEhC,MAAMC,gBAAgBf,QAAQe,aAAa,GAAGf,QAAQe,aAAa,GAAGF;IAEtE,IAAIG;IACJ,IAAIT,eAAeA,eAAe,GAAG;QACnC,oEAAoE;QACpES,OAAO,IAAIF,KAAKC,cAAcE,WAAW,IAAIF,cAAcG,QAAQ,IAAIH,cAAcI,OAAO;IAC9F,OAAO;QACLH,OAAO,IAAIF,KAAKC,cAAcE,WAAW,IAAIF,cAAcG,QAAQ,IAAI;IACzE;IACA,MAAME,QAAiB,EAAE;IAEzB,gEAAgE;IAChE,MAAOJ,KAAKK,MAAM,OAAOlB,eAAgB;QACvCa,KAAKM,OAAO,CAACN,KAAKG,OAAO,KAAK;IAChC;IAEA,yDAAyD;IACzDH,OAAOzB,QAAQyB,MAAM,CAACrB;IAEtB,wEAAwE;IACxE,IAAI4B,4BAA4B;IAEhC,2EAA2E;IAC3E,MAAMC,wBAAwB5B,sBAAsBM,eAAeM,cAAcL;IAEjF,IAAIsB,gBAAwB,EAAE;IAE9B,IAAIxB,cAAc;QAChBwB,gBAAgBhC,kBACdQ,cACAuB,uBACArB,gBACAK,cACAC;QAEFgB,gBAAgB5B,oBAAoB4B,eAAepB,SAASC;IAC9D;IAEA,IAAIoB,iBAAiB;IAErB,IAAK,IAAIC,YAAY,GAAGD,gBAAgBC,YAAa;QACnD,MAAMC,OAAc,EAAE;QAEtBL,4BAA4B;QAE5B,IAAK,IAAIM,WAAW,GAAGA,WAAWlC,cAAckC,WAAY;gBAU9ClB;YATZ,MAAMmB,eAAe,IAAIhB,KAAKE,KAAKe,OAAO;YAC1C,MAAMC,UAAe;gBACnBC,KAAKjB,KAAKkB,QAAQ;gBAClBlB,MAAMA,KAAKG,OAAO,GAAGe,QAAQ;gBAC7BJ;gBACAK,WAAWnB,KAAKE,QAAQ,OAAOH,cAAcG,QAAQ;gBACrDkB,SAAS5C,aAAaqB,YAAYG;gBAClCqB,YAAY3C,mBAAmBsB,MAAMS;gBACrCa,YAAY,CAACxC,iBAAiBkB,MAAMJ;gBACpC2B,UAAU5B,EAAAA,cAAAA,wBAAAA,kCAAAA,YAAY6B,IAAI,CAAC,CAACC,YAAoBjD,aAAasC,cAAcW,gBAAe;YAC5F;YAEAb,KAAKc,IAAI,CAACV;YAEV,IAAIA,QAAQG,SAAS,EAAE;gBACrBZ,4BAA4B;YAC9B;YAEAP,KAAKM,OAAO,CAACN,KAAKG,OAAO,KAAK;QAChC;QAEA,qFAAqF;QACrFO,iBAAiBnB,cAAcoB,YAAYpB,cAAc,IAAI,CAACgB,6BAA6BI,cAAc;QAEzG,0GAA0G;QAC1GP,MAAMsB,IAAI,CAACd;IACb;IAEA,OAAOR;AACT,EAAE"}
1
+ {"version":3,"sources":["getDayGrid.ts"],"sourcesContent":["import { addDays, compareDates, getDateRangeArray, isInDateRangeArray } from '../dateMath/dateMath';\nimport { DAYS_IN_WEEK } from '../constants';\nimport { Day, DayGridOptions } from './dateGrid.types';\nimport { getDateRangeTypeToUse } from './getDateRangeTypeToUse';\nimport { getBoundedDateRange } from './getBoundedDateRange';\nimport { isRestrictedDate } from './isRestrictedDate';\n\n/**\n * Generates a grid of days, given the `options`.\n * Returns one additional week at the begining from the previous range\n * and one at the end from the future range\n * @param options - parameters to specify date related restrictions for the resulting grid\n */\nexport const getDayGrid = (options: DayGridOptions): Day[][] => {\n const {\n selectedDate,\n dateRangeType,\n firstDayOfWeek,\n today,\n minDate,\n maxDate,\n weeksToShow,\n workWeekDays,\n daysToSelectInDayView,\n restrictedDates,\n markedDays,\n } = options;\n const restrictedDateOptions = { minDate, maxDate, restrictedDates };\n\n const todaysDate = today || new Date();\n\n const navigatedDate = options.navigatedDate ? options.navigatedDate : todaysDate;\n\n let date;\n if (weeksToShow && weeksToShow <= 4) {\n // if showing less than a full month, just use date == navigatedDate\n date = new Date(navigatedDate.getFullYear(), navigatedDate.getMonth(), navigatedDate.getDate());\n } else {\n date = new Date(navigatedDate.getFullYear(), navigatedDate.getMonth(), 1);\n }\n const weeks: Day[][] = [];\n\n // Cycle the date backwards to get to the first day of the week.\n while (date.getDay() !== firstDayOfWeek) {\n date.setDate(date.getDate() - 1);\n }\n\n // add the transition week as last week of previous range\n date = addDays(date, -DAYS_IN_WEEK);\n\n // a flag to indicate whether all days of the week are outside the month\n let isAllDaysOfWeekOutOfMonth = false;\n\n // in work week view if the days aren't contiguous we use week view instead\n const selectedDateRangeType = getDateRangeTypeToUse(dateRangeType, workWeekDays, firstDayOfWeek);\n\n let selectedDates: Date[] = [];\n\n if (selectedDate) {\n selectedDates = getDateRangeArray(\n selectedDate,\n selectedDateRangeType,\n firstDayOfWeek,\n workWeekDays,\n daysToSelectInDayView,\n );\n selectedDates = getBoundedDateRange(selectedDates, minDate, maxDate);\n }\n\n let shouldGetWeeks = true;\n\n for (let weekIndex = 0; shouldGetWeeks; weekIndex++) {\n const week: Day[] = [];\n\n isAllDaysOfWeekOutOfMonth = true;\n\n for (let dayIndex = 0; dayIndex < DAYS_IN_WEEK; dayIndex++) {\n const originalDate = new Date(date.getTime());\n const dayInfo: Day = {\n key: date.toString(),\n date: date.getDate().toString(),\n originalDate,\n isInMonth: date.getMonth() === navigatedDate.getMonth(),\n isToday: compareDates(todaysDate, date),\n isSelected: isInDateRangeArray(date, selectedDates),\n isInBounds: !isRestrictedDate(date, restrictedDateOptions),\n isMarked: markedDays?.some((markedDay: Date) => compareDates(originalDate, markedDay)) || false,\n };\n\n week.push(dayInfo);\n\n if (dayInfo.isInMonth) {\n isAllDaysOfWeekOutOfMonth = false;\n }\n\n date.setDate(date.getDate() + 1);\n }\n\n // We append the condition of the loop depending upon the showSixWeeksByDefault prop.\n shouldGetWeeks = weeksToShow ? weekIndex < weeksToShow + 1 : !isAllDaysOfWeekOutOfMonth || weekIndex === 0;\n\n // we don't check shouldGetWeeks before pushing because we want to add one extra week for transition state\n weeks.push(week);\n }\n\n return weeks;\n};\n"],"names":["addDays","compareDates","getDateRangeArray","isInDateRangeArray","DAYS_IN_WEEK","getDateRangeTypeToUse","getBoundedDateRange","isRestrictedDate","getDayGrid","options","selectedDate","dateRangeType","firstDayOfWeek","today","minDate","maxDate","weeksToShow","workWeekDays","daysToSelectInDayView","restrictedDates","markedDays","restrictedDateOptions","todaysDate","Date","navigatedDate","date","getFullYear","getMonth","getDate","weeks","getDay","setDate","isAllDaysOfWeekOutOfMonth","selectedDateRangeType","selectedDates","shouldGetWeeks","weekIndex","week","dayIndex","originalDate","getTime","dayInfo","key","toString","isInMonth","isToday","isSelected","isInBounds","isMarked","some","markedDay","push"],"mappings":"AAAA,SAASA,OAAO,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,kBAAkB,QAAQ,uBAAuB;AACpG,SAASC,YAAY,QAAQ,eAAe;AAE5C,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD;;;;;CAKC,GACD,OAAO,MAAMC,aAAa,CAACC;IACzB,MAAM,EACJC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,KAAK,EACLC,OAAO,EACPC,OAAO,EACPC,WAAW,EACXC,YAAY,EACZC,qBAAqB,EACrBC,eAAe,EACfC,UAAU,EACX,GAAGX;IACJ,MAAMY,wBAAwB;QAAEP;QAASC;QAASI;IAAgB;IAElE,MAAMG,aAAaT,SAAS,IAAIU;IAEhC,MAAMC,gBAAgBf,QAAQe,aAAa,GAAGf,QAAQe,aAAa,GAAGF;IAEtE,IAAIG;IACJ,IAAIT,eAAeA,eAAe,GAAG;QACnC,oEAAoE;QACpES,OAAO,IAAIF,KAAKC,cAAcE,WAAW,IAAIF,cAAcG,QAAQ,IAAIH,cAAcI,OAAO;IAC9F,OAAO;QACLH,OAAO,IAAIF,KAAKC,cAAcE,WAAW,IAAIF,cAAcG,QAAQ,IAAI;IACzE;IACA,MAAME,QAAiB,EAAE;IAEzB,gEAAgE;IAChE,MAAOJ,KAAKK,MAAM,OAAOlB,eAAgB;QACvCa,KAAKM,OAAO,CAACN,KAAKG,OAAO,KAAK;IAChC;IAEA,yDAAyD;IACzDH,OAAOzB,QAAQyB,MAAM,CAACrB;IAEtB,wEAAwE;IACxE,IAAI4B,4BAA4B;IAEhC,2EAA2E;IAC3E,MAAMC,wBAAwB5B,sBAAsBM,eAAeM,cAAcL;IAEjF,IAAIsB,gBAAwB,EAAE;IAE9B,IAAIxB,cAAc;QAChBwB,gBAAgBhC,kBACdQ,cACAuB,uBACArB,gBACAK,cACAC;QAEFgB,gBAAgB5B,oBAAoB4B,eAAepB,SAASC;IAC9D;IAEA,IAAIoB,iBAAiB;IAErB,IAAK,IAAIC,YAAY,GAAGD,gBAAgBC,YAAa;QACnD,MAAMC,OAAc,EAAE;QAEtBL,4BAA4B;QAE5B,IAAK,IAAIM,WAAW,GAAGA,WAAWlC,cAAckC,WAAY;YAC1D,MAAMC,eAAe,IAAIhB,KAAKE,KAAKe,OAAO;YAC1C,MAAMC,UAAe;gBACnBC,KAAKjB,KAAKkB,QAAQ;gBAClBlB,MAAMA,KAAKG,OAAO,GAAGe,QAAQ;gBAC7BJ;gBACAK,WAAWnB,KAAKE,QAAQ,OAAOH,cAAcG,QAAQ;gBACrDkB,SAAS5C,aAAaqB,YAAYG;gBAClCqB,YAAY3C,mBAAmBsB,MAAMS;gBACrCa,YAAY,CAACxC,iBAAiBkB,MAAMJ;gBACpC2B,UAAU5B,CAAAA,uBAAAA,iCAAAA,WAAY6B,IAAI,CAAC,CAACC,YAAoBjD,aAAasC,cAAcW,gBAAe;YAC5F;YAEAb,KAAKc,IAAI,CAACV;YAEV,IAAIA,QAAQG,SAAS,EAAE;gBACrBZ,4BAA4B;YAC9B;YAEAP,KAAKM,OAAO,CAACN,KAAKG,OAAO,KAAK;QAChC;QAEA,qFAAqF;QACrFO,iBAAiBnB,cAAcoB,YAAYpB,cAAc,IAAI,CAACgB,6BAA6BI,cAAc;QAEzG,0GAA0G;QAC1GP,MAAMsB,IAAI,CAACd;IACb;IAEA,OAAOR;AACT,EAAE"}
@@ -46,11 +46,10 @@ function useDateState({ value, today = new Date(), onSelectDate }) {
46
46
  setNavigatedDay(date);
47
47
  };
48
48
  const onDateSelected = (date, selectedDateRangeArray)=>{
49
- var _onSelectDate;
50
49
  setNavigatedMonth(date);
51
50
  setNavigatedDay(date);
52
51
  setSelectedDate(date);
53
- (_onSelectDate = onSelectDate) === null || _onSelectDate === void 0 ? void 0 : _onSelectDate(date, selectedDateRangeArray);
52
+ onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(date, selectedDateRangeArray);
54
53
  };
55
54
  return [
56
55
  selectedDate,
@@ -199,9 +198,8 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
199
198
  ev.preventDefault();
200
199
  break;
201
200
  case _keyboardkeys.Escape:
202
- var _onDismiss;
203
201
  ev.stopPropagation();
204
- (_onDismiss = onDismiss) === null || _onDismiss === void 0 ? void 0 : _onDismiss();
202
+ onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
205
203
  break;
206
204
  case _keyboardkeys.PageUp:
207
205
  if (ev.ctrlKey) {
@@ -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 { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync, getWindow } 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({ value, today = new Date(), onSelectDate }) {\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 var _onSelectDate;\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n (_onSelectDate = 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 [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n }) ? undefined : isMonthPickerVisibleProp\n });\n /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n }) ? 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 focus = React.useCallback(()=>{\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current);\n }\n }, [\n isDayPickerVisible,\n isMonthPickerVisible\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 onHeaderSelect = getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n }) ? ()=>{\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 var _onDismiss;\n ev.stopPropagation();\n (_onDismiss = 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 showMonthPickerAsOverlay = getShowMonthPickerAsOverlay(props);\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';\nfunction getShowMonthPickerAsOverlay({ isDayPickerVisible, showMonthPickerAsOverlay }) {\n const win = getWindow();\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","value","today","Date","onSelectDate","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","React","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","_onSelectDate","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","setIsMonthPickerVisible","getShowMonthPickerAsOverlay","undefined","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","props","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","_onDismiss","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","win","getWindow","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 { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync, getWindow } 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({ value, today = new Date(), onSelectDate }) {\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 [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n }) ? undefined : isMonthPickerVisibleProp\n });\n /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n }) ? 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 focus = React.useCallback(()=>{\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current);\n }\n }, [\n isDayPickerVisible,\n isMonthPickerVisible\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 onHeaderSelect = getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n }) ? ()=>{\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 showMonthPickerAsOverlay = getShowMonthPickerAsOverlay(props);\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';\nfunction getShowMonthPickerAsOverlay({ isDayPickerVisible, showMonthPickerAsOverlay }) {\n const win = getWindow();\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","value","today","Date","onSelectDate","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","React","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","setIsMonthPickerVisible","getShowMonthPickerAsOverlay","undefined","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","props","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","win","getWindow","innerWidth"],"mappings":"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"}
@@ -114,8 +114,7 @@ CalendarDayNavigationButtons.displayName = 'CalendarDayNavigationButtons';
114
114
  const onButtonKeyDown = (callback)=>(ev)=>{
115
115
  switch(ev.key){
116
116
  case _keyboardkeys.Enter:
117
- var _callback;
118
- (_callback = callback) === null || _callback === void 0 ? void 0 : _callback();
117
+ callback === null || callback === void 0 ? void 0 : callback();
119
118
  break;
120
119
  }
121
120
  };
@@ -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 var _callback;\n (_callback = 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","_callback"],"mappings":"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"}
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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"}
@@ -51,7 +51,7 @@ const CalendarDayGrid = (props)=>{
51
51
  const navigatedDayRef = _react.useRef(null);
52
52
  const activeDescendantId = (0, _reactutilities.useId)();
53
53
  const onSelectDate = (selectedDate)=>{
54
- var _props_onSelectDate, _props, _props_onNavigateDate, _props1;
54
+ var _props_onSelectDate, _props_onNavigateDate;
55
55
  const { firstDayOfWeek, minDate, maxDate, workWeekDays, daysToSelectInDayView, restrictedDates } = props;
56
56
  const restrictedDatesOptions = {
57
57
  minDate,
@@ -63,8 +63,8 @@ const CalendarDayGrid = (props)=>{
63
63
  dateRange = dateRange.filter((d)=>{
64
64
  return !(0, _utils.isRestrictedDate)(d, restrictedDatesOptions);
65
65
  });
66
- (_props_onSelectDate = (_props = props).onSelectDate) === null || _props_onSelectDate === void 0 ? void 0 : _props_onSelectDate.call(_props, selectedDate, dateRange);
67
- (_props_onNavigateDate = (_props1 = props).onNavigateDate) === null || _props_onNavigateDate === void 0 ? void 0 : _props_onNavigateDate.call(_props1, selectedDate, true);
66
+ (_props_onSelectDate = props.onSelectDate) === null || _props_onSelectDate === void 0 ? void 0 : _props_onSelectDate.call(props, selectedDate, dateRange);
67
+ (_props_onNavigateDate = props.onNavigateDate) === null || _props_onNavigateDate === void 0 ? void 0 : _props_onNavigateDate.call(props, selectedDate, true);
68
68
  };
69
69
  const [daysRef, getSetRefCallback] = useDayRefs();
70
70
  const weeks = (0, _useWeeks.useWeeks)(props, onSelectDate, getSetRefCallback);
@@ -1 +1 @@
1
- {"version":3,"sources":["CalendarDayGrid.js"],"sourcesContent":["import * as React from 'react';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { useId } from '@fluentui/react-utilities';\nimport { getBoundedDateRange, getDateRangeArray, isRestrictedDate, DateRangeType } from '../../utils';\nimport { useCalendarDayGridStyles_unstable } from './useCalendarDayGridStyles.styles';\nimport { CalendarMonthHeaderRow } from './CalendarMonthHeaderRow';\nimport { CalendarGridRow } from './CalendarGridRow';\nimport { useWeeks } from './useWeeks';\nimport { useWeekCornerStyles } from './useWeekCornerStyles.styles';\nimport { mergeClasses } from '@griffel/react';\nfunction useDayRefs() {\n const daysRef = React.useRef({});\n const getSetRefCallback = (dayKey)=>(element)=>{\n if (element === null) {\n delete daysRef.current[dayKey];\n } else {\n daysRef.current[dayKey] = element;\n }\n };\n return [\n daysRef,\n getSetRefCallback\n ];\n}\nfunction useAnimateBackwards(weeks) {\n const previousNavigatedDateRef = React.useRef();\n React.useEffect(()=>{\n previousNavigatedDateRef.current = weeks[0][0].originalDate;\n });\n const previousNavigatedDate = previousNavigatedDateRef.current;\n if (!previousNavigatedDate || previousNavigatedDate.getTime() === weeks[0][0].originalDate.getTime()) {\n return undefined;\n } else if (previousNavigatedDate <= weeks[0][0].originalDate) {\n return false;\n } else {\n return true;\n }\n}\nexport const CalendarDayGrid = (props)=>{\n const navigatedDayRef = React.useRef(null);\n const activeDescendantId = useId();\n const onSelectDate = (selectedDate)=>{\n var _props_onSelectDate, _props, _props_onNavigateDate, _props1;\n const { firstDayOfWeek, minDate, maxDate, workWeekDays, daysToSelectInDayView, restrictedDates } = props;\n const restrictedDatesOptions = {\n minDate,\n maxDate,\n restrictedDates\n };\n let dateRange = getDateRangeArray(selectedDate, dateRangeType, firstDayOfWeek, workWeekDays, daysToSelectInDayView);\n dateRange = getBoundedDateRange(dateRange, minDate, maxDate);\n dateRange = dateRange.filter((d)=>{\n return !isRestrictedDate(d, restrictedDatesOptions);\n });\n (_props_onSelectDate = (_props = props).onSelectDate) === null || _props_onSelectDate === void 0 ? void 0 : _props_onSelectDate.call(_props, selectedDate, dateRange);\n (_props_onNavigateDate = (_props1 = props).onNavigateDate) === null || _props_onNavigateDate === void 0 ? void 0 : _props_onNavigateDate.call(_props1, selectedDate, true);\n };\n const [daysRef, getSetRefCallback] = useDayRefs();\n const weeks = useWeeks(props, onSelectDate, getSetRefCallback);\n const animateBackwards = useAnimateBackwards(weeks);\n const [getWeekCornerStyles, calculateRoundedStyles] = useWeekCornerStyles(props);\n React.useImperativeHandle(props.componentRef, ()=>({\n focus () {\n var _navigatedDayRef_current_focus, _navigatedDayRef_current;\n (_navigatedDayRef_current = navigatedDayRef.current) === null || _navigatedDayRef_current === void 0 ? void 0 : (_navigatedDayRef_current_focus = _navigatedDayRef_current.focus) === null || _navigatedDayRef_current_focus === void 0 ? void 0 : _navigatedDayRef_current_focus.call(_navigatedDayRef_current);\n }\n }), []);\n /**\n *\n * Section for setting hover/pressed styles. Because we want arbitrary blobs of days to be selectable, to support\n * highlighting every day in the month for month view, css :hover style isn't enough, so we need mouse callbacks\n * to set classnames on all relevant child refs to apply the styling\n *\n */ const getDayInfosInRangeOfDay = (dayToCompare)=>{\n // The hover state looks weird with non-contiguous days in work week view. In work week, show week hover state\n const dateRangeHoverType = getDateRangeTypeToUse(props.dateRangeType, props.workWeekDays);\n // gets all the dates for the given date range type that are in the same date range as the given day\n const dateRange = getDateRangeArray(dayToCompare.originalDate, dateRangeHoverType, props.firstDayOfWeek, props.workWeekDays, props.daysToSelectInDayView).map((date)=>date.getTime());\n // gets all the day refs for the given dates\n const dayInfosInRange = weeks.reduce((accumulatedValue, currentWeek)=>{\n return accumulatedValue.concat(currentWeek.filter((weekDay)=>dateRange.indexOf(weekDay.originalDate.getTime()) !== -1));\n }, []);\n return dayInfosInRange;\n };\n const getRefsFromDayInfos = (dayInfosInRange)=>{\n let dayRefs = [];\n dayRefs = dayInfosInRange.map((dayInfo)=>daysRef.current[dayInfo.key]);\n return dayRefs;\n };\n const { dateRangeType, showWeekNumbers, labelledBy, lightenDaysOutsideNavigatedMonth, animationDirection } = props;\n const classNames = useCalendarDayGridStyles_unstable({\n animateBackwards,\n animationDirection,\n dateRangeType,\n lightenDaysOutsideNavigatedMonth: lightenDaysOutsideNavigatedMonth === undefined ? true : lightenDaysOutsideNavigatedMonth,\n showWeekNumbers\n });\n // When the month is highlighted get the corner dates so that styles can be added to them\n const weekCorners = getWeekCornerStyles(weeks);\n const partialWeekProps = {\n weeks,\n navigatedDayRef,\n calculateRoundedStyles,\n activeDescendantId,\n classNames,\n weekCorners,\n getDayInfosInRangeOfDay,\n getRefsFromDayInfos\n };\n const arrowNavigationAttributes = useArrowNavigationGroup({\n axis: 'grid'\n });\n return /*#__PURE__*/ React.createElement(\"table\", {\n className: mergeClasses(classNames.table, props.className),\n \"aria-multiselectable\": \"false\",\n \"aria-labelledby\": labelledBy,\n \"aria-activedescendant\": activeDescendantId,\n role: \"grid\",\n ...arrowNavigationAttributes\n }, /*#__PURE__*/ React.createElement(\"tbody\", null, /*#__PURE__*/ React.createElement(CalendarMonthHeaderRow, {\n ...props,\n classNames: classNames,\n weeks: weeks\n }), /*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n week: weeks[0],\n weekIndex: -1,\n rowClassName: classNames.firstTransitionWeek,\n \"aria-role\": \"presentation\",\n ariaHidden: true\n }), weeks.slice(1, weeks.length - 1).map((week, weekIndex)=>/*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n key: weekIndex,\n week: week,\n weekIndex: weekIndex,\n rowClassName: classNames.weekRow\n })), /*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n week: weeks[weeks.length - 1],\n weekIndex: -2,\n rowClassName: classNames.lastTransitionWeek,\n \"aria-role\": \"presentation\",\n ariaHidden: true\n })));\n};\nCalendarDayGrid.displayName = 'CalendarDayGrid';\n/**\n * When given work week, if the days are non-contiguous, the hover states look really weird. So for non-contiguous\n * work weeks, we'll just show week view instead.\n */ function getDateRangeTypeToUse(dateRangeType, workWeekDays) {\n if (workWeekDays && dateRangeType === DateRangeType.WorkWeek) {\n const sortedWWDays = workWeekDays.slice().sort();\n let isContiguous = true;\n for(let i = 1; i < sortedWWDays.length; i++){\n if (sortedWWDays[i] !== sortedWWDays[i - 1] + 1) {\n isContiguous = false;\n break;\n }\n }\n if (!isContiguous || workWeekDays.length === 0) {\n return DateRangeType.Week;\n }\n }\n return dateRangeType;\n}\n"],"names":["CalendarDayGrid","useDayRefs","daysRef","React","useRef","getSetRefCallback","dayKey","element","current","useAnimateBackwards","weeks","previousNavigatedDateRef","useEffect","originalDate","previousNavigatedDate","getTime","undefined","props","navigatedDayRef","activeDescendantId","useId","onSelectDate","selectedDate","_props_onSelectDate","_props","_props_onNavigateDate","_props1","firstDayOfWeek","minDate","maxDate","workWeekDays","daysToSelectInDayView","restrictedDates","restrictedDatesOptions","dateRange","getDateRangeArray","dateRangeType","getBoundedDateRange","filter","d","isRestrictedDate","call","onNavigateDate","useWeeks","animateBackwards","getWeekCornerStyles","calculateRoundedStyles","useWeekCornerStyles","useImperativeHandle","componentRef","focus","_navigatedDayRef_current_focus","_navigatedDayRef_current","getDayInfosInRangeOfDay","dayToCompare","dateRangeHoverType","getDateRangeTypeToUse","map","date","dayInfosInRange","reduce","accumulatedValue","currentWeek","concat","weekDay","indexOf","getRefsFromDayInfos","dayRefs","dayInfo","key","showWeekNumbers","labelledBy","lightenDaysOutsideNavigatedMonth","animationDirection","classNames","useCalendarDayGridStyles_unstable","weekCorners","partialWeekProps","arrowNavigationAttributes","useArrowNavigationGroup","axis","createElement","className","mergeClasses","table","role","CalendarMonthHeaderRow","CalendarGridRow","week","weekIndex","rowClassName","firstTransitionWeek","ariaHidden","slice","length","weekRow","lastTransitionWeek","displayName","DateRangeType","WorkWeek","sortedWWDays","sort","isContiguous","i","Week"],"mappings":"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"}
1
+ {"version":3,"sources":["CalendarDayGrid.js"],"sourcesContent":["import * as React from 'react';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { useId } from '@fluentui/react-utilities';\nimport { getBoundedDateRange, getDateRangeArray, isRestrictedDate, DateRangeType } from '../../utils';\nimport { useCalendarDayGridStyles_unstable } from './useCalendarDayGridStyles.styles';\nimport { CalendarMonthHeaderRow } from './CalendarMonthHeaderRow';\nimport { CalendarGridRow } from './CalendarGridRow';\nimport { useWeeks } from './useWeeks';\nimport { useWeekCornerStyles } from './useWeekCornerStyles.styles';\nimport { mergeClasses } from '@griffel/react';\nfunction useDayRefs() {\n const daysRef = React.useRef({});\n const getSetRefCallback = (dayKey)=>(element)=>{\n if (element === null) {\n delete daysRef.current[dayKey];\n } else {\n daysRef.current[dayKey] = element;\n }\n };\n return [\n daysRef,\n getSetRefCallback\n ];\n}\nfunction useAnimateBackwards(weeks) {\n const previousNavigatedDateRef = React.useRef();\n React.useEffect(()=>{\n previousNavigatedDateRef.current = weeks[0][0].originalDate;\n });\n const previousNavigatedDate = previousNavigatedDateRef.current;\n if (!previousNavigatedDate || previousNavigatedDate.getTime() === weeks[0][0].originalDate.getTime()) {\n return undefined;\n } else if (previousNavigatedDate <= weeks[0][0].originalDate) {\n return false;\n } else {\n return true;\n }\n}\nexport const CalendarDayGrid = (props)=>{\n const navigatedDayRef = React.useRef(null);\n const activeDescendantId = useId();\n const onSelectDate = (selectedDate)=>{\n var _props_onSelectDate, _props_onNavigateDate;\n const { firstDayOfWeek, minDate, maxDate, workWeekDays, daysToSelectInDayView, restrictedDates } = props;\n const restrictedDatesOptions = {\n minDate,\n maxDate,\n restrictedDates\n };\n let dateRange = getDateRangeArray(selectedDate, dateRangeType, firstDayOfWeek, workWeekDays, daysToSelectInDayView);\n dateRange = getBoundedDateRange(dateRange, minDate, maxDate);\n dateRange = dateRange.filter((d)=>{\n return !isRestrictedDate(d, restrictedDatesOptions);\n });\n (_props_onSelectDate = props.onSelectDate) === null || _props_onSelectDate === void 0 ? void 0 : _props_onSelectDate.call(props, selectedDate, dateRange);\n (_props_onNavigateDate = props.onNavigateDate) === null || _props_onNavigateDate === void 0 ? void 0 : _props_onNavigateDate.call(props, selectedDate, true);\n };\n const [daysRef, getSetRefCallback] = useDayRefs();\n const weeks = useWeeks(props, onSelectDate, getSetRefCallback);\n const animateBackwards = useAnimateBackwards(weeks);\n const [getWeekCornerStyles, calculateRoundedStyles] = useWeekCornerStyles(props);\n React.useImperativeHandle(props.componentRef, ()=>({\n focus () {\n var _navigatedDayRef_current_focus, _navigatedDayRef_current;\n (_navigatedDayRef_current = navigatedDayRef.current) === null || _navigatedDayRef_current === void 0 ? void 0 : (_navigatedDayRef_current_focus = _navigatedDayRef_current.focus) === null || _navigatedDayRef_current_focus === void 0 ? void 0 : _navigatedDayRef_current_focus.call(_navigatedDayRef_current);\n }\n }), []);\n /**\n *\n * Section for setting hover/pressed styles. Because we want arbitrary blobs of days to be selectable, to support\n * highlighting every day in the month for month view, css :hover style isn't enough, so we need mouse callbacks\n * to set classnames on all relevant child refs to apply the styling\n *\n */ const getDayInfosInRangeOfDay = (dayToCompare)=>{\n // The hover state looks weird with non-contiguous days in work week view. In work week, show week hover state\n const dateRangeHoverType = getDateRangeTypeToUse(props.dateRangeType, props.workWeekDays);\n // gets all the dates for the given date range type that are in the same date range as the given day\n const dateRange = getDateRangeArray(dayToCompare.originalDate, dateRangeHoverType, props.firstDayOfWeek, props.workWeekDays, props.daysToSelectInDayView).map((date)=>date.getTime());\n // gets all the day refs for the given dates\n const dayInfosInRange = weeks.reduce((accumulatedValue, currentWeek)=>{\n return accumulatedValue.concat(currentWeek.filter((weekDay)=>dateRange.indexOf(weekDay.originalDate.getTime()) !== -1));\n }, []);\n return dayInfosInRange;\n };\n const getRefsFromDayInfos = (dayInfosInRange)=>{\n let dayRefs = [];\n dayRefs = dayInfosInRange.map((dayInfo)=>daysRef.current[dayInfo.key]);\n return dayRefs;\n };\n const { dateRangeType, showWeekNumbers, labelledBy, lightenDaysOutsideNavigatedMonth, animationDirection } = props;\n const classNames = useCalendarDayGridStyles_unstable({\n animateBackwards,\n animationDirection,\n dateRangeType,\n lightenDaysOutsideNavigatedMonth: lightenDaysOutsideNavigatedMonth === undefined ? true : lightenDaysOutsideNavigatedMonth,\n showWeekNumbers\n });\n // When the month is highlighted get the corner dates so that styles can be added to them\n const weekCorners = getWeekCornerStyles(weeks);\n const partialWeekProps = {\n weeks,\n navigatedDayRef,\n calculateRoundedStyles,\n activeDescendantId,\n classNames,\n weekCorners,\n getDayInfosInRangeOfDay,\n getRefsFromDayInfos\n };\n const arrowNavigationAttributes = useArrowNavigationGroup({\n axis: 'grid'\n });\n return /*#__PURE__*/ React.createElement(\"table\", {\n className: mergeClasses(classNames.table, props.className),\n \"aria-multiselectable\": \"false\",\n \"aria-labelledby\": labelledBy,\n \"aria-activedescendant\": activeDescendantId,\n role: \"grid\",\n ...arrowNavigationAttributes\n }, /*#__PURE__*/ React.createElement(\"tbody\", null, /*#__PURE__*/ React.createElement(CalendarMonthHeaderRow, {\n ...props,\n classNames: classNames,\n weeks: weeks\n }), /*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n week: weeks[0],\n weekIndex: -1,\n rowClassName: classNames.firstTransitionWeek,\n \"aria-role\": \"presentation\",\n ariaHidden: true\n }), weeks.slice(1, weeks.length - 1).map((week, weekIndex)=>/*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n key: weekIndex,\n week: week,\n weekIndex: weekIndex,\n rowClassName: classNames.weekRow\n })), /*#__PURE__*/ React.createElement(CalendarGridRow, {\n ...props,\n ...partialWeekProps,\n week: weeks[weeks.length - 1],\n weekIndex: -2,\n rowClassName: classNames.lastTransitionWeek,\n \"aria-role\": \"presentation\",\n ariaHidden: true\n })));\n};\nCalendarDayGrid.displayName = 'CalendarDayGrid';\n/**\n * When given work week, if the days are non-contiguous, the hover states look really weird. So for non-contiguous\n * work weeks, we'll just show week view instead.\n */ function getDateRangeTypeToUse(dateRangeType, workWeekDays) {\n if (workWeekDays && dateRangeType === DateRangeType.WorkWeek) {\n const sortedWWDays = workWeekDays.slice().sort();\n let isContiguous = true;\n for(let i = 1; i < sortedWWDays.length; i++){\n if (sortedWWDays[i] !== sortedWWDays[i - 1] + 1) {\n isContiguous = false;\n break;\n }\n }\n if (!isContiguous || workWeekDays.length === 0) {\n return DateRangeType.Week;\n }\n }\n return dateRangeType;\n}\n"],"names":["CalendarDayGrid","useDayRefs","daysRef","React","useRef","getSetRefCallback","dayKey","element","current","useAnimateBackwards","weeks","previousNavigatedDateRef","useEffect","originalDate","previousNavigatedDate","getTime","undefined","props","navigatedDayRef","activeDescendantId","useId","onSelectDate","selectedDate","_props_onSelectDate","_props_onNavigateDate","firstDayOfWeek","minDate","maxDate","workWeekDays","daysToSelectInDayView","restrictedDates","restrictedDatesOptions","dateRange","getDateRangeArray","dateRangeType","getBoundedDateRange","filter","d","isRestrictedDate","call","onNavigateDate","useWeeks","animateBackwards","getWeekCornerStyles","calculateRoundedStyles","useWeekCornerStyles","useImperativeHandle","componentRef","focus","_navigatedDayRef_current_focus","_navigatedDayRef_current","getDayInfosInRangeOfDay","dayToCompare","dateRangeHoverType","getDateRangeTypeToUse","map","date","dayInfosInRange","reduce","accumulatedValue","currentWeek","concat","weekDay","indexOf","getRefsFromDayInfos","dayRefs","dayInfo","key","showWeekNumbers","labelledBy","lightenDaysOutsideNavigatedMonth","animationDirection","classNames","useCalendarDayGridStyles_unstable","weekCorners","partialWeekProps","arrowNavigationAttributes","useArrowNavigationGroup","axis","createElement","className","mergeClasses","table","role","CalendarMonthHeaderRow","CalendarGridRow","week","weekIndex","rowClassName","firstTransitionWeek","ariaHidden","slice","length","weekRow","lastTransitionWeek","displayName","DateRangeType","WorkWeek","sortedWWDays","sort","isContiguous","i","Week"],"mappings":"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"}
@@ -18,10 +18,9 @@ const _utils = require("../../utils");
18
18
  const _useWeekCornerStylesstyles = require("./useWeekCornerStyles.styles");
19
19
  const _useCalendarDayGridStylesstyles = require("./useCalendarDayGridStyles.styles");
20
20
  const CalendarGridDayCell = (props)=>{
21
- var _weekCorners;
22
21
  const { navigatedDate, dateTimeFormatter, allFocusable, strings, activeDescendantId, navigatedDayRef, calculateRoundedStyles, weeks, classNames, day, dayIndex, weekIndex, weekCorners, ariaHidden, customDayCellRef, dateRangeType, daysToSelectInDayView, onSelectDate, restrictedDates, minDate, maxDate, onNavigateDate, getDayInfosInRangeOfDay, getRefsFromDayInfos } = props;
23
22
  var _weekCorners_;
24
- const cornerStyle = (_weekCorners_ = (_weekCorners = weekCorners) === null || _weekCorners === void 0 ? void 0 : _weekCorners[weekIndex + '_' + dayIndex]) !== null && _weekCorners_ !== void 0 ? _weekCorners_ : '';
23
+ const cornerStyle = (_weekCorners_ = weekCorners === null || weekCorners === void 0 ? void 0 : weekCorners[weekIndex + '_' + dayIndex]) !== null && _weekCorners_ !== void 0 ? _weekCorners_ : '';
25
24
  const isNavigatedDate = (0, _utils.compareDates)(navigatedDate, day.originalDate);
26
25
  const { dir } = (0, _reactsharedcontexts.useFluent_unstable)();
27
26
  const navigateMonthEdge = (ev, date)=>{
@@ -127,8 +126,7 @@ const CalendarGridDayCell = (props)=>{
127
126
  };
128
127
  const onDayKeyDown = (ev)=>{
129
128
  if (ev.key === _keyboardkeys.Enter) {
130
- var _onSelectDate;
131
- (_onSelectDate = onSelectDate) === null || _onSelectDate === void 0 ? void 0 : _onSelectDate(day.originalDate);
129
+ onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(day.originalDate);
132
130
  } else {
133
131
  navigateMonthEdge(ev, day.originalDate);
134
132
  }
@@ -141,8 +139,7 @@ const CalendarGridDayCell = (props)=>{
141
139
  return /*#__PURE__*/ _react.createElement("td", {
142
140
  className: (0, _react1.mergeClasses)(classNames.dayCell, weekCorners && cornerStyle, day.isSelected && classNames.daySelected, !day.isInBounds && classNames.dayOutsideBounds, !day.isInMonth && classNames.dayOutsideNavigatedMonth),
143
141
  ref: (element)=>{
144
- var _customDayCellRef;
145
- (_customDayCellRef = customDayCellRef) === null || _customDayCellRef === void 0 ? void 0 : _customDayCellRef(element, day.originalDate, classNames);
142
+ customDayCellRef === null || customDayCellRef === void 0 ? void 0 : customDayCellRef(element, day.originalDate, classNames);
146
143
  day.setRef(element);
147
144
  isNavigatedDate && (navigatedDayRef.current = element);
148
145
  },