@fluentui/react-datepicker-compat 0.4.41 → 0.4.42

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,12 +1,33 @@
1
1
  # Change Log - @fluentui/react-datepicker-compat
2
2
 
3
- This log was last generated on Mon, 17 Jun 2024 07:31:08 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 01 Jul 2024 20:26:00 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [0.4.42](https://github.com/microsoft/fluentui/tree/@fluentui/react-datepicker-compat_v0.4.42)
8
+
9
+ Mon, 01 Jul 2024 20:26:00 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-datepicker-compat_v0.4.41..@fluentui/react-datepicker-compat_v0.4.42)
11
+
12
+ ### Patches
13
+
14
+ - feat: update DatePicker to use legacyTrapFocus ([PR #31801](https://github.com/microsoft/fluentui/pull/31801) by sarah.higley@microsoft.com)
15
+ - chore: Update react-icons package to ^2.0.245 ([PR #31802](https://github.com/microsoft/fluentui/pull/31802) by ololubek@microsoft.com)
16
+ - fix: datepicker popup is not hidden from the a11y tree ([PR #31819](https://github.com/microsoft/fluentui/pull/31819) by sarah.higley@microsoft.com)
17
+ - chore: add eslint react-compiler ([PR #31457](https://github.com/microsoft/fluentui/pull/31457) by seanmonahan@microsoft.com)
18
+ - Bump @fluentui/react-calendar-compat to v0.1.12 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
19
+ - Bump @fluentui/react-field to v9.1.69 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
20
+ - Bump @fluentui/react-input to v9.4.80 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
21
+ - Bump @fluentui/react-jsx-runtime to v9.0.40 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
22
+ - Bump @fluentui/react-popover to v9.9.13 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
23
+ - Bump @fluentui/react-portal to v9.4.29 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
24
+ - Bump @fluentui/react-positioning to v9.15.4 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
25
+ - Bump @fluentui/react-tabster to v9.22.1 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
26
+ - Bump @fluentui/react-utilities to v9.18.11 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
27
+
7
28
  ## [0.4.41](https://github.com/microsoft/fluentui/tree/@fluentui/react-datepicker-compat_v0.4.41)
8
29
 
9
- Mon, 17 Jun 2024 07:31:08 GMT
30
+ Mon, 17 Jun 2024 07:34:17 GMT
10
31
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-datepicker-compat_v0.4.40..@fluentui/react-datepicker-compat_v0.4.41)
11
32
 
12
33
  ### Patches
@@ -30,6 +30,7 @@ function useFocusLogic() {
30
30
  ];
31
31
  }
32
32
  function usePopupVisibility(props) {
33
+ 'use no memo';
33
34
  const [open, setOpen] = useControllableState({
34
35
  initialState: false,
35
36
  defaultState: props.defaultOpen,
@@ -92,6 +93,7 @@ const defaultParseDateFromString = (dateStr)=>{
92
93
  * @param props - props from this instance of DatePicker
93
94
  * @param ref - reference to root Input slot
94
95
  */ export const useDatePicker_unstable = (props, ref)=>{
96
+ 'use no memo';
95
97
  const { allowTextInput = false, allFocusable = false, borderless = false, dateTimeFormatter, defaultOpen = false, disableAutoFocus = true, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, formatDate = defaultFormatDate, highlightCurrentMonth = false, highlightSelectedMonth = false, initialPickerDate: initialPickerDateProp, inlinePopup = false, isMonthPickerVisible = true, maxDate, minDate, mountNode, onOpenChange, onSelectDate: onUserSelectDate, openOnClick = true, onValidationResult, parseDateFromString = defaultParseDateFromString, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay = false, showWeekNumbers = false, strings = defaultDatePickerStrings, today, underlined = false, value, ...restOfProps } = props;
96
98
  const initialPickerDate = React.useMemo(()=>initialPickerDateProp !== null && initialPickerDateProp !== void 0 ? initialPickerDateProp : new Date(), [
97
99
  initialPickerDateProp
@@ -309,7 +311,6 @@ const defaultParseDateFromString = (dateStr)=>{
309
311
  const [triggerWrapperRef, popupRef] = usePopupPositioning(props);
310
312
  const inputRoot = slot.always(props.root, {
311
313
  defaultProps: {
312
- 'aria-owns': open ? popupSurfaceId : undefined,
313
314
  ref: triggerWrapperRef
314
315
  },
315
316
  elementType: 'span'
@@ -364,7 +365,7 @@ const defaultParseDateFromString = (dateStr)=>{
364
365
  const { modalAttributes } = useModalAttributes({
365
366
  trapFocus: true,
366
367
  alwaysFocusable: true,
367
- legacyTrapFocus: false
368
+ legacyTrapFocus: true
368
369
  });
369
370
  const popupSurface = open ? slot.optional(props.popupSurface, {
370
371
  renderByDefault: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["useDatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar, compareDatePart, DayOfWeek, FirstWeekOfYear } from '@fluentui/react-calendar-compat';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\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 '@fluentui/react-calendar-compat';\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: initialPickerDateProp,\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\n const initialPickerDate = React.useMemo(() => initialPickerDateProp ?? new Date(), [initialPickerDateProp]);\n\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 defaultId = useId('datePicker-input');\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 (!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\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\n const input = slot.always(props.input, {\n elementType: 'input',\n });\n input.ref = useMergedRefs(input.ref, ref, rootRef);\n\n // Props to create a semantic but non-focusable button on the element with the click-to-open handler\n // Used for voice control and touch screen reader accessibility\n const inputLabelledBy = props['aria-labelledby'];\n const inputId = props.id ?? defaultId;\n const iconA11yProps = React.useMemo(\n () => ({\n role: 'button',\n 'aria-expanded': open,\n 'aria-labelledby': inputLabelledBy ?? inputId,\n }),\n [open, inputLabelledBy, inputId],\n );\n\n const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: <CalendarMonthRegular />,\n ...iconA11yProps,\n },\n elementType: 'span',\n });\n contentAfter.onClick = useEventCallback(mergeCallbacks(contentAfter.onClick, onIconClick));\n\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 readOnly: !allowTextInput,\n role: 'combobox',\n id: inputId,\n },\n elementType: Input,\n });\n root.root = inputRoot;\n root.input = input;\n root.contentAfter = contentAfter;\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\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","compareDatePart","DayOfWeek","FirstWeekOfYear","CalendarMonthRegular","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","initialPickerDateProp","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","useMemo","calendar","rootRef","setOpenState","fieldContext","required","defaultId","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","inputRoot","always","root","defaultProps","undefined","elementType","input","inputLabelledBy","inputId","id","iconA11yProps","role","contentAfter","children","onClick","appearance","readOnly","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,SAAS,EAAEC,KAAK,EAAEC,MAAM,QAAQ,0BAA0B;AACnE,SAASC,QAAQ,EAAEC,eAAe,EAAEC,SAAS,EAAEC,eAAe,QAAQ,kCAAkC;AACxG,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,KAAK,QAAQ,wBAAwB;AAC9C,SACEC,cAAc,EACdC,oBAAoB,EACpBC,gBAAgB,EAChBC,KAAK,EACLC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,IAAI,QACC,4BAA4B;AACnC,SAASC,4BAA4BC,eAAe,QAAQ,wBAAwB;AACpF,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAClF,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,mBAAmB,QAAQ,kCAAkC;AAKtE,SAASC,kBAAkBC,IAAU,EAAEC,OAAc,EAAEC,OAAc;IACnE,OAAO,AAAC,CAAC,CAACD,WAAWtB,gBAAgBsB,SAAUD,QAAQ,KAAO,CAAC,CAACE,WAAWvB,gBAAgBuB,SAAUF,QAAQ;AAC/G;AAEA,SAASG;IACP,MAAMC,WAAW9B,MAAM+B,MAAM,CAAmB;IAChD,MAAMC,4BAA4BhC,MAAM+B,MAAM,CAAC;IAE/C,MAAME,QAAQjC,MAAMkC,WAAW,CAAC;YAC9BJ,yBAAAA;SAAAA,oBAAAA,SAASK,OAAO,cAAhBL,yCAAAA,0BAAAA,kBAAkBG,KAAK,cAAvBH,8CAAAA,6BAAAA;IACF,GAAG,EAAE;IAEL,MAAMM,gCAAgCpC,MAAMkC,WAAW,CAAC;QACtDF,0BAA0BG,OAAO,GAAG;IACtC,GAAG,EAAE;IAEL,OAAO;QAACF;QAAOH;QAAUE;QAA2BI;KAA8B;AACpF;AAEA,SAASC,mBAAmBC,KAAsB;IAChD,MAAM,CAACC,MAAMC,QAAQ,GAAG5B,qBAAqB;QAC3C6B,cAAc;QACdC,cAAcJ,MAAMK,WAAW;QAC/BC,OAAON,MAAMC,IAAI;IACnB;IACA,MAAMM,YAAY7C,MAAM+B,MAAM,CAAC;IAE/B/B,MAAM8C,SAAS,CACb;QACE,IAAID,UAAUV,OAAO,IAAI,CAACI,MAAM;gBAC9B,oEAAoE;YACpED;aAAAA,sBAAAA,MAAMS,YAAY,cAAlBT,0CAAAA,yBAAAA,OAAqB;QACvB;QACAO,UAAUV,OAAO,GAAG;IACtB,GACA,mDAAmD;IACnD,uDAAuD;IACvD;QAACG,MAAMU,cAAc;QAAET;KAAK;IAG9B,OAAO;QAACA;QAAMC;KAAQ;AACxB;AAEA,SAASS,gBAAgB,EAAEC,UAAU,EAAEC,YAAY,EAAEC,KAAK,EAAmB;IAC3E,MAAM,CAACC,cAAcC,qBAAqB,GAAG1C,qBAA8C;QACzF6B,cAAc;QACdG,OAAOQ;IACT;IACA,MAAM,CAACG,eAAeC,iBAAiB,GAAGxD,MAAMyD,QAAQ,CAAC,IAAOL,SAASF,aAAaA,WAAWE,SAAS;IAE1G,MAAMM,kBAAkB,CAACC;QACvBR,yBAAAA,mCAAAA,aAAeQ;QACfL,qBAAqBK;QACrBH,iBAAiBG,WAAWT,aAAaA,WAAWS,WAAW;IACjE;IAEA3D,MAAM8C,SAAS,CAAC;QACdU,iBAAiBJ,SAASF,aAAaA,WAAWE,SAAS;IAC7D,GAAG;QAACF;QAAYE;KAAM;IAEtB,OAAO;QAACC;QAAcE;QAAeG;QAAiBF;KAAiB;AACzE;AAEA,MAAMI,oBAAoB,CAAClC,OAAiBA,OAAOA,KAAKmC,YAAY,KAAK;AACzE,MAAMC,6BAA6B,CAACC;IAClC,MAAMrC,OAAOsC,KAAKC,KAAK,CAACF;IACxB,OAAOrC,OAAO,IAAIsC,KAAKtC,QAAQ;AACjC;AAEA;;;;;;;;CAQC,GACD,OAAO,MAAMwC,yBAAyB,CAAC5B,OAAwB6B;IAC7D,MAAM,EACJnB,iBAAiB,KAAK,EACtBoB,eAAe,KAAK,EACpBC,aAAa,KAAK,EAClBC,iBAAiB,EACjB3B,cAAc,KAAK,EACnB4B,mBAAmB,IAAI,EACvBC,iBAAiBlE,UAAUmE,MAAM,EACjCC,kBAAkBnE,gBAAgBoE,QAAQ,EAC1CzB,aAAaU,iBAAiB,EAC9BgB,wBAAwB,KAAK,EAC7BC,yBAAyB,KAAK,EAC9BC,mBAAmBC,qBAAqB,EACxCC,cAAc,KAAK,EACnBC,uBAAuB,IAAI,EAC3BrD,OAAO,EACPD,OAAO,EACPuD,SAAS,EACTnC,YAAY,EACZI,cAAcgC,gBAAgB,EAC9BC,cAAc,IAAI,EAClBC,kBAAkB,EAClBC,sBAAsBxB,0BAA0B,EAChDyB,kBAAkB,KAAK,EACvBC,gBAAgB,IAAI,EACpBC,2BAA2B,KAAK,EAChCC,kBAAkB,KAAK,EACvBC,UAAUlF,wBAAwB,EAClCmF,KAAK,EACLC,aAAa,KAAK,EAClBzC,KAAK,EACL,GAAG0C,aACJ,GAAGxD;IAEJ,MAAMwC,oBAAoB9E,MAAM+F,OAAO,CAAC,IAAMhB,kCAAAA,mCAAAA,wBAAyB,IAAIf,QAAQ;QAACe;KAAsB;IAE1G,MAAMiB,WAAWhG,MAAM+B,MAAM,CAAY;IACzC,MAAM,CAACE,OAAOgE,SAASjE,2BAA2BI,8BAA8B,GAAGP;IACnF,MAAM,CAACwB,cAAcE,eAAeG,iBAAiBF,iBAAiB,GAAGP,gBAAgB;QACvFC;QACAC,cAAcgC;QACd/B;IACF;IACA,MAAM,CAACb,MAAM2D,aAAa,GAAG7D,mBAAmBC;IAChD,MAAM6D,eAAe/E;QACJ+E;IAAjB,MAAMC,WAAWD,CAAAA,yBAAAA,yBAAAA,mCAAAA,aAAcC,QAAQ,cAAtBD,oCAAAA,yBAA0B7D,MAAM8D,QAAQ;IACzD,MAAMC,YAAYvF,MAAM;IACxB,MAAMwF,iBAAiBxF,MAAM;IAE7B,MAAMyF,oBAAoBvG,MAAMkC,WAAW,CACzC,CAACR,OAAoB,IAAI;QACvB,IAAI8E;QAEJ,IAAIxD,gBAAgB;YAClB,IAAIO,iBAAiB7B,MAAM;gBACzB,+FAA+F;gBAC/F,+FAA+F;gBAC/F,mDAAmD;gBACnD,IAAI2B,gBAAgBH,cAAcA,WAAWxB,iBAAAA,kBAAAA,OAAQ2B,kBAAkBE,eAAe;oBACpF;gBACF;gBACA7B,OAAOA,QAAQ4D,oBAAqB/B;gBAEpC,mDAAmD;gBACnD,IAAI,CAAC7B,QAAQ+E,MAAM/E,KAAKgF,OAAO,KAAK;oBAClC,yCAAyC;oBACzChD,gBAAgBL;oBAChBmD,QAAQ;gBACV,OAAO;oBACL,IAAI/E,kBAAkBC,MAAMC,SAASC,UAAU;wBAC7C4E,QAAQ;oBACV,OAAO;wBACL9C,gBAAgBhC;oBAClB;gBACF;YACF,OAAO;gBACL,IAAI0E,UAAU;oBACZI,QAAQ;gBACV;gBAEArB,6BAAAA,uCAAAA,iBAAmBzD;YACrB;QACF,OAAO,IAAI0E,YAAY,CAAC7C,eAAe;YACrCiD,QAAQ;QACV;QAEAnB,+BAAAA,yCAAAA,mBAAqB;YAAEmB;QAAM;IAC/B,GACA;QACExD;QACAE;QACAK;QACA3B;QACAD;QACAwD;QACAE;QACAC;QACAc;QACA/C;QACAK;KACD;IAGH,MAAMlB,UAAUxC,MAAMkC,WAAW,CAC/B,CAACyE;QACC5D,yBAAAA,mCAAAA,aAAe4D;QACfT,aAAaS;QAEb,IAAI,CAACpE,QAAQ,CAACD,MAAMsE,QAAQ,EAAE;YAC5B3E;QACF;IACF,GACA,uDAAuD;IACvD;QAACA;QAAOc;QAAcT,MAAMsE,QAAQ;QAAEV;KAAa;IAGrD,MAAMW,yBAAyB7G,MAAMkC,WAAW,CAC9C,CAAC4E;QACC,IAAIvE,MAAM;YACRC,QAAQ;YAER+D,kBAAkBO;YAClB,IAAI,CAAC9D,kBAAkB8D,mBAAmB;gBACxCpD,gBAAgBoD;YAClB;QACF;IACF,GACA;QAAC9D;QAAgBT;QAAMC;QAASkB;QAAiB6C;KAAkB;IAGrE,MAAMQ,sBAAsB/G,MAAMkC,WAAW,CAAC;QAC5C,IAAI,CAACK,MAAM;YACTH;YACAI,QAAQ;QACV;IACF,GAAG;QAACD;QAAMH;QAA+BI;KAAQ;IAEjD;;GAEC,GACD,MAAMwE,oBAAoBhH,MAAMkC,WAAW,CACzC,CAAC4E;QACC1E;QACAyE,uBAAuBC;IACzB,GACA;QAACD;QAAwBzE;KAA8B;IAGzD,MAAM6E,gBAAgBjH,MAAMkC,WAAW,CACrC,CAACgF,IAAyCC;QACxC,MAAM,EAAE/D,OAAOgE,QAAQ,EAAE,GAAGD;QAE5B,IAAInE,gBAAgB;YAClB,IAAIT,MAAM;gBACRsE;YACF;YAEArD,iBAAiB4D;QACnB;IACF,GACA;QAACpE;QAAgB6D;QAAwBtE;QAAMiB;KAAiB;IAGlE,MAAM6D,cAAyDrH,MAAMkC,WAAW,CAAC;QAC/EqE;IACF,GAAG;QAACA;KAAkB;IAEtB,MAAMe,iBAAiBtH,MAAMkC,WAAW,CACtC,CAACgF;QACC,OAAQA,GAAGK,GAAG;YACZ,KAAKrH;gBACHgH,GAAGM,cAAc;gBACjBN,GAAGO,eAAe;gBAClB,IAAI,CAAClF,MAAM;oBACTgE;oBACAQ;gBACF,OAAO;oBACL,qDAAqD;oBACrD,yDAAyD;oBACzD,IAAIzE,MAAMU,cAAc,EAAE;wBACxB6D;oBACF;gBACF;gBACA;YAEF,KAAK1G;gBACH+G,GAAGO,eAAe;gBAClBP,GAAGM,cAAc;gBACjB,IAAIjF,MAAM;oBACRyE;gBACF;gBACA;YAEF,KAAK/G;gBACHiH,GAAGM,cAAc;gBACjB,IAAI,CAACjF,MAAM;oBACTwE;gBACF;gBACA;YAEF;gBACE;QACJ;IACF,GACA;QAACC;QAAmBH;QAAwBtE;QAAMD,MAAMU,cAAc;QAAE+D;QAAqBR;KAAkB;IAGjH,MAAMmB,eAA0D1H,MAAMkC,WAAW,CAAC;QAChF,IAAIqC,kBAAkB;YACpB;QACF;QAEA,IAAI,CAACvB,gBAAgB;YACnB,IAAI,CAAChB,0BAA0BG,OAAO,EAAE;gBACtC4E;YACF;YACA/E,0BAA0BG,OAAO,GAAG;QACtC;IACF,GAAG;QAACa;QAAgBuB;QAAkBvC;QAA2B+E;KAAoB;IAErF,MAAMY,eAA0D3H,MAAMkC,WAAW,CAAC;QAChF,iGAAiG;QACjG,IAAI,AAACI,CAAAA,MAAM8C,WAAW,IAAI,CAAC9C,MAAMiC,gBAAgB,AAAD,KAAM,CAAChC,QAAQ,CAACD,MAAMsE,QAAQ,EAAE;YAC9EG;YACA;QACF;QAEA,IAAI/D,gBAAgB;YAClB6D;QACF;IACF,GAAG;QACD7D;QACA6D;QACAtE;QACAD,MAAMsE,QAAQ;QACdtE,MAAMiC,gBAAgB;QACtBjC,MAAM8C,WAAW;QACjB2B;KACD;IAED,MAAMa,cAAc,CAACV;QACnBA,GAAGO,eAAe;QAClB,IAAI,CAAClF,QAAQ,CAACD,MAAMsE,QAAQ,EAAE;YAC5BG;QACF,OAAO,IAAIzE,MAAMU,cAAc,EAAE;YAC/B6D;QACF;IACF;IAEA,MAAMgB,kBAA4ChC,aAC9C,cACAxB,aACA,mBACA;IAEJ,MAAM,CAACyD,mBAAmBC,SAAS,GAAGvG,oBAAoBc;IAE1D,MAAM0F,YAAY9G,KAAK+G,MAAM,CAAC3F,MAAM4F,IAAI,EAAE;QACxCC,cAAc;YACZ,aAAa5F,OAAO+D,iBAAiB8B;YACrCjE,KAAK2D;QACP;QACAO,aAAa;IACf;IACAL,UAAU7D,GAAG,GAAGpD,cAAciH,UAAU7D,GAAG,EAAE2D;IAE7C,MAAMQ,QAAQpH,KAAK+G,MAAM,CAAC3F,MAAMgG,KAAK,EAAE;QACrCD,aAAa;IACf;IACAC,MAAMnE,GAAG,GAAGpD,cAAcuH,MAAMnE,GAAG,EAAEA,KAAK8B;IAE1C,oGAAoG;IACpG,+DAA+D;IAC/D,MAAMsC,kBAAkBjG,KAAK,CAAC,kBAAkB;QAChCA;IAAhB,MAAMkG,UAAUlG,CAAAA,YAAAA,MAAMmG,EAAE,cAARnG,uBAAAA,YAAY+D;IAC5B,MAAMqC,gBAAgB1I,MAAM+F,OAAO,CACjC,IAAO,CAAA;YACL4C,MAAM;YACN,iBAAiBpG;YACjB,mBAAmBgG,4BAAAA,6BAAAA,kBAAmBC;QACxC,CAAA,GACA;QAACjG;QAAMgG;QAAiBC;KAAQ;IAGlC,MAAMI,eAAe1H,KAAK+G,MAAM,CAAC3F,MAAMsG,YAAY,IAAI,CAAC,GAAG;QACzDT,cAAc;YACZU,wBAAU,oBAACrI;YACX,GAAGkI,aAAa;QAClB;QACAL,aAAa;IACf;IACAO,aAAaE,OAAO,GAAGjI,iBAAiBF,eAAeiI,aAAaE,OAAO,EAAElB;IAE7E,MAAMM,OAAOhH,KAAK+G,MAAM,CAACnC,aAAa;QACpCqC,cAAc;YACZY,YAAYlB;YACZ,iBAAiBtF,OAAO+D,iBAAiB8B;YACzC,iBAAiB7F;YACjB,iBAAiB;YACjByG,UAAU,CAAChG;YACX2F,MAAM;YACNF,IAAID;QACN;QACAH,aAAa3H;IACf;IACAwH,KAAKA,IAAI,GAAGF;IACZE,KAAKI,KAAK,GAAGA;IACbJ,KAAKU,YAAY,GAAGA;IACpBV,KAAKe,QAAQ,GAAGpI,iBAAiBF,eAAeuH,KAAKe,QAAQ,EAAEhC;IAC/DiB,KAAKgB,MAAM,GAAGrI,iBAAiBF,eAAeuH,KAAKgB,MAAM,EAAE7B;IAC3Da,KAAKiB,SAAS,GAAGtI,iBAAiBF,eAAeuH,KAAKiB,SAAS,EAAE7B;IACjEY,KAAKkB,OAAO,GAAGvI,iBAAiBF,eAAeuH,KAAKkB,OAAO,EAAE1B;IAC7DQ,KAAKY,OAAO,GAAGjI,iBAAiBF,eAAeuH,KAAKY,OAAO,EAAEnB;IAE7D,MAAM,EAAE0B,eAAe,EAAE,GAAG9H,mBAAmB;QAAE+H,WAAW;QAAMC,iBAAiB;QAAMC,iBAAiB;IAAM;IAChH,MAAMC,eAAelH,OACjBrB,KAAKwI,QAAQ,CAACpH,MAAMmH,YAAY,EAAE;QAChCE,iBAAiB;QACjBxB,cAAc;YACZ,cAAc;YACd,cAAc;YACdM,IAAInC;YACJqC,MAAM;YACNxE,KAAK4D;YACL,GAAGsB,eAAe;QACpB;QACAhB,aAAa;IACf,KACAD;IACJ,MAAM,EAAEwB,cAAc,EAAE,GAAGtI;IAC3BN,kBAAkB;QAChB6I,SAASD;QACTE,UAAU5C,CAAAA,KAAML;QAChBkD,MAAM;YAACjC;YAAmBC;SAAS;QACnCnB,UAAU,CAACrE;IACb;IACAtB,mBAAmB;QACjB4I,SAASD;QACTE,UAAU5C,CAAAA,KAAML;QAChBkD,MAAM;YAACjC;YAAmBC;SAAS;QACnCnB,UAAU,CAACrE;IACb,IAAI,6DAA6D;IACjE,+GAA+G;IAC/G,kBAAkB;IAClBvC,MAAM8C,SAAS,CAAC;QACd,IAAIP,QAAQ,CAACD,MAAMsE,QAAQ,IAAIZ,SAAS7D,OAAO,EAAE;YAC/C6D,SAAS7D,OAAO,CAACF,KAAK;QACxB;IACF,GAAG;QAACsC;QAAkBhC;QAAMD,MAAMsE,QAAQ;KAAC;IAC3C,MAAMoD,oBAAoB9I,KAAK+G,MAAM,CAAC3F,MAAM0D,QAAQ,EAAE;QACpDmC,cAAc;YACZ/D;YACA6F,cAAcjE;YACd1B;YACAE;YACAE;YACAE;YACAC;YACAI;YACArD;YACAD;YACA4D;YACAC;YACAC;YACAC;YACAC;YACAC;YACAxC,OAAOC,gBAAgByB;QACzB;QACAuD,aAAajI;IACf;IACA4J,kBAAkBE,SAAS,GAAGrJ,iBAAiBF,eAAeqJ,kBAAkBE,SAAS,EAAElD;IAC3FgD,kBAAkB7G,YAAY,GAAGtC,iBAAiBF,eAAeqJ,kBAAkB7G,YAAY,EAAE6D;IACjG,MAAMpE,QAAyB;QAC7BgE,UAAU,CAAC,CAACtE,MAAMsE,QAAQ;QAC1B5B;QACAmF,YAAY;YAAEjC,MAAMxH;YAAOsF,UAAU5F;YAA8CqJ,cAAc;QAAM;QACvGzD,UAAUgE;QACV9E;QACAgD;QACAuB;IACF;IAEA7G,MAAMsF,IAAI,CAAC9E,KAAK,GAAGG;IAEnB,OAAOX;AACT,EAAE"}
1
+ {"version":3,"sources":["useDatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar, compareDatePart, DayOfWeek, FirstWeekOfYear } from '@fluentui/react-calendar-compat';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\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 '@fluentui/react-calendar-compat';\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 'use no memo';\n\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 'use no memo';\n\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: initialPickerDateProp,\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\n const initialPickerDate = React.useMemo(() => initialPickerDateProp ?? new Date(), [initialPickerDateProp]);\n\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 defaultId = useId('datePicker-input');\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 (!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\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n ref: triggerWrapperRef,\n },\n elementType: 'span',\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n\n const input = slot.always(props.input, {\n elementType: 'input',\n });\n input.ref = useMergedRefs(input.ref, ref, rootRef);\n\n // Props to create a semantic but non-focusable button on the element with the click-to-open handler\n // Used for voice control and touch screen reader accessibility\n const inputLabelledBy = props['aria-labelledby'];\n const inputId = props.id ?? defaultId;\n const iconA11yProps = React.useMemo(\n () => ({\n role: 'button',\n 'aria-expanded': open,\n 'aria-labelledby': inputLabelledBy ?? inputId,\n }),\n [open, inputLabelledBy, inputId],\n );\n\n const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: <CalendarMonthRegular />,\n ...iconA11yProps,\n },\n elementType: 'span',\n });\n contentAfter.onClick = useEventCallback(mergeCallbacks(contentAfter.onClick, onIconClick));\n\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 readOnly: !allowTextInput,\n role: 'combobox',\n id: inputId,\n },\n elementType: Input,\n });\n root.root = inputRoot;\n root.input = input;\n root.contentAfter = contentAfter;\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\n const { modalAttributes } = useModalAttributes({ trapFocus: true, alwaysFocusable: true, legacyTrapFocus: true });\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","compareDatePart","DayOfWeek","FirstWeekOfYear","CalendarMonthRegular","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","initialPickerDateProp","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","useMemo","calendar","rootRef","setOpenState","fieldContext","required","defaultId","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","inputRoot","always","root","defaultProps","elementType","input","inputLabelledBy","inputId","id","iconA11yProps","role","contentAfter","children","onClick","appearance","undefined","readOnly","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"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"}
@@ -26,6 +26,8 @@ const usePopupSurfaceClassName = /*#__PURE__*/__resetStyles("r1ytv1z8", null, ["
26
26
  * Apply styling to the DatePicker slots based on the state
27
27
  */
28
28
  export const useDatePickerStyles_unstable = state => {
29
+ 'use no memo';
30
+
29
31
  const styles = useStyles();
30
32
  const popupSurfaceClassName = usePopupSurfaceClassName();
31
33
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["__resetStyles","__styles","mergeClasses","tokens","typographyStyles","datePickerClassNames","root","calendar","popupSurface","useStyles","base","qhf8xq","Bceei9c","xfaavh","disabled","inline","Bj3rh1h","d","usePopupSurfaceClassName","useDatePickerStyles_unstable","state","styles","popupSurfaceClassName","inlinePopup","className"],"sources":["useDatePickerStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const datePickerClassNames = {\n root: 'fui-DatePicker',\n calendar: 'fui-DatePicker__calendar',\n popupSurface: 'fui-DatePicker__popupSurface'\n};\nconst useStyles = makeStyles({\n base: {\n position: 'relative',\n cursor: 'pointer',\n '& input': {\n cursor: 'pointer'\n }\n },\n disabled: {\n cursor: 'default',\n '& input': {\n cursor: 'default'\n }\n },\n inline: {\n // When rendering inline, the popupSurface will be rendered under relatively positioned elements such as Input.\n // This is due to the surface being positioned as absolute, therefore zIndex: 1 ensures that won't happen.\n zIndex: 1\n }\n});\nconst usePopupSurfaceClassName = makeResetStyles({\n backgroundColor: tokens.colorNeutralBackground1,\n boxShadow: tokens.shadow16,\n borderRadius: tokens.borderRadiusMedium,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: tokens.colorTransparentStroke,\n display: 'inline-flex',\n color: tokens.colorNeutralForeground1,\n ...typographyStyles.body1\n});\n/**\n * Apply styling to the DatePicker slots based on the state\n */ export const useDatePickerStyles_unstable = (state)=>{\n const styles = useStyles();\n const popupSurfaceClassName = usePopupSurfaceClassName();\n const { disabled, inlinePopup } = state;\n state.root.className = mergeClasses(datePickerClassNames.root, styles.base, disabled && styles.disabled, state.root.className);\n if (state.popupSurface) {\n state.popupSurface.className = mergeClasses(datePickerClassNames.popupSurface, popupSurfaceClassName, state.popupSurface.className, inlinePopup && styles.inline);\n }\n state.calendar.className = mergeClasses(datePickerClassNames.calendar, state.calendar.className);\n return state;\n};\n"],"mappings":"AAAA,SAAAA,aAAA,EAAAC,QAAA,EAAsCC,YAAY,QAAQ,gBAAgB;AAC1E,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,OAAO,MAAMC,oBAAoB,GAAG;EAChCC,IAAI,EAAE,gBAAgB;EACtBC,QAAQ,EAAE,0BAA0B;EACpCC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGR,QAAA;EAAAS,IAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;EAAA;EAAAC,QAAA;IAAAF,OAAA;IAAAC,MAAA;EAAA;EAAAE,MAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;AAAA,CAmBjB,CAAC;AACF,MAAMC,wBAAwB,gBAAGlB,aAAA,0aAUhC,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMmB,4BAA4B,GAAIC,KAAK,IAAG;EACrD,MAAMC,MAAM,GAAGZ,SAAS,CAAC,CAAC;EAC1B,MAAMa,qBAAqB,GAAGJ,wBAAwB,CAAC,CAAC;EACxD,MAAM;IAAEJ,QAAQ;IAAES;EAAY,CAAC,GAAGH,KAAK;EACvCA,KAAK,CAACd,IAAI,CAACkB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACC,IAAI,EAAEe,MAAM,CAACX,IAAI,EAAEI,QAAQ,IAAIO,MAAM,CAACP,QAAQ,EAAEM,KAAK,CAACd,IAAI,CAACkB,SAAS,CAAC;EAC9H,IAAIJ,KAAK,CAACZ,YAAY,EAAE;IACpBY,KAAK,CAACZ,YAAY,CAACgB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACG,YAAY,EAAEc,qBAAqB,EAAEF,KAAK,CAACZ,YAAY,CAACgB,SAAS,EAAED,WAAW,IAAIF,MAAM,CAACN,MAAM,CAAC;EACrK;EACAK,KAAK,CAACb,QAAQ,CAACiB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACE,QAAQ,EAAEa,KAAK,CAACb,QAAQ,CAACiB,SAAS,CAAC;EAChG,OAAOJ,KAAK;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__resetStyles","__styles","mergeClasses","tokens","typographyStyles","datePickerClassNames","root","calendar","popupSurface","useStyles","base","qhf8xq","Bceei9c","xfaavh","disabled","inline","Bj3rh1h","d","usePopupSurfaceClassName","useDatePickerStyles_unstable","state","styles","popupSurfaceClassName","inlinePopup","className"],"sources":["useDatePickerStyles.styles.js"],"sourcesContent":["import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const datePickerClassNames = {\n root: 'fui-DatePicker',\n calendar: 'fui-DatePicker__calendar',\n popupSurface: 'fui-DatePicker__popupSurface'\n};\nconst useStyles = makeStyles({\n base: {\n position: 'relative',\n cursor: 'pointer',\n '& input': {\n cursor: 'pointer'\n }\n },\n disabled: {\n cursor: 'default',\n '& input': {\n cursor: 'default'\n }\n },\n inline: {\n // When rendering inline, the popupSurface will be rendered under relatively positioned elements such as Input.\n // This is due to the surface being positioned as absolute, therefore zIndex: 1 ensures that won't happen.\n zIndex: 1\n }\n});\nconst usePopupSurfaceClassName = makeResetStyles({\n backgroundColor: tokens.colorNeutralBackground1,\n boxShadow: tokens.shadow16,\n borderRadius: tokens.borderRadiusMedium,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: tokens.colorTransparentStroke,\n display: 'inline-flex',\n color: tokens.colorNeutralForeground1,\n ...typographyStyles.body1\n});\n/**\n * Apply styling to the DatePicker slots based on the state\n */ export const useDatePickerStyles_unstable = (state)=>{\n 'use no memo';\n const styles = useStyles();\n const popupSurfaceClassName = usePopupSurfaceClassName();\n const { disabled, inlinePopup } = state;\n state.root.className = mergeClasses(datePickerClassNames.root, styles.base, disabled && styles.disabled, state.root.className);\n if (state.popupSurface) {\n state.popupSurface.className = mergeClasses(datePickerClassNames.popupSurface, popupSurfaceClassName, state.popupSurface.className, inlinePopup && styles.inline);\n }\n state.calendar.className = mergeClasses(datePickerClassNames.calendar, state.calendar.className);\n return state;\n};\n"],"mappings":"AAAA,SAAAA,aAAA,EAAAC,QAAA,EAAsCC,YAAY,QAAQ,gBAAgB;AAC1E,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,OAAO,MAAMC,oBAAoB,GAAG;EAChCC,IAAI,EAAE,gBAAgB;EACtBC,QAAQ,EAAE,0BAA0B;EACpCC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGR,QAAA;EAAAS,IAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;EAAA;EAAAC,QAAA;IAAAF,OAAA;IAAAC,MAAA;EAAA;EAAAE,MAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;AAAA,CAmBjB,CAAC;AACF,MAAMC,wBAAwB,gBAAGlB,aAAA,0aAUhC,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMmB,4BAA4B,GAAIC,KAAK,IAAG;EACrD,aAAa;;EACb,MAAMC,MAAM,GAAGZ,SAAS,CAAC,CAAC;EAC1B,MAAMa,qBAAqB,GAAGJ,wBAAwB,CAAC,CAAC;EACxD,MAAM;IAAEJ,QAAQ;IAAES;EAAY,CAAC,GAAGH,KAAK;EACvCA,KAAK,CAACd,IAAI,CAACkB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACC,IAAI,EAAEe,MAAM,CAACX,IAAI,EAAEI,QAAQ,IAAIO,MAAM,CAACP,QAAQ,EAAEM,KAAK,CAACd,IAAI,CAACkB,SAAS,CAAC;EAC9H,IAAIJ,KAAK,CAACZ,YAAY,EAAE;IACpBY,KAAK,CAACZ,YAAY,CAACgB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACG,YAAY,EAAEc,qBAAqB,EAAEF,KAAK,CAACZ,YAAY,CAACgB,SAAS,EAAED,WAAW,IAAIF,MAAM,CAACN,MAAM,CAAC;EACrK;EACAK,KAAK,CAACb,QAAQ,CAACiB,SAAS,GAAGtB,YAAY,CAACG,oBAAoB,CAACE,QAAQ,EAAEa,KAAK,CAACb,QAAQ,CAACiB,SAAS,CAAC;EAChG,OAAOJ,KAAK;AAChB,CAAC","ignoreList":[]}
@@ -41,6 +41,7 @@ function useFocusLogic() {
41
41
  ];
42
42
  }
43
43
  function usePopupVisibility(props) {
44
+ 'use no memo';
44
45
  const [open, setOpen] = (0, _reactutilities.useControllableState)({
45
46
  initialState: false,
46
47
  defaultState: props.defaultOpen,
@@ -93,6 +94,7 @@ const defaultParseDateFromString = (dateStr)=>{
93
94
  return date ? new Date(date) : null;
94
95
  };
95
96
  const useDatePicker_unstable = (props, ref)=>{
97
+ 'use no memo';
96
98
  const { allowTextInput = false, allFocusable = false, borderless = false, dateTimeFormatter, defaultOpen = false, disableAutoFocus = true, firstDayOfWeek = _reactcalendarcompat.DayOfWeek.Sunday, firstWeekOfYear = _reactcalendarcompat.FirstWeekOfYear.FirstDay, formatDate = defaultFormatDate, highlightCurrentMonth = false, highlightSelectedMonth = false, initialPickerDate: initialPickerDateProp, inlinePopup = false, isMonthPickerVisible = true, maxDate, minDate, mountNode, onOpenChange, onSelectDate: onUserSelectDate, openOnClick = true, onValidationResult, parseDateFromString = defaultParseDateFromString, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay = false, showWeekNumbers = false, strings = _defaults.defaultDatePickerStrings, today, underlined = false, value, ...restOfProps } = props;
97
99
  const initialPickerDate = _react.useMemo(()=>initialPickerDateProp !== null && initialPickerDateProp !== void 0 ? initialPickerDateProp : new Date(), [
98
100
  initialPickerDateProp
@@ -309,7 +311,6 @@ const useDatePicker_unstable = (props, ref)=>{
309
311
  const [triggerWrapperRef, popupRef] = (0, _usePopupPositioning.usePopupPositioning)(props);
310
312
  const inputRoot = _reactutilities.slot.always(props.root, {
311
313
  defaultProps: {
312
- 'aria-owns': open ? popupSurfaceId : undefined,
313
314
  ref: triggerWrapperRef
314
315
  },
315
316
  elementType: 'span'
@@ -364,7 +365,7 @@ const useDatePicker_unstable = (props, ref)=>{
364
365
  const { modalAttributes } = (0, _reacttabster.useModalAttributes)({
365
366
  trapFocus: true,
366
367
  alwaysFocusable: true,
367
- legacyTrapFocus: false
368
+ legacyTrapFocus: true
368
369
  });
369
370
  const popupSurface = open ? _reactutilities.slot.optional(props.popupSurface, {
370
371
  renderByDefault: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["useDatePicker.js"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar, compareDatePart, DayOfWeek, FirstWeekOfYear } from '@fluentui/react-calendar-compat';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\nimport { defaultDatePickerStrings } from './defaults';\nimport { Input } from '@fluentui/react-input';\nimport { mergeCallbacks, useControllableState, useEventCallback, useId, useMergedRefs, useOnClickOutside, useOnScrollOutside, slot } 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';\nfunction isDateOutOfBounds(date, minDate, maxDate) {\n return !!minDate && compareDatePart(minDate, date) > 0 || !!maxDate && compareDatePart(maxDate, date) < 0;\n}\nfunction useFocusLogic() {\n const inputRef = React.useRef(null);\n const preventFocusOpeningPicker = React.useRef(false);\n const focus = React.useCallback(()=>{\n var _inputRef_current_focus, _inputRef_current;\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : (_inputRef_current_focus = _inputRef_current.focus) === null || _inputRef_current_focus === void 0 ? void 0 : _inputRef_current_focus.call(_inputRef_current);\n }, []);\n const preventNextFocusOpeningPicker = React.useCallback(()=>{\n preventFocusOpeningPicker.current = true;\n }, []);\n return [\n focus,\n inputRef,\n preventFocusOpeningPicker,\n preventNextFocusOpeningPicker\n ];\n}\nfunction usePopupVisibility(props) {\n const [open, setOpen] = useControllableState({\n initialState: false,\n defaultState: props.defaultOpen,\n state: props.open\n });\n const isMounted = React.useRef(false);\n React.useEffect(()=>{\n if (isMounted.current && !open) {\n var // If DatePicker's menu (Calendar) is closed, run onAfterMenuDismiss\n _props_onOpenChange;\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, false);\n }\n isMounted.current = true;\n }, // Should only run on allowTextInput or open change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n props.allowTextInput,\n open\n ]);\n return [\n open,\n setOpen\n ];\n}\nfunction useSelectedDate({ formatDate, onSelectDate, value }) {\n const [selectedDate, setSelectedDateState] = useControllableState({\n initialState: null,\n state: value\n });\n const [formattedDate, setFormattedDate] = React.useState(()=>value && formatDate ? formatDate(value) : '');\n const setSelectedDate = (newDate)=>{\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(newDate);\n setSelectedDateState(newDate);\n setFormattedDate(newDate && formatDate ? formatDate(newDate) : '');\n };\n React.useEffect(()=>{\n setFormattedDate(value && formatDate ? formatDate(value) : '');\n }, [\n formatDate,\n value\n ]);\n return [\n selectedDate,\n formattedDate,\n setSelectedDate,\n setFormattedDate\n ];\n}\nconst defaultFormatDate = (date)=>date ? date.toDateString() : '';\nconst defaultParseDateFromString = (dateStr)=>{\n const date = Date.parse(dateStr);\n return date ? new Date(date) : null;\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 */ export const useDatePicker_unstable = (props, ref)=>{\n const { allowTextInput = false, allFocusable = false, borderless = false, dateTimeFormatter, defaultOpen = false, disableAutoFocus = true, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, formatDate = defaultFormatDate, highlightCurrentMonth = false, highlightSelectedMonth = false, initialPickerDate: initialPickerDateProp, inlinePopup = false, isMonthPickerVisible = true, maxDate, minDate, mountNode, onOpenChange, onSelectDate: onUserSelectDate, openOnClick = true, onValidationResult, parseDateFromString = defaultParseDateFromString, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay = false, showWeekNumbers = false, strings = defaultDatePickerStrings, today, underlined = false, value, ...restOfProps } = props;\n const initialPickerDate = React.useMemo(()=>initialPickerDateProp !== null && initialPickerDateProp !== void 0 ? initialPickerDateProp : new Date(), [\n initialPickerDateProp\n ]);\n const calendar = React.useRef(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 var _fieldContext_required;\n const required = (_fieldContext_required = fieldContext === null || fieldContext === void 0 ? void 0 : fieldContext.required) !== null && _fieldContext_required !== void 0 ? _fieldContext_required : props.required;\n const defaultId = useId('datePicker-input');\n const popupSurfaceId = useId('datePicker-popupSurface');\n const validateTextInput = React.useCallback((date = null)=>{\n let error;\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 !== null && date !== void 0 ? date : selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString(formattedDate);\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 onUserSelectDate === null || onUserSelectDate === void 0 ? void 0 : onUserSelectDate(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n onValidationResult === null || onValidationResult === void 0 ? void 0 : onValidationResult({\n 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 const setOpen = React.useCallback((newState)=>{\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(newState);\n setOpenState(newState);\n if (!open && !props.disabled) {\n focus();\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n focus,\n onOpenChange,\n props.disabled,\n setOpenState\n ]);\n const dismissDatePickerPopup = React.useCallback((newlySelectedDate)=>{\n if (open) {\n setOpen(false);\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n }, [\n allowTextInput,\n open,\n setOpen,\n setSelectedDate,\n validateTextInput\n ]);\n const showDatePickerPopup = React.useCallback(()=>{\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [\n open,\n preventNextFocusOpeningPicker,\n setOpen\n ]);\n /**\n * Callback for closing the calendar callout\n */ const calendarDismissed = React.useCallback((newlySelectedDate)=>{\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n }, [\n dismissDatePickerPopup,\n preventNextFocusOpeningPicker\n ]);\n const onInputChange = React.useCallback((ev, data)=>{\n const { value: newValue } = data;\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n setFormattedDate(newValue);\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n setFormattedDate\n ]);\n const onInputBlur = React.useCallback(()=>{\n validateTextInput();\n }, [\n validateTextInput\n ]);\n const onInputKeyDown = React.useCallback((ev)=>{\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 case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n case ArrowDown:\n ev.preventDefault();\n if (!open) {\n showDatePickerPopup();\n }\n break;\n default:\n break;\n }\n }, [\n calendarDismissed,\n dismissDatePickerPopup,\n open,\n props.allowTextInput,\n showDatePickerPopup,\n validateTextInput\n ]);\n const onInputFocus = React.useCallback(()=>{\n if (disableAutoFocus) {\n return;\n }\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [\n allowTextInput,\n disableAutoFocus,\n preventFocusOpeningPicker,\n showDatePickerPopup\n ]);\n const onInputClick = React.useCallback(()=>{\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 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 const onIconClick = (ev)=>{\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n const inputAppearance = underlined ? 'underline' : borderless ? 'filled-lighter' : 'outline';\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\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 const input = slot.always(props.input, {\n elementType: 'input'\n });\n input.ref = useMergedRefs(input.ref, ref, rootRef);\n // Props to create a semantic but non-focusable button on the element with the click-to-open handler\n // Used for voice control and touch screen reader accessibility\n const inputLabelledBy = props['aria-labelledby'];\n var _props_id;\n const inputId = (_props_id = props.id) !== null && _props_id !== void 0 ? _props_id : defaultId;\n const iconA11yProps = React.useMemo(()=>({\n role: 'button',\n 'aria-expanded': open,\n 'aria-labelledby': inputLabelledBy !== null && inputLabelledBy !== void 0 ? inputLabelledBy : inputId\n }), [\n open,\n inputLabelledBy,\n inputId\n ]);\n const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: /*#__PURE__*/ React.createElement(CalendarMonthRegular, null),\n ...iconA11yProps\n },\n elementType: 'span'\n });\n contentAfter.onClick = useEventCallback(mergeCallbacks(contentAfter.onClick, onIconClick));\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 readOnly: !allowTextInput,\n role: 'combobox',\n id: inputId\n },\n elementType: Input\n });\n root.root = inputRoot;\n root.input = input;\n root.contentAfter = contentAfter;\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({\n trapFocus: true,\n alwaysFocusable: true,\n legacyTrapFocus: false\n });\n const popupSurface = open ? 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 }) : undefined;\n const { targetDocument } = useFluent();\n useOnClickOutside({\n element: targetDocument,\n callback: (ev)=>dismissDatePickerPopup(),\n refs: [\n triggerWrapperRef,\n popupRef\n ],\n disabled: !open\n });\n useOnScrollOutside({\n element: targetDocument,\n callback: (ev)=>dismissDatePickerPopup(),\n refs: [\n triggerWrapperRef,\n popupRef\n ],\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 }, [\n disableAutoFocus,\n open,\n props.disabled\n ]);\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 = {\n disabled: !!props.disabled,\n inlinePopup,\n components: {\n root: Input,\n calendar: Calendar,\n popupSurface: 'div'\n },\n calendar: calendarShorthand,\n mountNode,\n root,\n popupSurface\n };\n state.root.value = formattedDate;\n return state;\n};\n"],"names":["useDatePicker_unstable","isDateOutOfBounds","date","minDate","maxDate","compareDatePart","useFocusLogic","inputRef","React","useRef","preventFocusOpeningPicker","focus","useCallback","_inputRef_current_focus","_inputRef_current","current","call","preventNextFocusOpeningPicker","usePopupVisibility","props","open","setOpen","useControllableState","initialState","defaultState","defaultOpen","state","isMounted","useEffect","_props_onOpenChange","onOpenChange","allowTextInput","useSelectedDate","formatDate","onSelectDate","value","selectedDate","setSelectedDateState","formattedDate","setFormattedDate","useState","setSelectedDate","newDate","defaultFormatDate","toDateString","defaultParseDateFromString","dateStr","Date","parse","ref","allFocusable","borderless","dateTimeFormatter","disableAutoFocus","firstDayOfWeek","DayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","initialPickerDate","initialPickerDateProp","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","defaultDatePickerStrings","today","underlined","restOfProps","useMemo","calendar","rootRef","setOpenState","fieldContext","useFieldContext","_fieldContext_required","required","defaultId","useId","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","Enter","preventDefault","stopPropagation","Escape","ArrowDown","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","usePopupPositioning","inputRoot","slot","always","root","defaultProps","undefined","elementType","useMergedRefs","input","inputLabelledBy","_props_id","inputId","id","iconA11yProps","role","contentAfter","children","createElement","CalendarMonthRegular","onClick","useEventCallback","mergeCallbacks","appearance","readOnly","Input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","useModalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","targetDocument","useFluent","useOnClickOutside","element","callback","refs","useOnScrollOutside","calendarShorthand","componentRef","Calendar","onDismiss","components"],"mappings":"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"}
1
+ {"version":3,"sources":["useDatePicker.js"],"sourcesContent":["import * as React from 'react';\nimport { ArrowDown, Enter, Escape } from '@fluentui/keyboard-keys';\nimport { Calendar, compareDatePart, DayOfWeek, FirstWeekOfYear } from '@fluentui/react-calendar-compat';\nimport { CalendarMonthRegular } from '@fluentui/react-icons';\nimport { defaultDatePickerStrings } from './defaults';\nimport { Input } from '@fluentui/react-input';\nimport { mergeCallbacks, useControllableState, useEventCallback, useId, useMergedRefs, useOnClickOutside, useOnScrollOutside, slot } 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';\nfunction isDateOutOfBounds(date, minDate, maxDate) {\n return !!minDate && compareDatePart(minDate, date) > 0 || !!maxDate && compareDatePart(maxDate, date) < 0;\n}\nfunction useFocusLogic() {\n const inputRef = React.useRef(null);\n const preventFocusOpeningPicker = React.useRef(false);\n const focus = React.useCallback(()=>{\n var _inputRef_current_focus, _inputRef_current;\n (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : (_inputRef_current_focus = _inputRef_current.focus) === null || _inputRef_current_focus === void 0 ? void 0 : _inputRef_current_focus.call(_inputRef_current);\n }, []);\n const preventNextFocusOpeningPicker = React.useCallback(()=>{\n preventFocusOpeningPicker.current = true;\n }, []);\n return [\n focus,\n inputRef,\n preventFocusOpeningPicker,\n preventNextFocusOpeningPicker\n ];\n}\nfunction usePopupVisibility(props) {\n 'use no memo';\n const [open, setOpen] = useControllableState({\n initialState: false,\n defaultState: props.defaultOpen,\n state: props.open\n });\n const isMounted = React.useRef(false);\n React.useEffect(()=>{\n if (isMounted.current && !open) {\n var // If DatePicker's menu (Calendar) is closed, run onAfterMenuDismiss\n _props_onOpenChange;\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, false);\n }\n isMounted.current = true;\n }, // Should only run on allowTextInput or open change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n props.allowTextInput,\n open\n ]);\n return [\n open,\n setOpen\n ];\n}\nfunction useSelectedDate({ formatDate, onSelectDate, value }) {\n const [selectedDate, setSelectedDateState] = useControllableState({\n initialState: null,\n state: value\n });\n const [formattedDate, setFormattedDate] = React.useState(()=>value && formatDate ? formatDate(value) : '');\n const setSelectedDate = (newDate)=>{\n onSelectDate === null || onSelectDate === void 0 ? void 0 : onSelectDate(newDate);\n setSelectedDateState(newDate);\n setFormattedDate(newDate && formatDate ? formatDate(newDate) : '');\n };\n React.useEffect(()=>{\n setFormattedDate(value && formatDate ? formatDate(value) : '');\n }, [\n formatDate,\n value\n ]);\n return [\n selectedDate,\n formattedDate,\n setSelectedDate,\n setFormattedDate\n ];\n}\nconst defaultFormatDate = (date)=>date ? date.toDateString() : '';\nconst defaultParseDateFromString = (dateStr)=>{\n const date = Date.parse(dateStr);\n return date ? new Date(date) : null;\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 */ export const useDatePicker_unstable = (props, ref)=>{\n 'use no memo';\n const { allowTextInput = false, allFocusable = false, borderless = false, dateTimeFormatter, defaultOpen = false, disableAutoFocus = true, firstDayOfWeek = DayOfWeek.Sunday, firstWeekOfYear = FirstWeekOfYear.FirstDay, formatDate = defaultFormatDate, highlightCurrentMonth = false, highlightSelectedMonth = false, initialPickerDate: initialPickerDateProp, inlinePopup = false, isMonthPickerVisible = true, maxDate, minDate, mountNode, onOpenChange, onSelectDate: onUserSelectDate, openOnClick = true, onValidationResult, parseDateFromString = defaultParseDateFromString, showCloseButton = false, showGoToToday = true, showMonthPickerAsOverlay = false, showWeekNumbers = false, strings = defaultDatePickerStrings, today, underlined = false, value, ...restOfProps } = props;\n const initialPickerDate = React.useMemo(()=>initialPickerDateProp !== null && initialPickerDateProp !== void 0 ? initialPickerDateProp : new Date(), [\n initialPickerDateProp\n ]);\n const calendar = React.useRef(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 var _fieldContext_required;\n const required = (_fieldContext_required = fieldContext === null || fieldContext === void 0 ? void 0 : fieldContext.required) !== null && _fieldContext_required !== void 0 ? _fieldContext_required : props.required;\n const defaultId = useId('datePicker-input');\n const popupSurfaceId = useId('datePicker-popupSurface');\n const validateTextInput = React.useCallback((date = null)=>{\n let error;\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 !== null && date !== void 0 ? date : selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString(formattedDate);\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 onUserSelectDate === null || onUserSelectDate === void 0 ? void 0 : onUserSelectDate(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n onValidationResult === null || onValidationResult === void 0 ? void 0 : onValidationResult({\n 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 const setOpen = React.useCallback((newState)=>{\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(newState);\n setOpenState(newState);\n if (!open && !props.disabled) {\n focus();\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n focus,\n onOpenChange,\n props.disabled,\n setOpenState\n ]);\n const dismissDatePickerPopup = React.useCallback((newlySelectedDate)=>{\n if (open) {\n setOpen(false);\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n }, [\n allowTextInput,\n open,\n setOpen,\n setSelectedDate,\n validateTextInput\n ]);\n const showDatePickerPopup = React.useCallback(()=>{\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [\n open,\n preventNextFocusOpeningPicker,\n setOpen\n ]);\n /**\n * Callback for closing the calendar callout\n */ const calendarDismissed = React.useCallback((newlySelectedDate)=>{\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n }, [\n dismissDatePickerPopup,\n preventNextFocusOpeningPicker\n ]);\n const onInputChange = React.useCallback((ev, data)=>{\n const { value: newValue } = data;\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n setFormattedDate(newValue);\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n setFormattedDate\n ]);\n const onInputBlur = React.useCallback(()=>{\n validateTextInput();\n }, [\n validateTextInput\n ]);\n const onInputKeyDown = React.useCallback((ev)=>{\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 case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n case ArrowDown:\n ev.preventDefault();\n if (!open) {\n showDatePickerPopup();\n }\n break;\n default:\n break;\n }\n }, [\n calendarDismissed,\n dismissDatePickerPopup,\n open,\n props.allowTextInput,\n showDatePickerPopup,\n validateTextInput\n ]);\n const onInputFocus = React.useCallback(()=>{\n if (disableAutoFocus) {\n return;\n }\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [\n allowTextInput,\n disableAutoFocus,\n preventFocusOpeningPicker,\n showDatePickerPopup\n ]);\n const onInputClick = React.useCallback(()=>{\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 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 const onIconClick = (ev)=>{\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n const inputAppearance = underlined ? 'underline' : borderless ? 'filled-lighter' : 'outline';\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n ref: triggerWrapperRef\n },\n elementType: 'span'\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n const input = slot.always(props.input, {\n elementType: 'input'\n });\n input.ref = useMergedRefs(input.ref, ref, rootRef);\n // Props to create a semantic but non-focusable button on the element with the click-to-open handler\n // Used for voice control and touch screen reader accessibility\n const inputLabelledBy = props['aria-labelledby'];\n var _props_id;\n const inputId = (_props_id = props.id) !== null && _props_id !== void 0 ? _props_id : defaultId;\n const iconA11yProps = React.useMemo(()=>({\n role: 'button',\n 'aria-expanded': open,\n 'aria-labelledby': inputLabelledBy !== null && inputLabelledBy !== void 0 ? inputLabelledBy : inputId\n }), [\n open,\n inputLabelledBy,\n inputId\n ]);\n const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: /*#__PURE__*/ React.createElement(CalendarMonthRegular, null),\n ...iconA11yProps\n },\n elementType: 'span'\n });\n contentAfter.onClick = useEventCallback(mergeCallbacks(contentAfter.onClick, onIconClick));\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 readOnly: !allowTextInput,\n role: 'combobox',\n id: inputId\n },\n elementType: Input\n });\n root.root = inputRoot;\n root.input = input;\n root.contentAfter = contentAfter;\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({\n trapFocus: true,\n alwaysFocusable: true,\n legacyTrapFocus: true\n });\n const popupSurface = open ? 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 }) : undefined;\n const { targetDocument } = useFluent();\n useOnClickOutside({\n element: targetDocument,\n callback: (ev)=>dismissDatePickerPopup(),\n refs: [\n triggerWrapperRef,\n popupRef\n ],\n disabled: !open\n });\n useOnScrollOutside({\n element: targetDocument,\n callback: (ev)=>dismissDatePickerPopup(),\n refs: [\n triggerWrapperRef,\n popupRef\n ],\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 }, [\n disableAutoFocus,\n open,\n props.disabled\n ]);\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 = {\n disabled: !!props.disabled,\n inlinePopup,\n components: {\n root: Input,\n calendar: Calendar,\n popupSurface: 'div'\n },\n calendar: calendarShorthand,\n mountNode,\n root,\n popupSurface\n };\n state.root.value = formattedDate;\n return state;\n};\n"],"names":["useDatePicker_unstable","isDateOutOfBounds","date","minDate","maxDate","compareDatePart","useFocusLogic","inputRef","React","useRef","preventFocusOpeningPicker","focus","useCallback","_inputRef_current_focus","_inputRef_current","current","call","preventNextFocusOpeningPicker","usePopupVisibility","props","open","setOpen","useControllableState","initialState","defaultState","defaultOpen","state","isMounted","useEffect","_props_onOpenChange","onOpenChange","allowTextInput","useSelectedDate","formatDate","onSelectDate","value","selectedDate","setSelectedDateState","formattedDate","setFormattedDate","useState","setSelectedDate","newDate","defaultFormatDate","toDateString","defaultParseDateFromString","dateStr","Date","parse","ref","allFocusable","borderless","dateTimeFormatter","disableAutoFocus","firstDayOfWeek","DayOfWeek","Sunday","firstWeekOfYear","FirstWeekOfYear","FirstDay","highlightCurrentMonth","highlightSelectedMonth","initialPickerDate","initialPickerDateProp","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","defaultDatePickerStrings","today","underlined","restOfProps","useMemo","calendar","rootRef","setOpenState","fieldContext","useFieldContext","_fieldContext_required","required","defaultId","useId","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","Enter","preventDefault","stopPropagation","Escape","ArrowDown","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","usePopupPositioning","inputRoot","slot","always","root","defaultProps","elementType","useMergedRefs","input","inputLabelledBy","_props_id","inputId","id","iconA11yProps","role","contentAfter","children","createElement","CalendarMonthRegular","onClick","useEventCallback","mergeCallbacks","appearance","undefined","readOnly","Input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","useModalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","targetDocument","useFluent","useOnClickOutside","element","callback","refs","useOnScrollOutside","calendarShorthand","componentRef","Calendar","onDismiss","components"],"mappings":"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"}
@@ -49,6 +49,7 @@ const usePopupSurfaceClassName = /*#__PURE__*/ (0, _react.__resetStyles)("r1ytv1
49
49
  ".r1ytv1z8{background-color:var(--colorNeutralBackground1);box-shadow:var(--shadow16);border-radius:var(--borderRadiusMedium);border-width:1px;border-style:solid;border-color:var(--colorTransparentStroke);display:inline-flex;color:var(--colorNeutralForeground1);font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase300);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase300);}"
50
50
  ]);
51
51
  const useDatePickerStyles_unstable = (state)=>{
52
+ 'use no memo';
52
53
  const styles = useStyles();
53
54
  const popupSurfaceClassName = usePopupSurfaceClassName();
54
55
  const { disabled, inlinePopup } = state;
@@ -1 +1 @@
1
- {"version":3,"sources":["useDatePickerStyles.styles.js"],"sourcesContent":["import { __resetStyles, __styles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const datePickerClassNames = {\n root: 'fui-DatePicker',\n calendar: 'fui-DatePicker__calendar',\n popupSurface: 'fui-DatePicker__popupSurface'\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n qhf8xq: \"f10pi13n\",\n Bceei9c: \"f1k6fduh\",\n xfaavh: \"faxec97\"\n },\n disabled: {\n Bceei9c: \"f158kwzp\",\n xfaavh: \"f19qwlmg\"\n },\n inline: {\n Bj3rh1h: \"f19g0ac\"\n }\n}, {\n d: [\".f10pi13n{position:relative;}\", \".f1k6fduh{cursor:pointer;}\", \".faxec97 input{cursor:pointer;}\", \".f158kwzp{cursor:default;}\", \".f19qwlmg input{cursor:default;}\", \".f19g0ac{z-index:1;}\"]\n});\nconst usePopupSurfaceClassName = /*#__PURE__*/__resetStyles(\"r1ytv1z8\", null, [\".r1ytv1z8{background-color:var(--colorNeutralBackground1);box-shadow:var(--shadow16);border-radius:var(--borderRadiusMedium);border-width:1px;border-style:solid;border-color:var(--colorTransparentStroke);display:inline-flex;color:var(--colorNeutralForeground1);font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase300);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase300);}\"]);\n/**\n * Apply styling to the DatePicker slots based on the state\n */\nexport const useDatePickerStyles_unstable = state => {\n const styles = useStyles();\n const popupSurfaceClassName = usePopupSurfaceClassName();\n const {\n disabled,\n inlinePopup\n } = state;\n state.root.className = mergeClasses(datePickerClassNames.root, styles.base, disabled && styles.disabled, state.root.className);\n if (state.popupSurface) {\n state.popupSurface.className = mergeClasses(datePickerClassNames.popupSurface, popupSurfaceClassName, state.popupSurface.className, inlinePopup && styles.inline);\n }\n state.calendar.className = mergeClasses(datePickerClassNames.calendar, state.calendar.className);\n return state;\n};\n//# sourceMappingURL=useDatePickerStyles.styles.js.map"],"names":["datePickerClassNames","useDatePickerStyles_unstable","root","calendar","popupSurface","useStyles","__styles","base","qhf8xq","Bceei9c","xfaavh","disabled","inline","Bj3rh1h","d","usePopupSurfaceClassName","__resetStyles","state","styles","popupSurfaceClassName","inlinePopup","className","mergeClasses"],"mappings":";;;;;;;;;;;IAEaA,oBAAoB;eAApBA;;IAyBAC,4BAA4B;eAA5BA;;;uBA3ByC;AAE/C,MAAMD,uBAAuB;IAClCE,MAAM;IACNC,UAAU;IACVC,cAAc;AAChB;AACA,MAAMC,YAAY,WAAW,GAAEC,IAAAA,eAAQ,EAAC;IACtCC,MAAM;QACJC,QAAQ;QACRC,SAAS;QACTC,QAAQ;IACV;IACAC,UAAU;QACRF,SAAS;QACTC,QAAQ;IACV;IACAE,QAAQ;QACNC,SAAS;IACX;AACF,GAAG;IACDC,GAAG;QAAC;QAAiC;QAA8B;QAAmC;QAA8B;QAAoC;KAAuB;AACjM;AACA,MAAMC,2BAA2B,WAAW,GAAEC,IAAAA,oBAAa,EAAC,YAAY,MAAM;IAAC;CAAsZ;AAI9d,MAAMf,+BAA+BgB,CAAAA;IAC1C,MAAMC,SAASb;IACf,MAAMc,wBAAwBJ;IAC9B,MAAM,EACJJ,QAAQ,EACRS,WAAW,EACZ,GAAGH;IACJA,MAAMf,IAAI,CAACmB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBE,IAAI,EAAEgB,OAAOX,IAAI,EAAEI,YAAYO,OAAOP,QAAQ,EAAEM,MAAMf,IAAI,CAACmB,SAAS;IAC7H,IAAIJ,MAAMb,YAAY,EAAE;QACtBa,MAAMb,YAAY,CAACiB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBI,YAAY,EAAEe,uBAAuBF,MAAMb,YAAY,CAACiB,SAAS,EAAED,eAAeF,OAAON,MAAM;IAClK;IACAK,MAAMd,QAAQ,CAACkB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBG,QAAQ,EAAEc,MAAMd,QAAQ,CAACkB,SAAS;IAC/F,OAAOJ;AACT,GACA,sDAAsD"}
1
+ {"version":3,"sources":["useDatePickerStyles.styles.js"],"sourcesContent":["import { __resetStyles, __styles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const datePickerClassNames = {\n root: 'fui-DatePicker',\n calendar: 'fui-DatePicker__calendar',\n popupSurface: 'fui-DatePicker__popupSurface'\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n qhf8xq: \"f10pi13n\",\n Bceei9c: \"f1k6fduh\",\n xfaavh: \"faxec97\"\n },\n disabled: {\n Bceei9c: \"f158kwzp\",\n xfaavh: \"f19qwlmg\"\n },\n inline: {\n Bj3rh1h: \"f19g0ac\"\n }\n}, {\n d: [\".f10pi13n{position:relative;}\", \".f1k6fduh{cursor:pointer;}\", \".faxec97 input{cursor:pointer;}\", \".f158kwzp{cursor:default;}\", \".f19qwlmg input{cursor:default;}\", \".f19g0ac{z-index:1;}\"]\n});\nconst usePopupSurfaceClassName = /*#__PURE__*/__resetStyles(\"r1ytv1z8\", null, [\".r1ytv1z8{background-color:var(--colorNeutralBackground1);box-shadow:var(--shadow16);border-radius:var(--borderRadiusMedium);border-width:1px;border-style:solid;border-color:var(--colorTransparentStroke);display:inline-flex;color:var(--colorNeutralForeground1);font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase300);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase300);}\"]);\n/**\n * Apply styling to the DatePicker slots based on the state\n */\nexport const useDatePickerStyles_unstable = state => {\n 'use no memo';\n\n const styles = useStyles();\n const popupSurfaceClassName = usePopupSurfaceClassName();\n const {\n disabled,\n inlinePopup\n } = state;\n state.root.className = mergeClasses(datePickerClassNames.root, styles.base, disabled && styles.disabled, state.root.className);\n if (state.popupSurface) {\n state.popupSurface.className = mergeClasses(datePickerClassNames.popupSurface, popupSurfaceClassName, state.popupSurface.className, inlinePopup && styles.inline);\n }\n state.calendar.className = mergeClasses(datePickerClassNames.calendar, state.calendar.className);\n return state;\n};\n//# sourceMappingURL=useDatePickerStyles.styles.js.map"],"names":["datePickerClassNames","useDatePickerStyles_unstable","root","calendar","popupSurface","useStyles","__styles","base","qhf8xq","Bceei9c","xfaavh","disabled","inline","Bj3rh1h","d","usePopupSurfaceClassName","__resetStyles","state","styles","popupSurfaceClassName","inlinePopup","className","mergeClasses"],"mappings":";;;;;;;;;;;IAEaA,oBAAoB;eAApBA;;IAyBAC,4BAA4B;eAA5BA;;;uBA3ByC;AAE/C,MAAMD,uBAAuB;IAClCE,MAAM;IACNC,UAAU;IACVC,cAAc;AAChB;AACA,MAAMC,YAAY,WAAW,GAAEC,IAAAA,eAAQ,EAAC;IACtCC,MAAM;QACJC,QAAQ;QACRC,SAAS;QACTC,QAAQ;IACV;IACAC,UAAU;QACRF,SAAS;QACTC,QAAQ;IACV;IACAE,QAAQ;QACNC,SAAS;IACX;AACF,GAAG;IACDC,GAAG;QAAC;QAAiC;QAA8B;QAAmC;QAA8B;QAAoC;KAAuB;AACjM;AACA,MAAMC,2BAA2B,WAAW,GAAEC,IAAAA,oBAAa,EAAC,YAAY,MAAM;IAAC;CAAsZ;AAI9d,MAAMf,+BAA+BgB,CAAAA;IAC1C;IAEA,MAAMC,SAASb;IACf,MAAMc,wBAAwBJ;IAC9B,MAAM,EACJJ,QAAQ,EACRS,WAAW,EACZ,GAAGH;IACJA,MAAMf,IAAI,CAACmB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBE,IAAI,EAAEgB,OAAOX,IAAI,EAAEI,YAAYO,OAAOP,QAAQ,EAAEM,MAAMf,IAAI,CAACmB,SAAS;IAC7H,IAAIJ,MAAMb,YAAY,EAAE;QACtBa,MAAMb,YAAY,CAACiB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBI,YAAY,EAAEe,uBAAuBF,MAAMb,YAAY,CAACiB,SAAS,EAAED,eAAeF,OAAON,MAAM;IAClK;IACAK,MAAMd,QAAQ,CAACkB,SAAS,GAAGC,IAAAA,mBAAY,EAACtB,qBAAqBG,QAAQ,EAAEc,MAAMd,QAAQ,CAACkB,SAAS;IAC/F,OAAOJ;AACT,GACA,sDAAsD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-datepicker-compat",
3
- "version": "0.4.41",
3
+ "version": "0.4.42",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -36,18 +36,18 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@fluentui/keyboard-keys": "^9.0.7",
39
- "@fluentui/react-calendar-compat": "^0.1.11",
40
- "@fluentui/react-field": "^9.1.68",
41
- "@fluentui/react-icons": "^2.0.239",
42
- "@fluentui/react-input": "^9.4.79",
43
- "@fluentui/react-jsx-runtime": "^9.0.39",
44
- "@fluentui/react-popover": "^9.9.12",
45
- "@fluentui/react-portal": "^9.4.28",
46
- "@fluentui/react-positioning": "^9.15.3",
39
+ "@fluentui/react-calendar-compat": "^0.1.12",
40
+ "@fluentui/react-field": "^9.1.69",
41
+ "@fluentui/react-icons": "^2.0.245",
42
+ "@fluentui/react-input": "^9.4.80",
43
+ "@fluentui/react-jsx-runtime": "^9.0.40",
44
+ "@fluentui/react-popover": "^9.9.13",
45
+ "@fluentui/react-portal": "^9.4.29",
46
+ "@fluentui/react-positioning": "^9.15.4",
47
47
  "@fluentui/react-shared-contexts": "^9.19.0",
48
- "@fluentui/react-tabster": "^9.22.0",
48
+ "@fluentui/react-tabster": "^9.22.1",
49
49
  "@fluentui/react-theme": "^9.1.19",
50
- "@fluentui/react-utilities": "^9.18.10",
50
+ "@fluentui/react-utilities": "^9.18.11",
51
51
  "@griffel/react": "^1.5.22",
52
52
  "@swc/helpers": "^0.5.1"
53
53
  },