@fluentui/react-datepicker-compat 0.4.3 → 0.4.4

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,34 @@
1
1
  # Change Log - @fluentui/react-datepicker-compat
2
2
 
3
- This log was last generated on Mon, 06 Nov 2023 13:15:28 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 09 Nov 2023 17:23:03 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [0.4.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-datepicker-compat_v0.4.4)
8
+
9
+ Thu, 09 Nov 2023 17:23:03 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-datepicker-compat_v0.4.3..@fluentui/react-datepicker-compat_v0.4.4)
11
+
12
+ ### Patches
13
+
14
+ - chore: use package.json#files setup instead of npmignore for all v9 libraries ([PR #29734](https://github.com/microsoft/fluentui/pull/29734) by martinhochel@microsoft.com)
15
+ - fix: Apply onClick callback to contentAfter's span to allow usage of custom icons. ([PR #29746](https://github.com/microsoft/fluentui/pull/29746) by stevenco@microsoft.com)
16
+ - Bump @fluentui/keyboard-keys to v9.0.7 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
17
+ - Bump @fluentui/react-calendar-compat to v0.0.6 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
18
+ - Bump @fluentui/react-field to v9.1.41 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
19
+ - Bump @fluentui/react-input to v9.4.51 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
20
+ - Bump @fluentui/react-jsx-runtime to v9.0.19 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
21
+ - Bump @fluentui/react-popover to v9.8.20 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
22
+ - Bump @fluentui/react-portal to v9.4.0 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
23
+ - Bump @fluentui/react-positioning to v9.10.0 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
24
+ - Bump @fluentui/react-shared-contexts to v9.12.0 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
25
+ - Bump @fluentui/react-tabster to v9.14.4 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
26
+ - Bump @fluentui/react-theme to v9.1.16 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
27
+ - Bump @fluentui/react-utilities to v9.15.2 ([PR #29800](https://github.com/microsoft/fluentui/pull/29800) by beachball)
28
+
7
29
  ## [0.4.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-datepicker-compat_v0.4.3)
8
30
 
9
- Mon, 06 Nov 2023 13:15:28 GMT
31
+ Mon, 06 Nov 2023 13:16:04 GMT
10
32
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-datepicker-compat_v0.4.2..@fluentui/react-datepicker-compat_v0.4.3)
11
33
 
12
34
  ### Patches
@@ -303,34 +303,39 @@ const defaultParseDateFromString = (dateStr)=>{
303
303
  };
304
304
  const inputAppearance = underlined ? 'underline' : borderless ? 'filled-lighter' : 'outline';
305
305
  const [triggerWrapperRef, popupRef] = usePopupPositioning(props);
306
+ const inputRoot = slot.always(props.root, {
307
+ defaultProps: {
308
+ 'aria-owns': open ? popupSurfaceId : undefined,
309
+ ref: triggerWrapperRef
310
+ },
311
+ elementType: 'span'
312
+ });
313
+ inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);
314
+ const input = slot.always(props.input, {
315
+ elementType: 'input'
316
+ });
317
+ input.ref = useMergedRefs(input.ref, ref, rootRef);
318
+ const contentAfter = slot.always(props.contentAfter || {}, {
319
+ defaultProps: {
320
+ children: /*#__PURE__*/ React.createElement(CalendarMonthRegular, null)
321
+ },
322
+ elementType: 'span'
323
+ });
324
+ contentAfter.onClick = useEventCallback(mergeCallbacks(contentAfter.onClick, onIconClick));
306
325
  const root = slot.always(restOfProps, {
307
326
  defaultProps: {
308
327
  appearance: inputAppearance,
309
328
  'aria-controls': open ? popupSurfaceId : undefined,
310
329
  'aria-expanded': open,
311
330
  'aria-haspopup': 'dialog',
312
- contentAfter: /*#__PURE__*/ React.createElement(CalendarMonthRegular, {
313
- onClick: onIconClick
314
- }),
315
331
  readOnly: !allowTextInput,
316
332
  role: 'combobox'
317
333
  },
318
334
  elementType: Input
319
335
  });
320
- const inputRoot = slot.always(props.root, {
321
- defaultProps: {
322
- 'aria-owns': open ? popupSurfaceId : undefined,
323
- ref: triggerWrapperRef
324
- },
325
- elementType: 'span'
326
- });
327
- inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);
328
336
  root.root = inputRoot;
