@povio/ui 3.3.0-rc.3 → 3.3.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 (84) hide show
  1. package/README.md +15 -1
  2. package/dist/components/Breadcrumbs/Breadcrumbs.js +55 -206
  3. package/dist/components/buttons/Button/button.cva.d.ts +1 -1
  4. package/dist/components/buttons/InlineIconButton/InlineIconButton.js +9 -34
  5. package/dist/components/buttons/shared/ButtonContent.js +22 -80
  6. package/dist/components/inputs/Checkbox/CheckboxCheckmark.js +10 -24
  7. package/dist/components/inputs/Checkbox/CheckboxGroup.d.ts +5 -1
  8. package/dist/components/inputs/Checkbox/CheckboxGroup.js +234 -201
  9. package/dist/components/inputs/DateTime/DatePicker/DatePicker.js +93 -227
  10. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.d.ts +1 -0
  11. package/dist/components/inputs/DateTime/DateRangePicker/DateRangePicker.js +170 -273
  12. package/dist/components/inputs/DateTime/DateTimePicker/DateTimePicker.js +60 -147
  13. package/dist/components/inputs/DateTime/shared/Calendar.js +139 -339
  14. package/dist/components/inputs/DateTime/shared/CalendarCell.js +114 -308
  15. package/dist/components/inputs/DateTime/shared/CalendarGrid.js +35 -150
  16. package/dist/components/inputs/DateTime/shared/CalendarHeader.js +95 -229
  17. package/dist/components/inputs/DateTime/shared/CalendarSelectHeader.js +115 -296
  18. package/dist/components/inputs/DateTime/shared/DateField.js +135 -301
  19. package/dist/components/inputs/DateTime/shared/DatePickerInput.js +142 -338
  20. package/dist/components/inputs/DateTime/shared/DateTimeDialogFooter.js +10 -59
  21. package/dist/components/inputs/DateTime/shared/TimePickerInput.js +144 -134
  22. package/dist/components/inputs/DateTime/shared/useFirefoxDateSegmentSelectionGuard.d.ts +2 -0
  23. package/dist/components/inputs/DateTime/shared/useFirefoxDateSegmentSelectionGuard.js +33 -0
  24. package/dist/components/inputs/File/FileUpload.js +1 -1
  25. package/dist/components/inputs/File/InputUpload.js +65 -261
  26. package/dist/components/inputs/File/shared/FileUploadContentEmpty.js +48 -180
  27. package/dist/components/inputs/File/shared/FileUploadContentError.js +95 -265
  28. package/dist/components/inputs/File/shared/FileUploadContentFilled.js +99 -261
  29. package/dist/components/inputs/File/shared/FileUploadContentLoading.js +56 -234
  30. package/dist/components/inputs/File/shared/ProgressBar.js +15 -102
  31. package/dist/components/inputs/FormField/FormField.js +34 -47
  32. package/dist/components/inputs/Input/NumberInput/NumberInput.js +2 -1
  33. package/dist/components/inputs/Input/NumberRangeInput/NumberRangeInput.js +77 -314
  34. package/dist/components/inputs/Selection/Autocomplete/Autocomplete.js +23 -83
  35. package/dist/components/inputs/Selection/Autocomplete/QueryAutocomplete.js +56 -2
  36. package/dist/components/inputs/Selection/Select/QuerySelect.js +82 -94
  37. package/dist/components/inputs/Selection/Select/Select.js +3 -3
  38. package/dist/components/inputs/Selection/shared/SelectInput.js +1 -0
  39. package/dist/components/inputs/Selection/shared/SelectListBox.js +51 -163
  40. package/dist/components/inputs/Selection/shared/querySelect.utils.d.ts +1 -0
  41. package/dist/components/inputs/Selection/shared/querySelect.utils.js +1 -0
  42. package/dist/components/inputs/Selection/shared/select.context.js +19 -9
  43. package/dist/components/inputs/Selection/shared/useSelectItems.js +48 -108
  44. package/dist/components/inputs/Skeleton/InputFrame.js +177 -552
  45. package/dist/components/inputs/TextEditor/TextEditor.js +87 -389
  46. package/dist/components/inputs/shared/InputClear.js +24 -40
  47. package/dist/components/inputs/shared/input.cva.js +1 -1
  48. package/dist/components/navigation/Accordion/Accordion.js +22 -69
  49. package/dist/components/navigation/Accordion/AccordionItem.js +41 -86
  50. package/dist/components/navigation/Stepper/Stepper.js +22 -67
  51. package/dist/components/overlays/ActionModal/ActionModal.js +35 -169
  52. package/dist/components/overlays/ResponsivePopover/ResponsivePopover.js +29 -110
  53. package/dist/components/shared/pagination/Pagination.js +22 -108
  54. package/dist/components/shared/pagination/minWidth.cva.d.ts +1 -1
  55. package/dist/components/status/Alert/Alert.js +30 -97
  56. package/dist/components/table/InfiniteTable.js +16 -67
  57. package/dist/components/table/Table.d.ts +2 -8
  58. package/dist/components/table/Table.js +33 -55
  59. package/dist/components/text/Typography/Typography.js +8 -23
  60. package/dist/config/confirmation.context.js +1 -1
  61. package/dist/config/theme.context.js +45 -98
  62. package/dist/config/uiConfig.context.d.ts +1 -0
  63. package/dist/config/uiConfig.context.js +10 -40
  64. package/dist/config/uiOverrides.context.d.ts +0 -1
  65. package/dist/helpers/dynamicColumns.js +2 -1
  66. package/dist/hooks/useDebounceCallback.js +17 -51
  67. package/dist/hooks/useFormAutosave.js +33 -120
  68. package/dist/hooks/useLongPressRepeat.js +20 -55
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/utils/date-time.utils.d.ts +0 -1
  72. package/dist/utils/date-time.utils.js +21 -45
  73. package/dist/utils/intl.utils.d.ts +7 -0
  74. package/dist/utils/intl.utils.js +38 -0
  75. package/dist/utils/intl.utils.spec.d.ts +1 -0
  76. package/package.json +2 -2
  77. package/dist/components/inputs/FormField/formField.cva.d.ts +0 -11
  78. package/dist/components/inputs/FormField/formField.cva.js +0 -16
  79. package/dist/components/table/TableColumnFilterInput.d.ts +0 -9
  80. package/dist/components/table/TableColumnFilterInput.js +0 -108
  81. package/dist/components/table/TableColumnFilterPlaceholder.d.ts +0 -5
  82. package/dist/components/table/TableColumnFilterPlaceholder.js +0 -41
  83. package/dist/components/table/TableColumnFilterRow.d.ts +0 -16
  84. package/dist/components/table/TableColumnFilterRow.js +0 -68
