@osdk/react-components 0.3.0-main-20260408031518 → 0.3.0-main-20260408113649
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 +6 -4
- package/build/browser/action-form/fields/DateCalendar.js +18 -15
- package/build/browser/action-form/fields/DateCalendar.js.map +1 -1
- package/build/browser/action-form/fields/DateCalendar.module.css +4 -4
- package/build/browser/action-form/fields/FilePickerField.js +4 -3
- package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
- package/build/browser/action-form/fields/FilePickerField.module.css +1 -1
- package/build/browser/styles.css +5 -5
- package/build/cjs/DateCalendar-D4APPCSE.cjs +70 -0
- package/build/cjs/DateCalendar-D4APPCSE.cjs.map +1 -0
- package/build/cjs/{DateCalendar-QWGFKD6J.css → DateCalendar-NF65B4VD.css} +5 -5
- package/build/cjs/DateCalendar-NF65B4VD.css.map +1 -0
- package/build/cjs/{chunk-UZ2E5NRX.cjs → chunk-A57T2BLC.cjs} +2 -2
- package/build/cjs/chunk-A57T2BLC.cjs.map +1 -0
- package/build/cjs/public/experimental.cjs +6 -5
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +5 -5
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/action-form/fields/DateCalendar.js +18 -15
- package/build/esm/action-form/fields/DateCalendar.js.map +1 -1
- package/build/esm/action-form/fields/DateCalendar.module.css +4 -4
- package/build/esm/action-form/fields/FilePickerField.js +4 -3
- package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
- package/build/esm/action-form/fields/FilePickerField.module.css +1 -1
- package/build/types/action-form/fields/DateCalendar.d.ts.map +1 -1
- package/build/types/action-form/fields/FilePickerField.d.ts.map +1 -1
- package/package.json +5 -5
- package/build/cjs/DateCalendar-QWGFKD6J.css.map +0 -1
- package/build/cjs/DateCalendar-R44GMN3O.cjs +0 -67
- package/build/cjs/DateCalendar-R44GMN3O.cjs.map +0 -1
- package/build/cjs/chunk-UZ2E5NRX.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @osdk/react-components
|
|
2
2
|
|
|
3
|
-
## 0.3.0-main-
|
|
3
|
+
## 0.3.0-main-20260408113649
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -9,14 +9,16 @@
|
|
|
9
9
|
|
|
10
10
|
### Patch Changes
|
|
11
11
|
|
|
12
|
+
- 236a88b: Downgrade react-day-picker from v9 to ^8.10.0
|
|
12
13
|
- 79b001e: Add FilePickerField component for attachment and media reference form fields
|
|
14
|
+
- b2b512e: Address FilePickerField PR review comments: memoize computed values, add aria-label, rename CSS token, add keyboard interaction tests
|
|
13
15
|
- Updated dependencies [f8b9f12]
|
|
14
16
|
- Updated dependencies [bcf359f]
|
|
15
17
|
- Updated dependencies [51ccca8]
|
|
16
18
|
- Updated dependencies [fb85818]
|
|
17
|
-
- @osdk/client@2.9.0-main-
|
|
18
|
-
- @osdk/react@0.11.0-main-
|
|
19
|
-
- @osdk/api@2.9.0-main-
|
|
19
|
+
- @osdk/client@2.9.0-main-20260408113649
|
|
20
|
+
- @osdk/react@0.11.0-main-20260408113649
|
|
21
|
+
- @osdk/api@2.9.0-main-20260408113649
|
|
20
22
|
|
|
21
23
|
## 0.2.0
|
|
22
24
|
|
|
@@ -14,27 +14,27 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import React, { useMemo } from "react";
|
|
17
|
+
import React, { useCallback, useMemo } from "react";
|
|
18
18
|
import { DayPicker } from "react-day-picker";
|
|
19
19
|
import styles from "./DateCalendar.module.css.js";
|
|
20
20
|
const CLASS_NAMES = {
|
|
21
21
|
root: styles.calendar,
|
|
22
22
|
months: styles.calendarMonths,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
table: styles.calendarMonthGrid,
|
|
24
|
+
head_cell: styles.calendarWeekday,
|
|
25
|
+
cell: styles.calendarDay,
|
|
26
|
+
day: styles.calendarDayButton,
|
|
27
|
+
day_selected: styles.calendarSelected,
|
|
28
|
+
day_today: styles.calendarToday,
|
|
29
|
+
day_outside: styles.calendarOutside,
|
|
30
|
+
day_disabled: styles.calendarDisabled,
|
|
31
|
+
day_hidden: styles.calendarHidden,
|
|
32
32
|
nav: styles.calendarNav,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
nav_button_previous: styles.calendarNavButton,
|
|
34
|
+
nav_button_next: styles.calendarNavButton,
|
|
35
|
+
caption: styles.calendarMonthCaption,
|
|
36
36
|
caption_label: styles.calendarCaptionLabel,
|
|
37
|
-
|
|
37
|
+
nav_icon: styles.calendarChevron
|
|
38
38
|
};
|
|
39
39
|
export default function DateCalendar({
|
|
40
40
|
dateSelected,
|
|
@@ -57,10 +57,13 @@ export default function DateCalendar({
|
|
|
57
57
|
}
|
|
58
58
|
return matchers;
|
|
59
59
|
}, [min, max]);
|
|
60
|
+
const handleSelect = useCallback(day => {
|
|
61
|
+
onSelect(day);
|
|
62
|
+
}, [onSelect]);
|
|
60
63
|
return /*#__PURE__*/React.createElement(DayPicker, {
|
|
61
64
|
mode: "single",
|
|
62
65
|
selected: dateSelected,
|
|
63
|
-
onSelect:
|
|
66
|
+
onSelect: handleSelect,
|
|
64
67
|
disabled: disabled,
|
|
65
68
|
defaultMonth: dateSelected,
|
|
66
69
|
classNames: CLASS_NAMES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateCalendar.js","names":["React","useMemo","DayPicker","styles","CLASS_NAMES","root","calendar","months","calendarMonths","
|
|
1
|
+
{"version":3,"file":"DateCalendar.js","names":["React","useCallback","useMemo","DayPicker","styles","CLASS_NAMES","root","calendar","months","calendarMonths","table","calendarMonthGrid","head_cell","calendarWeekday","cell","calendarDay","day","calendarDayButton","day_selected","calendarSelected","day_today","calendarToday","day_outside","calendarOutside","day_disabled","calendarDisabled","day_hidden","calendarHidden","nav","calendarNav","nav_button_previous","calendarNavButton","nav_button_next","caption","calendarMonthCaption","caption_label","calendarCaptionLabel","nav_icon","calendarChevron","DateCalendar","dateSelected","onSelect","min","max","footer","disabled","matchers","push","before","after","handleSelect","createElement","mode","selected","defaultMonth","classNames"],"sources":["DateCalendar.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 React, { useCallback, useMemo } from \"react\";\nimport type {\n ClassNames,\n DateAfter,\n DateBefore,\n Matcher,\n SelectSingleEventHandler,\n} from \"react-day-picker\";\nimport { DayPicker } from \"react-day-picker\";\nimport styles from \"./DateCalendar.module.css\";\n\nconst CLASS_NAMES: ClassNames = {\n root: styles.calendar,\n months: styles.calendarMonths,\n table: styles.calendarMonthGrid,\n head_cell: styles.calendarWeekday,\n cell: styles.calendarDay,\n day: styles.calendarDayButton,\n day_selected: styles.calendarSelected,\n day_today: styles.calendarToday,\n day_outside: styles.calendarOutside,\n day_disabled: styles.calendarDisabled,\n day_hidden: styles.calendarHidden,\n nav: styles.calendarNav,\n nav_button_previous: styles.calendarNavButton,\n nav_button_next: styles.calendarNavButton,\n caption: styles.calendarMonthCaption,\n caption_label: styles.calendarCaptionLabel,\n nav_icon: styles.calendarChevron,\n};\n\nexport interface DateCalendarProps {\n dateSelected: Date | undefined;\n onSelect: (date: Date | undefined) => void;\n min?: Date;\n max?: Date;\n footer?: React.ReactNode;\n}\n\nexport default function DateCalendar({\n dateSelected,\n onSelect,\n min,\n max,\n footer,\n}: DateCalendarProps): React.ReactElement {\n const disabled = useMemo((): Matcher[] => {\n const matchers: Matcher[] = [];\n if (min != null) {\n const before: DateBefore = { before: min };\n matchers.push(before);\n }\n if (max != null) {\n const after: DateAfter = { after: max };\n matchers.push(after);\n }\n return matchers;\n }, [min, max]);\n\n const handleSelect = useCallback<SelectSingleEventHandler>(\n (day) => {\n onSelect(day);\n },\n [onSelect],\n );\n\n return (\n <DayPicker\n mode=\"single\"\n selected={dateSelected}\n onSelect={handleSelect}\n disabled={disabled}\n defaultMonth={dateSelected}\n classNames={CLASS_NAMES}\n footer={footer}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAQnD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,MAAM,MAAM,2BAA2B;AAE9C,MAAMC,WAAuB,GAAG;EAC9BC,IAAI,EAAEF,MAAM,CAACG,QAAQ;EACrBC,MAAM,EAAEJ,MAAM,CAACK,cAAc;EAC7BC,KAAK,EAAEN,MAAM,CAACO,iBAAiB;EAC/BC,SAAS,EAAER,MAAM,CAACS,eAAe;EACjCC,IAAI,EAAEV,MAAM,CAACW,WAAW;EACxBC,GAAG,EAAEZ,MAAM,CAACa,iBAAiB;EAC7BC,YAAY,EAAEd,MAAM,CAACe,gBAAgB;EACrCC,SAAS,EAAEhB,MAAM,CAACiB,aAAa;EAC/BC,WAAW,EAAElB,MAAM,CAACmB,eAAe;EACnCC,YAAY,EAAEpB,MAAM,CAACqB,gBAAgB;EACrCC,UAAU,EAAEtB,MAAM,CAACuB,cAAc;EACjCC,GAAG,EAAExB,MAAM,CAACyB,WAAW;EACvBC,mBAAmB,EAAE1B,MAAM,CAAC2B,iBAAiB;EAC7CC,eAAe,EAAE5B,MAAM,CAAC2B,iBAAiB;EACzCE,OAAO,EAAE7B,MAAM,CAAC8B,oBAAoB;EACpCC,aAAa,EAAE/B,MAAM,CAACgC,oBAAoB;EAC1CC,QAAQ,EAAEjC,MAAM,CAACkC;AACnB,CAAC;AAUD,eAAe,SAASC,YAAYA,CAAC;EACnCC,YAAY;EACZC,QAAQ;EACRC,GAAG;EACHC,GAAG;EACHC;AACiB,CAAC,EAAsB;EACxC,MAAMC,QAAQ,GAAG3C,OAAO,CAAC,MAAiB;IACxC,MAAM4C,QAAmB,GAAG,EAAE;IAC9B,IAAIJ,GAAG,IAAI,IAAI,EAAE;MAEfI,QAAQ,CAACC,IAAI,CADc;QAAEC,MAAM,EAAEN;MAAI,CACrB,CAAC;IACvB;IACA,IAAIC,GAAG,IAAI,IAAI,EAAE;MAEfG,QAAQ,CAACC,IAAI,CADY;QAAEE,KAAK,EAAEN;MAAI,CACnB,CAAC;IACtB;IACA,OAAOG,QAAQ;EACjB,CAAC,EAAE,CAACJ,GAAG,EAAEC,GAAG,CAAC,CAAC;EAEd,MAAMO,YAAY,GAAGjD,WAAW,CAC7Be,GAAG,IAAK;IACPyB,QAAQ,CAACzB,GAAG,CAAC;EACf,CAAC,EACD,CAACyB,QAAQ,CACX,CAAC;EAED,oBACEzC,KAAA,CAAAmD,aAAA,CAAChD,SAAS;IACRiD,IAAI,EAAC,QAAQ;IACbC,QAAQ,EAAEb,YAAa;IACvBC,QAAQ,EAAES,YAAa;IACvBL,QAAQ,EAAEA,QAAS;IACnBS,YAAY,EAAEd,YAAa;IAC3Be,UAAU,EAAElD,WAAY;IACxBuC,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN","ignoreList":[]}
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
.calendarSelected
|
|
54
|
+
.calendarDayButton.calendarSelected {
|
|
55
55
|
background: var(--osdk-datetime-calendar-selected-bg);
|
|
56
56
|
color: var(--osdk-datetime-calendar-selected-color);
|
|
57
57
|
|
|
@@ -60,15 +60,15 @@
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
.calendarToday
|
|
63
|
+
.calendarDayButton.calendarToday {
|
|
64
64
|
font-weight: var(--osdk-datetime-calendar-today-font-weight);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
.calendarOutside
|
|
67
|
+
.calendarDayButton.calendarOutside {
|
|
68
68
|
color: var(--osdk-datetime-calendar-outside-color);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
.calendarDisabled
|
|
71
|
+
.calendarDayButton.calendarDisabled {
|
|
72
72
|
color: var(--osdk-datetime-calendar-disabled-color);
|
|
73
73
|
cursor: default;
|
|
74
74
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { Button } from "@base-ui/react/button";
|
|
18
18
|
import { Cross } from "@blueprintjs/icons";
|
|
19
19
|
import classnames from "classnames";
|
|
20
|
-
import React, { memo, useCallback, useRef } from "react";
|
|
20
|
+
import React, { memo, useCallback, useMemo, useRef } from "react";
|
|
21
21
|
import styles from "./FilePickerField.module.css.js";
|
|
22
22
|
export const FilePickerField = /*#__PURE__*/memo(function ({
|
|
23
23
|
id,
|
|
@@ -60,9 +60,9 @@ export const FilePickerField = /*#__PURE__*/memo(function ({
|
|
|
60
60
|
openFileDialog();
|
|
61
61
|
}
|
|
62
62
|
}, [openFileDialog]);
|
|
63
|
-
const displayText = getDisplayText(value);
|
|
63
|
+
const displayText = useMemo(() => getDisplayText(value), [value]);
|
|
64
64
|
const hasValue = displayText != null;
|
|
65
|
-
const acceptString = normalizeAccept(accept);
|
|
65
|
+
const acceptString = useMemo(() => normalizeAccept(accept), [accept]);
|
|
66
66
|
return (
|
|
67
67
|
/*#__PURE__*/
|
|
68
68
|
// The entire component is a single tab stop (tabIndex={0}).
|
|
@@ -75,6 +75,7 @@ export const FilePickerField = /*#__PURE__*/memo(function ({
|
|
|
75
75
|
className: styles.osdkFilePickerTrigger,
|
|
76
76
|
tabIndex: 0,
|
|
77
77
|
role: "button",
|
|
78
|
+
"aria-label": "Choose file",
|
|
78
79
|
onClick: openFileDialog,
|
|
79
80
|
onKeyDown: handleKeyDown
|
|
80
81
|
}, /*#__PURE__*/React.createElement("input", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilePickerField.js","names":["Button","Cross","classnames","React","memo","useCallback","useRef","styles","FilePickerField","id","value","onChange","isMulti","accept","maxSize","_maxSize","text","buttonText","inputRef","openFileDialog","current","click","handleInputChange","event","files","target","length","Array","from","handleClear","stopPropagation","preventDefault","handleKeyDown","key","displayText","getDisplayText","hasValue","acceptString","normalizeAccept","createElement","className","osdkFilePickerTrigger","tabIndex","role","onClick","onKeyDown","ref","type","osdkFilePickerHiddenInput","multiple","osdkFilePickerText","osdkFilePickerPlaceholder","osdkFilePickerClear","osdkFilePickerBrowse","undefined","isArray","join","map","f","name"],"sources":["FilePickerField.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useRef } from \"react\";\nimport type { FilePickerProps } from \"../FormFieldApi.js\";\nimport styles from \"./FilePickerField.module.css\";\n\nexport const FilePickerField: React.FC<FilePickerProps> = memo(\n function FilePickerFieldFn({\n id,\n value,\n onChange,\n isMulti,\n accept,\n // TODO: implement maxSize validation in a follow-up\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\",\n }): React.ReactElement {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n },\n [onChange, isMulti],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n },\n [onChange],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n },\n [openFileDialog],\n );\n\n const displayText = getDisplayText(value);\n const hasValue = displayText != null;\n const acceptString = normalizeAccept(accept);\n return (\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n <div\n id={id}\n className={styles.osdkFilePickerTrigger}\n tabIndex={0}\n role=\"button\"\n onClick={openFileDialog}\n onKeyDown={handleKeyDown}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className={styles.osdkFilePickerHiddenInput}\n multiple={isMulti}\n accept={acceptString}\n onChange={handleInputChange}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n <span\n className={classnames(\n styles.osdkFilePickerText,\n !hasValue && styles.osdkFilePickerPlaceholder,\n )}\n >\n {displayText ?? text}\n </span>\n {hasValue && (\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n <Button\n className={styles.osdkFilePickerClear}\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <Cross />\n </Button>\n )}\n <span className={styles.osdkFilePickerBrowse}>{buttonText}</span>\n </div>\n );\n },\n);\n\nfunction normalizeAccept(\n accept: string | string[] | undefined,\n): string | undefined {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\n\nfunction getDisplayText(value: File | File[] | null): string | undefined {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((f) => f.name).join(\", \");\n }\n return value.name;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,KAAK,QAAQ,oBAAoB;AAC1C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,MAAM,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"FilePickerField.js","names":["Button","Cross","classnames","React","memo","useCallback","useMemo","useRef","styles","FilePickerField","id","value","onChange","isMulti","accept","maxSize","_maxSize","text","buttonText","inputRef","openFileDialog","current","click","handleInputChange","event","files","target","length","Array","from","handleClear","stopPropagation","preventDefault","handleKeyDown","key","displayText","getDisplayText","hasValue","acceptString","normalizeAccept","createElement","className","osdkFilePickerTrigger","tabIndex","role","onClick","onKeyDown","ref","type","osdkFilePickerHiddenInput","multiple","osdkFilePickerText","osdkFilePickerPlaceholder","osdkFilePickerClear","osdkFilePickerBrowse","undefined","isArray","join","map","f","name"],"sources":["FilePickerField.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport type { FilePickerProps } from \"../FormFieldApi.js\";\nimport styles from \"./FilePickerField.module.css\";\n\nexport const FilePickerField: React.FC<FilePickerProps> = memo(\n function FilePickerFieldFn({\n id,\n value,\n onChange,\n isMulti,\n accept,\n // TODO: implement maxSize validation in a follow-up\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\",\n }): React.ReactElement {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n },\n [onChange, isMulti],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n },\n [onChange],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n },\n [openFileDialog],\n );\n\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(\n () => normalizeAccept(accept),\n [accept],\n );\n return (\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n <div\n id={id}\n className={styles.osdkFilePickerTrigger}\n tabIndex={0}\n role=\"button\"\n aria-label=\"Choose file\"\n onClick={openFileDialog}\n onKeyDown={handleKeyDown}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className={styles.osdkFilePickerHiddenInput}\n multiple={isMulti}\n accept={acceptString}\n onChange={handleInputChange}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n <span\n className={classnames(\n styles.osdkFilePickerText,\n !hasValue && styles.osdkFilePickerPlaceholder,\n )}\n >\n {displayText ?? text}\n </span>\n {hasValue && (\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n <Button\n className={styles.osdkFilePickerClear}\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <Cross />\n </Button>\n )}\n <span className={styles.osdkFilePickerBrowse}>{buttonText}</span>\n </div>\n );\n },\n);\n\nfunction normalizeAccept(\n accept: string | string[] | undefined,\n): string | undefined {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\n\nfunction getDisplayText(value: File | File[] | null): string | undefined {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((f) => f.name).join(\", \");\n }\n return value.name;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
display: flex;
|
|
20
20
|
align-items: center;
|
|
21
21
|
width: 100%;
|
|
22
|
-
height: var(--osdk-file-picker-trigger-
|
|
22
|
+
height: var(--osdk-file-picker-trigger-height);
|
|
23
23
|
border: var(--osdk-file-picker-trigger-border);
|
|
24
24
|
border-radius: var(--osdk-file-picker-trigger-border-radius);
|
|
25
25
|
background: var(--osdk-file-picker-trigger-bg);
|
package/build/browser/styles.css
CHANGED
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
.DateCalendar-module__calendarSelected___I-1tOp-J
|
|
230
|
+
.DateCalendar-module__calendarDayButton___SoPcp9U0.DateCalendar-module__calendarSelected___I-1tOp-J {
|
|
231
231
|
background: var(--osdk-datetime-calendar-selected-bg);
|
|
232
232
|
color: var(--osdk-datetime-calendar-selected-color);
|
|
233
233
|
|
|
@@ -236,15 +236,15 @@
|
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
.DateCalendar-
|
|
239
|
+
.DateCalendar-module__calendarDayButton___SoPcp9U0.DateCalendar-module__calendarToday___laVEjkhA {
|
|
240
240
|
font-weight: var(--osdk-datetime-calendar-today-font-weight);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
.DateCalendar-
|
|
243
|
+
.DateCalendar-module__calendarDayButton___SoPcp9U0.DateCalendar-module__calendarOutside___uEAuOUjF {
|
|
244
244
|
color: var(--osdk-datetime-calendar-outside-color);
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
.DateCalendar-
|
|
247
|
+
.DateCalendar-module__calendarDayButton___SoPcp9U0.DateCalendar-module__calendarDisabled___4FOd5zD2 {
|
|
248
248
|
color: var(--osdk-datetime-calendar-disabled-color);
|
|
249
249
|
cursor: default;
|
|
250
250
|
|
|
@@ -403,7 +403,7 @@
|
|
|
403
403
|
display: flex;
|
|
404
404
|
align-items: center;
|
|
405
405
|
width: 100%;
|
|
406
|
-
height: var(--osdk-file-picker-trigger-
|
|
406
|
+
height: var(--osdk-file-picker-trigger-height);
|
|
407
407
|
border: var(--osdk-file-picker-trigger-border);
|
|
408
408
|
border-radius: var(--osdk-file-picker-trigger-border-radius);
|
|
409
409
|
background: var(--osdk-file-picker-trigger-bg);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkA57T2BLC_cjs = require('./chunk-A57T2BLC.cjs');
|
|
4
|
+
require('./chunk-HMQTYQEX.cjs');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var reactDayPicker = require('react-day-picker');
|
|
7
|
+
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
11
|
+
|
|
12
|
+
var CLASS_NAMES = {
|
|
13
|
+
root: chunkA57T2BLC_cjs.DateCalendar_default.calendar,
|
|
14
|
+
months: chunkA57T2BLC_cjs.DateCalendar_default.calendarMonths,
|
|
15
|
+
table: chunkA57T2BLC_cjs.DateCalendar_default.calendarMonthGrid,
|
|
16
|
+
head_cell: chunkA57T2BLC_cjs.DateCalendar_default.calendarWeekday,
|
|
17
|
+
cell: chunkA57T2BLC_cjs.DateCalendar_default.calendarDay,
|
|
18
|
+
day: chunkA57T2BLC_cjs.DateCalendar_default.calendarDayButton,
|
|
19
|
+
day_selected: chunkA57T2BLC_cjs.DateCalendar_default.calendarSelected,
|
|
20
|
+
day_today: chunkA57T2BLC_cjs.DateCalendar_default.calendarToday,
|
|
21
|
+
day_outside: chunkA57T2BLC_cjs.DateCalendar_default.calendarOutside,
|
|
22
|
+
day_disabled: chunkA57T2BLC_cjs.DateCalendar_default.calendarDisabled,
|
|
23
|
+
day_hidden: chunkA57T2BLC_cjs.DateCalendar_default.calendarHidden,
|
|
24
|
+
nav: chunkA57T2BLC_cjs.DateCalendar_default.calendarNav,
|
|
25
|
+
nav_button_previous: chunkA57T2BLC_cjs.DateCalendar_default.calendarNavButton,
|
|
26
|
+
nav_button_next: chunkA57T2BLC_cjs.DateCalendar_default.calendarNavButton,
|
|
27
|
+
caption: chunkA57T2BLC_cjs.DateCalendar_default.calendarMonthCaption,
|
|
28
|
+
caption_label: chunkA57T2BLC_cjs.DateCalendar_default.calendarCaptionLabel,
|
|
29
|
+
nav_icon: chunkA57T2BLC_cjs.DateCalendar_default.calendarChevron
|
|
30
|
+
};
|
|
31
|
+
function DateCalendar({
|
|
32
|
+
dateSelected,
|
|
33
|
+
onSelect,
|
|
34
|
+
min,
|
|
35
|
+
max,
|
|
36
|
+
footer
|
|
37
|
+
}) {
|
|
38
|
+
const disabled = React.useMemo(() => {
|
|
39
|
+
const matchers = [];
|
|
40
|
+
if (min != null) {
|
|
41
|
+
const before = {
|
|
42
|
+
before: min
|
|
43
|
+
};
|
|
44
|
+
matchers.push(before);
|
|
45
|
+
}
|
|
46
|
+
if (max != null) {
|
|
47
|
+
const after = {
|
|
48
|
+
after: max
|
|
49
|
+
};
|
|
50
|
+
matchers.push(after);
|
|
51
|
+
}
|
|
52
|
+
return matchers;
|
|
53
|
+
}, [min, max]);
|
|
54
|
+
const handleSelect = React.useCallback((day) => {
|
|
55
|
+
onSelect(day);
|
|
56
|
+
}, [onSelect]);
|
|
57
|
+
return /* @__PURE__ */ React__default.default.createElement(reactDayPicker.DayPicker, {
|
|
58
|
+
mode: "single",
|
|
59
|
+
selected: dateSelected,
|
|
60
|
+
onSelect: handleSelect,
|
|
61
|
+
disabled,
|
|
62
|
+
defaultMonth: dateSelected,
|
|
63
|
+
classNames: CLASS_NAMES,
|
|
64
|
+
footer
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports = DateCalendar;
|
|
69
|
+
//# sourceMappingURL=DateCalendar-D4APPCSE.cjs.map
|
|
70
|
+
//# sourceMappingURL=DateCalendar-D4APPCSE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/action-form/fields/DateCalendar.tsx"],"names":["DateCalendar_default","useMemo","useCallback","React","DayPicker"],"mappings":";;;;;;;;;;;AAmBA,IAAM,WAAc,GAAA;AAAA,EAClB,MAAMA,sCAAO,CAAA,QAAA;AAAA,EACb,QAAQA,sCAAO,CAAA,cAAA;AAAA,EACf,OAAOA,sCAAO,CAAA,iBAAA;AAAA,EACd,WAAWA,sCAAO,CAAA,eAAA;AAAA,EAClB,MAAMA,sCAAO,CAAA,WAAA;AAAA,EACb,KAAKA,sCAAO,CAAA,iBAAA;AAAA,EACZ,cAAcA,sCAAO,CAAA,gBAAA;AAAA,EACrB,WAAWA,sCAAO,CAAA,aAAA;AAAA,EAClB,aAAaA,sCAAO,CAAA,eAAA;AAAA,EACpB,cAAcA,sCAAO,CAAA,gBAAA;AAAA,EACrB,YAAYA,sCAAO,CAAA,cAAA;AAAA,EACnB,KAAKA,sCAAO,CAAA,WAAA;AAAA,EACZ,qBAAqBA,sCAAO,CAAA,iBAAA;AAAA,EAC5B,iBAAiBA,sCAAO,CAAA,iBAAA;AAAA,EACxB,SAASA,sCAAO,CAAA,oBAAA;AAAA,EAChB,eAAeA,sCAAO,CAAA,oBAAA;AAAA,EACtB,UAAUA,sCAAO,CAAA;AACnB,CAAA;AACe,SAAR,YAA8B,CAAA;AAAA,EACnC,YAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA,QAAA,GAAWC,cAAQ,MAAM;AAC7B,IAAA,MAAM,WAAW,EAAC;AAClB,IAAA,IAAI,OAAO,IAAM,EAAA;AACf,MAAA,MAAM,MAAS,GAAA;AAAA,QACb,MAAQ,EAAA;AAAA,OACV;AACA,MAAA,QAAA,CAAS,KAAK,MAAM,CAAA;AAAA;AAEtB,IAAA,IAAI,OAAO,IAAM,EAAA;AACf,MAAA,MAAM,KAAQ,GAAA;AAAA,QACZ,KAAO,EAAA;AAAA,OACT;AACA,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA;AAErB,IAAO,OAAA,QAAA;AAAA,GACN,EAAA,CAAC,GAAK,EAAA,GAAG,CAAC,CAAA;AACb,EAAM,MAAA,YAAA,GAAeC,kBAAY,CAAO,GAAA,KAAA;AACtC,IAAA,QAAA,CAAS,GAAG,CAAA;AAAA,GACd,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAoB,uBAAAC,sBAAA,CAAM,cAAcC,wBAAW,EAAA;AAAA,IACjD,IAAM,EAAA,QAAA;AAAA,IACN,QAAU,EAAA,YAAA;AAAA,IACV,QAAU,EAAA,YAAA;AAAA,IACV,QAAA;AAAA,IACA,YAAc,EAAA,YAAA;AAAA,IACd,UAAY,EAAA,WAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACH","file":"DateCalendar-D4APPCSE.cjs","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 React, { useCallback, useMemo } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport styles from \"./DateCalendar.module.css\";\nconst CLASS_NAMES = {\n root: styles.calendar,\n months: styles.calendarMonths,\n table: styles.calendarMonthGrid,\n head_cell: styles.calendarWeekday,\n cell: styles.calendarDay,\n day: styles.calendarDayButton,\n day_selected: styles.calendarSelected,\n day_today: styles.calendarToday,\n day_outside: styles.calendarOutside,\n day_disabled: styles.calendarDisabled,\n day_hidden: styles.calendarHidden,\n nav: styles.calendarNav,\n nav_button_previous: styles.calendarNavButton,\n nav_button_next: styles.calendarNavButton,\n caption: styles.calendarMonthCaption,\n caption_label: styles.calendarCaptionLabel,\n nav_icon: styles.calendarChevron\n};\nexport default function DateCalendar({\n dateSelected,\n onSelect,\n min,\n max,\n footer\n}) {\n const disabled = useMemo(() => {\n const matchers = [];\n if (min != null) {\n const before = {\n before: min\n };\n matchers.push(before);\n }\n if (max != null) {\n const after = {\n after: max\n };\n matchers.push(after);\n }\n return matchers;\n }, [min, max]);\n const handleSelect = useCallback(day => {\n onSelect(day);\n }, [onSelect]);\n return /*#__PURE__*/React.createElement(DayPicker, {\n mode: \"single\",\n selected: dateSelected,\n onSelect: handleSelect,\n disabled: disabled,\n defaultMonth: dateSelected,\n classNames: CLASS_NAMES,\n footer: footer\n });\n}"]}
|
|
@@ -42,20 +42,20 @@
|
|
|
42
42
|
background: var(--osdk-datetime-calendar-day-active-bg);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
.calendarSelected
|
|
45
|
+
.calendarDayButton.calendarSelected {
|
|
46
46
|
background: var(--osdk-datetime-calendar-selected-bg);
|
|
47
47
|
color: var(--osdk-datetime-calendar-selected-color);
|
|
48
48
|
&:hover {
|
|
49
49
|
background: var(--osdk-datetime-calendar-selected-hover-bg);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
.calendarToday
|
|
52
|
+
.calendarDayButton.calendarToday {
|
|
53
53
|
font-weight: var(--osdk-datetime-calendar-today-font-weight);
|
|
54
54
|
}
|
|
55
|
-
.calendarOutside
|
|
55
|
+
.calendarDayButton.calendarOutside {
|
|
56
56
|
color: var(--osdk-datetime-calendar-outside-color);
|
|
57
57
|
}
|
|
58
|
-
.calendarDisabled
|
|
58
|
+
.calendarDayButton.calendarDisabled {
|
|
59
59
|
color: var(--osdk-datetime-calendar-disabled-color);
|
|
60
60
|
cursor: default;
|
|
61
61
|
&:hover {
|
|
@@ -110,4 +110,4 @@
|
|
|
110
110
|
width: var(--osdk-datetime-calendar-fallback-width);
|
|
111
111
|
height: var(--osdk-datetime-calendar-fallback-height);
|
|
112
112
|
}
|
|
113
|
-
/*# sourceMappingURL=DateCalendar-
|
|
113
|
+
/*# sourceMappingURL=DateCalendar-NF65B4VD.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/action-form/fields/DateCalendar.module.css"],"sourcesContent":["/* DateCalendar — DayPicker classNames */\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}\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 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 background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n font: inherit;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n }\n}\n\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n }\n}\n\n.calendarDayButton.calendarToday {\n font-weight: var(--osdk-datetime-calendar-today-font-weight);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\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.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation */\n.calendarNav {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n pointer-events: none;\n}\n\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 pointer-events: auto;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\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.calendarCaptionLabel {\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n}\n\n.calendarChevron {\n width: var(--osdk-datetime-calendar-chevron-size);\n height: var(--osdk-datetime-calendar-chevron-size);\n fill: currentColor;\n}\n\n/* Calendar fallback / loading */\n.calendarFallback {\n width: var(--osdk-datetime-calendar-fallback-width);\n height: var(--osdk-datetime-calendar-fallback-height);\n}\n"],"mappings":";AAEA,CAAC;AACC,YAAU;AACV,SAAO;AACP,eAAa,IAAI;AACjB,aAAW,IAAI;AACjB;AAEA,CAAC;AACC,WAAS;AACX;AAEA,CAAC;AACC,SAAO;AACP,mBAAiB;AACnB;AAEA,CAAC;AACC,WAAS,IAAI;AACb,aAAW,IAAI;AACf,SAAO,IAAI;AACX,cAAY;AACZ,SAAO,IAAI;AACb;AAEA,CAAC;AACC,WAAS,IAAI;AACb,cAAY;AACd;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,SAAO,IAAI;AACX,UAAQ,IAAI;AACZ,UAAQ;AACR,cAAY;AACZ,UAAQ;AACR,iBAAe,IAAI;AACnB,QAAM;AACN,SAAO;AAEP,GAAC;AACC,gBAAY,IAAI;AAClB;AAEA,GAAC;AACC,gBAAY,IAAI;AAClB;AACF;AAEA,CAtBC,iBAsBiB,CAAC;AACjB,cAAY,IAAI;AAChB,SAAO,IAAI;AAEX,GAAC;AACC,gBAAY,IAAI;AAClB;AACF;AAEA,CA/BC,iBA+BiB,CAAC;AACjB,eAAa,IAAI;AACnB;AAEA,CAnCC,iBAmCiB,CAAC;AACjB,SAAO,IAAI;AACb;AAEA,CAvCC,iBAuCiB,CAAC;AACjB,SAAO,IAAI;AACX,UAAQ;AAER,GAAC;AACC,gBAAY;AACd;AACF;AAEA,CAAC;AACC,cAAY;AACd;AAGA,CAAC;AACC,YAAU;AACV,OAAK;AACL,QAAM;AACN,SAAO;AACP,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,kBAAgB;AAClB;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,SAAO,IAAI;AACX,UAAQ,IAAI;AACZ,UAAQ;AACR,cAAY;AACZ,UAAQ;AACR,iBAAe,IAAI;AACnB,WAAS;AACT,kBAAgB;AAEhB,GAAC;AACC,gBAAY,IAAI;AAClB;AACF;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,cAAY,IAAI;AAClB;AAEA,CAAC;AACC,aAAW,IAAI;AACf,eAAa,IAAI;AACnB;AAEA,CAAC;AACC,SAAO,IAAI;AACX,UAAQ,IAAI;AACZ,QAAM;AACR;AAGA,CAAC;AACC,SAAO,IAAI;AACX,UAAQ,IAAI;AACd;","names":[]}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
var DateCalendar_default = {};
|
|
5
5
|
|
|
6
6
|
exports.DateCalendar_default = DateCalendar_default;
|
|
7
|
-
//# sourceMappingURL=chunk-
|
|
8
|
-
//# sourceMappingURL=chunk-
|
|
7
|
+
//# sourceMappingURL=chunk-A57T2BLC.cjs.map
|
|
8
|
+
//# sourceMappingURL=chunk-A57T2BLC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/action-form/fields/DateCalendar.module.css"],"names":[],"mappings":";;;AAAA,IAAA,oBAAA,GAAA","file":"chunk-A57T2BLC.cjs","sourcesContent":["/* DateCalendar — DayPicker classNames */\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}\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 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 background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n font: inherit;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n }\n}\n\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n }\n}\n\n.calendarDayButton.calendarToday {\n font-weight: var(--osdk-datetime-calendar-today-font-weight);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\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.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation */\n.calendarNav {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n pointer-events: none;\n}\n\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 pointer-events: auto;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\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.calendarCaptionLabel {\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n}\n\n.calendarChevron {\n width: var(--osdk-datetime-calendar-chevron-size);\n height: var(--osdk-datetime-calendar-chevron-size);\n fill: currentColor;\n}\n\n/* Calendar fallback / loading */\n.calendarFallback {\n width: var(--osdk-datetime-calendar-fallback-width);\n height: var(--osdk-datetime-calendar-fallback-height);\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkMRRRZN44_cjs = require('../chunk-MRRRZN44.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkA57T2BLC_cjs = require('../chunk-A57T2BLC.cjs');
|
|
5
5
|
var chunkHMQTYQEX_cjs = require('../chunk-HMQTYQEX.cjs');
|
|
6
6
|
var button = require('@base-ui/react/button');
|
|
7
7
|
var classnames14 = require('classnames');
|
|
@@ -8745,11 +8745,11 @@ var CustomField = /* @__PURE__ */ React76.memo(function CustomFieldFn({
|
|
|
8745
8745
|
|
|
8746
8746
|
// src/action-form/fields/DatetimePickerField.module.css
|
|
8747
8747
|
var DatetimePickerField_default = {};
|
|
8748
|
-
var DateCalendarLazy = /* @__PURE__ */ React76__default.default.lazy(() => import('../DateCalendar-
|
|
8748
|
+
var DateCalendarLazy = /* @__PURE__ */ React76__default.default.lazy(() => import('../DateCalendar-D4APPCSE.cjs'));
|
|
8749
8749
|
function LazyDateCalendar(props) {
|
|
8750
8750
|
return /* @__PURE__ */ React76__default.default.createElement(React76.Suspense, {
|
|
8751
8751
|
fallback: /* @__PURE__ */ React76__default.default.createElement("div", {
|
|
8752
|
-
className:
|
|
8752
|
+
className: chunkA57T2BLC_cjs.DateCalendar_default.calendarFallback
|
|
8753
8753
|
})
|
|
8754
8754
|
}, /* @__PURE__ */ React76__default.default.createElement(DateCalendarLazy, props));
|
|
8755
8755
|
}
|
|
@@ -9040,9 +9040,9 @@ var FilePickerField = /* @__PURE__ */ React76.memo(function FilePickerFieldFn({
|
|
|
9040
9040
|
openFileDialog();
|
|
9041
9041
|
}
|
|
9042
9042
|
}, [openFileDialog]);
|
|
9043
|
-
const displayText = getDisplayText(value);
|
|
9043
|
+
const displayText = React76.useMemo(() => getDisplayText(value), [value]);
|
|
9044
9044
|
const hasValue = displayText != null;
|
|
9045
|
-
const acceptString = normalizeAccept(accept);
|
|
9045
|
+
const acceptString = React76.useMemo(() => normalizeAccept(accept), [accept]);
|
|
9046
9046
|
return (
|
|
9047
9047
|
// The entire component is a single tab stop (tabIndex={0}).
|
|
9048
9048
|
// Text and Browse are <span>s (not buttons) so they don't create
|
|
@@ -9054,6 +9054,7 @@ var FilePickerField = /* @__PURE__ */ React76.memo(function FilePickerFieldFn({
|
|
|
9054
9054
|
className: FilePickerField_default.osdkFilePickerTrigger,
|
|
9055
9055
|
tabIndex: 0,
|
|
9056
9056
|
role: "button",
|
|
9057
|
+
"aria-label": "Choose file",
|
|
9057
9058
|
onClick: openFileDialog,
|
|
9058
9059
|
onKeyDown: handleKeyDown
|
|
9059
9060
|
}, /* @__PURE__ */ React76__default.default.createElement("input", {
|