@povio/ui 2.3.0-rc.3 → 2.3.0-rc.31

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 (218) hide show
  1. package/dist/assets/icons/AlignCenter.js +26 -11
  2. package/dist/assets/icons/AlignLeft.js +26 -11
  3. package/dist/assets/icons/AlignLeftRight.js +26 -11
  4. package/dist/assets/icons/AlignRight.js +26 -11
  5. package/dist/assets/icons/ArrowDropDown.js +26 -11
  6. package/dist/assets/icons/ArrowDropUp.js +26 -11
  7. package/dist/assets/icons/ArrowLeft.js +26 -11
  8. package/dist/assets/icons/ArrowRight.js +26 -11
  9. package/dist/assets/icons/Bold.js +26 -11
  10. package/dist/assets/icons/BulletedList.js +26 -11
  11. package/dist/assets/icons/Calendar.js +28 -13
  12. package/dist/assets/icons/Check.js +28 -13
  13. package/dist/assets/icons/CheckCircle.js +26 -11
  14. package/dist/assets/icons/CheckboxCheckmark.js +29 -14
  15. package/dist/assets/icons/CheckboxIndeterminate.js +29 -14
  16. package/dist/assets/icons/ChevronDown.js +28 -13
  17. package/dist/assets/icons/ChevronLeft.js +28 -13
  18. package/dist/assets/icons/ChevronRight.js +28 -13
  19. package/dist/assets/icons/ChevronUp.js +28 -13
  20. package/dist/assets/icons/ChevronsLeft.js +28 -13
  21. package/dist/assets/icons/ChevronsRight.js +28 -13
  22. package/dist/assets/icons/Clock.js +26 -11
  23. package/dist/assets/icons/Close.js +26 -11
  24. package/dist/assets/icons/DateTime.js +35 -14
  25. package/dist/assets/icons/DragIndicator.js +26 -11
  26. package/dist/assets/icons/File.js +28 -13
  27. package/dist/assets/icons/Highlight.js +26 -11
  28. package/dist/assets/icons/HighlightOn.js +49 -15
  29. package/dist/assets/icons/Home.js +26 -11
  30. package/dist/assets/icons/Info.js +37 -16
  31. package/dist/assets/icons/Italic.js +26 -11
  32. package/dist/assets/icons/Link.js +26 -11
  33. package/dist/assets/icons/Menu.js +26 -11
  34. package/dist/assets/icons/NumberedList.js +26 -11
  35. package/dist/assets/icons/PointerHorizontal.js +26 -11
  36. package/dist/assets/icons/PointerVertical.js +26 -11
  37. package/dist/assets/icons/Search.js +26 -11
  38. package/dist/assets/icons/Send.js +28 -13
  39. package/dist/assets/icons/Strikethrough.js +26 -11
  40. package/dist/assets/icons/TextColor.js +48 -14
  41. package/dist/assets/icons/Today.js +26 -11
  42. package/dist/assets/icons/Underlined.js +28 -13
  43. package/dist/assets/icons/Upload.js +35 -14
  44. package/dist/assets/icons/Visibility.js +26 -11
  45. package/dist/assets/icons/VisibilityOff.js +26 -11
  46. package/dist/assets/icons/WarningFilled.js +28 -13
  47. package/dist/components/Breadcrumbs/Breadcrumbs.js +207 -56
  48. package/dist/components/Menu/Menu.js +18 -2
  49. package/dist/components/Menu/MenuDesktop.js +41 -7
  50. package/dist/components/Menu/MenuItem.js +32 -9
  51. package/dist/components/Menu/MenuMobile.js +97 -38
  52. package/dist/components/Menu/MenuPopover.js +105 -29
  53. package/dist/components/buttons/IconButton/IconButton.js +40 -8
  54. package/dist/components/buttons/InlineIconButton/InlineIconButton.js +34 -9
  55. package/dist/components/buttons/PillButton/PillButton.js +55 -17
  56. package/dist/components/buttons/SplitButton/SplitButton.js +103 -18
  57. package/dist/components/buttons/TextButton/TextButton.js +30 -8
  58. package/dist/components/buttons/ToggleButton/ToggleButton.js +28 -8
  59. package/dist/components/buttons/shared/ButtonContent.js +80 -22
  60. package/dist/components/inputs/Checkbox/Checkbox.d.ts +1 -0
  61. package/dist/components/inputs/Checkbox/Checkbox.js +188 -34
  62. package/dist/components/inputs/Checkbox/CheckboxCheckmark.js +24 -10
  63. package/dist/components/inputs/DateTime/DatePicker/DatePicker.d.ts +1 -0
  64. package/dist/components/inputs/DateTime/DatePicker/DatePicker.js +267 -87
  65. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.d.ts +1 -0
  66. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.js +347 -182
  67. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.d.ts +1 -0
  68. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +177 -69
  69. package/dist/components/inputs/DateTime/TimePicker/TimePicker.d.ts +1 -0
  70. package/dist/components/inputs/DateTime/TimePicker/TimePicker.js +530 -157
  71. package/dist/components/inputs/DateTime/shared/Calendar.js +333 -137
  72. package/dist/components/inputs/DateTime/shared/CalendarCell.d.ts +2 -1
  73. package/dist/components/inputs/DateTime/shared/CalendarCell.js +301 -102
  74. package/dist/components/inputs/DateTime/shared/CalendarGrid.d.ts +2 -1
  75. package/dist/components/inputs/DateTime/shared/CalendarGrid.js +146 -33
  76. package/dist/components/inputs/DateTime/shared/CalendarHeader.js +245 -90
  77. package/dist/components/inputs/DateTime/shared/CalendarSelectHeader.js +318 -137
  78. package/dist/components/inputs/DateTime/shared/DateField.js +295 -112
  79. package/dist/components/inputs/DateTime/shared/DatePickerInput.d.ts +6 -1
  80. package/dist/components/inputs/DateTime/shared/DatePickerInput.js +375 -146
  81. package/dist/components/inputs/DateTime/shared/DateSegmentItem.js +94 -21
  82. package/dist/components/inputs/DateTime/shared/DateTimeDialog.js +81 -27
  83. package/dist/components/inputs/DateTime/shared/DateTimeDialogFooter.js +59 -10
  84. package/dist/components/inputs/DateTime/shared/MonthPicker.js +103 -58
  85. package/dist/components/inputs/DateTime/shared/RangeCalendar.js +193 -82
  86. package/dist/components/inputs/DateTime/shared/TimeField.js +27 -8
  87. package/dist/components/inputs/DateTime/shared/TimePickerForm.js +279 -110
  88. package/dist/components/inputs/DateTime/shared/TimePickerInput.d.ts +3 -1
  89. package/dist/components/inputs/DateTime/shared/TimePickerInput.js +208 -70
  90. package/dist/components/inputs/DateTime/shared/YearPicker.js +119 -68
  91. package/dist/components/inputs/File/FileUpload.js +86 -44
  92. package/dist/components/inputs/File/FileUploadContainer.js +15 -7
  93. package/dist/components/inputs/File/InputUpload.js +317 -79
  94. package/dist/components/inputs/File/shared/FileCard.js +104 -41
  95. package/dist/components/inputs/File/shared/FileCardList.js +47 -12
  96. package/dist/components/inputs/File/shared/FileUploadContent.js +175 -44
  97. package/dist/components/inputs/File/shared/FileUploadContentEmpty.js +149 -46
  98. package/dist/components/inputs/File/shared/FileUploadContentError.js +234 -93
  99. package/dist/components/inputs/File/shared/FileUploadContentFilled.js +230 -97
  100. package/dist/components/inputs/File/shared/FileUploadContentLoading.js +199 -55
  101. package/dist/components/inputs/File/shared/InputUploadContent.js +148 -35
  102. package/dist/components/inputs/File/shared/InputUploadFilled.js +49 -8
  103. package/dist/components/inputs/File/shared/ProgressBar.js +48 -9
  104. package/dist/components/inputs/FormField/FormField.js +119 -37
  105. package/dist/components/inputs/FormField/FormFieldError.js +25 -5
  106. package/dist/components/inputs/FormField/FormFieldHeader.js +79 -22
  107. package/dist/components/inputs/FormField/FormFieldHeaderClose.js +31 -7
  108. package/dist/components/inputs/FormField/FormFieldHelper.js +26 -6
  109. package/dist/components/inputs/FormField/FormFieldLabel.js +40 -9
  110. package/dist/components/inputs/Input/NumberInput/NumberInput.js +392 -123
  111. package/dist/components/inputs/Input/NumberRangeInput/NumberRangeField.js +541 -116
  112. package/dist/components/inputs/Input/NumberRangeInput/NumberRangeInput.js +463 -146
  113. package/dist/components/inputs/Input/PasswordInput/PasswordInput.js +48 -9
  114. package/dist/components/inputs/Input/TextArea/TextArea.js +298 -89
  115. package/dist/components/inputs/Input/TextInput/TextInput.js +370 -121
  116. package/dist/components/inputs/Input/shared/InputContent.js +190 -58
  117. package/dist/components/inputs/Inputs/Form.js +40 -11
  118. package/dist/components/inputs/Inputs/InputItem.d.ts +0 -1
  119. package/dist/components/inputs/Inputs/InputItem.js +65 -16
  120. package/dist/components/inputs/Inputs/Inputs.js +37 -11
  121. package/dist/components/inputs/RadioGroup/RadioGroup.d.ts +1 -0
  122. package/dist/components/inputs/RadioGroup/RadioGroup.js +333 -107
  123. package/dist/components/inputs/Selection/Autocomplete/Autocomplete.js +145 -50
  124. package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.js +3 -2
  125. package/dist/components/inputs/Selection/Select/QuerySelect.js +107 -27
  126. package/dist/components/inputs/Selection/Select/Select.js +139 -44
  127. package/dist/components/inputs/Selection/shared/SelectBase.js +69 -20
  128. package/dist/components/inputs/Selection/shared/SelectDesktop.js +390 -143
  129. package/dist/components/inputs/Selection/shared/SelectInput.d.ts +2 -2
  130. package/dist/components/inputs/Selection/shared/SelectInput.js +326 -136
  131. package/dist/components/inputs/Selection/shared/SelectInputTags.js +99 -25
  132. package/dist/components/inputs/Selection/shared/SelectListBox.js +163 -51
  133. package/dist/components/inputs/Selection/shared/SelectListBoxItem.js +85 -35
  134. package/dist/components/inputs/Selection/shared/SelectListBoxItemSelectAll.js +69 -16
  135. package/dist/components/inputs/Selection/shared/SelectListBoxLoadingItem.js +70 -21
  136. package/dist/components/inputs/Selection/shared/SelectListBoxSelectionBar.js +58 -9
  137. package/dist/components/inputs/Selection/shared/StaticSelectTrailingContent.d.ts +9 -0
  138. package/dist/components/inputs/Selection/shared/StaticSelectTrailingContent.js +47 -0
  139. package/dist/components/inputs/Selection/shared/select.context.d.ts +2 -2
  140. package/dist/components/inputs/Selection/shared/select.context.js +44 -38
  141. package/dist/components/inputs/Selection/shared/selectInput.cva.d.ts +5 -0
  142. package/dist/components/inputs/Selection/shared/selectInput.cva.js +5 -0
  143. package/dist/components/inputs/Selection/shared/useSelectItems.js +109 -49
  144. package/dist/components/inputs/Skeleton/InputFrame.d.ts +2 -0
  145. package/dist/components/inputs/Skeleton/InputFrame.js +444 -124
  146. package/dist/components/inputs/Slider/Slider.js +247 -74
  147. package/dist/components/inputs/TextEditor/TextEditor.js +447 -103
  148. package/dist/components/inputs/TextEditor/Toolbar/ColorPicker.js +37 -11
  149. package/dist/components/inputs/TextEditor/Toolbar/ColorPickerDropdown.js +102 -30
  150. package/dist/components/inputs/TextEditor/Toolbar/HyperlinkAction.js +194 -45
  151. package/dist/components/inputs/TextEditor/Toolbar/TextAlignSelect.js +88 -28
  152. package/dist/components/inputs/TextEditor/Toolbar/TextColorSelect.js +48 -14
  153. package/dist/components/inputs/TextEditor/Toolbar/TextEditorToolbar.js +66 -19
  154. package/dist/components/inputs/TextEditor/Toolbar/TextHighlightSelect.js +49 -15
  155. package/dist/components/inputs/TextEditor/Toolbar/TextListActions.js +92 -32
  156. package/dist/components/inputs/TextEditor/Toolbar/TextMarksActions.js +126 -54
  157. package/dist/components/inputs/TextEditor/Toolbar/TextStyleSelect.js +141 -38
  158. package/dist/components/inputs/Toggle/Toggle.d.ts +1 -0
  159. package/dist/components/inputs/Toggle/Toggle.js +206 -41
  160. package/dist/components/inputs/shared/CheckContent.js +21 -10
  161. package/dist/components/inputs/shared/InputClear.js +78 -21
  162. package/dist/components/inputs/shared/TooltipWrapper.js +47 -12
  163. package/dist/components/inputs/shared/input.cva.js +13 -3
  164. package/dist/components/inputs/shared/useStaticInputHandoff.d.ts +1 -0
  165. package/dist/components/inputs/shared/useStaticInputHandoff.js +87 -34
  166. package/dist/components/navigation/Accordion/Accordion.js +69 -22
  167. package/dist/components/navigation/Accordion/AccordionItem.js +86 -41
  168. package/dist/components/navigation/Stepper/Stepper.js +67 -22
  169. package/dist/components/navigation/Stepper/StepperItem.js +104 -31
  170. package/dist/components/navigation/Stepper/StepperSeparator.js +23 -5
  171. package/dist/components/overlays/ActionModal/ActionModal.js +169 -35
  172. package/dist/components/overlays/BottomSheet/BottomSheet.js +96 -23
  173. package/dist/components/overlays/BottomSheet/BottomSheetHeader.js +48 -8
  174. package/dist/components/overlays/Drawer/Drawer.js +62 -20
  175. package/dist/components/overlays/ResponsivePopover/ResponsivePopover.js +83 -27
  176. package/dist/components/overlays/Tooltip/Tooltip.js +137 -28
  177. package/dist/components/overlays/Tooltip/TooltipEllipsis.js +37 -12
  178. package/dist/components/segment/Segment.js +218 -57
  179. package/dist/components/segment/SegmentItem.js +67 -10
  180. package/dist/components/shared/pagination/Pagination.js +108 -22
  181. package/dist/components/shared/pagination/PaginationList.js +167 -64
  182. package/dist/components/status/Alert/Alert.js +97 -30
  183. package/dist/components/status/Loader/Loader.js +77 -22
  184. package/dist/components/status/Toast/Toast.js +21 -13
  185. package/dist/components/status/Toast/useToast.js +62 -57
  186. package/dist/components/table/ColumnConfig.js +158 -54
  187. package/dist/components/table/InfiniteTable.js +67 -16
  188. package/dist/components/table/PaginatedTable.js +84 -18
  189. package/dist/components/table/Table.js +28 -27
  190. package/dist/components/text/Link/Link.js +19 -7
  191. package/dist/components/text/Typography/Typography.js +23 -8
  192. package/dist/config/confirmation.context.js +1 -1
  193. package/dist/config/link.context.js +23 -9
  194. package/dist/config/router.context.js +42 -16
  195. package/dist/config/theme.context.js +98 -45
  196. package/dist/config/uiConfig.context.d.ts +4 -4
  197. package/dist/config/uiConfig.context.js +50 -11
  198. package/dist/config/uiStyle.context.js +15 -5
  199. package/dist/helpers/dynamicInputs.d.ts +1 -1
  200. package/dist/hooks/useBreakpoint.js +16 -3
  201. package/dist/hooks/useDebounceCallback.js +51 -17
  202. package/dist/hooks/useFilters.js +125 -64
  203. package/dist/hooks/useForm.js +42 -8
  204. package/dist/hooks/useFormAutosave.js +101 -30
  205. package/dist/hooks/useIntersectionObserver.js +86 -32
  206. package/dist/hooks/useLocalStorage.js +43 -10
  207. package/dist/hooks/useLongPressRepeat.js +55 -20
  208. package/dist/hooks/usePagination.js +49 -19
  209. package/dist/hooks/useQueryAutocomplete.js +1 -0
  210. package/dist/hooks/useScrollableListBox.js +37 -16
  211. package/dist/hooks/useSorting.js +69 -28
  212. package/dist/hooks/useStateAndRef.js +21 -7
  213. package/dist/hooks/useTableColumnConfig.js +124 -31
  214. package/dist/hooks/useTranslationMemo.js +25 -5
  215. package/dist/index.js +2 -2
  216. package/dist/utils/date-time.utils.d.ts +2 -0
  217. package/dist/utils/date-time.utils.js +17 -13
  218. package/package.json +1 -1
