@osdk/react-components 0.21.0 → 0.21.1-main-8965bdf6a0c540d35214e7ff7328defbf04cf4c8
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 +11 -0
- package/build/browser/shared/calendar/DateCalendar.js +27 -4
- package/build/browser/shared/calendar/DateCalendar.js.map +1 -1
- package/build/browser/shared/calendar/DatePicker.js +4 -17
- package/build/browser/shared/calendar/DatePicker.js.map +1 -1
- package/build/browser/shared/calendar/DatePicker.module.css +0 -5
- package/build/browser/shared/calendar/DatePicker.module.css.js +1 -2
- package/build/browser/shared/calendar/DateRangePicker.js +4 -2
- package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/browser/shared/calendar/TimePicker.js +24 -45
- package/build/browser/shared/calendar/TimePicker.js.map +1 -1
- package/build/browser/styles.css +0 -5
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{DateCalendar-OLI4WF2E.cjs → DateCalendar-PZO23MYM.cjs} +6 -6
- package/build/cjs/{DateCalendar-OLI4WF2E.cjs.map → DateCalendar-PZO23MYM.cjs.map} +1 -1
- package/build/cjs/{DateCalendar-7E5ZCI7U.css → DateCalendar-XTX3RI6O.css} +35 -1
- package/build/cjs/DateCalendar-XTX3RI6O.css.map +1 -0
- package/build/cjs/DateRangeCalendar-2MBQAU3Z.cjs +12 -0
- package/build/cjs/{DateRangeCalendar-TC7G2J2D.cjs.map → DateRangeCalendar-2MBQAU3Z.cjs.map} +1 -1
- package/build/cjs/{DateRangeCalendar-R3RYMAD4.css → DateRangeCalendar-R7KHDKJT.css} +35 -1
- package/build/cjs/DateRangeCalendar-R7KHDKJT.css.map +1 -0
- package/build/cjs/{chunk-Y6BGC7DP.cjs → chunk-3S52UDZM.cjs} +22 -22
- package/build/cjs/{chunk-Y6BGC7DP.cjs.map → chunk-3S52UDZM.cjs.map} +1 -1
- package/build/cjs/{chunk-5XDYMIRI.cjs → chunk-BOPWPSHS.cjs} +17 -17
- package/build/cjs/{chunk-5XDYMIRI.cjs.map → chunk-BOPWPSHS.cjs.map} +1 -1
- package/build/cjs/{chunk-XA3S7YAO.cjs → chunk-E5OKIBYJ.cjs} +145 -317
- package/build/cjs/chunk-E5OKIBYJ.cjs.map +1 -0
- package/build/cjs/{chunk-TIFUKHW7.cjs → chunk-ESXB4FJ3.cjs} +3 -3
- package/build/cjs/chunk-ESXB4FJ3.cjs.map +1 -0
- package/build/cjs/chunk-GUV4HDHF.cjs +11 -0
- package/build/cjs/{chunk-F2WUXH2W.cjs.map → chunk-GUV4HDHF.cjs.map} +1 -1
- package/build/cjs/{chunk-MZPKV7JC.cjs → chunk-HN6TTUZV.cjs} +4 -4
- package/build/cjs/{chunk-MZPKV7JC.cjs.map → chunk-HN6TTUZV.cjs.map} +1 -1
- package/build/cjs/chunk-HY74JMBD.cjs +11 -0
- package/build/cjs/{chunk-XBIJFLHM.cjs.map → chunk-HY74JMBD.cjs.map} +1 -1
- package/build/cjs/{chunk-LBWASTWS.cjs → chunk-KPLJJZUF.cjs} +12 -12
- package/build/cjs/{chunk-LBWASTWS.cjs.map → chunk-KPLJJZUF.cjs.map} +1 -1
- package/build/cjs/{chunk-ZGW2CPEY.cjs → chunk-MXHPDZRJ.cjs} +11 -11
- package/build/cjs/{chunk-ZGW2CPEY.cjs.map → chunk-MXHPDZRJ.cjs.map} +1 -1
- package/build/cjs/chunk-NE7GRF7G.cjs +366 -0
- package/build/cjs/chunk-NE7GRF7G.cjs.map +1 -0
- package/build/cjs/chunk-OXPFQGCX.cjs +11 -0
- package/build/cjs/{chunk-JOVWU475.cjs.map → chunk-OXPFQGCX.cjs.map} +1 -1
- package/build/cjs/chunk-QKRCTJ73.cjs +11 -0
- package/build/cjs/{chunk-DUQXYBH2.cjs.map → chunk-QKRCTJ73.cjs.map} +1 -1
- package/build/cjs/{chunk-RHIG474S.cjs → chunk-SUQDMDNS.cjs} +4 -4
- package/build/cjs/{chunk-RHIG474S.cjs.map → chunk-SUQDMDNS.cjs.map} +1 -1
- package/build/cjs/{chunk-7NQZT4VM.cjs → chunk-U7OJ52TT.cjs} +4 -4
- package/build/cjs/{chunk-7NQZT4VM.cjs.map → chunk-U7OJ52TT.cjs.map} +1 -1
- package/build/cjs/{chunk-FIM67ZE2.cjs → chunk-VEICVFRI.cjs} +51 -51
- package/build/cjs/{chunk-FIM67ZE2.cjs.map → chunk-VEICVFRI.cjs.map} +1 -1
- package/build/cjs/chunk-WCXGGFZ6.cjs +11 -0
- package/build/cjs/{chunk-VA2HOEKY.cjs.map → chunk-WCXGGFZ6.cjs.map} +1 -1
- package/build/cjs/{chunk-53QFFROW.cjs → chunk-XARSK3Q7.cjs} +4 -4
- package/build/cjs/{chunk-53QFFROW.cjs.map → chunk-XARSK3Q7.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +8 -8
- package/build/cjs/public/experimental/action-form.css +34 -38
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/document-viewer.cjs +4 -4
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +17 -17
- package/build/cjs/public/experimental/filter-list.css +34 -38
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +12 -12
- package/build/cjs/public/experimental/object-table.css +34 -38
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +51 -51
- package/build/cjs/public/experimental.css +34 -38
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/shared/calendar/DateCalendar.js +27 -4
- package/build/esm/shared/calendar/DateCalendar.js.map +1 -1
- package/build/esm/shared/calendar/DatePicker.js +4 -17
- package/build/esm/shared/calendar/DatePicker.js.map +1 -1
- package/build/esm/shared/calendar/DatePicker.module.css +0 -5
- package/build/esm/shared/calendar/DateRangePicker.js +4 -2
- package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/esm/shared/calendar/TimePicker.js +24 -45
- package/build/esm/shared/calendar/TimePicker.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/shared/calendar/DateCalendar.d.ts +2 -2
- package/build/types/shared/calendar/DateCalendar.d.ts.map +1 -1
- package/build/types/shared/calendar/DatePicker.d.ts.map +1 -1
- package/build/types/shared/calendar/TimePicker.d.ts.map +1 -1
- package/package.json +8 -8
- package/build/cjs/DateCalendar-7E5ZCI7U.css.map +0 -1
- package/build/cjs/DateRangeCalendar-R3RYMAD4.css.map +0 -1
- package/build/cjs/DateRangeCalendar-TC7G2J2D.cjs +0 -12
- package/build/cjs/chunk-DUQXYBH2.cjs +0 -11
- package/build/cjs/chunk-F2WUXH2W.cjs +0 -11
- package/build/cjs/chunk-JBRNNWYC.cjs +0 -197
- package/build/cjs/chunk-JBRNNWYC.cjs.map +0 -1
- package/build/cjs/chunk-JOVWU475.cjs +0 -11
- package/build/cjs/chunk-TIFUKHW7.cjs.map +0 -1
- package/build/cjs/chunk-VA2HOEKY.cjs +0 -11
- package/build/cjs/chunk-XA3S7YAO.cjs.map +0 -1
- package/build/cjs/chunk-XBIJFLHM.cjs +0 -11
|
@@ -34,67 +34,52 @@ export const TimePicker = /*#__PURE__*/React.memo(function ({
|
|
|
34
34
|
label = "Time"
|
|
35
35
|
}) {
|
|
36
36
|
const valueTimestamp = value?.getTime() ?? null;
|
|
37
|
-
// Keep typed text locally so users can enter temporarily invalid values
|
|
38
|
-
// like "99" or "" without immediately mutating/clamping the parent Date.
|
|
39
|
-
const [internalSegments, setInternalSegments] = useState(() => createInternalSegments(valueTimestamp, segmentsFromTimestamp(valueTimestamp)));
|
|
40
37
|
const valueSegments = useMemo(() => segmentsFromTimestamp(valueTimestamp), [valueTimestamp]);
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
// draftSegments always holds the displayed text. It is reset to
|
|
39
|
+
// valueSegments whenever the controlled value changes, so the parent
|
|
40
|
+
// Date is the source of truth once an edit is committed or discarded.
|
|
41
|
+
const [draftSegments, setDraftSegments] = useState(valueSegments);
|
|
42
|
+
const [prevSegments, setPrevSegments] = useState(valueSegments);
|
|
43
|
+
if (prevSegments.hours !== valueSegments.hours || prevSegments.minutes !== valueSegments.minutes) {
|
|
44
|
+
setPrevSegments(valueSegments);
|
|
45
|
+
setDraftSegments(valueSegments);
|
|
46
|
+
}
|
|
47
|
+
const hourText = draftSegments.hours;
|
|
48
|
+
const minuteText = draftSegments.minutes;
|
|
48
49
|
const hourInvalid = isSegmentInvalid(hourText, "hours");
|
|
49
50
|
const minuteInvalid = isSegmentInvalid(minuteText, "minutes");
|
|
51
|
+
const handleSegmentChange = useCallback((segment, nextText) => {
|
|
52
|
+
setDraftSegments(prev => replaceSegmentText(prev, {
|
|
53
|
+
segment,
|
|
54
|
+
nextText
|
|
55
|
+
}));
|
|
56
|
+
}, []);
|
|
50
57
|
const emitChange = useCallback((hours, minutes) => {
|
|
51
58
|
const nextDate = value != null ? new Date(value.getTime()) : new Date();
|
|
52
59
|
nextDate.setHours(hours, minutes, 0, 0);
|
|
53
60
|
onChange?.(nextDate);
|
|
54
61
|
}, [onChange, value]);
|
|
55
|
-
const handleSegmentChange = useCallback((segment, nextText) => {
|
|
56
|
-
setInternalSegments({
|
|
57
|
-
valueTimestamp,
|
|
58
|
-
...replaceSegmentText({
|
|
59
|
-
hours: hourText,
|
|
60
|
-
minutes: minuteText
|
|
61
|
-
}, {
|
|
62
|
-
segment,
|
|
63
|
-
nextText
|
|
64
|
-
})
|
|
65
|
-
});
|
|
66
|
-
}, [hourText, minuteText, valueTimestamp]);
|
|
67
62
|
const handleSegmentBlur = useCallback((segment, text) => {
|
|
68
63
|
const parsedSegment = parseNumber(text);
|
|
69
64
|
if (parsedSegment == null) {
|
|
70
65
|
// Non-numeric text cannot be converted into a valid time segment, so
|
|
71
|
-
// restore the
|
|
72
|
-
|
|
66
|
+
// restore the controlled value instead of emitting an arbitrary Date.
|
|
67
|
+
setDraftSegments(valueSegments);
|
|
73
68
|
return;
|
|
74
69
|
}
|
|
75
70
|
const clampedSegment = clampSegment(parsedSegment, segment);
|
|
76
|
-
|
|
77
|
-
hours: hourText,
|
|
78
|
-
minutes: minuteText
|
|
79
|
-
}, {
|
|
71
|
+
setDraftSegments(prev => replaceSegmentText(prev, {
|
|
80
72
|
segment,
|
|
81
73
|
nextText: formatSegment(clampedSegment, segment)
|
|
82
|
-
});
|
|
83
|
-
// Only the blurred segment should commit. If the other segment is
|
|
84
|
-
// currently invalid, preserve the committed value for that segment.
|
|
85
|
-
const nextHours = parseSegment(nextSegments.hours, "hours") ?? Number(valueSegments.hours);
|
|
86
|
-
const nextMinutes = parseSegment(nextSegments.minutes, "minutes") ?? Number(valueSegments.minutes);
|
|
87
|
-
setInternalSegments({
|
|
88
|
-
valueTimestamp,
|
|
89
|
-
hours: formatSegment(nextHours, "hours"),
|
|
90
|
-
minutes: formatSegment(nextMinutes, "minutes")
|
|
91
|
-
});
|
|
74
|
+
}));
|
|
92
75
|
const currentHours = Number(valueSegments.hours);
|
|
93
76
|
const currentMinutes = Number(valueSegments.minutes);
|
|
77
|
+
const nextHours = segment === "hours" ? clampedSegment : currentHours;
|
|
78
|
+
const nextMinutes = segment === "minutes" ? clampedSegment : currentMinutes;
|
|
94
79
|
if (nextHours !== currentHours || nextMinutes !== currentMinutes) {
|
|
95
80
|
emitChange(nextHours, nextMinutes);
|
|
96
81
|
}
|
|
97
|
-
}, [emitChange,
|
|
82
|
+
}, [emitChange, valueSegments]);
|
|
98
83
|
const handleHourChange = useCallback(nextText => handleSegmentChange("hours", nextText), [handleSegmentChange]);
|
|
99
84
|
const handleMinuteChange = useCallback(nextText => handleSegmentChange("minutes", nextText), [handleSegmentChange]);
|
|
100
85
|
const handleHourBlur = useCallback(() => handleSegmentBlur("hours", hourText), [handleSegmentBlur, hourText]);
|
|
@@ -128,12 +113,6 @@ export const TimePicker = /*#__PURE__*/React.memo(function ({
|
|
|
128
113
|
"aria-invalid": minuteInvalid || undefined
|
|
129
114
|
}));
|
|
130
115
|
});
|
|
131
|
-
function createInternalSegments(valueTimestamp, segments) {
|
|
132
|
-
return {
|
|
133
|
-
valueTimestamp,
|
|
134
|
-
...segments
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
116
|
function replaceSegmentText(segments, {
|
|
138
117
|
segment,
|
|
139
118
|
nextText
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePicker.js","names":["Input","React","useCallback","useMemo","useState","styles","NUMERIC_INPUT_PATTERN","SEGMENT_LIMITS","hours","min","max","minutes","TimePicker","memo","value","onChange","label","valueTimestamp","getTime","internalSegments","setInternalSegments","createInternalSegments","segmentsFromTimestamp","valueSegments","activeSegments","hourText","minuteText","hourInvalid","isSegmentInvalid","minuteInvalid","emitChange","nextDate","Date","setHours","handleSegmentChange","segment","nextText","replaceSegmentText","handleSegmentBlur","text","parsedSegment","parseNumber","clampedSegment","clampSegment","nextSegments","formatSegment","nextHours","parseSegment","Number","nextMinutes","currentHours","currentMinutes","handleHourChange","handleMinuteChange","handleHourBlur","handleMinuteBlur","createElement","className","osdkTimePickerRoot","role","type","inputMode","pattern","onValueChange","onBlur","osdkTimePickerInput","undefined","osdkTimePickerSeparator","segments","getHours","getMinutes","String","padStart","test","parsed","isNaN","Math"],"sources":["TimePicker.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n value: Date | null;\n onChange?: (newTime: Date) => void;\n label?: string;\n}\n\ntype TimeSegment = \"hours\" | \"minutes\";\ntype TimeSegments = Record<TimeSegment, string>;\n\ninterface InternalSegments extends TimeSegments {\n valueTimestamp: number | null;\n}\n\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\n\nconst SEGMENT_LIMITS: Record<TimeSegment, { min: number; max: number }> = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n} as const;\n\nexport const TimePicker: React.NamedExoticComponent<TimePickerProps> = React\n .memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\",\n }: TimePickerProps): React.ReactElement {\n const valueTimestamp = value?.getTime() ?? null;\n // Keep typed text locally so users can enter temporarily invalid values\n // like \"99\" or \"\" without immediately mutating/clamping the parent Date.\n const [internalSegments, setInternalSegments] = useState<InternalSegments>(\n () =>\n createInternalSegments(\n valueTimestamp,\n segmentsFromTimestamp(valueTimestamp),\n ),\n );\n const valueSegments = useMemo(\n () => segmentsFromTimestamp(valueTimestamp),\n [valueTimestamp],\n );\n\n // Track which external value this internal text was derived from. If the\n // parent commits a different Date, ignore stale internal text and render\n // from the new value instead.\n const activeSegments = internalSegments.valueTimestamp === valueTimestamp\n ? internalSegments\n : createInternalSegments(valueTimestamp, valueSegments);\n const hourText = activeSegments.hours;\n const minuteText = activeSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n\n const emitChange = useCallback(\n (hours: number, minutes: number) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n },\n [onChange, value],\n );\n\n const handleSegmentChange = useCallback(\n (segment: TimeSegment, nextText: string) => {\n setInternalSegments({\n valueTimestamp,\n ...replaceSegmentText(\n { hours: hourText, minutes: minuteText },\n { segment, nextText },\n ),\n });\n },\n [hourText, minuteText, valueTimestamp],\n );\n\n const handleSegmentBlur = useCallback(\n (segment: TimeSegment, text: string) => {\n const parsedSegment = parseNumber(text);\n if (parsedSegment == null) {\n // Non-numeric text cannot be converted into a valid time segment, so\n // restore the displayed value instead of emitting an arbitrary Date.\n setInternalSegments(\n createInternalSegments(valueTimestamp, valueSegments),\n );\n return;\n }\n\n const clampedSegment = clampSegment(parsedSegment, segment);\n const nextSegments = replaceSegmentText(\n { hours: hourText, minutes: minuteText },\n { segment, nextText: formatSegment(clampedSegment, segment) },\n );\n // Only the blurred segment should commit. If the other segment is\n // currently invalid, preserve the committed value for that segment.\n const nextHours = parseSegment(nextSegments.hours, \"hours\")\n ?? Number(valueSegments.hours);\n const nextMinutes = parseSegment(nextSegments.minutes, \"minutes\")\n ?? Number(valueSegments.minutes);\n\n setInternalSegments({\n valueTimestamp,\n hours: formatSegment(nextHours, \"hours\"),\n minutes: formatSegment(nextMinutes, \"minutes\"),\n });\n\n const currentHours = Number(valueSegments.hours);\n const currentMinutes = Number(valueSegments.minutes);\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n },\n [\n emitChange,\n hourText,\n minuteText,\n valueTimestamp,\n valueSegments,\n ],\n );\n\n const handleHourChange = useCallback(\n (nextText: string) => handleSegmentChange(\"hours\", nextText),\n [handleSegmentChange],\n );\n const handleMinuteChange = useCallback(\n (nextText: string) => handleSegmentChange(\"minutes\", nextText),\n [handleSegmentChange],\n );\n const handleHourBlur = useCallback(\n () => handleSegmentBlur(\"hours\", hourText),\n [handleSegmentBlur, hourText],\n );\n const handleMinuteBlur = useCallback(\n () => handleSegmentBlur(\"minutes\", minuteText),\n [handleSegmentBlur, minuteText],\n );\n\n return (\n <div\n className={styles.osdkTimePickerRoot}\n role=\"group\"\n aria-label={label}\n >\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={hourText}\n onValueChange={handleHourChange}\n onBlur={handleHourBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} hours`}\n aria-invalid={hourInvalid || undefined}\n />\n <span className={styles.osdkTimePickerSeparator} aria-hidden=\"true\">\n :\n </span>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={minuteText}\n onValueChange={handleMinuteChange}\n onBlur={handleMinuteBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} minutes`}\n aria-invalid={minuteInvalid || undefined}\n />\n </div>\n );\n });\n\nfunction createInternalSegments(\n valueTimestamp: number | null,\n segments: TimeSegments,\n): InternalSegments {\n return { valueTimestamp, ...segments };\n}\n\nfunction replaceSegmentText(\n segments: TimeSegments,\n {\n segment,\n nextText,\n }: {\n segment: TimeSegment;\n nextText: string;\n },\n): TimeSegments {\n return {\n ...segments,\n [segment]: nextText,\n };\n}\n\nfunction segmentsFromTimestamp(valueTimestamp: number | null): TimeSegments {\n if (valueTimestamp == null) {\n return {\n hours: formatSegment(0, \"hours\"),\n minutes: formatSegment(0, \"minutes\"),\n };\n }\n const value = new Date(valueTimestamp);\n return {\n hours: formatSegment(value.getHours(), \"hours\"),\n minutes: formatSegment(value.getMinutes(), \"minutes\"),\n };\n}\n\nfunction formatSegment(value: number, segment: TimeSegment): string {\n // Hours stay compact while minutes stay two digits so the HH:mm control\n // remains easy to scan.\n return segment === \"hours\" ? String(value) : String(value).padStart(2, \"0\");\n}\n\nfunction parseNumber(text: string): number | undefined {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\nfunction parseSegment(\n text: string,\n segment: TimeSegment,\n): number | undefined {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const { min, max } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\n\nfunction isSegmentInvalid(text: string, segment: TimeSegment): boolean {\n return parseSegment(text, segment) == null;\n}\n\nfunction clampSegment(value: number, segment: TimeSegment): number {\n const { min, max } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TimePicker.js","names":["Input","React","useCallback","useMemo","useState","styles","NUMERIC_INPUT_PATTERN","SEGMENT_LIMITS","hours","min","max","minutes","TimePicker","memo","value","onChange","label","valueTimestamp","getTime","valueSegments","segmentsFromTimestamp","draftSegments","setDraftSegments","prevSegments","setPrevSegments","hourText","minuteText","hourInvalid","isSegmentInvalid","minuteInvalid","handleSegmentChange","segment","nextText","prev","replaceSegmentText","emitChange","nextDate","Date","setHours","handleSegmentBlur","text","parsedSegment","parseNumber","clampedSegment","clampSegment","formatSegment","currentHours","Number","currentMinutes","nextHours","nextMinutes","handleHourChange","handleMinuteChange","handleHourBlur","handleMinuteBlur","createElement","className","osdkTimePickerRoot","role","type","inputMode","pattern","onValueChange","onBlur","osdkTimePickerInput","undefined","osdkTimePickerSeparator","segments","getHours","getMinutes","String","padStart","test","parsed","isNaN","parseSegment","Math"],"sources":["TimePicker.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n value: Date | null;\n onChange?: (newTime: Date) => void;\n label?: string;\n}\n\ntype TimeSegment = \"hours\" | \"minutes\";\ntype TimeSegments = Record<TimeSegment, string>;\n\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\n\nconst SEGMENT_LIMITS: Record<TimeSegment, { min: number; max: number }> = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n} as const;\n\nexport const TimePicker: React.NamedExoticComponent<TimePickerProps> = React\n .memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\",\n }: TimePickerProps): React.ReactElement {\n const valueTimestamp = value?.getTime() ?? null;\n const valueSegments = useMemo(\n () => segmentsFromTimestamp(valueTimestamp),\n [valueTimestamp],\n );\n // draftSegments always holds the displayed text. It is reset to\n // valueSegments whenever the controlled value changes, so the parent\n // Date is the source of truth once an edit is committed or discarded.\n const [draftSegments, setDraftSegments] = useState(valueSegments);\n const [prevSegments, setPrevSegments] = useState(valueSegments);\n if (\n prevSegments.hours !== valueSegments.hours\n || prevSegments.minutes !== valueSegments.minutes\n ) {\n setPrevSegments(valueSegments);\n setDraftSegments(valueSegments);\n }\n\n const hourText = draftSegments.hours;\n const minuteText = draftSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n\n const handleSegmentChange = useCallback(\n (segment: TimeSegment, nextText: string) => {\n setDraftSegments((prev) =>\n replaceSegmentText(prev, { segment, nextText })\n );\n },\n [],\n );\n\n const emitChange = useCallback(\n (hours: number, minutes: number) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n },\n [onChange, value],\n );\n\n const handleSegmentBlur = useCallback(\n (segment: TimeSegment, text: string) => {\n const parsedSegment = parseNumber(text);\n if (parsedSegment == null) {\n // Non-numeric text cannot be converted into a valid time segment, so\n // restore the controlled value instead of emitting an arbitrary Date.\n setDraftSegments(valueSegments);\n return;\n }\n\n const clampedSegment = clampSegment(parsedSegment, segment);\n setDraftSegments((prev) =>\n replaceSegmentText(prev, {\n segment,\n nextText: formatSegment(clampedSegment, segment),\n })\n );\n\n const currentHours = Number(valueSegments.hours);\n const currentMinutes = Number(valueSegments.minutes);\n const nextHours = segment === \"hours\" ? clampedSegment : currentHours;\n const nextMinutes = segment === \"minutes\"\n ? clampedSegment\n : currentMinutes;\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n },\n [emitChange, valueSegments],\n );\n\n const handleHourChange = useCallback(\n (nextText: string) => handleSegmentChange(\"hours\", nextText),\n [handleSegmentChange],\n );\n const handleMinuteChange = useCallback(\n (nextText: string) => handleSegmentChange(\"minutes\", nextText),\n [handleSegmentChange],\n );\n const handleHourBlur = useCallback(\n () => handleSegmentBlur(\"hours\", hourText),\n [handleSegmentBlur, hourText],\n );\n const handleMinuteBlur = useCallback(\n () => handleSegmentBlur(\"minutes\", minuteText),\n [handleSegmentBlur, minuteText],\n );\n\n return (\n <div\n className={styles.osdkTimePickerRoot}\n role=\"group\"\n aria-label={label}\n >\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={hourText}\n onValueChange={handleHourChange}\n onBlur={handleHourBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} hours`}\n aria-invalid={hourInvalid || undefined}\n />\n <span className={styles.osdkTimePickerSeparator} aria-hidden=\"true\">\n :\n </span>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={minuteText}\n onValueChange={handleMinuteChange}\n onBlur={handleMinuteBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} minutes`}\n aria-invalid={minuteInvalid || undefined}\n />\n </div>\n );\n });\n\nfunction replaceSegmentText(\n segments: TimeSegments,\n {\n segment,\n nextText,\n }: {\n segment: TimeSegment;\n nextText: string;\n },\n): TimeSegments {\n return {\n ...segments,\n [segment]: nextText,\n };\n}\n\nfunction segmentsFromTimestamp(valueTimestamp: number | null): TimeSegments {\n if (valueTimestamp == null) {\n return {\n hours: formatSegment(0, \"hours\"),\n minutes: formatSegment(0, \"minutes\"),\n };\n }\n const value = new Date(valueTimestamp);\n return {\n hours: formatSegment(value.getHours(), \"hours\"),\n minutes: formatSegment(value.getMinutes(), \"minutes\"),\n };\n}\n\nfunction formatSegment(value: number, segment: TimeSegment): string {\n // Hours stay compact while minutes stay two digits so the HH:mm control\n // remains easy to scan.\n return segment === \"hours\" ? String(value) : String(value).padStart(2, \"0\");\n}\n\nfunction parseNumber(text: string): number | undefined {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\nfunction parseSegment(text: string, segment: TimeSegment): number | undefined {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const { min, max } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\n\nfunction isSegmentInvalid(text: string, segment: TimeSegment): boolean {\n return parseSegment(text, segment) == null;\n}\n\nfunction clampSegment(value: number, segment: TimeSegment): number {\n const { min, max } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,KAAK,QAAQ,sBAAsB;AAC5C,OAAOC,KAAK,IAAIC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAC7D,OAAOC,MAAM,MAAM,yBAAyB;AAW5C,MAAMC,qBAAqB,GAAG,QAAQ;AAEtC,MAAMC,cAAiE,GAAG;EACxEC,KAAK,EAAE;IAAEC,GAAG,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAG,CAAC;EAC1BC,OAAO,EAAE;IAAEF,GAAG,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAG;AAC7B,CAAU;AAEV,OAAO,MAAME,UAAuD,gBAAGX,KAAK,CACzEY,IAAI,CAAC,UAAsB;EAC1BC,KAAK;EACLC,QAAQ;EACRC,KAAK,GAAG;AACO,CAAC,EAAsB;EACtC,MAAMC,cAAc,GAAGH,KAAK,EAAEI,OAAO,CAAC,CAAC,IAAI,IAAI;EAC/C,MAAMC,aAAa,GAAGhB,OAAO,CAC3B,MAAMiB,qBAAqB,CAACH,cAAc,CAAC,EAC3C,CAACA,cAAc,CACjB,CAAC;EACD;EACA;EACA;EACA,MAAM,CAACI,aAAa,EAAEC,gBAAgB,CAAC,GAAGlB,QAAQ,CAACe,aAAa,CAAC;EACjE,MAAM,CAACI,YAAY,EAAEC,eAAe,CAAC,GAAGpB,QAAQ,CAACe,aAAa,CAAC;EAC/D,IACEI,YAAY,CAACf,KAAK,KAAKW,aAAa,CAACX,KAAK,IACvCe,YAAY,CAACZ,OAAO,KAAKQ,aAAa,CAACR,OAAO,EACjD;IACAa,eAAe,CAACL,aAAa,CAAC;IAC9BG,gBAAgB,CAACH,aAAa,CAAC;EACjC;EAEA,MAAMM,QAAQ,GAAGJ,aAAa,CAACb,KAAK;EACpC,MAAMkB,UAAU,GAAGL,aAAa,CAACV,OAAO;EACxC,MAAMgB,WAAW,GAAGC,gBAAgB,CAACH,QAAQ,EAAE,OAAO,CAAC;EACvD,MAAMI,aAAa,GAAGD,gBAAgB,CAACF,UAAU,EAAE,SAAS,CAAC;EAE7D,MAAMI,mBAAmB,GAAG5B,WAAW,CACrC,CAAC6B,OAAoB,EAAEC,QAAgB,KAAK;IAC1CV,gBAAgB,CAAEW,IAAI,IACpBC,kBAAkB,CAACD,IAAI,EAAE;MAAEF,OAAO;MAAEC;IAAS,CAAC,CAChD,CAAC;EACH,CAAC,EACD,EACF,CAAC;EAED,MAAMG,UAAU,GAAGjC,WAAW,CAC5B,CAACM,KAAa,EAAEG,OAAe,KAAK;IAClC,MAAMyB,QAAQ,GAAGtB,KAAK,IAAI,IAAI,GAAG,IAAIuB,IAAI,CAACvB,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAImB,IAAI,CAAC,CAAC;IACvED,QAAQ,CAACE,QAAQ,CAAC9B,KAAK,EAAEG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvCI,QAAQ,GAAGqB,QAAQ,CAAC;EACtB,CAAC,EACD,CAACrB,QAAQ,EAAED,KAAK,CAClB,CAAC;EAED,MAAMyB,iBAAiB,GAAGrC,WAAW,CACnC,CAAC6B,OAAoB,EAAES,IAAY,KAAK;IACtC,MAAMC,aAAa,GAAGC,WAAW,CAACF,IAAI,CAAC;IACvC,IAAIC,aAAa,IAAI,IAAI,EAAE;MACzB;MACA;MACAnB,gBAAgB,CAACH,aAAa,CAAC;MAC/B;IACF;IAEA,MAAMwB,cAAc,GAAGC,YAAY,CAACH,aAAa,EAAEV,OAAO,CAAC;IAC3DT,gBAAgB,CAAEW,IAAI,IACpBC,kBAAkB,CAACD,IAAI,EAAE;MACvBF,OAAO;MACPC,QAAQ,EAAEa,aAAa,CAACF,cAAc,EAAEZ,OAAO;IACjD,CAAC,CACH,CAAC;IAED,MAAMe,YAAY,GAAGC,MAAM,CAAC5B,aAAa,CAACX,KAAK,CAAC;IAChD,MAAMwC,cAAc,GAAGD,MAAM,CAAC5B,aAAa,CAACR,OAAO,CAAC;IACpD,MAAMsC,SAAS,GAAGlB,OAAO,KAAK,OAAO,GAAGY,cAAc,GAAGG,YAAY;IACrE,MAAMI,WAAW,GAAGnB,OAAO,KAAK,SAAS,GACrCY,cAAc,GACdK,cAAc;IAClB,IAAIC,SAAS,KAAKH,YAAY,IAAII,WAAW,KAAKF,cAAc,EAAE;MAChEb,UAAU,CAACc,SAAS,EAAEC,WAAW,CAAC;IACpC;EACF,CAAC,EACD,CAACf,UAAU,EAAEhB,aAAa,CAC5B,CAAC;EAED,MAAMgC,gBAAgB,GAAGjD,WAAW,CACjC8B,QAAgB,IAAKF,mBAAmB,CAAC,OAAO,EAAEE,QAAQ,CAAC,EAC5D,CAACF,mBAAmB,CACtB,CAAC;EACD,MAAMsB,kBAAkB,GAAGlD,WAAW,CACnC8B,QAAgB,IAAKF,mBAAmB,CAAC,SAAS,EAAEE,QAAQ,CAAC,EAC9D,CAACF,mBAAmB,CACtB,CAAC;EACD,MAAMuB,cAAc,GAAGnD,WAAW,CAChC,MAAMqC,iBAAiB,CAAC,OAAO,EAAEd,QAAQ,CAAC,EAC1C,CAACc,iBAAiB,EAAEd,QAAQ,CAC9B,CAAC;EACD,MAAM6B,gBAAgB,GAAGpD,WAAW,CAClC,MAAMqC,iBAAiB,CAAC,SAAS,EAAEb,UAAU,CAAC,EAC9C,CAACa,iBAAiB,EAAEb,UAAU,CAChC,CAAC;EAED,oBACEzB,KAAA,CAAAsD,aAAA;IACEC,SAAS,EAAEnD,MAAM,CAACoD,kBAAmB;IACrCC,IAAI,EAAC,OAAO;IACZ,cAAY1C;EAAM,gBAElBf,KAAA,CAAAsD,aAAA,CAACvD,KAAK;IACJ2D,IAAI,EAAC,MAAM;IACXC,SAAS,EAAC,SAAS;IACnBC,OAAO,EAAEvD,qBAAsB;IAC/BQ,KAAK,EAAEW,QAAS;IAChBqC,aAAa,EAAEX,gBAAiB;IAChCY,MAAM,EAAEV,cAAe;IACvBG,SAAS,EAAEnD,MAAM,CAAC2D,mBAAoB;IACtC,cAAY,GAAGhD,KAAK,QAAS;IAC7B,gBAAcW,WAAW,IAAIsC;EAAU,CACxC,CAAC,eACFhE,KAAA,CAAAsD,aAAA;IAAMC,SAAS,EAAEnD,MAAM,CAAC6D,uBAAwB;IAAC,eAAY;EAAM,GAAC,GAE9D,CAAC,eACPjE,KAAA,CAAAsD,aAAA,CAACvD,KAAK;IACJ2D,IAAI,EAAC,MAAM;IACXC,SAAS,EAAC,SAAS;IACnBC,OAAO,EAAEvD,qBAAsB;IAC/BQ,KAAK,EAAEY,UAAW;IAClBoC,aAAa,EAAEV,kBAAmB;IAClCW,MAAM,EAAET,gBAAiB;IACzBE,SAAS,EAAEnD,MAAM,CAAC2D,mBAAoB;IACtC,cAAY,GAAGhD,KAAK,UAAW;IAC/B,gBAAca,aAAa,IAAIoC;EAAU,CAC1C,CACE,CAAC;AAEV,CAAC,CAAC;AAEJ,SAAS/B,kBAAkBA,CACzBiC,QAAsB,EACtB;EACEpC,OAAO;EACPC;AAIF,CAAC,EACa;EACd,OAAO;IACL,GAAGmC,QAAQ;IACX,CAACpC,OAAO,GAAGC;EACb,CAAC;AACH;AAEA,SAASZ,qBAAqBA,CAACH,cAA6B,EAAgB;EAC1E,IAAIA,cAAc,IAAI,IAAI,EAAE;IAC1B,OAAO;MACLT,KAAK,EAAEqC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;MAChClC,OAAO,EAAEkC,aAAa,CAAC,CAAC,EAAE,SAAS;IACrC,CAAC;EACH;EACA,MAAM/B,KAAK,GAAG,IAAIuB,IAAI,CAACpB,cAAc,CAAC;EACtC,OAAO;IACLT,KAAK,EAAEqC,aAAa,CAAC/B,KAAK,CAACsD,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAC/CzD,OAAO,EAAEkC,aAAa,CAAC/B,KAAK,CAACuD,UAAU,CAAC,CAAC,EAAE,SAAS;EACtD,CAAC;AACH;AAEA,SAASxB,aAAaA,CAAC/B,KAAa,EAAEiB,OAAoB,EAAU;EAClE;EACA;EACA,OAAOA,OAAO,KAAK,OAAO,GAAGuC,MAAM,CAACxD,KAAK,CAAC,GAAGwD,MAAM,CAACxD,KAAK,CAAC,CAACyD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7E;AAEA,SAAS7B,WAAWA,CAACF,IAAY,EAAsB;EACrD,IAAI,CAAC,WAAW,CAACgC,IAAI,CAAChC,IAAI,CAAC,EAAE;IAC3B,OAAOyB,SAAS;EAClB;EACA,MAAMQ,MAAM,GAAG1B,MAAM,CAACP,IAAI,CAAC;EAC3B,OAAOO,MAAM,CAAC2B,KAAK,CAACD,MAAM,CAAC,GAAGR,SAAS,GAAGQ,MAAM;AAClD;AAEA,SAASE,YAAYA,CAACnC,IAAY,EAAET,OAAoB,EAAsB;EAC5E,MAAM0C,MAAM,GAAG/B,WAAW,CAACF,IAAI,CAAC;EAChC,IAAIiC,MAAM,IAAI,IAAI,EAAE;IAClB,OAAOR,SAAS;EAClB;EACA,MAAM;IAAExD,GAAG;IAAEC;EAAI,CAAC,GAAGH,cAAc,CAACwB,OAAO,CAAC;EAC5C,OAAO0C,MAAM,IAAIhE,GAAG,IAAIgE,MAAM,IAAI/D,GAAG,GAAG+D,MAAM,GAAGR,SAAS;AAC5D;AAEA,SAASrC,gBAAgBA,CAACY,IAAY,EAAET,OAAoB,EAAW;EACrE,OAAO4C,YAAY,CAACnC,IAAI,EAAET,OAAO,CAAC,IAAI,IAAI;AAC5C;AAEA,SAASa,YAAYA,CAAC9B,KAAa,EAAEiB,OAAoB,EAAU;EACjE,MAAM;IAAEtB,GAAG;IAAEC;EAAI,CAAC,GAAGH,cAAc,CAACwB,OAAO,CAAC;EAC5C,OAAO6C,IAAI,CAACnE,GAAG,CAACmE,IAAI,CAAClE,GAAG,CAACI,KAAK,EAAEL,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C","ignoreList":[]}
|
package/build/browser/styles.css
CHANGED
|
@@ -9912,11 +9912,6 @@
|
|
|
9912
9912
|
outline: none;
|
|
9913
9913
|
}
|
|
9914
9914
|
|
|
9915
|
-
.DatePicker-module__osdkDatetimeTimeFooter___BJGF9UWo {
|
|
9916
|
-
display: flex;
|
|
9917
|
-
justify-content: center;
|
|
9918
|
-
}
|
|
9919
|
-
|
|
9920
9915
|
|
|
9921
9916
|
/* shared/calendar/DatePickerCommon.module.css */
|
|
9922
9917
|
/* Bare input inside a date picker wrapper */
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.21.
|
|
17
|
+
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.21.1-main-8965bdf6a0c540d35214e7ff7328defbf04cf4c8"}`;
|
|
18
18
|
export function componentUserAgent(componentName) {
|
|
19
19
|
return `${PACKAGE_USER_AGENT}/${componentName}`;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,
|
|
1
|
+
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,iFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var chunkNE7GRF7G_cjs = require('./chunk-NE7GRF7G.cjs');
|
|
6
6
|
require('./chunk-MD4KDE44.cjs');
|
|
7
7
|
require('./chunk-Q2W6GYRK.cjs');
|
|
8
8
|
|
|
@@ -10,15 +10,15 @@ require('./chunk-Q2W6GYRK.cjs');
|
|
|
10
10
|
|
|
11
11
|
Object.defineProperty(exports, "CALENDAR_COMPONENTS", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkNE7GRF7G_cjs.CALENDAR_COMPONENTS; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "CLASS_NAMES", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkNE7GRF7G_cjs.CLASS_NAMES; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "default", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkNE7GRF7G_cjs.DateCalendar; }
|
|
22
22
|
});
|
|
23
|
-
//# sourceMappingURL=DateCalendar-
|
|
24
|
-
//# sourceMappingURL=DateCalendar-
|
|
23
|
+
//# sourceMappingURL=DateCalendar-PZO23MYM.cjs.map
|
|
24
|
+
//# sourceMappingURL=DateCalendar-PZO23MYM.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-PZO23MYM.cjs"}
|
|
@@ -275,4 +275,38 @@
|
|
|
275
275
|
margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
|
|
276
276
|
border-block-start: var(--osdk-time-picker-border-top);
|
|
277
277
|
}
|
|
278
|
-
|
|
278
|
+
|
|
279
|
+
/* src/shared/calendar/TimePicker.module.css */
|
|
280
|
+
.osdkTimePickerRoot {
|
|
281
|
+
display: inline-flex;
|
|
282
|
+
align-items: center;
|
|
283
|
+
gap: var(--osdk-surface-spacing);
|
|
284
|
+
}
|
|
285
|
+
.osdkTimePickerInput {
|
|
286
|
+
width: calc(var(--osdk-surface-spacing) * 10);
|
|
287
|
+
font-family: var(--osdk-time-picker-input-font-family);
|
|
288
|
+
font-size: var(--osdk-time-picker-input-font-size);
|
|
289
|
+
line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
|
|
290
|
+
text-align: center;
|
|
291
|
+
padding: var(--osdk-time-picker-input-padding);
|
|
292
|
+
border: var(--osdk-time-picker-input-border);
|
|
293
|
+
border-radius: var(--osdk-time-picker-input-border-radius);
|
|
294
|
+
background: var(--osdk-time-picker-input-bg);
|
|
295
|
+
color: var(--osdk-time-picker-input-color);
|
|
296
|
+
box-sizing: border-box;
|
|
297
|
+
&:focus {
|
|
298
|
+
border-color: var(--osdk-time-picker-input-border-color-focus);
|
|
299
|
+
outline: var(--osdk-time-picker-input-focus-outline);
|
|
300
|
+
outline-offset: var(--osdk-time-picker-input-focus-offset);
|
|
301
|
+
}
|
|
302
|
+
&[aria-invalid] {
|
|
303
|
+
border-color: var(--osdk-input-border-color-error);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
.osdkTimePickerSeparator {
|
|
307
|
+
color: var(--osdk-typography-color-muted);
|
|
308
|
+
font-family: var(--osdk-time-picker-input-font-family);
|
|
309
|
+
font-size: var(--osdk-time-picker-input-font-size);
|
|
310
|
+
line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
|
|
311
|
+
}
|
|
312
|
+
/*# sourceMappingURL=DateCalendar-XTX3RI6O.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/TimePicker.module.css"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.button {\n min-height: var(--osdk-button-min-height);\n padding: calc(var(--osdk-surface-spacing) * 1.5)\n calc(var(--osdk-surface-spacing) * 1.75);\n border: var(--osdk-button-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-button-shadow);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border-color: var(--osdk-button-secondary-border-color);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border-color: var(--osdk-button-primary-border-color);\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n}\n\n.minimalButton {\n background-color: var(--osdk-button-minimal-bg);\n border: var(--osdk-button-minimal-border);\n box-shadow: var(--osdk-button-minimal-shadow);\n color: var(--osdk-button-secondary-minimal-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-active);\n }\n}\n\n.primaryButton.minimalButton {\n color: var(--osdk-button-primary-minimal-color);\n}\n","/* DateCalendar — DayPicker classNames.\n All values reference --osdk-datetime-calendar-* tokens defined in\n react-components-styles/tokens/datetime-picker.css. */\n\n.calendar {\n position: relative;\n width: 100%;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-font-size);\n}\n\n.calendarMonths {\n display: flex;\n gap: var(--osdk-datetime-calendar-months-gap);\n}\n\n.calendarMonthGrid {\n width: 100%;\n border-collapse: collapse;\n}\n\n.calendarWeekday {\n padding: var(--osdk-datetime-calendar-gap);\n font-size: var(--osdk-datetime-calendar-weekday-font-size);\n color: var(--osdk-datetime-calendar-weekday-color);\n text-align: center;\n width: var(--osdk-datetime-calendar-cell-size);\n}\n\n.calendarDay {\n position: relative;\n padding: var(--osdk-datetime-calendar-gap);\n text-align: center;\n}\n\n.calendarDayButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-cell-size);\n height: var(--osdk-datetime-calendar-cell-size);\n border: none;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n background: transparent;\n cursor: pointer;\n font: inherit;\n color: var(--osdk-datetime-calendar-day-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -2px;\n }\n}\n\n/* :not([disabled]) bumps specificity to (0,4,0) — matching rdp's default\n .rdp-button:hover:not([disabled]):not(.rdp-day_selected) rule so our\n styles win by source order. Without this, rdp overrides the selected\n background on hover because we remap day_selected and its :not() always matches. */\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n.calendarDayButton.calendarToday {\n border: var(--osdk-datetime-calendar-today-border);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\n opacity: var(--osdk-datetime-calendar-outside-opacity);\n}\n\n.calendarDayButton.calendarDisabled {\n color: var(--osdk-datetime-calendar-disabled-color);\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/* Range selection styles — shared base for start/end endpoints */\n.calendarRangeEndpoint {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n/* Day buttons are inset by cell padding; paint the range on the table cell too\n so the range spans horizontal gaps while staying the same height as a day. */\n.calendarDay:has(.calendarRangeStart)::before,\n.calendarDay:has(.calendarRangeMiddle)::before,\n.calendarDay:has(.calendarRangeEnd)::before {\n content: \"\";\n position: absolute;\n inset-block: var(--osdk-datetime-calendar-gap);\n background: var(--osdk-datetime-calendar-range-middle-bg);\n pointer-events: none;\n}\n\n.calendarDay:has(.calendarRangeStart)::before {\n inset-inline-start: 50%;\n inset-inline-end: 0;\n}\n\n.calendarDay:has(.calendarRangeMiddle)::before {\n inset-inline: 0;\n}\n\n.calendarDay:has(.calendarRangeEnd)::before {\n inset-inline-start: 0;\n inset-inline-end: 50%;\n}\n\n.calendarDay:has(.calendarRangeStart.calendarRangeEnd)::before {\n content: none;\n}\n\n/* The table cell owns the translucent range fill. Keeping the middle button\n transparent avoids alpha-stacking the same token over itself. */\n.calendarDayButton.calendarRangeMiddle {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n}\n\n.calendarRangeFooter {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: var(--osdk-datetime-calendar-months-gap);\n justify-items: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation — dissolve the nav wrapper so buttons become\n direct flex children of the caption row. This lets order: -1 move\n the prev button before the dropdowns while next stays after. */\n.calendarNav {\n display: contents;\n}\n\n/* Shared nav button base — small, matching dropdown caret scale */\n.calendarNavButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-nav-button-size);\n height: var(--osdk-datetime-calendar-nav-button-size);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-nav-button-border-radius);\n padding: 0;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\n\n &:disabled {\n color: var(--osdk-datetime-calendar-nav-disabled-color);\n cursor: default;\n opacity: 1; /* Override browser default disabled opacity */\n\n &:hover {\n background: transparent;\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -1px;\n }\n}\n\n/* Hide the default SVG chevron icon — Blueprint icons rendered inline instead */\n.calendarChevron {\n display: none;\n}\n\n.calendarNavPrev {\n order: -1;\n}\n\n.calendarMonthCaption {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--osdk-datetime-calendar-nav-button-size);\n}\n\n/* Visually hidden — used for accessibility-only text (caption label, dropdown labels) */\n.calendarVhidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n\n/* Caption dropdowns container */\n.calendarCaptionDropdowns {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-datetime-calendar-caption-gap);\n}\n\n/* Month/year selects — borderless, matching caption text weight */\n.calendarDropdown {\n /* Native selects otherwise reserve room for the longest option, which makes\n the month caret drift away from short month names like \"May\". */\n field-sizing: content;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n color: inherit;\n background: transparent;\n border: none;\n padding: var(--osdk-datetime-calendar-dropdown-padding);\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-dropdown-border-radius);\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: 1px;\n }\n}\n\n\n.calendarTimeFooter {\n display: flex;\n justify-content: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarActionBar {\n display: flex;\n justify-content: space-between;\n gap: var(--osdk-surface-spacing);\n padding-block-start: var(--osdk-time-picker-padding-top);\n padding-inline: var(--osdk-datetime-popover-padding);\n margin-block-start: var(--osdk-time-picker-margin-top);\n margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);\n border-block-start: var(--osdk-time-picker-border-top);\n}\n","/* TimePicker — HH:mm control. Outer layout is owned by the parent. */\n\n.osdkTimePickerRoot {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkTimePickerInput {\n width: calc(var(--osdk-surface-spacing) * 10);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n text-align: center;\n padding: var(--osdk-time-picker-input-padding);\n border: var(--osdk-time-picker-input-border);\n border-radius: var(--osdk-time-picker-input-border-radius);\n background: var(--osdk-time-picker-input-bg);\n color: var(--osdk-time-picker-input-color);\n box-sizing: border-box;\n\n &:focus {\n border-color: var(--osdk-time-picker-input-border-color-focus);\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-time-picker-input-focus-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkTimePickerSeparator {\n color: var(--osdk-typography-color-muted);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkKPLJJZUF_cjs = require('./chunk-KPLJJZUF.cjs');
|
|
4
|
+
require('./chunk-NE7GRF7G.cjs');
|
|
5
|
+
require('./chunk-MD4KDE44.cjs');
|
|
6
|
+
require('./chunk-Q2W6GYRK.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
module.exports = chunkKPLJJZUF_cjs.DateRangeCalendar;
|
|
11
|
+
//# sourceMappingURL=DateRangeCalendar-2MBQAU3Z.cjs.map
|
|
12
|
+
//# sourceMappingURL=DateRangeCalendar-2MBQAU3Z.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-2MBQAU3Z.cjs"}
|
|
@@ -275,4 +275,38 @@
|
|
|
275
275
|
margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
|
|
276
276
|
border-block-start: var(--osdk-time-picker-border-top);
|
|
277
277
|
}
|
|
278
|
-
|
|
278
|
+
|
|
279
|
+
/* src/shared/calendar/TimePicker.module.css */
|
|
280
|
+
.osdkTimePickerRoot {
|
|
281
|
+
display: inline-flex;
|
|
282
|
+
align-items: center;
|
|
283
|
+
gap: var(--osdk-surface-spacing);
|
|
284
|
+
}
|
|
285
|
+
.osdkTimePickerInput {
|
|
286
|
+
width: calc(var(--osdk-surface-spacing) * 10);
|
|
287
|
+
font-family: var(--osdk-time-picker-input-font-family);
|
|
288
|
+
font-size: var(--osdk-time-picker-input-font-size);
|
|
289
|
+
line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
|
|
290
|
+
text-align: center;
|
|
291
|
+
padding: var(--osdk-time-picker-input-padding);
|
|
292
|
+
border: var(--osdk-time-picker-input-border);
|
|
293
|
+
border-radius: var(--osdk-time-picker-input-border-radius);
|
|
294
|
+
background: var(--osdk-time-picker-input-bg);
|
|
295
|
+
color: var(--osdk-time-picker-input-color);
|
|
296
|
+
box-sizing: border-box;
|
|
297
|
+
&:focus {
|
|
298
|
+
border-color: var(--osdk-time-picker-input-border-color-focus);
|
|
299
|
+
outline: var(--osdk-time-picker-input-focus-outline);
|
|
300
|
+
outline-offset: var(--osdk-time-picker-input-focus-offset);
|
|
301
|
+
}
|
|
302
|
+
&[aria-invalid] {
|
|
303
|
+
border-color: var(--osdk-input-border-color-error);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
.osdkTimePickerSeparator {
|
|
307
|
+
color: var(--osdk-typography-color-muted);
|
|
308
|
+
font-family: var(--osdk-time-picker-input-font-family);
|
|
309
|
+
font-size: var(--osdk-time-picker-input-font-size);
|
|
310
|
+
line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
|
|
311
|
+
}
|
|
312
|
+
/*# sourceMappingURL=DateRangeCalendar-R7KHDKJT.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/TimePicker.module.css"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.button {\n min-height: var(--osdk-button-min-height);\n padding: calc(var(--osdk-surface-spacing) * 1.5)\n calc(var(--osdk-surface-spacing) * 1.75);\n border: var(--osdk-button-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-button-shadow);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border-color: var(--osdk-button-secondary-border-color);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border-color: var(--osdk-button-primary-border-color);\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n}\n\n.minimalButton {\n background-color: var(--osdk-button-minimal-bg);\n border: var(--osdk-button-minimal-border);\n box-shadow: var(--osdk-button-minimal-shadow);\n color: var(--osdk-button-secondary-minimal-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-active);\n }\n}\n\n.primaryButton.minimalButton {\n color: var(--osdk-button-primary-minimal-color);\n}\n","/* DateCalendar — DayPicker classNames.\n All values reference --osdk-datetime-calendar-* tokens defined in\n react-components-styles/tokens/datetime-picker.css. */\n\n.calendar {\n position: relative;\n width: 100%;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-font-size);\n}\n\n.calendarMonths {\n display: flex;\n gap: var(--osdk-datetime-calendar-months-gap);\n}\n\n.calendarMonthGrid {\n width: 100%;\n border-collapse: collapse;\n}\n\n.calendarWeekday {\n padding: var(--osdk-datetime-calendar-gap);\n font-size: var(--osdk-datetime-calendar-weekday-font-size);\n color: var(--osdk-datetime-calendar-weekday-color);\n text-align: center;\n width: var(--osdk-datetime-calendar-cell-size);\n}\n\n.calendarDay {\n position: relative;\n padding: var(--osdk-datetime-calendar-gap);\n text-align: center;\n}\n\n.calendarDayButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-cell-size);\n height: var(--osdk-datetime-calendar-cell-size);\n border: none;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n background: transparent;\n cursor: pointer;\n font: inherit;\n color: var(--osdk-datetime-calendar-day-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -2px;\n }\n}\n\n/* :not([disabled]) bumps specificity to (0,4,0) — matching rdp's default\n .rdp-button:hover:not([disabled]):not(.rdp-day_selected) rule so our\n styles win by source order. Without this, rdp overrides the selected\n background on hover because we remap day_selected and its :not() always matches. */\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n.calendarDayButton.calendarToday {\n border: var(--osdk-datetime-calendar-today-border);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\n opacity: var(--osdk-datetime-calendar-outside-opacity);\n}\n\n.calendarDayButton.calendarDisabled {\n color: var(--osdk-datetime-calendar-disabled-color);\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/* Range selection styles — shared base for start/end endpoints */\n.calendarRangeEndpoint {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n/* Day buttons are inset by cell padding; paint the range on the table cell too\n so the range spans horizontal gaps while staying the same height as a day. */\n.calendarDay:has(.calendarRangeStart)::before,\n.calendarDay:has(.calendarRangeMiddle)::before,\n.calendarDay:has(.calendarRangeEnd)::before {\n content: \"\";\n position: absolute;\n inset-block: var(--osdk-datetime-calendar-gap);\n background: var(--osdk-datetime-calendar-range-middle-bg);\n pointer-events: none;\n}\n\n.calendarDay:has(.calendarRangeStart)::before {\n inset-inline-start: 50%;\n inset-inline-end: 0;\n}\n\n.calendarDay:has(.calendarRangeMiddle)::before {\n inset-inline: 0;\n}\n\n.calendarDay:has(.calendarRangeEnd)::before {\n inset-inline-start: 0;\n inset-inline-end: 50%;\n}\n\n.calendarDay:has(.calendarRangeStart.calendarRangeEnd)::before {\n content: none;\n}\n\n/* The table cell owns the translucent range fill. Keeping the middle button\n transparent avoids alpha-stacking the same token over itself. */\n.calendarDayButton.calendarRangeMiddle {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n}\n\n.calendarRangeFooter {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: var(--osdk-datetime-calendar-months-gap);\n justify-items: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation — dissolve the nav wrapper so buttons become\n direct flex children of the caption row. This lets order: -1 move\n the prev button before the dropdowns while next stays after. */\n.calendarNav {\n display: contents;\n}\n\n/* Shared nav button base — small, matching dropdown caret scale */\n.calendarNavButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-nav-button-size);\n height: var(--osdk-datetime-calendar-nav-button-size);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-nav-button-border-radius);\n padding: 0;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\n\n &:disabled {\n color: var(--osdk-datetime-calendar-nav-disabled-color);\n cursor: default;\n opacity: 1; /* Override browser default disabled opacity */\n\n &:hover {\n background: transparent;\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -1px;\n }\n}\n\n/* Hide the default SVG chevron icon — Blueprint icons rendered inline instead */\n.calendarChevron {\n display: none;\n}\n\n.calendarNavPrev {\n order: -1;\n}\n\n.calendarMonthCaption {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--osdk-datetime-calendar-nav-button-size);\n}\n\n/* Visually hidden — used for accessibility-only text (caption label, dropdown labels) */\n.calendarVhidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n\n/* Caption dropdowns container */\n.calendarCaptionDropdowns {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-datetime-calendar-caption-gap);\n}\n\n/* Month/year selects — borderless, matching caption text weight */\n.calendarDropdown {\n /* Native selects otherwise reserve room for the longest option, which makes\n the month caret drift away from short month names like \"May\". */\n field-sizing: content;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n color: inherit;\n background: transparent;\n border: none;\n padding: var(--osdk-datetime-calendar-dropdown-padding);\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-dropdown-border-radius);\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: 1px;\n }\n}\n\n\n.calendarTimeFooter {\n display: flex;\n justify-content: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarActionBar {\n display: flex;\n justify-content: space-between;\n gap: var(--osdk-surface-spacing);\n padding-block-start: var(--osdk-time-picker-padding-top);\n padding-inline: var(--osdk-datetime-popover-padding);\n margin-block-start: var(--osdk-time-picker-margin-top);\n margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);\n border-block-start: var(--osdk-time-picker-border-top);\n}\n","/* TimePicker — HH:mm control. Outer layout is owned by the parent. */\n\n.osdkTimePickerRoot {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkTimePickerInput {\n width: calc(var(--osdk-surface-spacing) * 10);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n text-align: center;\n padding: var(--osdk-time-picker-input-padding);\n border: var(--osdk-time-picker-input-border);\n border-radius: var(--osdk-time-picker-input-border-radius);\n background: var(--osdk-time-picker-input-bg);\n color: var(--osdk-time-picker-input-color);\n box-sizing: border-box;\n\n &:focus {\n border-color: var(--osdk-time-picker-input-border-color-focus);\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-time-picker-input-focus-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkTimePickerSeparator {\n color: var(--osdk-typography-color-muted);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkE5OKIBYJ_cjs = require('./chunk-E5OKIBYJ.cjs');
|
|
4
4
|
var React4 = require('react');
|
|
5
5
|
var icons = require('@blueprintjs/icons');
|
|
6
6
|
var select = require('@base-ui/react/select');
|
|
@@ -250,7 +250,7 @@ var SelectDropdown = typedReactMemo(function SelectDropdownFn({
|
|
|
250
250
|
}, /* @__PURE__ */ React4__namespace.default.createElement(icons.CaretDown, null))), /* @__PURE__ */ React4__namespace.default.createElement(Select.Portal, {
|
|
251
251
|
ref: portalRef,
|
|
252
252
|
container: portalContainer
|
|
253
|
-
}, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(
|
|
253
|
+
}, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.PortalDismissLayer, {
|
|
254
254
|
className: DropdownField_default.osdkSelectDismissLayer,
|
|
255
255
|
onDismiss: handleDismiss
|
|
256
256
|
}), /* @__PURE__ */ React4__namespace.default.createElement(Select.Positioner, null, /* @__PURE__ */ React4__namespace.default.createElement(Select.Popup, null, items.map((item) => {
|
|
@@ -321,13 +321,13 @@ var ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({
|
|
|
321
321
|
}, [handleOpenChange]);
|
|
322
322
|
const renderItem = React4.useCallback((item) => {
|
|
323
323
|
const itemLabel = itemToStringLabel(item);
|
|
324
|
-
return /* @__PURE__ */ React4__namespace.default.createElement(
|
|
324
|
+
return /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Item, {
|
|
325
325
|
key: getKey(item),
|
|
326
326
|
value: item,
|
|
327
327
|
"aria-label": itemLabel
|
|
328
|
-
}, isMultiple && /* @__PURE__ */ React4__namespace.default.createElement(
|
|
328
|
+
}, isMultiple && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.ItemIndicator, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.Tick, null)), renderItemLabel(item));
|
|
329
329
|
}, [getKey, isMultiple, itemToStringLabel, renderItemLabel]);
|
|
330
|
-
return /* @__PURE__ */ React4__namespace.default.createElement("div", null, /* @__PURE__ */ React4__namespace.default.createElement(
|
|
330
|
+
return /* @__PURE__ */ React4__namespace.default.createElement("div", null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Root, {
|
|
331
331
|
value,
|
|
332
332
|
onValueChange: handleValueChange,
|
|
333
333
|
open: isOpen,
|
|
@@ -340,46 +340,46 @@ var ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({
|
|
|
340
340
|
onInputValueChange: onQueryChange,
|
|
341
341
|
filter: disableClientSideFiltering ? null : void 0,
|
|
342
342
|
disabled
|
|
343
|
-
}, /* @__PURE__ */ React4__namespace.default.createElement(
|
|
343
|
+
}, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Trigger, {
|
|
344
344
|
id,
|
|
345
345
|
disabled,
|
|
346
|
-
className: isMultiple ?
|
|
346
|
+
className: isMultiple ? chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerMulti : void 0
|
|
347
347
|
}, /* @__PURE__ */ React4__namespace.default.createElement("div", {
|
|
348
|
-
className:
|
|
348
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxValueContainer
|
|
349
349
|
}, isMultiple && Array.isArray(value) && value.length > 0 ? /* @__PURE__ */ React4__namespace.default.createElement("div", {
|
|
350
|
-
className:
|
|
350
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChips
|
|
351
351
|
}, value.map((item) => /* @__PURE__ */ React4__namespace.default.createElement("span", {
|
|
352
352
|
key: getKey(item),
|
|
353
|
-
className:
|
|
353
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChip
|
|
354
354
|
}, renderItemLabel(item), /* @__PURE__ */ React4__namespace.default.createElement("span", {
|
|
355
355
|
role: "button",
|
|
356
356
|
"aria-label": `Remove ${itemToStringLabel(item)}`,
|
|
357
|
-
className:
|
|
357
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChipRemove,
|
|
358
358
|
"aria-disabled": disabled || void 0,
|
|
359
359
|
onMouseDown: disabled ? void 0 : preventTriggerOpen,
|
|
360
360
|
onClick: disabled ? void 0 : () => handleRemoveItem(item)
|
|
361
361
|
}, /* @__PURE__ */ React4__namespace.default.createElement(icons.Cross, {
|
|
362
362
|
size: 12
|
|
363
|
-
}))))) : /* @__PURE__ */ React4__namespace.default.createElement(React4__namespace.default.Fragment, null, /* @__PURE__ */ React4__namespace.default.createElement(
|
|
364
|
-
className:
|
|
363
|
+
}))))) : /* @__PURE__ */ React4__namespace.default.createElement(React4__namespace.default.Fragment, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Value, null, renderSingleSelectedItemLabel), !hasValue && placeholder != null && /* @__PURE__ */ React4__namespace.default.createElement("span", {
|
|
364
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxPlaceholder
|
|
365
365
|
}, placeholder))), hasValue && /* @__PURE__ */ React4__namespace.default.createElement("span", {
|
|
366
366
|
role: "button",
|
|
367
367
|
"aria-label": "Clear",
|
|
368
|
-
className:
|
|
368
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxClear,
|
|
369
369
|
"aria-disabled": disabled || void 0,
|
|
370
370
|
onMouseDown: disabled ? void 0 : preventTriggerOpen,
|
|
371
371
|
onClick: disabled ? void 0 : handleClear
|
|
372
|
-
}, /* @__PURE__ */ React4__namespace.default.createElement(icons.SmallCross, null)), /* @__PURE__ */ React4__namespace.default.createElement(
|
|
372
|
+
}, /* @__PURE__ */ React4__namespace.default.createElement(icons.SmallCross, null)), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Icon, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.CaretDown, null))), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Portal, {
|
|
373
373
|
ref: portalRef,
|
|
374
374
|
container: portalContainer
|
|
375
|
-
}, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(
|
|
375
|
+
}, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.PortalDismissLayer, {
|
|
376
376
|
className: DropdownField_default.osdkComboboxDismissLayer,
|
|
377
377
|
onDismiss: handleDismiss
|
|
378
|
-
}), /* @__PURE__ */ React4__namespace.default.createElement(
|
|
379
|
-
className:
|
|
380
|
-
}, /* @__PURE__ */ React4__namespace.default.createElement(
|
|
378
|
+
}), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Positioner, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Popup, null, isSearchable && /* @__PURE__ */ React4__namespace.default.createElement("div", {
|
|
379
|
+
className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxPopupSearchInput
|
|
380
|
+
}, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.SearchInput, {
|
|
381
381
|
placeholder: "Search\u2026"
|
|
382
|
-
})), popupStatus, popupStatus == null && /* @__PURE__ */ React4__namespace.default.createElement(
|
|
382
|
+
})), popupStatus, popupStatus == null && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Empty, null, "No results"), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.List, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Collection, null, renderItem), trailingItem))))));
|
|
383
383
|
});
|
|
384
384
|
function preventTriggerOpen(e) {
|
|
385
385
|
e.stopPropagation();
|
|
@@ -398,5 +398,5 @@ function defaultItemToStringLabel(item) {
|
|
|
398
398
|
exports.DropdownField = DropdownField;
|
|
399
399
|
exports.typedReactMemo = typedReactMemo;
|
|
400
400
|
exports.useEventCallback = useEventCallback;
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
402
|
-
//# sourceMappingURL=chunk-
|
|
401
|
+
//# sourceMappingURL=chunk-3S52UDZM.cjs.map
|
|
402
|
+
//# sourceMappingURL=chunk-3S52UDZM.cjs.map
|