329
- const inputShorthand = slot.always(props.input, {
330
- elementType: 'input'
331
- });
332
- inputShorthand.ref = useMergedRefs(inputShorthand.ref, ref, rootRef);
333
- root.input = inputShorthand;
337
+ root.input = input;
338
+ root.contentAfter = contentAfter;
334
339
  root.onChange = useEventCallback(mergeCallbacks(root.onChange, onInputChange));
335
340
  root.onBlur = useEventCallback(mergeCallbacks(root.onBlur, onInputBlur));
336
341
  root.onKeyDown = useEventCallback(mergeCallbacks(root.onKeyDown, onInputKeyDown));
@@ -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 = new Date(),\n inlinePopup = false,\n isMonthPickerVisible = true,\n maxDate,\n minDate,\n mountNode,\n onOpenChange,\n onSelectDate: onUserSelectDate,\n openOnClick = true,\n onValidationResult,\n parseDateFromString = defaultParseDateFromString,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay = false,\n showWeekNumbers = false,\n strings = defaultDatePickerStrings,\n today,\n underlined = false,\n value,\n ...restOfProps\n } = props;\n const calendar = React.useRef<ICalendar>(null);\n const [focus, rootRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] = useFocusLogic();\n const [selectedDate, formattedDate, setSelectedDate, setFormattedDate] = useSelectedDate({\n formatDate,\n onSelectDate: onUserSelectDate,\n value,\n });\n const [open, setOpenState] = usePopupVisibility(props);\n const fieldContext = useFieldContext();\n const required = fieldContext?.required ?? props.required;\n const popupSurfaceId = useId('datePicker-popupSurface');\n\n const validateTextInput = React.useCallback(\n (date: Date | null = null): void => {\n let error: DatePickerValidationResultData['error'];\n\n if (allowTextInput) {\n if (formattedDate || date) {\n // Don't parse if the selected date has the same formatted string as what we're about to parse.\n // The formatted string might be ambiguous (ex: \"1/2/3\" or \"New Year Eve\") and the parser might\n // not be able to come up with the exact same date.\n if (selectedDate && formatDate && formatDate(date ?? selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString!(formattedDate);\n\n // Check if date is null or date is an invalid date\n if (!date || isNaN(date.getTime())) {\n // Reset input if formatting is available\n setSelectedDate(selectedDate);\n error = 'invalid-input';\n } else {\n if (isDateOutOfBounds(date, minDate, maxDate)) {\n error = 'out-of-bounds';\n } else {\n setSelectedDate(date);\n }\n }\n } else {\n if (required) {\n error = 'required-input';\n }\n\n onUserSelectDate?.(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n\n onValidationResult?.({ error });\n },\n [\n allowTextInput,\n formatDate,\n formattedDate,\n maxDate,\n minDate,\n onUserSelectDate,\n onValidationResult,\n parseDateFromString,\n required,\n selectedDate,\n setSelectedDate,\n ],\n );\n\n const setOpen = React.useCallback(\n (newState: boolean) => {\n onOpenChange?.(newState);\n setOpenState(newState);\n\n if (!open && !props.disabled) {\n focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focus, onOpenChange, props.disabled, setOpenState],\n );\n\n const dismissDatePickerPopup = React.useCallback(\n (newlySelectedDate?: Date | null): void => {\n if (open) {\n setOpen(false);\n\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n },\n [allowTextInput, open, setOpen, setSelectedDate, validateTextInput],\n );\n\n const showDatePickerPopup = React.useCallback((): void => {\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [open, preventNextFocusOpeningPicker, setOpen]);\n\n /**\n * Callback for closing the calendar callout\n */\n const calendarDismissed = React.useCallback(\n (newlySelectedDate?: Date): void => {\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n },\n [dismissDatePickerPopup, preventNextFocusOpeningPicker],\n );\n\n const onInputChange = React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>, data: InputOnChangeData) => {\n const { value: newValue } = data;\n\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n\n setFormattedDate(newValue);\n }\n },\n [allowTextInput, dismissDatePickerPopup, open, setFormattedDate],\n );\n\n const onInputBlur: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n validateTextInput();\n }, [validateTextInput]);\n\n const onInputKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n ev.stopPropagation();\n if (!open) {\n validateTextInput();\n showDatePickerPopup();\n } else {\n // When DatePicker allows input date string directly,\n // it is expected to hit another enter to close the popup\n if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n }\n break;\n\n case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n\n case ArrowDown:\n ev.preventDefault();\n if (ev.altKey && !open) {\n showDatePickerPopup();\n }\n break;\n\n default:\n break;\n }\n },\n [calendarDismissed, dismissDatePickerPopup, open, props.allowTextInput, showDatePickerPopup, validateTextInput],\n );\n\n const onInputFocus: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n if (disableAutoFocus) {\n return;\n }\n\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [allowTextInput, disableAutoFocus, preventFocusOpeningPicker, showDatePickerPopup]);\n\n const onInputClick: React.MouseEventHandler<HTMLInputElement> = React.useCallback((): void => {\n // default openOnClick to !props.disableAutoFocus for legacy support of disableAutoFocus behavior\n if ((props.openOnClick || !props.disableAutoFocus) && !open && !props.disabled) {\n showDatePickerPopup();\n return;\n }\n\n if (allowTextInput) {\n dismissDatePickerPopup();\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n props.disabled,\n props.disableAutoFocus,\n props.openOnClick,\n showDatePickerPopup,\n ]);\n\n const onIconClick = (ev: React.MouseEvent<HTMLElement>): void => {\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n\n const inputAppearance: InputProps['appearance'] = underlined\n ? 'underline'\n : borderless\n ? 'filled-lighter'\n : 'outline';\n\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\n const root = slot.always(restOfProps, {\n defaultProps: {\n appearance: inputAppearance,\n 'aria-controls': open ? popupSurfaceId : undefined,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n contentAfter: <CalendarMonthRegular onClick={onIconClick as unknown as React.MouseEventHandler<SVGElement>} />,\n readOnly: !allowTextInput,\n role: 'combobox',\n },\n elementType: Input,\n });\n\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n 'aria-owns': open ? popupSurfaceId : undefined,\n ref: triggerWrapperRef,\n },\n elementType: 'span',\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n root.root = inputRoot;\n const inputShorthand = slot.always(props.input, {\n elementType: 'input',\n });\n inputShorthand.ref = useMergedRefs(inputShorthand.ref, ref, rootRef);\n root.input = inputShorthand;\n root.onChange = useEventCallback(mergeCallbacks(root.onChange, onInputChange));\n root.onBlur = useEventCallback(mergeCallbacks(root.onBlur, onInputBlur));\n root.onKeyDown = useEventCallback(mergeCallbacks(root.onKeyDown, onInputKeyDown));\n root.onFocus = useEventCallback(mergeCallbacks(root.onFocus, onInputFocus));\n root.onClick = useEventCallback(mergeCallbacks(root.onClick, onInputClick));\n const { modalAttributes } = useModalAttributes({ trapFocus: true, alwaysFocusable: true, legacyTrapFocus: false });\n const popupSurface = open\n ? slot.optional(props.popupSurface, {\n renderByDefault: true,\n defaultProps: {\n 'aria-label': 'Calendar',\n 'aria-modal': true,\n id: popupSurfaceId,\n role: 'dialog',\n ref: popupRef,\n ...modalAttributes,\n },\n elementType: 'div',\n })\n : undefined;\n const { targetDocument } = useFluent();\n useOnClickOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n });\n useOnScrollOutside({\n element: targetDocument,\n callback: ev => dismissDatePickerPopup(),\n refs: [triggerWrapperRef, popupRef],\n disabled: !open,\n }); // When the popup is opened, focus should go to the calendar.\n // In v8 this was done by focusing after the callout was positioned, but in v9 this can be simulated by using a\n // useEffect hook.\n React.useEffect(() => {\n if (open && !props.disabled && calendar.current) {\n calendar.current.focus();\n }\n }, [disableAutoFocus, open, props.disabled]);\n const calendarShorthand = slot.always(props.calendar, {\n defaultProps: {\n allFocusable,\n componentRef: calendar,\n dateTimeFormatter,\n firstDayOfWeek,\n firstWeekOfYear,\n highlightCurrentMonth,\n highlightSelectedMonth,\n isMonthPickerVisible,\n maxDate,\n minDate,\n showCloseButton,\n showGoToToday,\n showMonthPickerAsOverlay,\n showWeekNumbers,\n strings,\n today,\n value: selectedDate || initialPickerDate,\n },\n elementType: Calendar,\n });\n calendarShorthand.onDismiss = useEventCallback(mergeCallbacks(calendarShorthand.onDismiss, calendarDismissed));\n calendarShorthand.onSelectDate = useEventCallback(mergeCallbacks(calendarShorthand.onSelectDate, calendarDismissed));\n const state: DatePickerState = {\n disabled: !!props.disabled,\n inlinePopup,\n components: { root: Input, calendar: Calendar as React.FC<Partial<CalendarProps>>, popupSurface: 'div' },\n calendar: calendarShorthand,\n mountNode,\n root,\n popupSurface,\n };\n\n state.root.value = formattedDate;\n\n return state;\n};\n"],"names":["React","ArrowDown","Enter","Escape","Calendar","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","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","calendar","rootRef","setOpenState","fieldContext","required","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","root","always","defaultProps","appearance","undefined","contentAfter","onClick","readOnly","role","elementType","inputRoot","inputShorthand","input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"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"}
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 = new Date(),\n inlinePopup = false,\n isMonthPickerVisible = true,\n maxDate,\n minDate,\n mountNode,\n onOpenChange,\n onSelectDate: onUserSelectDate,\n openOnClick = true,\n onValidationResult,\n parseDateFromString = defaultParseDateFromString,\n showCloseButton = false,\n showGoToToday = true,\n showMonthPickerAsOverlay = false,\n showWeekNumbers = false,\n strings = defaultDatePickerStrings,\n today,\n underlined = false,\n value,\n ...restOfProps\n } = props;\n const calendar = React.useRef<ICalendar>(null);\n const [focus, rootRef, preventFocusOpeningPicker, preventNextFocusOpeningPicker] = useFocusLogic();\n const [selectedDate, formattedDate, setSelectedDate, setFormattedDate] = useSelectedDate({\n formatDate,\n onSelectDate: onUserSelectDate,\n value,\n });\n const [open, setOpenState] = usePopupVisibility(props);\n const fieldContext = useFieldContext();\n const required = fieldContext?.required ?? props.required;\n const popupSurfaceId = useId('datePicker-popupSurface');\n\n const validateTextInput = React.useCallback(\n (date: Date | null = null): void => {\n let error: DatePickerValidationResultData['error'];\n\n if (allowTextInput) {\n if (formattedDate || date) {\n // Don't parse if the selected date has the same formatted string as what we're about to parse.\n // The formatted string might be ambiguous (ex: \"1/2/3\" or \"New Year Eve\") and the parser might\n // not be able to come up with the exact same date.\n if (selectedDate && formatDate && formatDate(date ?? selectedDate) === formattedDate) {\n return;\n }\n date = date || parseDateFromString!(formattedDate);\n\n // Check if date is null or date is an invalid date\n if (!date || isNaN(date.getTime())) {\n // Reset input if formatting is available\n setSelectedDate(selectedDate);\n error = 'invalid-input';\n } else {\n if (isDateOutOfBounds(date, minDate, maxDate)) {\n error = 'out-of-bounds';\n } else {\n setSelectedDate(date);\n }\n }\n } else {\n if (required) {\n error = 'required-input';\n }\n\n onUserSelectDate?.(date);\n }\n } else if (required && !formattedDate) {\n error = 'required-input';\n }\n\n onValidationResult?.({ error });\n },\n [\n allowTextInput,\n formatDate,\n formattedDate,\n maxDate,\n minDate,\n onUserSelectDate,\n onValidationResult,\n parseDateFromString,\n required,\n selectedDate,\n setSelectedDate,\n ],\n );\n\n const setOpen = React.useCallback(\n (newState: boolean) => {\n onOpenChange?.(newState);\n setOpenState(newState);\n\n if (!open && !props.disabled) {\n focus();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focus, onOpenChange, props.disabled, setOpenState],\n );\n\n const dismissDatePickerPopup = React.useCallback(\n (newlySelectedDate?: Date | null): void => {\n if (open) {\n setOpen(false);\n\n validateTextInput(newlySelectedDate);\n if (!allowTextInput && newlySelectedDate) {\n setSelectedDate(newlySelectedDate);\n }\n }\n },\n [allowTextInput, open, setOpen, setSelectedDate, validateTextInput],\n );\n\n const showDatePickerPopup = React.useCallback((): void => {\n if (!open) {\n preventNextFocusOpeningPicker();\n setOpen(true);\n }\n }, [open, preventNextFocusOpeningPicker, setOpen]);\n\n /**\n * Callback for closing the calendar callout\n */\n const calendarDismissed = React.useCallback(\n (newlySelectedDate?: Date): void => {\n preventNextFocusOpeningPicker();\n dismissDatePickerPopup(newlySelectedDate);\n },\n [dismissDatePickerPopup, preventNextFocusOpeningPicker],\n );\n\n const onInputChange = React.useCallback(\n (ev: React.ChangeEvent<HTMLInputElement>, data: InputOnChangeData) => {\n const { value: newValue } = data;\n\n if (allowTextInput) {\n if (open) {\n dismissDatePickerPopup();\n }\n\n setFormattedDate(newValue);\n }\n },\n [allowTextInput, dismissDatePickerPopup, open, setFormattedDate],\n );\n\n const onInputBlur: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n validateTextInput();\n }, [validateTextInput]);\n\n const onInputKeyDown = React.useCallback(\n (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.key) {\n case Enter:\n ev.preventDefault();\n ev.stopPropagation();\n if (!open) {\n validateTextInput();\n showDatePickerPopup();\n } else {\n // When DatePicker allows input date string directly,\n // it is expected to hit another enter to close the popup\n if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n }\n break;\n\n case Escape:\n ev.stopPropagation();\n ev.preventDefault();\n if (open) {\n calendarDismissed();\n }\n break;\n\n case ArrowDown:\n ev.preventDefault();\n if (ev.altKey && !open) {\n showDatePickerPopup();\n }\n break;\n\n default:\n break;\n }\n },\n [calendarDismissed, dismissDatePickerPopup, open, props.allowTextInput, showDatePickerPopup, validateTextInput],\n );\n\n const onInputFocus: React.FocusEventHandler<HTMLInputElement> = React.useCallback((): void => {\n if (disableAutoFocus) {\n return;\n }\n\n if (!allowTextInput) {\n if (!preventFocusOpeningPicker.current) {\n showDatePickerPopup();\n }\n preventFocusOpeningPicker.current = false;\n }\n }, [allowTextInput, disableAutoFocus, preventFocusOpeningPicker, showDatePickerPopup]);\n\n const onInputClick: React.MouseEventHandler<HTMLInputElement> = React.useCallback((): void => {\n // default openOnClick to !props.disableAutoFocus for legacy support of disableAutoFocus behavior\n if ((props.openOnClick || !props.disableAutoFocus) && !open && !props.disabled) {\n showDatePickerPopup();\n return;\n }\n\n if (allowTextInput) {\n dismissDatePickerPopup();\n }\n }, [\n allowTextInput,\n dismissDatePickerPopup,\n open,\n props.disabled,\n props.disableAutoFocus,\n props.openOnClick,\n showDatePickerPopup,\n ]);\n\n const onIconClick = (ev: React.MouseEvent<HTMLElement>): void => {\n ev.stopPropagation();\n if (!open && !props.disabled) {\n showDatePickerPopup();\n } else if (props.allowTextInput) {\n dismissDatePickerPopup();\n }\n };\n\n const inputAppearance: InputProps['appearance'] = underlined\n ? 'underline'\n : borderless\n ? 'filled-lighter'\n : 'outline';\n\n const [triggerWrapperRef, popupRef] = usePopupPositioning(props);\n\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 const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: <CalendarMonthRegular />,\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 },\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","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","today","underlined","restOfProps","calendar","rootRef","setOpenState","fieldContext","required","popupSurfaceId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","preventDefault","stopPropagation","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","inputRoot","always","root","defaultProps","undefined","elementType","input","contentAfter","children","onClick","appearance","readOnly","role","onChange","onBlur","onKeyDown","onFocus","modalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","targetDocument","element","callback","refs","calendarShorthand","componentRef","onDismiss","components"],"mappings":"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"}
@@ -303,34 +303,39 @@ const useDatePicker_unstable = (props, ref)=>{
303
303
  };
304
304
  const inputAppearance = underlined ? 'underline' : borderless ? 'filled-lighter' : 'outline';
305
305
  const [triggerWrapperRef, popupRef] = (0, _usePopupPositioning.usePopupPositioning)(props);
306
+ const inputRoot = _reactutilities.slot.always(props.root, {
307
+ defaultProps: {
308
+ 'aria-owns': open ? popupSurfaceId : undefined,
309
+ ref: triggerWrapperRef
310
+ },
311
+ elementType: 'span'
312
+ });
313
+ inputRoot.ref = (0, _reactutilities.useMergedRefs)(inputRoot.ref, triggerWrapperRef);
314
+ const input = _reactutilities.slot.always(props.input, {
315
+ elementType: 'input'
316
+ });
317
+ input.ref = (0, _reactutilities.useMergedRefs)(input.ref, ref, rootRef);
318
+ const contentAfter = _reactutilities.slot.always(props.contentAfter || {}, {
319
+ defaultProps: {
320
+ children: /*#__PURE__*/ _react.createElement(_reacticons.CalendarMonthRegular, null)
321
+ },
322
+ elementType: 'span'
323
+ });
324
+ contentAfter.onClick = (0, _reactutilities.useEventCallback)((0, _reactutilities.mergeCallbacks)(contentAfter.onClick, onIconClick));
306
325
  const root = _reactutilities.slot.always(restOfProps, {
307
326
  defaultProps: {
308
327
  appearance: inputAppearance,
309
328
  'aria-controls': open ? popupSurfaceId : undefined,
310
329
  'aria-expanded': open,
311
330
  'aria-haspopup': 'dialog',
312
- contentAfter: /*#__PURE__*/ _react.createElement(_reacticons.CalendarMonthRegular, {
313
- onClick: onIconClick
314
- }),
315
331
  readOnly: !allowTextInput,
316
332
  role: 'combobox'
317
333
  },
318
334
  elementType: _reactinput.Input
319
335
  });
320
- const inputRoot = _reactutilities.slot.always(props.root, {
321
- defaultProps: {
322
- 'aria-owns': open ? popupSurfaceId : undefined,
323
- ref: triggerWrapperRef
324
- },
325
- elementType: 'span'
326
- });
327
- inputRoot.ref = (0, _reactutilities.useMergedRefs)(inputRoot.ref, triggerWrapperRef);
328
336
  root.root = inputRoot;
329
- const inputShorthand = _reactutilities.slot.always(props.input, {
330
- elementType: 'input'
331
- });
332
- inputShorthand.ref = (0, _reactutilities.useMergedRefs)(inputShorthand.ref, ref, rootRef);
333
- root.input = inputShorthand;
337
+ root.input = input;
338
+ root.contentAfter = contentAfter;
334
339
  root.onChange = (0, _reactutilities.useEventCallback)((0, _reactutilities.mergeCallbacks)(root.onChange, onInputChange));
335
340
  root.onBlur = (0, _reactutilities.useEventCallback)((0, _reactutilities.mergeCallbacks)(root.onBlur, onInputBlur));
336
341
  root.onKeyDown = (0, _reactutilities.useEventCallback)((0, _reactutilities.mergeCallbacks)(root.onKeyDown, onInputKeyDown));
@@ -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 = new Date(), 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 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 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 (ev.altKey && !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 root = slot.always(restOfProps, {\n defaultProps: {\n appearance: inputAppearance,\n 'aria-controls': open ? popupSurfaceId : undefined,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n contentAfter: /*#__PURE__*/ React.createElement(CalendarMonthRegular, {\n onClick: onIconClick\n }),\n readOnly: !allowTextInput,\n role: 'combobox'\n },\n elementType: Input\n });\n const inputRoot = slot.always(props.root, {\n defaultProps: {\n 'aria-owns': open ? popupSurfaceId : undefined,\n ref: triggerWrapperRef\n },\n elementType: 'span'\n });\n inputRoot.ref = useMergedRefs(inputRoot.ref, triggerWrapperRef);\n root.root = inputRoot;\n const inputShorthand = slot.always(props.input, {\n elementType: 'input'\n });\n inputShorthand.ref = useMergedRefs(inputShorthand.ref, ref, rootRef);\n root.input = inputShorthand;\n root.onChange = useEventCallback(mergeCallbacks(root.onChange, onInputChange));\n root.onBlur = useEventCallback(mergeCallbacks(root.onBlur, onInputBlur));\n root.onKeyDown = useEventCallback(mergeCallbacks(root.onKeyDown, onInputKeyDown));\n root.onFocus = useEventCallback(mergeCallbacks(root.onFocus, onInputFocus));\n root.onClick = useEventCallback(mergeCallbacks(root.onClick, onInputClick));\n const { modalAttributes } = useModalAttributes({\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","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","defaultDatePickerStrings","today","underlined","restOfProps","calendar","rootRef","setOpenState","fieldContext","useFieldContext","_fieldContext_required","required","popupSurfaceId","useId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","Enter","preventDefault","stopPropagation","Escape","ArrowDown","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","usePopupPositioning","root","slot","always","defaultProps","appearance","undefined","contentAfter","createElement","CalendarMonthRegular","onClick","readOnly","role","elementType","Input","inputRoot","useMergedRefs","inputShorthand","input","onChange","useEventCallback","mergeCallbacks","onBlur","onKeyDown","onFocus","modalAttributes","useModalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","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 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 = new Date(), 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 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 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 (ev.altKey && !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 const contentAfter = slot.always(props.contentAfter || {}, {\n defaultProps: {\n children: /*#__PURE__*/ React.createElement(CalendarMonthRegular, null)\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 },\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","inlinePopup","isMonthPickerVisible","mountNode","onUserSelectDate","openOnClick","onValidationResult","parseDateFromString","showCloseButton","showGoToToday","showMonthPickerAsOverlay","showWeekNumbers","strings","defaultDatePickerStrings","today","underlined","restOfProps","calendar","rootRef","setOpenState","fieldContext","useFieldContext","_fieldContext_required","required","popupSurfaceId","useId","validateTextInput","error","isNaN","getTime","newState","disabled","dismissDatePickerPopup","newlySelectedDate","showDatePickerPopup","calendarDismissed","onInputChange","ev","data","newValue","onInputBlur","onInputKeyDown","key","Enter","preventDefault","stopPropagation","Escape","ArrowDown","altKey","onInputFocus","onInputClick","onIconClick","inputAppearance","triggerWrapperRef","popupRef","usePopupPositioning","inputRoot","slot","always","root","defaultProps","undefined","elementType","useMergedRefs","input","contentAfter","children","createElement","CalendarMonthRegular","onClick","useEventCallback","mergeCallbacks","appearance","readOnly","role","Input","onChange","onBlur","onKeyDown","onFocus","modalAttributes","useModalAttributes","trapFocus","alwaysFocusable","legacyTrapFocus","popupSurface","optional","renderByDefault","id","targetDocument","useFluent","useOnClickOutside","element","callback","refs","useOnScrollOutside","calendarShorthand","componentRef","Calendar","onDismiss","components"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-datepicker-compat",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -35,19 +35,19 @@
35
35
  "@fluentui/scripts-tasks": "*"
36
36
  },
37
37
  "dependencies": {
38
- "@fluentui/keyboard-keys": "^9.0.6",
39
- "@fluentui/react-calendar-compat": "^0.0.5",
40
- "@fluentui/react-field": "^9.1.40",
38
+ "@fluentui/keyboard-keys": "^9.0.7",
39
+ "@fluentui/react-calendar-compat": "^0.0.6",
40
+ "@fluentui/react-field": "^9.1.41",
41
41
  "@fluentui/react-icons": "^2.0.217",
42
- "@fluentui/react-input": "^9.4.50",
43
- "@fluentui/react-jsx-runtime": "^9.0.18",
44
- "@fluentui/react-popover": "^9.8.19",
45
- "@fluentui/react-portal": "^9.3.27",
46
- "@fluentui/react-positioning": "^9.9.23",
47
- "@fluentui/react-shared-contexts": "^9.11.1",
48
- "@fluentui/react-tabster": "^9.14.3",
49
- "@fluentui/react-theme": "^9.1.15",
50
- "@fluentui/react-utilities": "^9.15.1",
42
+ "@fluentui/react-input": "^9.4.51",
43
+ "@fluentui/react-jsx-runtime": "^9.0.19",
44
+ "@fluentui/react-popover": "^9.8.20",
45
+ "@fluentui/react-portal": "^9.4.0",
46
+ "@fluentui/react-positioning": "^9.10.0",
47
+ "@fluentui/react-shared-contexts": "^9.12.0",
48
+ "@fluentui/react-tabster": "^9.14.4",
49
+ "@fluentui/react-theme": "^9.1.16",
50
+ "@fluentui/react-utilities": "^9.15.2",
51
51
  "@griffel/react": "^1.5.14",
52
52
  "@swc/helpers": "^0.5.1"
53
53
  },
@@ -71,5 +71,11 @@
71
71
  "require": "./lib-commonjs/index.js"
72
72
  },
73
73
  "./package.json": "./package.json"
74
- }
74
+ },
75
+ "files": [
76
+ "*.md",
77
+ "dist/*.d.ts",
78
+ "lib",
79
+ "lib-commonjs"
80
+ ]
75
81
  }