@react-spectrum/datepicker 3.10.3 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/DateField.main.js +2 -2
  2. package/dist/DateField.main.js.map +1 -1
  3. package/dist/DateField.mjs +2 -2
  4. package/dist/DateField.module.js +2 -2
  5. package/dist/DateField.module.js.map +1 -1
  6. package/dist/DatePicker.main.js +2 -2
  7. package/dist/DatePicker.main.js.map +1 -1
  8. package/dist/DatePicker.mjs +2 -2
  9. package/dist/DatePicker.module.js +2 -2
  10. package/dist/DatePicker.module.js.map +1 -1
  11. package/dist/DatePickerField.main.js +2 -2
  12. package/dist/DatePickerField.main.js.map +1 -1
  13. package/dist/DatePickerField.mjs +2 -2
  14. package/dist/DatePickerField.module.js +2 -2
  15. package/dist/DatePickerField.module.js.map +1 -1
  16. package/dist/DatePickerSegment.main.js +1 -1
  17. package/dist/DatePickerSegment.main.js.map +1 -1
  18. package/dist/DatePickerSegment.mjs +1 -1
  19. package/dist/DatePickerSegment.module.js +1 -1
  20. package/dist/DatePickerSegment.module.js.map +1 -1
  21. package/dist/DateRangePicker.main.js +2 -2
  22. package/dist/DateRangePicker.main.js.map +1 -1
  23. package/dist/DateRangePicker.mjs +2 -2
  24. package/dist/DateRangePicker.module.js +2 -2
  25. package/dist/DateRangePicker.module.js.map +1 -1
  26. package/dist/Input.main.js +1 -1
  27. package/dist/Input.main.js.map +1 -1
  28. package/dist/Input.mjs +1 -1
  29. package/dist/Input.module.js +1 -1
  30. package/dist/Input.module.js.map +1 -1
  31. package/dist/TimeField.main.js +1 -1
  32. package/dist/TimeField.main.js.map +1 -1
  33. package/dist/TimeField.mjs +1 -1
  34. package/dist/TimeField.module.js +1 -1
  35. package/dist/TimeField.module.js.map +1 -1
  36. package/dist/inputgroup_vars_css.main.js.map +1 -1
  37. package/dist/inputgroup_vars_css.module.js.map +1 -1
  38. package/dist/textfield_vars_css.main.js.map +1 -1
  39. package/dist/textfield_vars_css.module.js.map +1 -1
  40. package/dist/utils.main.js +1 -1
  41. package/dist/utils.main.js.map +1 -1
  42. package/dist/utils.mjs +1 -1
  43. package/dist/utils.module.js +1 -1
  44. package/dist/utils.module.js.map +1 -1
  45. package/package.json +23 -23
  46. package/src/DateField.tsx +4 -4
  47. package/src/DatePicker.tsx +3 -3
  48. package/src/DatePickerField.tsx +2 -2
  49. package/src/DatePickerSegment.tsx +1 -1
  50. package/src/DateRangePicker.tsx +3 -3
  51. package/src/Input.tsx +4 -4
  52. package/src/TimeField.tsx +3 -3
  53. package/src/utils.ts +2 -2
@@ -50,7 +50,7 @@ function DateRangePicker<T extends DateValue>(props: SpectrumDateRangePickerProp
50
50
  pageBehavior
51
51
  } = props;
52
52
  let {hoverProps, isHovered} = useHover({isDisabled});
