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