@@ -25,6 +25,7 @@ interface DateTimePickerBaseProps extends FormFieldProps, InputVariantProps, Omi
25
25
  timeZone?: string;
26
26
  format?: string;
27
27
  onBlur?: (e: FocusEvent<HTMLInputElement>) => void;
28
+ fireBlurOnChange?: boolean;
28
29
  }
29
30
  export interface DateTimePickerProps extends Omit<DateTimePickerBaseProps, "value" | "onChange"> {
30
31
  value?: string | null;
@@ -13,18 +13,19 @@ import { TooltipWrapper } from "../../shared/TooltipWrapper.js";
13
13
  import { InputFrame } from "../../Skeleton/InputFrame.js";
14
14
  import { useStaticInputHandoff } from "../../shared/useStaticInputHandoff.js";
15
15
  import { useDebounceCallback } from "../../../../hooks/useDebounceCallback.js";
16
+ import { c } from "react/compiler-runtime";
16
17
  import { jsx, jsxs } from "react/jsx-runtime";
17
18
  import { clsx } from "clsx";
18
19
  import { useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
19
20
  import { useDatePicker, useLocale } from "react-aria";
20
21
  import { mergeRefs } from "@react-aria/utils";
21
- import { Controller, useWatch } from "react-hook-form";
22
- import { Time, createCalendar, getLocalTimeZone, now, toCalendarDateTime, today } from "@internationalized/date";
22
+ import { Controller } from "react-hook-form";
23
+ import { Time, createCalendar, toCalendarDate, toCalendarDateTime, today } from "@internationalized/date";
23
24
  import { useCalendarState, useDatePickerState } from "react-stately";
24
25
  //#region src/components/inputs/DateTime/DateTimePicker/DateTimePicker.tsx
25
26
  var DateTimePickerBase = (props) => {
26
27
  const ui = UIConfig.useConfig();
27
- const { ref, label, tooltipText, helperText, isRequired, rightContent, isDisabled, isDirty, headerClassName, errorClassName, isHeaderHidden, error, onChange, onBlur, value, disableDropdown, isTimeOptional, placeholder, inputClassName, hideLabel: hideLabelProp, variant: variantProp, as: asProp, size: sizeProp, isClearable: isClearableProp, todayIcon: todayIconProp, todayIconButtonSize: todayIconButtonSizeProp, todayIconPlacement: todayIconPlacementProp, shouldForceLeadingZeros: shouldForceLeadingZerosProp, disableManualEntry: disableManualEntryProp, shouldUpdateDateOnMonthYearChange: shouldUpdateDateOnMonthYearChangeProp, timeZone, autoFixYear: autoFixYearProp, format, setDateValueOnDateSelection: setDateValueOnDateSelectionProp, ...rest } = props;
28
+ const { ref, label, tooltipText, helperText, isRequired, rightContent, isDisabled, isDirty, headerClassName, errorClassName, isHeaderHidden, error, onChange, onBlur, value, disableDropdown, isTimeOptional, placeholder, inputClassName, hideLabel: hideLabelProp, variant: variantProp, as: asProp, size: sizeProp, isClearable: isClearableProp, todayIcon: todayIconProp, todayIconButtonSize: todayIconButtonSizeProp, todayIconPlacement: todayIconPlacementProp, shouldForceLeadingZeros: shouldForceLeadingZerosProp, disableManualEntry: disableManualEntryProp, shouldUpdateDateOnMonthYearChange: shouldUpdateDateOnMonthYearChangeProp, timeZone: _timeZone, autoFixYear: autoFixYearProp, fireBlurOnChange: fireBlurOnChangeProp, format, setDateValueOnDateSelection: setDateValueOnDateSelectionProp, ...rest } = props;
28
29
  const hideLabel = hideLabelProp ?? ui.input.hideLabel;
29
30
  const variant = variantProp ?? ui.input.variant;
30
31
  const as = asProp ?? ui.input.as;
@@ -37,9 +38,9 @@ var DateTimePickerBase = (props) => {
37
38
  const disableManualEntry = disableManualEntryProp ?? ui.dateInput.disableManualEntry;
38
39
  const shouldUpdateDateOnMonthYearChange = shouldUpdateDateOnMonthYearChangeProp ?? ui.dateInput.shouldUpdateDateOnMonthYearChange;
39
40
  const autoFixYear = autoFixYearProp ?? ui.dateInput.autoFixYear;
41
+ const fireBlurOnChange = fireBlurOnChangeProp ?? ui.dateInput.fireBlurOnChange;
40
42
  const setDateValueOnDateSelection = setDateValueOnDateSelectionProp ?? ui.dateInput.setDateValueOnDateSelection;
41
- let effectiveTimeZone = getLocalTimeZone();
42
- if (timeZone) effectiveTimeZone = timeZone;
43
+ const effectiveTimeZone = "UTC";
43
44
  const formFieldProps = {
44
45
  error,
45
46
  label,
@@ -57,16 +58,20 @@ var DateTimePickerBase = (props) => {
57
58
  const datePickerRef = useMemo(() => ({ get current() {
58
59
  return datePickerInputRef.current?.getContainer?.() || null;
59
60
  } }), []);
60
- useImperativeHandle(ref, () => ({ clear: () => {
61
- datePickerInputRef.current?.clear();
62
- } }));
61
+ useImperativeHandle(ref, () => ({
62
+ clear: () => {
63
+ datePickerInputRef.current?.clear();
64
+ },
65
+ getContainer: () => datePickerInputRef.current?.getContainer?.() ?? null
66
+ }));
63
67
  const handleBlur = (val) => {
64
68
  onBlur?.({ target: { value: val } });
65
69
  };
66
70
  const { callback: debouncedBlur } = useDebounceCallback(handleBlur, { delay: 500 });
71
+ const normalizedValue = value ?? null;
67
72
  const dialogState = useDatePickerState({
68
73
  ...rest,
69
- defaultValue: value || rest.defaultValue,
74
+ defaultValue: normalizedValue ?? rest.defaultValue ?? null,
70
75
  shouldCloseOnSelect: false,
71
76
  granularity: "minute",
72
77
  hideTimeZone: true,
@@ -78,12 +83,12 @@ var DateTimePickerBase = (props) => {
78
83
  const state = useDatePickerState({
79
84
  ...rest,
80
85
  shouldForceLeadingZeros,
81
- value,
82
- onChange: (val) => {
83
- onChange?.(val);
84
- dialogState.setValue(val);
85
- calendarState.setFocusedDate(val || today(getLocalTimeZone()));
86
- debouncedBlur(val);
86
+ value: normalizedValue,
87
+ onChange: (val_0) => {
88
+ onChange?.(val_0);
89
+ dialogState.setValue(val_0);
90
+ calendarState.setFocusedDate(val_0 || today(effectiveTimeZone));
91
+ if (fireBlurOnChange) debouncedBlur(val_0);
87
92
  },
88
93
  shouldCloseOnSelect: false,
89
94
  granularity: "minute",
@@ -122,7 +127,7 @@ var DateTimePickerBase = (props) => {
122
127
  const newValue = dialogState.value;
123
128
  state.setValue(newValue);
124
129
  state.toggle();
125
- handleBlur(newValue);
130
+ if (fireBlurOnChange) handleBlur(newValue);
126
131
  };
127
132
  const onMonthYearChange = (selectedDate) => {
128
133
  if (!shouldUpdateDateOnMonthYearChange) return;
@@ -140,8 +145,16 @@ var DateTimePickerBase = (props) => {
140
145
  calendarState.setFocusedDate(selectedDate);
141
146
  };
142
147
  const onTodayPress = () => {
143
- dialogState.setValue(toCalendarDateTime(now(effectiveTimeZone)));
148
+ const currentValue = DateTimeUtils.getCurrentWallClockCalendarDateTime();
149
+ dialogState.setValue(currentValue);
150
+ calendarState.setFocusedDate(toCalendarDate(currentValue));
151
+ };
152
+ const onInputClear = () => {
153
+ onChange?.(null);
154
+ state.setValue(null);
155
+ dialogState.setValue(null);
144
156
  calendarState.setFocusedDate(today(effectiveTimeZone));
157
+ if (fireBlurOnChange) handleBlur(null);
145
158
  };
146
159
  const onOpenChange = (isOpen) => {
147
160
  state.toggle();
@@ -154,7 +167,7 @@ var DateTimePickerBase = (props) => {
154
167
  dialogState.setValue(state.value);
155
168
  return;
156
169
  }
157
- const textValue = e.currentTarget.textContent;
170
+ const textValue = e?.currentTarget.textContent ?? null;
158
171
  const dateTimeValue = DateTimeUtils.formatTextDateToCalendarDateTime(textValue, effectiveTimeZone, locale);
159
172
  if (dateTimeValue) {
160
173
  state.setValue(dateTimeValue);
@@ -178,11 +191,13 @@ var DateTimePickerBase = (props) => {
178
191
  groupProps,
179
192
  fieldProps: {
180
193
  ...fieldProps,
181
- onBlur: (e) => {
182
- fieldProps.onBlur?.(e);
183
- onInputBlur(e);
194
+ onBlur: (e_0) => {
195
+ fieldProps.onBlur?.(e_0);
196
+ onInputBlur(e_0);
184
197
  }
185
198
  },
199
+ fieldValue: normalizedValue,
200
+ hasValue: normalizedValue != null,
186
201
  buttonProps,
187
202
  isDirty,
188
203
  isDisabled,
@@ -204,7 +219,9 @@ var DateTimePickerBase = (props) => {
204
219
  className: inputClassName,
205
220
  timeZone: effectiveTimeZone,
206
221
  isTimeOptional,
207
- format
222
+ format,
223
+ fireBlurOnChange,
224
+ onClear: onInputClear
208
225
  }), (!disableDropdown || disableManualEntry) && /* @__PURE__ */ jsx(DateTimeDialog, {
209
226
  footer: /* @__PURE__ */ jsx(DateTimeDialogFooter, {
210
227
  isDisabled,
@@ -231,7 +248,9 @@ var DateTimePickerBase = (props) => {
231
248
  })
232
249
  });
233
250
  };
234
- var DateTimePicker = ({ fullIso = true, renderStaticInput, ...props }) => {
251
+ var DateTimePickerInner = (t0) => {
252
+ const $ = c(9);
253
+ const { fullIso: t1, renderStaticInput, isFormControlDisabled, ...props } = t0;
235
254
  const ui = UIConfig.useConfig();
236
255
  const datePickerInputContentRowCva = UIStyle.useCva("datePickerInput.contentRowCva", datePickerInputContentRow);
237
256
  const { locale } = useLocale();
@@ -242,30 +261,13 @@ var DateTimePicker = ({ fullIso = true, renderStaticInput, ...props }) => {
242
261
  inputRef,
243
262
  renderInput,
244
263
  setRenderInput,
245
- getFocusTarget: (input) => {
246
- return (input.getContainer?.() ?? input).querySelector("input, button, [tabindex]:not([tabindex='-1'])");
247
- }
264
+ getFocusTarget: _temp
248
265
  });
249
- const watchedValue = "formControl" in props && props.formControl ? useWatch({
250
- control: props.formControl.control,
251
- name: props.formControl.name
252
- }) : props.value;
253
- let isFormControlDisabled = false;
254
- if ("formControl" in props && props.formControl) isFormControlDisabled = !!props.formControl.control._options?.disabled;
255
- const rawValue = watchedValue ?? props.value ?? null;
256
- let effectiveTimeZone = getLocalTimeZone();
257
- if (props.timeZone) effectiveTimeZone = props.timeZone;
258
- const formatDateValue = (dateValue) => {
259
- if (dateValue === null) return null;
260
- if (fullIso) return DateTimeUtils.fromDateValueToISO(dateValue, effectiveTimeZone);
261
- return DateTimeUtils.fromDateValueToISO(dateValue, effectiveTimeZone);
262
- };
263
- const parseDateValue = (isoString) => {
264
- if (isoString == null) return isoString;
265
- return DateTimeUtils.fromUTCISOToCalendarDateTime(isoString, effectiveTimeZone);
266
- };
266
+ const normalizedValue = props.value ?? null;
267
+ const formatDateValue = _temp2;
268
+ const parseDateValue = _temp3;
267
269
  if (!renderInput) {
268
- const dateTimeValue = rawValue ? parseDateValue(rawValue) : null;
270
+ const dateTimeValue = normalizedValue ? parseDateValue(normalizedValue) : null;
269
271
  const as = props.as ?? ui.input.as;
270
272
  const size = props.size ?? ui.input.size;
271
273
  const isDisabled = isFormControlDisabled || !!props.isDisabled;
@@ -291,47 +293,153 @@ var DateTimePicker = ({ fullIso = true, renderStaticInput, ...props }) => {
291
293
  contentWrapperClassName: datePickerInputContentRowCva({ size }),
292
294
  labelPlacement: "content-row",
293
295
  dataAttributes: {
294
- dataIsEmpty: dateTimeValue === null,
295
- dataIsFilled: dateTimeValue !== null,
296
+ dataIsEmpty: dateTimeValue == null,
297
+ dataIsFilled: dateTimeValue != null,
296
298
  dataIsDirty: props.isDirty,
297
299
  dataIsRequired: props.isRequired,
298
300
  dataIsDisabled: isDisabled,
299
301
  dataDisabled: isDisabled,
300
302
  dataInvalid: !!props.error,
301
- dataHasSelection: dateTimeValue !== null
303
+ dataHasSelection: dateTimeValue != null
302
304
  },
303
305
  renderStatic: true,
304
306
  onStaticInteract: renderRealInput,
305
307
  actionContent: staticTodayIcon,
306
308
  actionContentPlacement: todayIconPlacement === "fieldLabel" ? "content-row" : "content-wrapper",
309
+ wrapContentAndTrailing: true,
310
+ contentAndTrailingClassName: "gap-2!",
307
311
  trailingClassName: "py-0! pl-0!",
308
312
  trailingContent: showDropdown ? ui.dateInput.dateTimeIcon : void 0,
309
313
  children: staticSegments
310
314
  });
311
315
  }
312
- if ("formControl" in props && props.formControl) {
313
- const { formControl, ref, ...innerProps } = props;
314
- return /* @__PURE__ */ jsx(Controller, {
315
- control: formControl.control,
316
- name: formControl.name,
317
- render: ({ field, fieldState: { error, isDirty } }) => /* @__PURE__ */ jsx(DateTimePickerBase, {
318
- ...innerProps,
319
- ref: mergeRefs(ref, field.ref, inputRef),
320
- value: parseDateValue(field.value),
321
- onChange: (value) => field.onChange(formatDateValue(value)),
322
- onBlur: field.onBlur,
323
- isDirty,
324
- isDisabled: field.disabled || props.isDisabled,
325
- error: props.error ?? error?.message
326
- })
316
+ const T0 = DateTimePickerBase;
317
+ const t2 = mergeRefs(props.ref, inputRef);
318
+ const t3 = parseDateValue(normalizedValue);
319
+ let t4;
320
+ if ($[0] !== formatDateValue || $[1] !== props) {
321
+ t4 = (value) => props.onChange?.(formatDateValue(value));
322
+ $[0] = formatDateValue;
323
+ $[1] = props;
324
+ $[2] = t4;
325
+ } else t4 = $[2];
326
+ let t5;
327
+ if ($[3] !== T0 || $[4] !== props || $[5] !== t2 || $[6] !== t3 || $[7] !== t4) {
328
+ t5 = /* @__PURE__ */ jsx(T0, {
329
+ ...props,
330
+ ref: t2,
331
+ value: t3,
332
+ onChange: t4
327
333
  });
334
+ $[3] = T0;
335
+ $[4] = props;
336
+ $[5] = t2;
337
+ $[6] = t3;
338
+ $[7] = t4;
339
+ $[8] = t5;
340
+ } else t5 = $[8];
341
+ return t5;
342
+ };
343
+ var DateTimePicker = (t0) => {
344
+ const $ = c(24);
345
+ let props;
346
+ let renderStaticInput;
347
+ let t1;
348
+ if ($[0] !== t0) {
349
+ ({fullIso: t1, renderStaticInput, ...props} = t0);
350
+ $[0] = t0;
351
+ $[1] = props;
352
+ $[2] = renderStaticInput;
353
+ $[3] = t1;
354
+ } else {
355
+ props = $[1];
356
+ renderStaticInput = $[2];
357
+ t1 = $[3];
328
358
  }
329
- return /* @__PURE__ */ jsx(DateTimePickerBase, {
330
- ...props,
331
- ref: mergeRefs(props.ref, inputRef),
332
- value: parseDateValue(props.value),
333
- onChange: (value) => props.onChange?.(formatDateValue(value))
334
- });
359
+ const fullIso = t1 === void 0 ? true : t1;
360
+ if ("formControl" in props && props.formControl) {
361
+ let formControl;
362
+ let innerProps;
363
+ let ref;
364
+ if ($[4] !== props) {
365
+ ({formControl, ref, ...innerProps} = props);
366
+ $[4] = props;
367
+ $[5] = formControl;
368
+ $[6] = innerProps;
369
+ $[7] = ref;
370
+ } else {
371
+ formControl = $[5];
372
+ innerProps = $[6];
373
+ ref = $[7];
374
+ }
375
+ const controlWithOptions = formControl.control;
376
+ let t2;
377
+ if ($[8] !== controlWithOptions._options?.disabled || $[9] !== fullIso || $[10] !== innerProps || $[11] !== props.error || $[12] !== props.isDisabled || $[13] !== ref || $[14] !== renderStaticInput) {
378
+ t2 = (t3) => {
379
+ const { field, fieldState: t4 } = t3;
380
+ const { error, isDirty } = t4;
381
+ return /* @__PURE__ */ jsx(DateTimePickerInner, {
382
+ ...innerProps,
383
+ ref: mergeRefs(ref, field.ref),
384
+ value: field.value,
385
+ onChange: field.onChange,
386
+ onBlur: field.onBlur,
387
+ isDirty,
388
+ isDisabled: field.disabled || props.isDisabled,
389
+ isFormControlDisabled: !!controlWithOptions._options?.disabled,
390
+ error: props.error ?? error?.message,
391
+ fullIso,
392
+ renderStaticInput
393
+ });
394
+ };
395
+ $[8] = controlWithOptions._options?.disabled;
396
+ $[9] = fullIso;
397
+ $[10] = innerProps;
398
+ $[11] = props.error;
399
+ $[12] = props.isDisabled;
400
+ $[13] = ref;
401
+ $[14] = renderStaticInput;
402
+ $[15] = t2;
403
+ } else t2 = $[15];
404
+ let t3;
405
+ if ($[16] !== formControl.control || $[17] !== formControl.name || $[18] !== t2) {
406
+ t3 = /* @__PURE__ */ jsx(Controller, {
407
+ control: formControl.control,
408
+ name: formControl.name,
409
+ render: t2
410
+ });
411
+ $[16] = formControl.control;
412
+ $[17] = formControl.name;
413
+ $[18] = t2;
414
+ $[19] = t3;
415
+ } else t3 = $[19];
416
+ return t3;
417
+ }
418
+ let t2;
419
+ if ($[20] !== fullIso || $[21] !== props || $[22] !== renderStaticInput) {
420
+ t2 = /* @__PURE__ */ jsx(DateTimePickerInner, {
421
+ ...props,
422
+ fullIso,
423
+ renderStaticInput
424
+ });
425
+ $[20] = fullIso;
426
+ $[21] = props;
427
+ $[22] = renderStaticInput;
428
+ $[23] = t2;
429
+ } else t2 = $[23];
430
+ return t2;
335
431
  };
432
+ function _temp(input) {
433
+ const container = input.getContainer?.() ?? input;
434
+ return container instanceof HTMLElement ? container.querySelector("input, button, [tabindex]:not([tabindex='-1'])") : null;
435
+ }
436
+ function _temp2(dateValue) {
437
+ if (dateValue === null) return null;
438
+ return DateTimeUtils.fromDateValueFieldsToUTCISO(dateValue);
439
+ }
440
+ function _temp3(isoString) {
441
+ if (isoString == null) return isoString;
442
+ return DateTimeUtils.fromUTCISOToCalendarDateTime(isoString, "UTC");
443
+ }
336
444
  //#endregion
337
445
  export { DateTimePicker };
@@ -14,6 +14,7 @@ interface TimePickerBaseProps extends FormFieldProps, InputVariantProps, Omit<Ar
14
14
  placeholder?: string;
15
15
  inputClassName?: string;
16
16
  onBlur?: (e: FocusEvent<HTMLInputElement>) => void;
17
+ fireBlurOnChange?: boolean;
17
18
  }
18
19
  export interface TimePickerProps extends Omit<TimePickerBaseProps, "value" | "onChange"> {
19
20
  value?: string | null;