53
- let targetRef = useRef<HTMLDivElement>(undefined);
53
+ let targetRef = useRef<HTMLDivElement | null>(null);
54
54
  let state = useDateRangePickerState({
55
55
  ...props,
56
56
  shouldCloseOnSelect: () => !state.hasTime
@@ -99,10 +99,10 @@ function DateRangePicker<T extends DateValue>(props: SpectrumDateRangePickerProp
99
99
  // The format help text is unnecessary for screen reader users because each segment already has a label.
100
100
  let description = useFormatHelpText(props);
101
101
  if (description && !props.description) {
102
- descriptionProps.id = null;
102
+ descriptionProps.id = undefined;
103
103
  }
104
104
 
105
- let placeholder: DateValue = placeholderValue;
105
+ let placeholder: DateValue | null | undefined = placeholderValue;
106
106
  let timePlaceholder = placeholder && 'hour' in placeholder ? placeholder : null;
107
107
  let timeMinValue = props.minValue && 'hour' in props.minValue ? props.minValue : null;
108
108
  let timeMaxValue = props.maxValue && 'hour' in props.maxValue ? props.maxValue : null;
package/src/Input.tsx CHANGED
@@ -15,12 +15,12 @@ import Checkmark from '@spectrum-icons/ui/CheckmarkMedium';
15
15
  import {classNames, useValueEffect} from '@react-spectrum/utils';
16
16
  import datepickerStyles from './styles.css';
17
17
  import {mergeProps, mergeRefs, useEvent, useLayoutEffect, useResizeObserver} from '@react-aria/utils';
18
- import React, {useCallback, useRef} from 'react';
18
+ import React, {ReactElement, useCallback, useRef} from 'react';
19
19
  import textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';
20
20
  import {useFocusRing} from '@react-aria/focus';
21
21
 
22
22
  function Input(props, ref) {
23
- let inputRef = useRef(null);
23
+ let inputRef = useRef<HTMLInputElement | null>(null);
24
24
  let {
25
25
  isDisabled,
26
26
  isQuiet,
@@ -38,7 +38,7 @@ function Input(props, ref) {
38
38
  // not cause a layout shift.
39
39
  let [reservePadding, setReservePadding] = useValueEffect(false);
40
40
  let onResize = useCallback(() => setReservePadding(function *(reservePadding) {
41
- if (inputRef.current) {
41
+ if (inputRef.current && inputRef.current.parentElement) {
42
42
  if (reservePadding) {
43
43
  // Try to collapse padding if the content is clipped.
44
44
  if (inputRef.current.scrollWidth > inputRef.current.offsetWidth) {
@@ -114,7 +114,7 @@ function Input(props, ref) {
114
114
  'spectrum-Textfield-validationIcon'
115
115
  );
116
116
 
117
- let validationIcon = null;
117
+ let validationIcon: ReactElement | null = null;
118
118
  if (validationState === 'invalid' && !isDisabled) {
119
119
  validationIcon = <Alert data-testid="invalid-icon" UNSAFE_className={iconClass} />;
120
120
  } else if (validationState === 'valid' && !isDisabled) {
package/src/TimeField.tsx CHANGED
@@ -43,8 +43,8 @@ function TimeField<T extends TimeValue>(props: SpectrumTimeFieldProps<T>, ref: F
43
43
  locale
44
44
  });
45
45
 
46
- let fieldRef = useRef(null);
47
- let inputRef = useRef(null);
46
+ let fieldRef = useRef<HTMLDivElement | null>(null);
47
+ let inputRef = useRef<HTMLInputElement | null>(null);
48
48
  let {labelProps, fieldProps, inputProps, descriptionProps, errorMessageProps, isInvalid, validationErrors, validationDetails} = useTimeField({
49
49
  ...props,
50
50
  inputRef
@@ -62,7 +62,7 @@ function TimeField<T extends TimeValue>(props: SpectrumTimeFieldProps<T>, ref: F
62
62
  labelProps={labelProps}
63
63
  descriptionProps={descriptionProps}
64
64
  errorMessageProps={errorMessageProps}
65
- validationState={validationState}
65
+ validationState={validationState ?? undefined}
66
66
  isInvalid={isInvalid}
67
67
  validationErrors={validationErrors}
68
68
  validationDetails={validationDetails}
package/src/utils.ts CHANGED
@@ -42,7 +42,7 @@ export function useFormatHelpText(props: Pick<SpectrumDatePickerBase<any>, 'desc
42
42
  }
43
43
 
44
44
  export function useVisibleMonths(maxVisibleMonths: number) {
45
- let {scale} = useProvider();
45
+ let {scale} = useProvider()!;
46
46
  let [visibleMonths, setVisibleMonths] = useState(getVisibleMonths(scale));
47
47
  useLayoutEffect(() => {
48
48
  let onResize = () => setVisibleMonths(getVisibleMonths(scale));
@@ -68,7 +68,7 @@ function getVisibleMonths(scale) {
68
68
  }
69
69
 
70
70
  export function useFocusManagerRef(ref: FocusableRef<HTMLElement>) {
71
- let domRef = useRef(undefined);
71
+ let domRef = useRef<HTMLElement | null>(null);
72
72
  useImperativeHandle(ref, () => ({
73
73
  ...createDOMRef(domRef),
74
74
  focus() {