@@ -1,322 +1,156 @@
1
1
  import { DateSegmentItem } from "./DateSegmentItem.js";
2
2
  import { DateTimeUtils } from "../../../../utils/date-time.utils.js";
3
- import { c } from "react/compiler-runtime";
4
3
  import { Fragment, jsx } from "react/jsx-runtime";
5
4
  import { clsx } from "clsx";
6
- import { useEffect, useImperativeHandle, useRef } from "react";
5
+ import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from "react";
7
6
  import { useDateField, useLocale } from "react-aria";
8
7
  import { CalendarDate, CalendarDateTime, createCalendar } from "@internationalized/date";
9
8
  import { DateTime } from "luxon";
10
9
  import { useDateFieldState } from "react-stately";
11
10
  //#region src/components/inputs/DateTime/shared/DateField.tsx
12
11
  var omitNullValue = ({ value: _value, ...props }) => props;
13
- var DateField = (t0) => {
14
- const $ = c(63);
15
- const { ref, onClearChange, hidePlaceholder, isDisabled, disableManualEntry, dateGranularity: t1, isTimeOptional: t2, format, timeZone, segmentGroup, shouldAutoFixYear: t3, ...props } = t0;
16
- const dateGranularity = t1 === void 0 ? "day" : t1;
17
- const isTimeOptional = t2 === void 0 ? false : t2;
18
- const shouldAutoFixYear = t3 === void 0 ? false : t3;
12
+ var DateField = ({ ref, onClearChange, hidePlaceholder, isDisabled, disableManualEntry, dateGranularity = "day", isTimeOptional = false, format, timeZone, segmentGroup, shouldAutoFixYear = false, ...props }) => {
19
13
  const { locale } = useLocale();
20
14
  const previousValueRef = useRef(props.value);
21
15
  const dateFieldProps = props.value == null ? omitNullValue(props) : props;
22
- let t4;
23
- if ($[0] !== dateFieldProps || $[1] !== disableManualEntry || $[2] !== isDisabled || $[3] !== locale) {
24
- t4 = {
25
- ...dateFieldProps,
26
- isDisabled,
27
- isReadOnly: disableManualEntry,
28
- locale,
29
- createCalendar
30
- };
31
- $[0] = dateFieldProps;
32
- $[1] = disableManualEntry;
33
- $[2] = isDisabled;
34
- $[3] = locale;
35
- $[4] = t4;
36
- } else t4 = $[4];
37
- const state = useDateFieldState(t4);
16
+ const state = useDateFieldState({
17
+ ...dateFieldProps,
18
+ isDisabled,
19
+ isReadOnly: disableManualEntry,
20
+ locale,
21
+ createCalendar
22
+ });
38
23
  const dataFieldRef = useRef(null);
39
- let t5;
40
- if ($[5] !== dateFieldProps || $[6] !== disableManualEntry || $[7] !== isDisabled) {
41
- t5 = {
42
- ...dateFieldProps,
43
- isDisabled,
44
- isReadOnly: disableManualEntry
45
- };
46
- $[5] = dateFieldProps;
47
- $[6] = disableManualEntry;
48
- $[7] = isDisabled;
49
- $[8] = t5;
50
- } else t5 = $[8];
51
- const { fieldProps } = useDateField(t5, state, dataFieldRef);
52
- let t6;
53
- if ($[9] !== dateGranularity) {
54
- t6 = (segmentType) => {
55
- if (dateGranularity === "day") return true;
56
- if (dateGranularity === "month") return segmentType !== "day";
57
- if (dateGranularity === "year") return segmentType === "year";
58
- return true;
59
- };
60
- $[9] = dateGranularity;
61
- $[10] = t6;
62
- } else t6 = $[10];
63
- const isSegmentVisible = t6;
64
- let t7;
65
- if ($[11] !== isSegmentVisible || $[12] !== state.segments) {
66
- t7 = () => {
67
- const segments = [];
68
- for (const segment of state.segments) if (segment.type !== "literal") {
69
- if (isSegmentVisible(segment.type)) segments.push(segment);
70
- } else if (segments.length > 0 && segments.at(-1)?.type !== "literal") segments.push(segment);
71
- return segments;
72
- };
73
- $[11] = isSegmentVisible;
74
- $[12] = state.segments;
75
- $[13] = t7;
76
- } else t7 = $[13];
77
- const getSegmentsToRender = t7;
78
- let t8;
79
- if ($[14] !== getSegmentsToRender) {
80
- t8 = getSegmentsToRender();
81
- $[14] = getSegmentsToRender;
82
- $[15] = t8;
83
- } else t8 = $[15];
84
- const segmentsToRender = t8;
85
- const getSegmentNumber = _temp;
86
- let t9;
87
- if ($[16] !== isTimeOptional || $[17] !== props || $[18] !== state) {
88
- t9 = () => {
89
- const monthSegment = state.segments.find(_temp2);
90
- const daySegment = state.segments.find(_temp3);
91
- const yearSegment = state.segments.find(_temp4);
92
- const hourSegment = state.segments.find(_temp5);
93
- const minuteSegment = state.segments.find(_temp6);
94
- const isMonthFilled = monthSegment && !monthSegment.isPlaceholder;
95
- const isDayFilled = daySegment && !daySegment.isPlaceholder;
96
- const isYearFilled = yearSegment && !yearSegment.isPlaceholder && yearSegment.text?.length > 0;
97
- const isYearEmpty = yearSegment && !(parseInt(yearSegment.text) && yearSegment.text?.length === 4);
98
- const isDateFilled = isMonthFilled && isDayFilled && isYearFilled;
99
- const isHourEmpty = hourSegment && (hourSegment.isPlaceholder || Number.isNaN(parseInt(hourSegment.text ?? "", 10)));
100
- const isMinuteEmpty = minuteSegment && (minuteSegment.isPlaceholder || Number.isNaN(parseInt(minuteSegment.text ?? "", 10)));
101
- let correctedValue = null;
102
- if (!isTimeOptional && isDateFilled && minuteSegment && isMinuteEmpty) {
103
- let minute = minuteSegment?.value || 0;
104
- if (minuteSegment?.text?.length && minuteSegment?.text?.length > 0) {
105
- minute = parseInt(minuteSegment?.text ?? "00");
106
- if (isNaN(minute)) minute = 0;
107
- }
108
- state.setSegment("minute", minute);
24
+ const { fieldProps } = useDateField({
25
+ ...dateFieldProps,
26
+ isDisabled,
27
+ isReadOnly: disableManualEntry
28
+ }, state, dataFieldRef);
29
+ const isSegmentVisible = useCallback((segmentType) => {
30
+ if (dateGranularity === "day") return true;
31
+ if (dateGranularity === "month") return segmentType !== "day";
32
+ if (dateGranularity === "year") return segmentType === "year";
33
+ return true;
34
+ }, [dateGranularity]);
35
+ const getSegmentsToRender = useCallback(() => {
36
+ const segments = [];
37
+ for (const segment of state.segments) if (segment.type !== "literal") {
38
+ if (isSegmentVisible(segment.type)) segments.push(segment);
39
+ } else if (segments.length > 0 && segments.at(-1)?.type !== "literal") segments.push(segment);
40
+ return segments;
41
+ }, [state.segments, isSegmentVisible]);
42
+ const segmentsToRender = useMemo(() => getSegmentsToRender(), [getSegmentsToRender]);
43
+ const getSegmentNumber = (segment_0) => {
44
+ if (!segment_0) return null;
45
+ if (typeof segment_0.value === "number" && !Number.isNaN(segment_0.value)) return segment_0.value;
46
+ const parsedValue = parseInt(segment_0.text ?? "");
47
+ return Number.isNaN(parsedValue) ? null : parsedValue;
48
+ };
49
+ const autoFixYear = () => {
50
+ const monthSegment = state.segments.find((segment_1) => segment_1.type === "month");
51
+ const daySegment = state.segments.find((segment_2) => segment_2.type === "day");
52
+ const yearSegment = state.segments.find((segment_3) => segment_3.type === "year");
53
+ const hourSegment = state.segments.find((segment_4) => segment_4.type === "hour");
54
+ const minuteSegment = state.segments.find((segment_5) => segment_5.type === "minute");
55
+ const isMonthFilled = monthSegment && !monthSegment.isPlaceholder;
56
+ const isDayFilled = daySegment && !daySegment.isPlaceholder;
57
+ const isYearFilled = yearSegment && !yearSegment.isPlaceholder && yearSegment.text?.length > 0;
58
+ const isYearComplete = isYearFilled && yearSegment.text?.length === 4;
59
+ const isYearEmpty = yearSegment && !(parseInt(yearSegment.text) && yearSegment.text?.length === 4);
60
+ const isDateFilled = isMonthFilled && isDayFilled && isYearFilled;
61
+ const isHourEmpty = hourSegment && (hourSegment.isPlaceholder || Number.isNaN(parseInt(hourSegment.text ?? "", 10)));
62
+ const isMinuteEmpty = minuteSegment && (minuteSegment.isPlaceholder || Number.isNaN(parseInt(minuteSegment.text ?? "", 10)));
63
+ const month = getSegmentNumber(monthSegment);
64
+ const day = getSegmentNumber(daySegment);
65
+ const segmentYear = getSegmentNumber(yearSegment);
66
+ let correctedValue = null;
67
+ if (!isTimeOptional && isDateFilled && minuteSegment && isMinuteEmpty) {
68
+ let minute = minuteSegment?.value || 0;
69
+ if (minuteSegment?.text?.length && minuteSegment?.text?.length > 0) {
70
+ minute = parseInt(minuteSegment?.text ?? "00");
71
+ if (isNaN(minute)) minute = 0;
109
72
  }
110
- if (!isTimeOptional && isDateFilled && hourSegment && isHourEmpty) {
111
- let hour = hourSegment?.value || 0;
112
- if (hourSegment?.text?.length && hourSegment?.text?.length > 0) {
113
- hour = parseInt(hourSegment?.text ?? "00");
114
- if (isNaN(hour)) hour = 0;
115
- }
116
- state.setSegment("hour", hour);
73
+ state.setSegment("minute", minute);
74
+ }
75
+ if (!isTimeOptional && isDateFilled && hourSegment && isHourEmpty) {
76
+ let hour = hourSegment?.value || 0;
77
+ if (hourSegment?.text?.length && hourSegment?.text?.length > 0) {
78
+ hour = parseInt(hourSegment?.text ?? "00");
79
+ if (isNaN(hour)) hour = 0;
117
80
  }
118
- if (isMonthFilled && isDayFilled && isYearEmpty) {
119
- let year = (/* @__PURE__ */ new Date()).getFullYear();
120
- if (yearSegment?.text?.length && yearSegment?.text?.length === 2) year = parseInt(`20${yearSegment?.text}`);
121
- state.setSegment("year", year);
122
- const month = getSegmentNumber(monthSegment);
123
- const day = getSegmentNumber(daySegment);
124
- const hasDateSegments = month !== null && day !== null;
125
- const hasTimeSegment = !!(hourSegment || minuteSegment);
126
- if (state.value) correctedValue = state.value.set({ year });
127
- else if (hasDateSegments && hasTimeSegment) correctedValue = new CalendarDateTime(year, month, day, getSegmentNumber(hourSegment) ?? 0, getSegmentNumber(minuteSegment) ?? 0);
128
- else if (hasDateSegments) correctedValue = new CalendarDate(year, month, day);
129
- }
130
- const valueToCorrect = correctedValue ?? state.value;
131
- if (!valueToCorrect) return;
132
- const { year: year_0 } = valueToCorrect;
133
- if (year_0 >= 0 && year_0 <= 99) {
134
- const correctedYear = year_0 <= 50 ? 2e3 + year_0 : 1900 + year_0;
135
- correctedValue = valueToCorrect.set({ year: correctedYear });
136
- }
137
- if (correctedValue) {
138
- state.setValue(correctedValue);
139
- props.onChange?.(correctedValue);
140
- }
141
- };
142
- $[16] = isTimeOptional;
143
- $[17] = props;
144
- $[18] = state;
145
- $[19] = t9;
146
- } else t9 = $[19];
147
- const autoFixYear = t9;
148
- let t10;
149
- if ($[20] !== autoFixYear || $[21] !== fieldProps || $[22] !== shouldAutoFixYear) {
150
- t10 = (e) => {
151
- if (shouldAutoFixYear && !e.currentTarget.contains(e.relatedTarget)) autoFixYear();
152
- fieldProps.onBlur?.(e);
153
- };
154
- $[20] = autoFixYear;
155
- $[21] = fieldProps;
156
- $[22] = shouldAutoFixYear;
157
- $[23] = t10;
158
- } else t10 = $[23];
159
- const handleBlur = t10;
160
- let t11;
161
- if ($[24] !== autoFixYear || $[25] !== state) {
162
- t11 = () => ({
163
- clearField: () => {
164
- state.setValue(null);
165
- },
166
- autoFixYear
167
- });
168
- $[24] = autoFixYear;
169
- $[25] = state;
170
- $[26] = t11;
171
- } else t11 = $[26];
172
- useImperativeHandle(ref, t11);
173
- let t12;
174
- if ($[27] !== previousValueRef || $[28] !== props.value || $[29] !== state) {
175
- t12 = () => {
176
- if (previousValueRef.current != null && props.value == null && state.value !== null) state.setValue(null);
177
- previousValueRef.current = props.value;
178
- };
179
- $[27] = previousValueRef;
180
- $[28] = props.value;
181
- $[29] = state;
182
- $[30] = t12;
183
- } else t12 = $[30];
184
- let t13;
185
- if ($[31] !== props.value || $[32] !== state) {
186
- t13 = [props.value, state];
187
- $[31] = props.value;
188
- $[32] = state;
189
- $[33] = t13;
190
- } else t13 = $[33];
191
- useEffect(t12, t13);
192
- let t14;
193
- let t15;
194
- if ($[34] !== onClearChange || $[35] !== state.segments) {
195
- t14 = () => {
196
- onClearChange?.(state.segments.some(_temp7));
197
- };
198
- t15 = [state.segments, onClearChange];
199
- $[34] = onClearChange;
200
- $[35] = state.segments;
201
- $[36] = t14;
202
- $[37] = t15;
203
- } else {
204
- t14 = $[36];
205
- t15 = $[37];
206
- }
207
- useEffect(t14, t15);
208
- let t16;
209
- if ($[38] !== disableManualEntry || $[39] !== format || $[40] !== state.value || $[41] !== timeZone) {
210
- const getFormattedDisplayValue = () => {
211
- if (!disableManualEntry) return null;
212
- if (!format) return null;
213
- if (!state.value) return null;
214
- const jsDate = DateTimeUtils.fromDateValueToLocal(state.value, timeZone);
215
- const formattedDate = DateTime.fromJSDate(jsDate);
216
- if (!formattedDate.isValid) return null;
217
- return formattedDate.toFormat(format);
218
- };
219
- t16 = getFormattedDisplayValue();
220
- $[38] = disableManualEntry;
221
- $[39] = format;
222
- $[40] = state.value;
223
- $[41] = timeZone;
224
- $[42] = t16;
225
- } else t16 = $[42];
226
- const formattedDisplayValue = t16;
227
- let t17;
228
- if ($[43] !== hidePlaceholder || $[44] !== isDisabled || $[45] !== segmentGroup || $[46] !== segmentsToRender || $[47] !== state) {
229
- t17 = /* @__PURE__ */ jsx(Fragment, { children: segmentsToRender.map((segment_7, i) => /* @__PURE__ */ jsx(DateSegmentItem, {
230
- segment: segment_7,
231
- segmentGroup,
232
- state,
233
- isDisabled,
234
- hidePlaceholder
235
- }, i)) });
236
- $[43] = hidePlaceholder;
237
- $[44] = isDisabled;
238
- $[45] = segmentGroup;
239
- $[46] = segmentsToRender;
240
- $[47] = state;
241
- $[48] = t17;
242
- } else t17 = $[48];
243
- let fieldContent = t17;
244
- if (formattedDisplayValue) {
245
- const t18 = isDisabled && "text-interactive-text-secondary-disabled";
246
- let t19;
247
- if ($[49] !== t18) {
248
- t19 = clsx("select-none", t18);
249
- $[49] = t18;
250
- $[50] = t19;
251
- } else t19 = $[50];
252
- let t20;
253
- if ($[51] !== formattedDisplayValue || $[52] !== t19) {
254
- t20 = /* @__PURE__ */ jsx("span", {
255
- className: t19,
256
- children: formattedDisplayValue
257
- });
258
- $[51] = formattedDisplayValue;
259
- $[52] = t19;
260
- $[53] = t20;
261
- } else t20 = $[53];
262
- fieldContent = t20;
263
- }
264
- const t18 = disableManualEntry && "pointer-events-none";
265
- let t19;
266
- if ($[54] !== t18) {
267
- t19 = clsx("relative w-full", t18);
268
- $[54] = t18;
269
- $[55] = t19;
270
- } else t19 = $[55];
271
- let t20;
272
- if ($[56] !== fieldContent) {
273
- t20 = /* @__PURE__ */ jsx("div", {
81
+ state.setSegment("hour", hour);
82
+ }
83
+ if (shouldAutoFixYear && isMonthFilled && isDayFilled && isYearEmpty) {
84
+ let correctedYear = (/* @__PURE__ */ new Date()).getFullYear();
85
+ if (yearSegment?.text?.length && yearSegment?.text?.length === 2) correctedYear = parseInt(`20${yearSegment?.text}`);
86
+ state.setSegment("year", correctedYear);
87
+ const hasDateSegments = month !== null && day !== null;
88
+ const hasTimeSegment = !!(hourSegment || minuteSegment);
89
+ if (state.value) correctedValue = state.value.set({ year: correctedYear });
90
+ else if (hasDateSegments && hasTimeSegment) correctedValue = new CalendarDateTime(correctedYear, month, day, getSegmentNumber(hourSegment) ?? 0, getSegmentNumber(minuteSegment) ?? 0);
91
+ else if (hasDateSegments) correctedValue = new CalendarDate(correctedYear, month, day);
92
+ }
93
+ if (isTimeOptional && !state.value && isMonthFilled && isDayFilled && isYearComplete && hourSegment?.isPlaceholder && minuteSegment?.isPlaceholder && month !== null && day !== null && segmentYear !== null) correctedValue = new CalendarDateTime(segmentYear, month, day, 0, 0, 0, 0);
94
+ const valueToCorrect = correctedValue ?? state.value;
95
+ if (!valueToCorrect) return;
96
+ const { year } = valueToCorrect;
97
+ if (shouldAutoFixYear && year >= 0 && year <= 99) {
98
+ const correctedYear_0 = year <= 50 ? 2e3 + year : 1900 + year;
99
+ correctedValue = valueToCorrect.set({ year: correctedYear_0 });
100
+ }
101
+ if (correctedValue) {
102
+ state.setValue(correctedValue);
103
+ props.onChange?.(correctedValue);
104
+ }
105
+ };
106
+ const handleBlur = (e) => {
107
+ if ((shouldAutoFixYear || isTimeOptional) && !e.currentTarget.contains(e.relatedTarget)) autoFixYear();
108
+ fieldProps.onBlur?.(e);
109
+ };
110
+ useImperativeHandle(ref, () => ({
111
+ clearField: () => {
112
+ state.setValue(null);
113
+ },
114
+ autoFixYear
115
+ }));
116
+ useEffect(() => {
117
+ if (previousValueRef.current != null && props.value == null && state.value !== null) state.setValue(null);
118
+ previousValueRef.current = props.value;
119
+ }, [props.value, state]);
120
+ useEffect(() => {
121
+ onClearChange?.(state.segments.some((segment_6) => segment_6.type !== "literal" && segment_6.isPlaceholder === false));
122
+ }, [state.segments, onClearChange]);
123
+ const getFormattedDisplayValue = () => {
124
+ if (!disableManualEntry) return null;
125
+ if (!format) return null;
126
+ if (!state.value) return null;
127
+ const jsDate = DateTimeUtils.fromDateValueToLocal(state.value, timeZone);
128
+ const formattedDate = DateTime.fromJSDate(jsDate);
129
+ if (!formattedDate.isValid) return null;
130
+ return formattedDate.toFormat(format);
131
+ };
132
+ const formattedDisplayValue = getFormattedDisplayValue();
133
+ let fieldContent = /* @__PURE__ */ jsx(Fragment, { children: segmentsToRender.map((segment_7, i) => /* @__PURE__ */ jsx(DateSegmentItem, {
134
+ segment: segment_7,
135
+ segmentGroup,
136
+ state,
137
+ isDisabled,
138
+ hidePlaceholder
139
+ }, i)) });
140
+ if (formattedDisplayValue) fieldContent = /* @__PURE__ */ jsx("span", {
141
+ className: clsx("select-none", isDisabled && "text-interactive-text-secondary-disabled"),
142
+ children: formattedDisplayValue
143
+ });
144
+ return /* @__PURE__ */ jsx("div", {
145
+ ...fieldProps,
146
+ ref: dataFieldRef,
147
+ onBlur: handleBlur,
148
+ className: clsx("relative w-full", disableManualEntry && "pointer-events-none"),
149
+ children: /* @__PURE__ */ jsx("div", {
274
150
  className: "flex",
275
151
  children: fieldContent
276
- });
277
- $[56] = fieldContent;
278
- $[57] = t20;
279
- } else t20 = $[57];
280
- let t21;
281
- if ($[58] !== fieldProps || $[59] !== handleBlur || $[60] !== t19 || $[61] !== t20) {
282
- t21 = /* @__PURE__ */ jsx("div", {
283
- ...fieldProps,
284
- ref: dataFieldRef,
285
- onBlur: handleBlur,
286
- className: t19,
287
- children: t20
288
- });
289
- $[58] = fieldProps;
290
- $[59] = handleBlur;
291
- $[60] = t19;
292
- $[61] = t20;
293
- $[62] = t21;
294
- } else t21 = $[62];
295
- return t21;
152
+ })
153
+ });
296
154
  };
297
- function _temp(segment_0) {
298
- if (!segment_0) return null;
299
- if (typeof segment_0.value === "number" && !Number.isNaN(segment_0.value)) return segment_0.value;
300
- const parsedValue = parseInt(segment_0.text ?? "");
301
- return Number.isNaN(parsedValue) ? null : parsedValue;
302
- }
303
- function _temp2(segment_1) {
304
- return segment_1.type === "month";
305
- }
306
- function _temp3(segment_2) {
307
- return segment_2.type === "day";
308
- }
309
- function _temp4(segment_3) {
310
- return segment_3.type === "year";
311
- }
312
- function _temp5(segment_4) {
313
- return segment_4.type === "hour";
314
- }
315
- function _temp6(segment_5) {
316
- return segment_5.type === "minute";
317
- }
318
- function _temp7(segment_6) {
319
- return segment_6.type !== "literal" && segment_6.isPlaceholder === false;
320
- }
321
155
  //#endregion
322
156
  export { DateField };