@fluentui/react-calendar-compat 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,18 +1,31 @@
1
1
  # Change Log - @fluentui/react-calendar-compat
2
2
 
3
- This log was last generated on Thu, 30 Nov 2023 13:37:55 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 14 Dec 2023 09:51:33 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [0.0.10](https://github.com/microsoft/fluentui/tree/@fluentui/react-calendar-compat_v0.0.10)
8
+
9
+ Thu, 14 Dec 2023 09:51:33 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-calendar-compat_v0.0.9..@fluentui/react-calendar-compat_v0.0.10)
11
+
12
+ ### Patches
13
+
14
+ - chore: disallow `window` and `document` access ([PR #29962](https://github.com/microsoft/fluentui/pull/29962) by seanmonahan@microsoft.com)
15
+ - Bump @fluentui/react-jsx-runtime to v9.0.21 ([commit](https://github.com/microsoft/fluentui/commit/80a1b02be2fbbdde916ac87fbf760e442a2295c4) by beachball)
16
+ - Bump @fluentui/react-shared-contexts to v9.13.1 ([commit](https://github.com/microsoft/fluentui/commit/80a1b02be2fbbdde916ac87fbf760e442a2295c4) by beachball)
17
+ - Bump @fluentui/react-tabster to v9.15.1 ([commit](https://github.com/microsoft/fluentui/commit/80a1b02be2fbbdde916ac87fbf760e442a2295c4) by beachball)
18
+ - Bump @fluentui/react-utilities to v9.15.3 ([commit](https://github.com/microsoft/fluentui/commit/80a1b02be2fbbdde916ac87fbf760e442a2295c4) by beachball)
19
+
7
20
  ## [0.0.9](https://github.com/microsoft/fluentui/tree/@fluentui/react-calendar-compat_v0.0.9)
8
21
 
9
- Thu, 30 Nov 2023 13:37:55 GMT
22
+ Thu, 30 Nov 2023 13:42:08 GMT
10
23
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-calendar-compat_v0.0.8..@fluentui/react-calendar-compat_v0.0.9)
11
24
 
12
25
  ### Patches
13
26
 
14
- - Bump @fluentui/react-jsx-runtime to v9.0.20 ([PR #29957](https://github.com/microsoft/fluentui/pull/29957) by beachball)
15
- - Bump @fluentui/react-tabster to v9.15.0 ([PR #29957](https://github.com/microsoft/fluentui/pull/29957) by beachball)
27
+ - Bump @fluentui/react-jsx-runtime to v9.0.20 ([PR #29929](https://github.com/microsoft/fluentui/pull/29929) by beachball)
28
+ - Bump @fluentui/react-tabster to v9.15.0 ([PR #29929](https://github.com/microsoft/fluentui/pull/29929) by beachball)
16
29
 
17
30
  ## [0.0.8](https://github.com/microsoft/fluentui/tree/@fluentui/react-calendar-compat_v0.0.8)
18
31
 
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { Backspace, Enter, Escape, PageDown, PageUp, Space } from '@fluentui/keyboard-keys';
3
3
  import { useControllableState } from '@fluentui/react-utilities';
4
- import { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync, getWindow } from '../../utils';
4
+ import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';
5
+ import { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync } from '../../utils';
5
6
  import { CalendarDay } from '../CalendarDay/CalendarDay';
6
7
  import { CalendarMonth } from '../CalendarMonth/CalendarMonth';
7
8
  import { useCalendarStyles_unstable } from './useCalendarStyles.styles';
@@ -59,21 +60,19 @@ function useDateState(props) {
59
60
  ];
60
61
  }
61
62
  function useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {
62
- /** State used to show/hide month picker */ const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({
63
+ /** State used to show/hide month picker */ const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({
64
+ isDayPickerVisible: isDayPickerVisibleProp,
65
+ showMonthPickerAsOverlay
66
+ });
67
+ const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({
63
68
  defaultState: false,
64
69
  initialState: true,
65
- state: getShowMonthPickerAsOverlay({
66
- isDayPickerVisible: isDayPickerVisibleProp,
67
- showMonthPickerAsOverlay
68
- }) ? undefined : isMonthPickerVisibleProp
70
+ state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp
69
71
  });
70
72
  /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({
71
73
  defaultState: true,
72
74
  initialState: true,
73
- state: getShowMonthPickerAsOverlay({
74
- isDayPickerVisible: isDayPickerVisibleProp,
75
- showMonthPickerAsOverlay
76
- }) ? undefined : isDayPickerVisibleProp
75
+ state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp
77
76
  });
78
77
  const toggleDayMonthPickerVisibility = ()=>{
79
78
  setIsMonthPickerVisible(!isMonthPickerVisible);
@@ -89,15 +88,18 @@ function useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisibl
89
88
  const dayPicker = React.useRef(null);
90
89
  const monthPicker = React.useRef(null);
91
90
  const focusOnUpdate = React.useRef(false);
91
+ const { targetDocument } = useFluent();
92
+ const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
92
93
  const focus = React.useCallback(()=>{
93
94
  if (isDayPickerVisible && dayPicker.current) {
94
- focusAsync(dayPicker.current);
95
+ focusAsync(dayPicker.current, win);
95
96
  } else if (isMonthPickerVisible && monthPicker.current) {
96
- focusAsync(monthPicker.current);
97
+ focusAsync(monthPicker.current, win);
97
98
  }
98
99
  }, [
99
100
  isDayPickerVisible,
100
- isMonthPickerVisible
101
+ isMonthPickerVisible,
102
+ win
101
103
  ]);
102
104
  React.useImperativeHandle(componentRef, ()=>({
103
105
  focus
@@ -168,10 +170,11 @@ function useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisibl
168
170
  }
169
171
  navigateDay(date);
170
172
  };
171
- const onHeaderSelect = getShowMonthPickerAsOverlay({
173
+ const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({
172
174
  isDayPickerVisible: isDayPickerVisibleProp,
173
175
  showMonthPickerAsOverlay: showMonthPickerAsOverlayProp
174
- }) ? ()=>{
176
+ });
177
+ const onHeaderSelect = showMonthPickerAsOverlay ? ()=>{
175
178
  toggleDayMonthPickerVisibility();
176
179
  focusOnNextUpdate();
177
180
  } : undefined;
@@ -225,10 +228,6 @@ function useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisibl
225
228
  break;
226
229
  }
227
230
  };
228
- const showMonthPickerAsOverlay = getShowMonthPickerAsOverlay({
229
- isDayPickerVisible: isDayPickerVisibleProp,
230
- showMonthPickerAsOverlay: showMonthPickerAsOverlayProp
231
- });
232
231
  const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;
233
232
  const classes = useCalendarStyles_unstable({
234
233
  className,
@@ -305,7 +304,8 @@ function useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisibl
305
304
  }), renderGoToTodayButton()) : renderGoToTodayButton());
306
305
  });
307
306
  Calendar.displayName = 'Calendar';
308
- function getShowMonthPickerAsOverlay({ isDayPickerVisible, showMonthPickerAsOverlay }) {
309
- const win = getWindow();
307
+ const useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay })=>{
308
+ const { targetDocument } = useFluent();
309
+ const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
310
310
  return showMonthPickerAsOverlay || isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY;
311
- }
311
+ };
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Backspace, Enter, Escape, PageDown, PageUp, Space } from '@fluentui/keyboard-keys';\nimport { useControllableState } from '@fluentui/react-utilities';\nimport {\n addMonths,\n addYears,\n DateRangeType,\n DayOfWeek,\n DEFAULT_CALENDAR_STRINGS,\n DEFAULT_DATE_FORMATTING,\n FirstWeekOfYear,\n focusAsync,\n getWindow,\n} from '../../utils';\nimport { CalendarDay } from '../CalendarDay/CalendarDay';\nimport { CalendarMonth } from '../CalendarMonth/CalendarMonth';\nimport { useCalendarStyles_unstable } from './useCalendarStyles.styles';\nimport type { ICalendarDay } from '../CalendarDay/CalendarDay.types';\nimport type { ICalendarMonth } from '../CalendarMonth/CalendarMonth.types';\nimport type { CalendarProps } from './Calendar.types';\n\nconst MIN_SIZE_FORCE_OVERLAY = 440;\n\nconst defaultWorkWeekDays: DayOfWeek[] = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday,\n];\n\nfunction useDateState(props: CalendarProps) {\n const { value, today: todayProp, onSelectDate } = props;\n\n const today = React.useMemo(() => {\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [todayProp]);\n\n /** The currently selected date in the calendar */\n const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value,\n });\n\n /** The currently focused date in the day picker, but not necessarily selected */\n const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n\n /** The currently focused date in the month picker, but not necessarily selected */\n const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n\n /** If using a controlled value, when that value changes, navigate to that date */\n 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\n const navigateMonth = (date: Date) => {\n setNavigatedMonth(date);\n };\n\n const navigateDay = (date: Date) => {\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n\n const onDateSelected = (date: Date, selectedDateRangeArray?: Date[]) => {\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate?.(date, selectedDateRangeArray);\n };\n\n return [selectedDate, navigatedDay, navigatedMonth, onDateSelected, navigateDay, navigateMonth] as const;\n}\n\nfunction useVisibilityState({\n isDayPickerVisible: isDayPickerVisibleProp,\n isMonthPickerVisible: isMonthPickerVisibleProp,\n showMonthPickerAsOverlay,\n}: CalendarProps) {\n /** State used to show/hide month picker */\n const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: getShowMonthPickerAsOverlay({ isDayPickerVisible: isDayPickerVisibleProp, showMonthPickerAsOverlay })\n ? undefined\n : isMonthPickerVisibleProp,\n });\n /** State used to show/hide day picker */\n const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: getShowMonthPickerAsOverlay({ isDayPickerVisible: isDayPickerVisibleProp, showMonthPickerAsOverlay })\n ? undefined\n : isDayPickerVisibleProp,\n });\n\n const toggleDayMonthPickerVisibility = () => {\n setIsMonthPickerVisible(!isMonthPickerVisible);\n setIsDayPickerVisible(!isDayPickerVisible);\n };\n\n return [isMonthPickerVisible, isDayPickerVisible, toggleDayMonthPickerVisibility] as const;\n}\n\nfunction useFocusLogic({ componentRef }: CalendarProps, isDayPickerVisible: boolean, isMonthPickerVisible: boolean) {\n const dayPicker = React.useRef<ICalendarDay>(null);\n const monthPicker = React.useRef<ICalendarMonth>(null);\n const focusOnUpdate = React.useRef(false);\n\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 }, [isDayPickerVisible, isMonthPickerVisible]);\n\n React.useImperativeHandle(componentRef, () => ({ focus }), [focus]);\n\n React.useEffect(() => {\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n\n const focusOnNextUpdate = () => {\n focusOnUpdate.current = true;\n };\n\n return [dayPicker, monthPicker, focusOnNextUpdate] as const;\n}\n\n/**\n * @internal\n */\nexport const Calendar: React.FunctionComponent<CalendarProps> = React.forwardRef<HTMLDivElement, CalendarProps>(\n (props, forwardedRef) => {\n const {\n allFocusable = false,\n calendarDayProps,\n calendarMonthProps,\n className,\n componentRef,\n dateRangeType = DateRangeType.Day,\n dateTimeFormatter = DEFAULT_DATE_FORMATTING,\n firstDayOfWeek = DayOfWeek.Sunday,\n firstWeekOfYear = FirstWeekOfYear.FirstDay,\n highlightCurrentMonth = false,\n highlightSelectedMonth = false,\n id,\n isDayPickerVisible: isDayPickerVisibleProp = true,\n isMonthPickerVisible: isMonthPickerVisibleProp = true,\n maxDate,\n minDate,\n onDismiss,\n onSelectDate,\n restrictedDates,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp = false,\n showSixWeeksByDefault = false,\n showWeekNumbers = false,\n strings = DEFAULT_CALENDAR_STRINGS,\n today = new Date(),\n value,\n workWeekDays = defaultWorkWeekDays,\n } = props;\n\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,\n isMonthPickerVisible,\n );\n\n const renderGoToTodayButton = () => {\n let goTodayEnabled = showGoToToday;\n\n if (goTodayEnabled && today) {\n goTodayEnabled =\n navigatedDay.getFullYear() !== today.getFullYear() ||\n navigatedDay.getMonth() !== today.getMonth() ||\n navigatedMonth.getFullYear() !== today.getFullYear() ||\n navigatedMonth.getMonth() !== today.getMonth();\n }\n\n return (\n showGoToToday && (\n <button\n className={classes.goTodayButton}\n onClick={onGotoToday}\n onKeyDown={onButtonKeyDown(onGotoToday)}\n type=\"button\"\n disabled={!goTodayEnabled}\n >\n {strings!.goToToday}\n </button>\n )\n );\n };\n\n const onNavigateDayDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n navigateDay(date);\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n };\n\n const onNavigateMonthDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n\n if (!focusOnNavigatedDay) {\n navigateMonth(date);\n return;\n }\n\n if (monthPickerOnly) {\n onDateSelected(date);\n }\n\n navigateDay(date);\n };\n\n const onHeaderSelect = getShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp,\n })\n ? (): void => {\n toggleDayMonthPickerVisibility();\n\n focusOnNextUpdate();\n }\n : undefined;\n\n const onGotoToday = (): void => {\n navigateDay(today!);\n focusOnNextUpdate();\n };\n\n const onButtonKeyDown = (callback: () => void): ((ev: React.KeyboardEvent<HTMLButtonElement>) => void) => {\n return (ev: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (ev.key) {\n case Enter:\n case Space:\n callback();\n break;\n }\n };\n };\n\n const onDatePickerPopupKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n break;\n\n case Backspace:\n ev.preventDefault();\n break;\n\n case Escape:\n ev.stopPropagation();\n onDismiss?.();\n break;\n\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({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp,\n });\n\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers,\n });\n\n let todayDateString: string = '';\n let selectedDateString: string = '';\n if (dateTimeFormatter && strings!.todayDateFormatString) {\n todayDateString = strings!.todayDateFormatString.replace(\n '{0}',\n dateTimeFormatter.formatMonthDayYear(today, strings!),\n );\n }\n if (dateTimeFormatter && strings!.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly\n ? dateTimeFormatter.formatMonthYear\n : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings!.selectedDateFormatString.replace(\n '{0}',\n dateStringFormatter(selectedDate, strings!),\n );\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n\n return (\n <div\n id={id}\n ref={forwardedRef}\n role=\"group\"\n aria-label={selectionAndTodayString}\n className={classes.root}\n onKeyDown={onDatePickerPopupKeyDown}\n >\n <div className={classes.liveRegion} aria-live=\"polite\" aria-atomic=\"true\">\n <span>{selectedDateString}</span>\n </div>\n {isDayPickerVisible && (\n <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} // at end of list so consumer's custom functions take precedence\n />\n )}\n {isDayPickerVisible && isMonthPickerVisible && <div className={classes.divider} />}\n {isMonthPickerVisible ? (\n <div className={classes.monthPickerWrapper}>\n <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} // at end of list so consumer's custom functions take precedence\n />\n {renderGoToTodayButton()}\n </div>\n ) : (\n renderGoToTodayButton()\n )}\n </div>\n );\n },\n);\nCalendar.displayName = 'Calendar';\n\nfunction getShowMonthPickerAsOverlay({ isDayPickerVisible, showMonthPickerAsOverlay }: CalendarProps) {\n const win = getWindow();\n return showMonthPickerAsOverlay || (isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY);\n}\n"],"names":["React","Backspace","Enter","Escape","PageDown","PageUp","Space","useControllableState","addMonths","addYears","DateRangeType","DayOfWeek","DEFAULT_CALENDAR_STRINGS","DEFAULT_DATE_FORMATTING","FirstWeekOfYear","focusAsync","getWindow","CalendarDay","CalendarMonth","useCalendarStyles_unstable","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","Monday","Tuesday","Wednesday","Thursday","Friday","useDateState","props","value","today","todayProp","onSelectDate","useMemo","undefined","Date","selectedDate","setSelectedDate","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","setIsMonthPickerVisible","getShowMonthPickerAsOverlay","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","focus","useCallback","current","useImperativeHandle","useEffect","focusOnNextUpdate","Calendar","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","Day","dateTimeFormatter","firstDayOfWeek","Sunday","firstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","button","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","onDatePickerPopupKeyDown","preventDefault","stopPropagation","ctrlKey","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","div","ref","role","aria-label","root","liveRegion","aria-live","aria-atomic","span","navigatedDate","onNavigateDate","divider","monthPickerWrapper","displayName","win","innerWidth"],"mappings":"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"}
1
+ {"version":3,"sources":["Calendar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Backspace, Enter, Escape, PageDown, PageUp, Space } from '@fluentui/keyboard-keys';\nimport { useControllableState } from '@fluentui/react-utilities';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport {\n addMonths,\n addYears,\n DateRangeType,\n DayOfWeek,\n DEFAULT_CALENDAR_STRINGS,\n DEFAULT_DATE_FORMATTING,\n FirstWeekOfYear,\n focusAsync,\n} from '../../utils';\nimport { CalendarDay } from '../CalendarDay/CalendarDay';\nimport { CalendarMonth } from '../CalendarMonth/CalendarMonth';\nimport { useCalendarStyles_unstable } from './useCalendarStyles.styles';\nimport type { ICalendarDay } from '../CalendarDay/CalendarDay.types';\nimport type { ICalendarMonth } from '../CalendarMonth/CalendarMonth.types';\nimport type { CalendarProps } from './Calendar.types';\n\nconst MIN_SIZE_FORCE_OVERLAY = 440;\n\nconst defaultWorkWeekDays: DayOfWeek[] = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday,\n];\n\nfunction useDateState(props: CalendarProps) {\n const { value, today: todayProp, onSelectDate } = props;\n\n const today = React.useMemo(() => {\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [todayProp]);\n\n /** The currently selected date in the calendar */\n const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value,\n });\n\n /** The currently focused date in the day picker, but not necessarily selected */\n const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n\n /** The currently focused date in the month picker, but not necessarily selected */\n const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n\n /** If using a controlled value, when that value changes, navigate to that date */\n 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\n const navigateMonth = (date: Date) => {\n setNavigatedMonth(date);\n };\n\n const navigateDay = (date: Date) => {\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n\n const onDateSelected = (date: Date, selectedDateRangeArray?: Date[]) => {\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate?.(date, selectedDateRangeArray);\n };\n\n return [selectedDate, navigatedDay, navigatedMonth, onDateSelected, navigateDay, navigateMonth] as const;\n}\n\nfunction useVisibilityState({\n isDayPickerVisible: isDayPickerVisibleProp,\n isMonthPickerVisible: isMonthPickerVisibleProp,\n showMonthPickerAsOverlay,\n}: CalendarProps) {\n /** State used to show/hide month picker */\n const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay,\n });\n\n const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp,\n });\n /** State used to show/hide day picker */\n const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp,\n });\n\n const toggleDayMonthPickerVisibility = () => {\n setIsMonthPickerVisible(!isMonthPickerVisible);\n setIsDayPickerVisible(!isDayPickerVisible);\n };\n\n return [isMonthPickerVisible, isDayPickerVisible, toggleDayMonthPickerVisibility] as const;\n}\n\nfunction useFocusLogic({ componentRef }: CalendarProps, isDayPickerVisible: boolean, isMonthPickerVisible: boolean) {\n const dayPicker = React.useRef<ICalendarDay>(null);\n const monthPicker = React.useRef<ICalendarMonth>(null);\n const focusOnUpdate = React.useRef(false);\n const { targetDocument } = useFluent();\n const win = targetDocument?.defaultView;\n\n const focus = React.useCallback(() => {\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current, win);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current, win);\n }\n }, [isDayPickerVisible, isMonthPickerVisible, win]);\n\n React.useImperativeHandle(componentRef, () => ({ focus }), [focus]);\n\n React.useEffect(() => {\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n\n const focusOnNextUpdate = () => {\n focusOnUpdate.current = true;\n };\n\n return [dayPicker, monthPicker, focusOnNextUpdate] as const;\n}\n\n/**\n * @internal\n */\nexport const Calendar: React.FunctionComponent<CalendarProps> = React.forwardRef<HTMLDivElement, CalendarProps>(\n (props, forwardedRef) => {\n const {\n allFocusable = false,\n calendarDayProps,\n calendarMonthProps,\n className,\n componentRef,\n dateRangeType = DateRangeType.Day,\n dateTimeFormatter = DEFAULT_DATE_FORMATTING,\n firstDayOfWeek = DayOfWeek.Sunday,\n firstWeekOfYear = FirstWeekOfYear.FirstDay,\n highlightCurrentMonth = false,\n highlightSelectedMonth = false,\n id,\n isDayPickerVisible: isDayPickerVisibleProp = true,\n isMonthPickerVisible: isMonthPickerVisibleProp = true,\n maxDate,\n minDate,\n onDismiss,\n onSelectDate,\n restrictedDates,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp = false,\n showSixWeeksByDefault = false,\n showWeekNumbers = false,\n strings = DEFAULT_CALENDAR_STRINGS,\n today = new Date(),\n value,\n workWeekDays = defaultWorkWeekDays,\n } = props;\n\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,\n isMonthPickerVisible,\n );\n\n const renderGoToTodayButton = () => {\n let goTodayEnabled = showGoToToday;\n\n if (goTodayEnabled && today) {\n goTodayEnabled =\n navigatedDay.getFullYear() !== today.getFullYear() ||\n navigatedDay.getMonth() !== today.getMonth() ||\n navigatedMonth.getFullYear() !== today.getFullYear() ||\n navigatedMonth.getMonth() !== today.getMonth();\n }\n\n return (\n showGoToToday && (\n <button\n className={classes.goTodayButton}\n onClick={onGotoToday}\n onKeyDown={onButtonKeyDown(onGotoToday)}\n type=\"button\"\n disabled={!goTodayEnabled}\n >\n {strings!.goToToday}\n </button>\n )\n );\n };\n\n const onNavigateDayDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n navigateDay(date);\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n };\n\n const onNavigateMonthDate = (date: Date, focusOnNavigatedDay: boolean): void => {\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n\n if (!focusOnNavigatedDay) {\n navigateMonth(date);\n return;\n }\n\n if (monthPickerOnly) {\n onDateSelected(date);\n }\n\n navigateDay(date);\n };\n\n const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp,\n });\n\n const onHeaderSelect = showMonthPickerAsOverlay\n ? (): void => {\n toggleDayMonthPickerVisibility();\n\n focusOnNextUpdate();\n }\n : undefined;\n\n const onGotoToday = (): void => {\n navigateDay(today!);\n focusOnNextUpdate();\n };\n\n const onButtonKeyDown = (callback: () => void): ((ev: React.KeyboardEvent<HTMLButtonElement>) => void) => {\n return (ev: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (ev.key) {\n case Enter:\n case Space:\n callback();\n break;\n }\n };\n };\n\n const onDatePickerPopupKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n break;\n\n case Backspace:\n ev.preventDefault();\n break;\n\n case Escape:\n ev.stopPropagation();\n onDismiss?.();\n break;\n\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\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers,\n });\n\n let todayDateString: string = '';\n let selectedDateString: string = '';\n if (dateTimeFormatter && strings!.todayDateFormatString) {\n todayDateString = strings!.todayDateFormatString.replace(\n '{0}',\n dateTimeFormatter.formatMonthDayYear(today, strings!),\n );\n }\n if (dateTimeFormatter && strings!.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly\n ? dateTimeFormatter.formatMonthYear\n : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings!.selectedDateFormatString.replace(\n '{0}',\n dateStringFormatter(selectedDate, strings!),\n );\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n\n return (\n <div\n id={id}\n ref={forwardedRef}\n role=\"group\"\n aria-label={selectionAndTodayString}\n className={classes.root}\n onKeyDown={onDatePickerPopupKeyDown}\n >\n <div className={classes.liveRegion} aria-live=\"polite\" aria-atomic=\"true\">\n <span>{selectedDateString}</span>\n </div>\n {isDayPickerVisible && (\n <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} // at end of list so consumer's custom functions take precedence\n />\n )}\n {isDayPickerVisible && isMonthPickerVisible && <div className={classes.divider} />}\n {isMonthPickerVisible ? (\n <div className={classes.monthPickerWrapper}>\n <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} // at end of list so consumer's custom functions take precedence\n />\n {renderGoToTodayButton()}\n </div>\n ) : (\n renderGoToTodayButton()\n )}\n </div>\n );\n },\n);\nCalendar.displayName = 'Calendar';\n\nconst useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay }: CalendarProps) => {\n const { targetDocument } = useFluent();\n const win = targetDocument?.defaultView;\n return showMonthPickerAsOverlay || (isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY);\n};\n"],"names":["React","Backspace","Enter","Escape","PageDown","PageUp","Space","useControllableState","useFluent_unstable","useFluent","addMonths","addYears","DateRangeType","DayOfWeek","DEFAULT_CALENDAR_STRINGS","DEFAULT_DATE_FORMATTING","FirstWeekOfYear","focusAsync","CalendarDay","CalendarMonth","useCalendarStyles_unstable","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","Monday","Tuesday","Wednesday","Thursday","Friday","useDateState","props","value","today","todayProp","onSelectDate","useMemo","undefined","Date","selectedDate","setSelectedDate","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","showMonthPickerAsOverlayState","useShowMonthPickerAsOverlay","setIsMonthPickerVisible","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","targetDocument","win","defaultView","focus","useCallback","current","useImperativeHandle","useEffect","focusOnNextUpdate","Calendar","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","Day","dateTimeFormatter","firstDayOfWeek","Sunday","firstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","button","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","onDatePickerPopupKeyDown","preventDefault","stopPropagation","ctrlKey","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","div","ref","role","aria-label","root","liveRegion","aria-live","aria-atomic","span","navigatedDate","onNavigateDate","divider","monthPickerWrapper","displayName","innerWidth"],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { getWindow } from './dom';
2
1
  let targetToFocusOnNextRepaint = undefined;
3
2
  /**
4
3
  * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,
5
4
  * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,
6
5
  * only the latest called focusAsync element will actually be focused
7
6
  * @param element - The element to focus
8
- */ export function focusAsync(element) {
7
+ */ export function focusAsync(element, win) {
9
8
  if (element) {
10
9
  // An element was already queued to be focused, so replace that one with the new element
11
10
  if (targetToFocusOnNextRepaint) {
@@ -13,7 +12,6 @@ let targetToFocusOnNextRepaint = undefined;
13
12
  return;
14
13
  }
15
14
  targetToFocusOnNextRepaint = element;
16
- const win = getWindow(element);
17
15
  if (win) {
18
16
  // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe
19
17
  win.requestAnimationFrame(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["focus.ts"],"sourcesContent":["import { getWindow } from './dom';\n\nlet targetToFocusOnNextRepaint: HTMLElement | { focus: () => void } | null | undefined = undefined;\n\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */\nexport function focusAsync(element: HTMLElement | { focus: () => void } | undefined | null): void {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n\n targetToFocusOnNextRepaint = element;\n\n const win = getWindow(element as Element);\n\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(() => {\n targetToFocusOnNextRepaint && targetToFocusOnNextRepaint.focus();\n\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n });\n }\n }\n}\n"],"names":["getWindow","targetToFocusOnNextRepaint","undefined","focusAsync","element","win","requestAnimationFrame","focus"],"mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;AAElC,IAAIC,6BAAqFC;AAEzF;;;;;CAKC,GACD,OAAO,SAASC,WAAWC,OAA+D;IACxF,IAAIA,SAAS;QACX,wFAAwF;QACxF,IAAIH,4BAA4B;YAC9BA,6BAA6BG;YAC7B;QACF;QAEAH,6BAA6BG;QAE7B,MAAMC,MAAML,UAAUI;QAEtB,IAAIC,KAAK;YACP,iGAAiG;YACjGA,IAAIC,qBAAqB,CAAC;gBACxBL,8BAA8BA,2BAA2BM,KAAK;gBAE9D,yEAAyE;gBACzEN,6BAA6BC;YAC/B;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["focus.ts"],"sourcesContent":["let targetToFocusOnNextRepaint: HTMLElement | { focus: () => void } | null | undefined = undefined;\n\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */\nexport function focusAsync(\n element: HTMLElement | { focus: () => void } | undefined | null,\n win: Window | undefined | null,\n): void {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n\n targetToFocusOnNextRepaint = element;\n\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(() => {\n targetToFocusOnNextRepaint && targetToFocusOnNextRepaint.focus();\n\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n });\n }\n }\n}\n"],"names":["targetToFocusOnNextRepaint","undefined","focusAsync","element","win","requestAnimationFrame","focus"],"mappings":"AAAA,IAAIA,6BAAqFC;AAEzF;;;;;CAKC,GACD,OAAO,SAASC,WACdC,OAA+D,EAC/DC,GAA8B;IAE9B,IAAID,SAAS;QACX,wFAAwF;QACxF,IAAIH,4BAA4B;YAC9BA,6BAA6BG;YAC7B;QACF;QAEAH,6BAA6BG;QAE7B,IAAIC,KAAK;YACP,iGAAiG;YACjGA,IAAIC,qBAAqB,CAAC;gBACxBL,8BAA8BA,2BAA2BM,KAAK;gBAE9D,yEAAyE;gBACzEN,6BAA6BC;YAC/B;QACF;IACF;AACF"}
@@ -3,5 +3,4 @@ export * from './constants';
3
3
  export * from './dateFormatting';
4
4
  export * from './dateGrid';
5
5
  export * from './dateMath';
6
- export * from './dom';
7
6
  export * from './focus';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './animations';\nexport * from './constants';\nexport * from './dateFormatting';\nexport * from './dateGrid';\nexport * from './dateMath';\nexport * from './dom';\nexport * from './focus';\n"],"names":[],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,UAAU"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './animations';\nexport * from './constants';\nexport * from './dateFormatting';\nexport * from './dateGrid';\nexport * from './dateMath';\nexport * from './focus';\n"],"names":[],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,UAAU"}
@@ -12,6 +12,7 @@ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildc
12
12
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
13
  const _keyboardkeys = require("@fluentui/keyboard-keys");
14
14
  const _reactutilities = require("@fluentui/react-utilities");
15
+ const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
15
16
  const _utils = require("../../utils");
16
17
  const _CalendarDay = require("../CalendarDay/CalendarDay");
17
18
  const _CalendarMonth = require("../CalendarMonth/CalendarMonth");
@@ -70,21 +71,19 @@ function useDateState(props) {
70
71
  ];
71
72
  }
72
73
  function useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {
73
- /** State used to show/hide month picker */ const [isMonthPickerVisible, setIsMonthPickerVisible] = (0, _reactutilities.useControllableState)({
74
+ /** State used to show/hide month picker */ const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({
75
+ isDayPickerVisible: isDayPickerVisibleProp,
76
+ showMonthPickerAsOverlay
77
+ });
78
+ const [isMonthPickerVisible, setIsMonthPickerVisible] = (0, _reactutilities.useControllableState)({
74
79
  defaultState: false,
75
80
  initialState: true,
76
- state: getShowMonthPickerAsOverlay({
77
- isDayPickerVisible: isDayPickerVisibleProp,
78
- showMonthPickerAsOverlay
79
- }) ? undefined : isMonthPickerVisibleProp
81
+ state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp
80
82
  });
81
83
  /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = (0, _reactutilities.useControllableState)({
82
84
  defaultState: true,
83
85
  initialState: true,
84
- state: getShowMonthPickerAsOverlay({
85
- isDayPickerVisible: isDayPickerVisibleProp,
86
- showMonthPickerAsOverlay
87
- }) ? undefined : isDayPickerVisibleProp
86
+ state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp
88
87
  });
89
88
  const toggleDayMonthPickerVisibility = ()=>{
90
89
  setIsMonthPickerVisible(!isMonthPickerVisible);
@@ -100,15 +99,18 @@ function useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisibl
100
99
  const dayPicker = _react.useRef(null);
101
100
  const monthPicker = _react.useRef(null);
102
101
  const focusOnUpdate = _react.useRef(false);
102
+ const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
103
+ const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
103
104
  const focus = _react.useCallback(()=>{
104
105
  if (isDayPickerVisible && dayPicker.current) {
105
- (0, _utils.focusAsync)(dayPicker.current);
106
+ (0, _utils.focusAsync)(dayPicker.current, win);
106
107
  } else if (isMonthPickerVisible && monthPicker.current) {
107
- (0, _utils.focusAsync)(monthPicker.current);
108
+ (0, _utils.focusAsync)(monthPicker.current, win);
108
109
  }
109
110
  }, [
110
111
  isDayPickerVisible,
111
- isMonthPickerVisible
112
+ isMonthPickerVisible,
113
+ win
112
114
  ]);
113
115
  _react.useImperativeHandle(componentRef, ()=>({
114
116
  focus
@@ -177,10 +179,11 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
177
179
  }
178
180
  navigateDay(date);
179
181
  };
180
- const onHeaderSelect = getShowMonthPickerAsOverlay({
182
+ const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({
181
183
  isDayPickerVisible: isDayPickerVisibleProp,
182
184
  showMonthPickerAsOverlay: showMonthPickerAsOverlayProp
183
- }) ? ()=>{
185
+ });
186
+ const onHeaderSelect = showMonthPickerAsOverlay ? ()=>{
184
187
  toggleDayMonthPickerVisibility();
185
188
  focusOnNextUpdate();
186
189
  } : undefined;
@@ -234,10 +237,6 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
234
237
  break;
235
238
  }
236
239
  };
237
- const showMonthPickerAsOverlay = getShowMonthPickerAsOverlay({
238
- isDayPickerVisible: isDayPickerVisibleProp,
239
- showMonthPickerAsOverlay: showMonthPickerAsOverlayProp
240
- });
241
240
  const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;
242
241
  const classes = (0, _useCalendarStylesstyles.useCalendarStyles_unstable)({
243
242
  className,
@@ -314,7 +313,8 @@ const Calendar = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
314
313
  }), renderGoToTodayButton()) : renderGoToTodayButton());
315
314
  });
316
315
  Calendar.displayName = 'Calendar';
317
- function getShowMonthPickerAsOverlay({ isDayPickerVisible, showMonthPickerAsOverlay }) {
318
- const win = (0, _utils.getWindow)();
316
+ const useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay })=>{
317
+ const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
318
+ const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;
319
319
  return showMonthPickerAsOverlay || isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY;
320
- }
320
+ };
@@ -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(props) {\n const { value, today: todayProp, onSelectDate } = props;\n const today = React.useMemo(()=>{\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [\n todayProp\n ]);\n /** The currently selected date in the calendar */ const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value\n });\n /** The currently focused date in the day picker, but not necessarily selected */ const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n /** The currently focused date in the month picker, but not necessarily selected */ const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n /** If using a controlled value, when that value changes, navigate to that date */ const [lastSelectedDate = today, setLastSelectedDate] = React.useState(value);\n if (value && lastSelectedDate.valueOf() !== value.valueOf()) {\n setNavigatedDay(value);\n setNavigatedMonth(value);\n setLastSelectedDate(value);\n }\n const navigateMonth = (date)=>{\n setNavigatedMonth(date);\n };\n const navigateDay = (date)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n const onDateSelected = (date, selectedDateRangeArray)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(date, selectedDateRangeArray);\n };\n return [\n selectedDate,\n navigatedDay,\n navigatedMonth,\n onDateSelected,\n navigateDay,\n navigateMonth\n ];\n}\nfunction useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {\n /** State used to show/hide month picker */ const [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({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers\n });\n let todayDateString = '';\n let selectedDateString = '';\n if (dateTimeFormatter && strings.todayDateFormatString) {\n todayDateString = strings.todayDateFormatString.replace('{0}', dateTimeFormatter.formatMonthDayYear(today, strings));\n }\n if (dateTimeFormatter && strings.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly ? dateTimeFormatter.formatMonthYear : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings.selectedDateFormatString.replace('{0}', dateStringFormatter(selectedDate, strings));\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n id: id,\n ref: forwardedRef,\n role: \"group\",\n \"aria-label\": selectionAndTodayString,\n className: classes.root,\n onKeyDown: onDatePickerPopupKeyDown\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.liveRegion,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, /*#__PURE__*/ React.createElement(\"span\", null, selectedDateString)), isDayPickerVisible && /*#__PURE__*/ React.createElement(CalendarDay, {\n selectedDate: selectedDate,\n navigatedDate: navigatedDay,\n today: today,\n onSelectDate: onDateSelected,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateDayDate,\n onDismiss: onDismiss,\n firstDayOfWeek: firstDayOfWeek,\n dateRangeType: dateRangeType,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n showWeekNumbers: showWeekNumbers,\n firstWeekOfYear: firstWeekOfYear,\n dateTimeFormatter: dateTimeFormatter,\n showSixWeeksByDefault: showSixWeeksByDefault,\n minDate: minDate,\n maxDate: maxDate,\n restrictedDates: restrictedDates,\n workWeekDays: workWeekDays,\n componentRef: dayPicker,\n showCloseButton: showCloseButton,\n allFocusable: allFocusable,\n ...calendarDayProps\n }), isDayPickerVisible && isMonthPickerVisible && /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.divider\n }), isMonthPickerVisible ? /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.monthPickerWrapper\n }, /*#__PURE__*/ React.createElement(CalendarMonth, {\n navigatedDate: navigatedMonth,\n selectedDate: navigatedDay,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateMonthDate,\n today: today,\n highlightCurrentMonth: highlightCurrentMonth,\n highlightSelectedMonth: highlightSelectedMonth,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n componentRef: monthPicker,\n ...calendarMonthProps\n }), renderGoToTodayButton()) : renderGoToTodayButton());\n});\nCalendar.displayName = 'Calendar';\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","props","value","today","todayProp","onSelectDate","React","useMemo","undefined","Date","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","setIsMonthPickerVisible","getShowMonthPickerAsOverlay","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","DateRangeType","Day","dateTimeFormatter","DEFAULT_DATE_FORMATTING","firstDayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","DEFAULT_CALENDAR_STRINGS","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","createElement","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","Enter","Space","onDatePickerPopupKeyDown","preventDefault","Backspace","Escape","stopPropagation","PageUp","ctrlKey","addYears","addMonths","PageDown","useCalendarStyles_unstable","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","ref","role","root","liveRegion","CalendarDay","navigatedDate","onNavigateDate","divider","monthPickerWrapper","CalendarMonth","displayName","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 { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { addMonths, addYears, DateRangeType, DayOfWeek, DEFAULT_CALENDAR_STRINGS, DEFAULT_DATE_FORMATTING, FirstWeekOfYear, focusAsync } from '../../utils';\nimport { CalendarDay } from '../CalendarDay/CalendarDay';\nimport { CalendarMonth } from '../CalendarMonth/CalendarMonth';\nimport { useCalendarStyles_unstable } from './useCalendarStyles.styles';\nconst MIN_SIZE_FORCE_OVERLAY = 440;\nconst defaultWorkWeekDays = [\n DayOfWeek.Monday,\n DayOfWeek.Tuesday,\n DayOfWeek.Wednesday,\n DayOfWeek.Thursday,\n DayOfWeek.Friday\n];\nfunction useDateState(props) {\n const { value, today: todayProp, onSelectDate } = props;\n const today = React.useMemo(()=>{\n if (todayProp === undefined) {\n return new Date();\n }\n return todayProp;\n }, [\n todayProp\n ]);\n /** The currently selected date in the calendar */ const [selectedDate, setSelectedDate] = useControllableState({\n defaultState: today,\n initialState: today,\n state: value\n });\n /** The currently focused date in the day picker, but not necessarily selected */ const [navigatedDay = today, setNavigatedDay] = React.useState(value);\n /** The currently focused date in the month picker, but not necessarily selected */ const [navigatedMonth = today, setNavigatedMonth] = React.useState(value);\n /** If using a controlled value, when that value changes, navigate to that date */ const [lastSelectedDate = today, setLastSelectedDate] = React.useState(value);\n if (value && lastSelectedDate.valueOf() !== value.valueOf()) {\n setNavigatedDay(value);\n setNavigatedMonth(value);\n setLastSelectedDate(value);\n }\n const navigateMonth = (date)=>{\n setNavigatedMonth(date);\n };\n const navigateDay = (date)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n };\n const onDateSelected = (date, selectedDateRangeArray)=>{\n setNavigatedMonth(date);\n setNavigatedDay(date);\n setSelectedDate(date);\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(date, selectedDateRangeArray);\n };\n return [\n selectedDate,\n navigatedDay,\n navigatedMonth,\n onDateSelected,\n navigateDay,\n navigateMonth\n ];\n}\nfunction useVisibilityState({ isDayPickerVisible: isDayPickerVisibleProp, isMonthPickerVisible: isMonthPickerVisibleProp, showMonthPickerAsOverlay }) {\n /** State used to show/hide month picker */ const showMonthPickerAsOverlayState = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay\n });\n const [isMonthPickerVisible, setIsMonthPickerVisible] = useControllableState({\n defaultState: false,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isMonthPickerVisibleProp\n });\n /** State used to show/hide day picker */ const [isDayPickerVisible, setIsDayPickerVisible] = useControllableState({\n defaultState: true,\n initialState: true,\n state: showMonthPickerAsOverlayState ? undefined : isDayPickerVisibleProp\n });\n const toggleDayMonthPickerVisibility = ()=>{\n setIsMonthPickerVisible(!isMonthPickerVisible);\n setIsDayPickerVisible(!isDayPickerVisible);\n };\n return [\n isMonthPickerVisible,\n isDayPickerVisible,\n toggleDayMonthPickerVisibility\n ];\n}\nfunction useFocusLogic({ componentRef }, isDayPickerVisible, isMonthPickerVisible) {\n const dayPicker = React.useRef(null);\n const monthPicker = React.useRef(null);\n const focusOnUpdate = React.useRef(false);\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const focus = React.useCallback(()=>{\n if (isDayPickerVisible && dayPicker.current) {\n focusAsync(dayPicker.current, win);\n } else if (isMonthPickerVisible && monthPicker.current) {\n focusAsync(monthPicker.current, win);\n }\n }, [\n isDayPickerVisible,\n isMonthPickerVisible,\n win\n ]);\n React.useImperativeHandle(componentRef, ()=>({\n focus\n }), [\n focus\n ]);\n React.useEffect(()=>{\n if (focusOnUpdate.current) {\n focus();\n focusOnUpdate.current = false;\n }\n });\n const focusOnNextUpdate = ()=>{\n focusOnUpdate.current = true;\n };\n return [\n dayPicker,\n monthPicker,\n focusOnNextUpdate\n ];\n}\n/**\n * @internal\n */ export const Calendar = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{\n const { allFocusable = false, calendarDayProps, calendarMonthProps, className, componentRef, dateRangeType = DateRangeType.Day, dateTimeFormatter = DEFAULT_DATE_FORMATTING, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, highlightCurrentMonth = false, highlightSelectedMonth = false, id, isDayPickerVisible: isDayPickerVisibleProp = true, isMonthPickerVisible: isMonthPickerVisibleProp = true, maxDate, minDate, onDismiss, onSelectDate, restrictedDates, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay: showMonthPickerAsOverlayProp = false, showSixWeeksByDefault = false, showWeekNumbers = false, strings = DEFAULT_CALENDAR_STRINGS, today = new Date(), value, workWeekDays = defaultWorkWeekDays } = props;\n const [selectedDate, navigatedDay, navigatedMonth, onDateSelected, navigateDay, navigateMonth] = useDateState({\n onSelectDate,\n value,\n today\n });\n const [isMonthPickerVisible, isDayPickerVisible, toggleDayMonthPickerVisibility] = useVisibilityState({\n isDayPickerVisible: isDayPickerVisibleProp,\n isMonthPickerVisible: isMonthPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const [dayPicker, monthPicker, focusOnNextUpdate] = useFocusLogic({\n componentRef\n }, isDayPickerVisible, isMonthPickerVisible);\n const renderGoToTodayButton = ()=>{\n let goTodayEnabled = showGoToToday;\n if (goTodayEnabled && today) {\n goTodayEnabled = navigatedDay.getFullYear() !== today.getFullYear() || navigatedDay.getMonth() !== today.getMonth() || navigatedMonth.getFullYear() !== today.getFullYear() || navigatedMonth.getMonth() !== today.getMonth();\n }\n return showGoToToday && /*#__PURE__*/ React.createElement(\"button\", {\n className: classes.goTodayButton,\n onClick: onGotoToday,\n onKeyDown: onButtonKeyDown(onGotoToday),\n type: \"button\",\n disabled: !goTodayEnabled\n }, strings.goToToday);\n };\n const onNavigateDayDate = (date, focusOnNavigatedDay)=>{\n navigateDay(date);\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n };\n const onNavigateMonthDate = (date, focusOnNavigatedDay)=>{\n if (focusOnNavigatedDay) {\n focusOnNextUpdate();\n }\n if (!focusOnNavigatedDay) {\n navigateMonth(date);\n return;\n }\n if (monthPickerOnly) {\n onDateSelected(date);\n }\n navigateDay(date);\n };\n const showMonthPickerAsOverlay = useShowMonthPickerAsOverlay({\n isDayPickerVisible: isDayPickerVisibleProp,\n showMonthPickerAsOverlay: showMonthPickerAsOverlayProp\n });\n const onHeaderSelect = showMonthPickerAsOverlay ? ()=>{\n toggleDayMonthPickerVisibility();\n focusOnNextUpdate();\n } : undefined;\n const onGotoToday = ()=>{\n navigateDay(today);\n focusOnNextUpdate();\n };\n const onButtonKeyDown = (callback)=>{\n return (ev)=>{\n switch(ev.key){\n case Enter:\n case Space:\n callback();\n break;\n }\n };\n };\n const onDatePickerPopupKeyDown = (ev)=>{\n switch(ev.key){\n case Enter:\n ev.preventDefault();\n break;\n case Backspace:\n ev.preventDefault();\n break;\n case Escape:\n ev.stopPropagation();\n onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();\n break;\n case PageUp:\n if (ev.ctrlKey) {\n // go to next year\n navigateDay(addYears(navigatedDay, 1));\n } else {\n // go to next month\n navigateDay(addMonths(navigatedDay, 1));\n }\n ev.preventDefault();\n break;\n case PageDown:\n if (ev.ctrlKey) {\n // go to previous year\n navigateDay(addYears(navigatedDay, -1));\n } else {\n // go to previous month\n navigateDay(addMonths(navigatedDay, -1));\n }\n ev.preventDefault();\n break;\n default:\n break;\n }\n };\n const monthPickerOnly = !showMonthPickerAsOverlay && !isDayPickerVisible;\n const classes = useCalendarStyles_unstable({\n className,\n isDayPickerVisible,\n isMonthPickerVisible,\n showWeekNumbers\n });\n let todayDateString = '';\n let selectedDateString = '';\n if (dateTimeFormatter && strings.todayDateFormatString) {\n todayDateString = strings.todayDateFormatString.replace('{0}', dateTimeFormatter.formatMonthDayYear(today, strings));\n }\n if (dateTimeFormatter && strings.selectedDateFormatString) {\n const dateStringFormatter = monthPickerOnly ? dateTimeFormatter.formatMonthYear : dateTimeFormatter.formatMonthDayYear;\n selectedDateString = strings.selectedDateFormatString.replace('{0}', dateStringFormatter(selectedDate, strings));\n }\n const selectionAndTodayString = selectedDateString + ', ' + todayDateString;\n return /*#__PURE__*/ React.createElement(\"div\", {\n id: id,\n ref: forwardedRef,\n role: \"group\",\n \"aria-label\": selectionAndTodayString,\n className: classes.root,\n onKeyDown: onDatePickerPopupKeyDown\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.liveRegion,\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\"\n }, /*#__PURE__*/ React.createElement(\"span\", null, selectedDateString)), isDayPickerVisible && /*#__PURE__*/ React.createElement(CalendarDay, {\n selectedDate: selectedDate,\n navigatedDate: navigatedDay,\n today: today,\n onSelectDate: onDateSelected,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateDayDate,\n onDismiss: onDismiss,\n firstDayOfWeek: firstDayOfWeek,\n dateRangeType: dateRangeType,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n showWeekNumbers: showWeekNumbers,\n firstWeekOfYear: firstWeekOfYear,\n dateTimeFormatter: dateTimeFormatter,\n showSixWeeksByDefault: showSixWeeksByDefault,\n minDate: minDate,\n maxDate: maxDate,\n restrictedDates: restrictedDates,\n workWeekDays: workWeekDays,\n componentRef: dayPicker,\n showCloseButton: showCloseButton,\n allFocusable: allFocusable,\n ...calendarDayProps\n }), isDayPickerVisible && isMonthPickerVisible && /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.divider\n }), isMonthPickerVisible ? /*#__PURE__*/ React.createElement(\"div\", {\n className: classes.monthPickerWrapper\n }, /*#__PURE__*/ React.createElement(CalendarMonth, {\n navigatedDate: navigatedMonth,\n selectedDate: navigatedDay,\n strings: strings,\n // eslint-disable-next-line react/jsx-no-bind\n onNavigateDate: onNavigateMonthDate,\n today: today,\n highlightCurrentMonth: highlightCurrentMonth,\n highlightSelectedMonth: highlightSelectedMonth,\n // eslint-disable-next-line react/jsx-no-bind\n onHeaderSelect: onHeaderSelect,\n dateTimeFormatter: dateTimeFormatter,\n minDate: minDate,\n maxDate: maxDate,\n componentRef: monthPicker,\n ...calendarMonthProps\n }), renderGoToTodayButton()) : renderGoToTodayButton());\n});\nCalendar.displayName = 'Calendar';\nconst useShowMonthPickerAsOverlay = ({ isDayPickerVisible, showMonthPickerAsOverlay })=>{\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n return showMonthPickerAsOverlay || isDayPickerVisible && win && win.innerWidth <= MIN_SIZE_FORCE_OVERLAY;\n};\n"],"names":["Calendar","MIN_SIZE_FORCE_OVERLAY","defaultWorkWeekDays","DayOfWeek","Monday","Tuesday","Wednesday","Thursday","Friday","useDateState","props","value","today","todayProp","onSelectDate","React","useMemo","undefined","Date","selectedDate","setSelectedDate","useControllableState","defaultState","initialState","state","navigatedDay","setNavigatedDay","useState","navigatedMonth","setNavigatedMonth","lastSelectedDate","setLastSelectedDate","valueOf","navigateMonth","date","navigateDay","onDateSelected","selectedDateRangeArray","useVisibilityState","isDayPickerVisible","isDayPickerVisibleProp","isMonthPickerVisible","isMonthPickerVisibleProp","showMonthPickerAsOverlay","showMonthPickerAsOverlayState","useShowMonthPickerAsOverlay","setIsMonthPickerVisible","setIsDayPickerVisible","toggleDayMonthPickerVisibility","useFocusLogic","componentRef","dayPicker","useRef","monthPicker","focusOnUpdate","targetDocument","useFluent","win","defaultView","focus","useCallback","current","focusAsync","useImperativeHandle","useEffect","focusOnNextUpdate","forwardRef","forwardedRef","allFocusable","calendarDayProps","calendarMonthProps","className","dateRangeType","DateRangeType","Day","dateTimeFormatter","DEFAULT_DATE_FORMATTING","firstDayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","id","maxDate","minDate","onDismiss","restrictedDates","showCloseButton","showGoToToday","showMonthPickerAsOverlayProp","showSixWeeksByDefault","showWeekNumbers","strings","DEFAULT_CALENDAR_STRINGS","workWeekDays","renderGoToTodayButton","goTodayEnabled","getFullYear","getMonth","createElement","classes","goTodayButton","onClick","onGotoToday","onKeyDown","onButtonKeyDown","type","disabled","goToToday","onNavigateDayDate","focusOnNavigatedDay","onNavigateMonthDate","monthPickerOnly","onHeaderSelect","callback","ev","key","Enter","Space","onDatePickerPopupKeyDown","preventDefault","Backspace","Escape","stopPropagation","PageUp","ctrlKey","addYears","addMonths","PageDown","useCalendarStyles_unstable","todayDateString","selectedDateString","todayDateFormatString","replace","formatMonthDayYear","selectedDateFormatString","dateStringFormatter","formatMonthYear","selectionAndTodayString","ref","role","root","liveRegion","CalendarDay","navigatedDate","onNavigateDate","divider","monthPickerWrapper","CalendarMonth","displayName","innerWidth"],"mappings":"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"}
@@ -8,9 +8,8 @@ Object.defineProperty(exports, "focusAsync", {
8
8
  return focusAsync;
9
9
  }
10
10
  });
11
- const _dom = require("./dom");
12
11
  let targetToFocusOnNextRepaint = undefined;
13
- function focusAsync(element) {
12
+ function focusAsync(element, win) {
14
13
  if (element) {
15
14
  // An element was already queued to be focused, so replace that one with the new element
16
15
  if (targetToFocusOnNextRepaint) {
@@ -18,7 +17,6 @@ function focusAsync(element) {
18
17
  return;
19
18
  }
20
19
  targetToFocusOnNextRepaint = element;
21
- const win = (0, _dom.getWindow)(element);
22
20
  if (win) {
23
21
  // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe
24
22
  win.requestAnimationFrame(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["focus.js"],"sourcesContent":["import { getWindow } from './dom';\nlet targetToFocusOnNextRepaint = undefined;\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */ export function focusAsync(element) {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n targetToFocusOnNextRepaint = element;\n const win = getWindow(element);\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(()=>{\n targetToFocusOnNextRepaint && targetToFocusOnNextRepaint.focus();\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n });\n }\n }\n}\n"],"names":["focusAsync","targetToFocusOnNextRepaint","undefined","element","win","getWindow","requestAnimationFrame","focus"],"mappings":";;;;+BAOoBA;;;eAAAA;;;qBAPM;AAC1B,IAAIC,6BAA6BC;AAMtB,SAASF,WAAWG,OAAO;IAClC,IAAIA,SAAS;QACT,wFAAwF;QACxF,IAAIF,4BAA4B;YAC5BA,6BAA6BE;YAC7B;QACJ;QACAF,6BAA6BE;QAC7B,MAAMC,MAAMC,IAAAA,cAAS,EAACF;QACtB,IAAIC,KAAK;YACL,iGAAiG;YACjGA,IAAIE,qBAAqB,CAAC;gBACtBL,8BAA8BA,2BAA2BM,KAAK;gBAC9D,yEAAyE;gBACzEN,6BAA6BC;YACjC;QACJ;IACJ;AACJ"}
1
+ {"version":3,"sources":["focus.js"],"sourcesContent":["let targetToFocusOnNextRepaint = undefined;\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */ export function focusAsync(element, win) {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n targetToFocusOnNextRepaint = element;\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(()=>{\n targetToFocusOnNextRepaint && targetToFocusOnNextRepaint.focus();\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n });\n }\n }\n}\n"],"names":["focusAsync","targetToFocusOnNextRepaint","undefined","element","win","requestAnimationFrame","focus"],"mappings":";;;;+BAMoBA;;;eAAAA;;;AANpB,IAAIC,6BAA6BC;AAMtB,SAASF,WAAWG,OAAO,EAAEC,GAAG;IACvC,IAAID,SAAS;QACT,wFAAwF;QACxF,IAAIF,4BAA4B;YAC5BA,6BAA6BE;YAC7B;QACJ;QACAF,6BAA6BE;QAC7B,IAAIC,KAAK;YACL,iGAAiG;YACjGA,IAAIC,qBAAqB,CAAC;gBACtBJ,8BAA8BA,2BAA2BK,KAAK;gBAC9D,yEAAyE;gBACzEL,6BAA6BC;YACjC;QACJ;IACJ;AACJ"}
@@ -8,5 +8,4 @@ _export_star._(require("./constants"), exports);
8
8
  _export_star._(require("./dateFormatting"), exports);
9
9
  _export_star._(require("./dateGrid"), exports);
10
10
  _export_star._(require("./dateMath"), exports);
11
- _export_star._(require("./dom"), exports);
12
11
  _export_star._(require("./focus"), exports);
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js"],"sourcesContent":["export * from './animations';\nexport * from './constants';\nexport * from './dateFormatting';\nexport * from './dateGrid';\nexport * from './dateMath';\nexport * from './dom';\nexport * from './focus';\n"],"names":[],"mappings":";;;;;uBAAc;uBACA;uBACA;uBACA;uBACA;uBACA;uBACA"}
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './animations';\nexport * from './constants';\nexport * from './dateFormatting';\nexport * from './dateGrid';\nexport * from './dateMath';\nexport * from './focus';\n"],"names":[],"mappings":";;;;;uBAAc;uBACA;uBACA;uBACA;uBACA;uBACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-calendar-compat",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "Calendar compat component for Fluent UI v9",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -33,11 +33,11 @@
33
33
  "dependencies": {
34
34
  "@fluentui/keyboard-keys": "^9.0.7",
35
35
  "@fluentui/react-icons": "^2.0.217",
36
- "@fluentui/react-jsx-runtime": "^9.0.20",
37
- "@fluentui/react-shared-contexts": "^9.13.0",
38
- "@fluentui/react-tabster": "^9.15.0",
36
+ "@fluentui/react-jsx-runtime": "^9.0.21",
37
+ "@fluentui/react-shared-contexts": "^9.13.1",
38
+ "@fluentui/react-tabster": "^9.15.1",
39
39
  "@fluentui/react-theme": "^9.1.16",
40
- "@fluentui/react-utilities": "^9.15.2",
40
+ "@fluentui/react-utilities": "^9.15.3",
41
41
  "@griffel/react": "^1.5.14",
42
42
  "@swc/helpers": "^0.5.1"
43
43
  },
package/lib/utils/dom.js DELETED
@@ -1,8 +0,0 @@
1
- import { canUseDOM } from '@fluentui/react-utilities';
2
- export function getWindow(targetElement) {
3
- if (!canUseDOM() || typeof window === 'undefined') {
4
- return undefined;
5
- }
6
- const el = targetElement;
7
- return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : window;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["dom.ts"],"sourcesContent":["import { canUseDOM } from '@fluentui/react-utilities';\n\nexport function getWindow(targetElement?: Element | null): Window | undefined {\n if (!canUseDOM() || typeof window === 'undefined') {\n return undefined;\n }\n\n const el = targetElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : window;\n}\n"],"names":["canUseDOM","getWindow","targetElement","window","undefined","el","ownerDocument","defaultView"],"mappings":"AAAA,SAASA,SAAS,QAAQ,4BAA4B;AAEtD,OAAO,SAASC,UAAUC,aAA8B;IACtD,IAAI,CAACF,eAAe,OAAOG,WAAW,aAAa;QACjD,OAAOC;IACT;IAEA,MAAMC,KAAKH;IAEX,OAAOG,MAAMA,GAAGC,aAAa,IAAID,GAAGC,aAAa,CAACC,WAAW,GAAGF,GAAGC,aAAa,CAACC,WAAW,GAAGJ;AACjG"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "getWindow", {
6
- enumerable: true,
7
- get: function() {
8
- return getWindow;
9
- }
10
- });
11
- const _reactutilities = require("@fluentui/react-utilities");
12
- function getWindow(targetElement) {
13
- if (!(0, _reactutilities.canUseDOM)() || typeof window === 'undefined') {
14
- return undefined;
15
- }
16
- const el = targetElement;
17
- return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : window;
18
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["dom.js"],"sourcesContent":["import { canUseDOM } from '@fluentui/react-utilities';\nexport function getWindow(targetElement) {\n if (!canUseDOM() || typeof window === 'undefined') {\n return undefined;\n }\n const el = targetElement;\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : window;\n}\n"],"names":["getWindow","targetElement","canUseDOM","window","undefined","el","ownerDocument","defaultView"],"mappings":";;;;+BACgBA;;;eAAAA;;;gCADU;AACnB,SAASA,UAAUC,aAAa;IACnC,IAAI,CAACC,IAAAA,yBAAS,OAAM,OAAOC,WAAW,aAAa;QAC/C,OAAOC;IACX;IACA,MAAMC,KAAKJ;IACX,OAAOI,MAAMA,GAAGC,aAAa,IAAID,GAAGC,aAAa,CAACC,WAAW,GAAGF,GAAGC,aAAa,CAACC,WAAW,GAAGJ;AACnG"}