@osdk/react-components 0.17.0 → 0.18.0-main-ca8ef7c5d52f3369478e1d4c5b7eded97eb73215
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 -0
- package/build/browser/object-table/ObjectTable.js +4 -4
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/hooks/useRowSelection.js +5 -4
- package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/chunk-2BLJCM7D.cjs +11 -0
- package/build/cjs/{chunk-DVE44R2H.cjs.map → chunk-2BLJCM7D.cjs.map} +1 -1
- package/build/cjs/{chunk-QOKXBBSR.cjs → chunk-2QDWXDLC.cjs} +204 -236
- package/build/cjs/chunk-2QDWXDLC.cjs.map +1 -0
- package/build/cjs/{chunk-ONBWRKWJ.cjs → chunk-3P75JCUA.cjs} +14 -14
- package/build/cjs/chunk-3P75JCUA.cjs.map +1 -0
- package/build/cjs/chunk-6SWH5XK7.cjs +11 -0
- package/build/cjs/{chunk-HHVL4RYG.cjs.map → chunk-6SWH5XK7.cjs.map} +1 -1
- package/build/cjs/{chunk-25R5WVUR.cjs → chunk-7N22MOQP.cjs} +4 -4
- package/build/cjs/{chunk-25R5WVUR.cjs.map → chunk-7N22MOQP.cjs.map} +1 -1
- package/build/cjs/{chunk-JNFOPEN2.cjs → chunk-DDIMME5J.cjs} +4 -4
- package/build/cjs/{chunk-JNFOPEN2.cjs.map → chunk-DDIMME5J.cjs.map} +1 -1
- package/build/cjs/{chunk-6HVKQP7I.cjs → chunk-DSBCDOFJ.cjs} +4 -4
- package/build/cjs/{chunk-6HVKQP7I.cjs.map → chunk-DSBCDOFJ.cjs.map} +1 -1
- package/build/cjs/{chunk-ZBJEZKOD.cjs → chunk-FRSIMUPL.cjs} +90 -59
- package/build/cjs/chunk-FRSIMUPL.cjs.map +1 -0
- package/build/cjs/{chunk-R4M6VGVD.cjs → chunk-IEF4VCDI.cjs} +3 -3
- package/build/cjs/chunk-IEF4VCDI.cjs.map +1 -0
- package/build/cjs/chunk-M3FP4G7N.cjs +11 -0
- package/build/cjs/{chunk-AL43X5RI.cjs.map → chunk-M3FP4G7N.cjs.map} +1 -1
- package/build/cjs/chunk-XJ5TTKHA.cjs +11 -0
- package/build/cjs/{chunk-U2JT7LIS.cjs.map → chunk-XJ5TTKHA.cjs.map} +1 -1
- package/build/cjs/{chunk-BKLX3JZ5.cjs → chunk-YD76TX23.cjs} +4 -4
- package/build/cjs/{chunk-BKLX3JZ5.cjs.map → chunk-YD76TX23.cjs.map} +1 -1
- package/build/cjs/{chunk-BGTMZNYD.cjs → chunk-YNPAQDMC.cjs} +4 -4
- package/build/cjs/{chunk-BGTMZNYD.cjs.map → chunk-YNPAQDMC.cjs.map} +1 -1
- package/build/cjs/chunk-Z7VYBF3X.cjs +11 -0
- package/build/cjs/{chunk-VICC2NSA.cjs.map → chunk-Z7VYBF3X.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +5 -5
- 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 +13 -13
- 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 +9 -9
- package/build/cjs/public/experimental/object-table.d.cts +11 -14
- 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 +47 -47
- package/build/esm/object-table/ObjectTable.js +4 -4
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/hooks/useRowSelection.js +5 -4
- package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +11 -14
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/hooks/useRowSelection.d.ts +0 -1
- package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
- package/docs/ObjectTable.md +17 -17
- package/package.json +4 -4
- package/build/cjs/chunk-AL43X5RI.cjs +0 -11
- package/build/cjs/chunk-DVE44R2H.cjs +0 -11
- package/build/cjs/chunk-HHVL4RYG.cjs +0 -11
- package/build/cjs/chunk-ONBWRKWJ.cjs.map +0 -1
- package/build/cjs/chunk-QOKXBBSR.cjs.map +0 -1
- package/build/cjs/chunk-R4M6VGVD.cjs.map +0 -1
- package/build/cjs/chunk-U2JT7LIS.cjs +0 -11
- package/build/cjs/chunk-VICC2NSA.cjs +0 -11
- package/build/cjs/chunk-ZBJEZKOD.cjs.map +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkSFQMJMTV_cjs = require('./chunk-SFQMJMTV.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkFRSIMUPL_cjs = require('./chunk-FRSIMUPL.cjs');
|
|
5
5
|
var chunkZ4JDLERD_cjs = require('./chunk-Z4JDLERD.cjs');
|
|
6
6
|
var chunkI3OSD6CF_cjs = require('./chunk-I3OSD6CF.cjs');
|
|
7
7
|
var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
|
|
8
8
|
var chunkMD4KDE44_cjs = require('./chunk-MD4KDE44.cjs');
|
|
9
9
|
var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
|
|
10
|
-
var
|
|
10
|
+
var chunkIEF4VCDI_cjs = require('./chunk-IEF4VCDI.cjs');
|
|
11
11
|
var react = require('@osdk/react');
|
|
12
|
-
var
|
|
12
|
+
var React17 = require('react');
|
|
13
13
|
var icons = require('@blueprintjs/icons');
|
|
14
14
|
var classnames = require('classnames');
|
|
15
15
|
var reactHookForm = require('react-hook-form');
|
|
@@ -23,30 +23,12 @@ var collapsible = require('@base-ui/react/collapsible');
|
|
|
23
23
|
|
|
24
24
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
if (e && e.__esModule) return e;
|
|
28
|
-
var n = Object.create(null);
|
|
29
|
-
if (e) {
|
|
30
|
-
Object.keys(e).forEach(function (k) {
|
|
31
|
-
if (k !== 'default') {
|
|
32
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
33
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
34
|
-
enumerable: true,
|
|
35
|
-
get: function () { return e[k]; }
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
n.default = e;
|
|
41
|
-
return Object.freeze(n);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
var React18__namespace = /*#__PURE__*/_interopNamespace(React18);
|
|
26
|
+
var React17__default = /*#__PURE__*/_interopDefault(React17);
|
|
45
27
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
46
28
|
|
|
47
29
|
function useIsMounted() {
|
|
48
|
-
const isMountedRef =
|
|
49
|
-
|
|
30
|
+
const isMountedRef = React17.useRef(true);
|
|
31
|
+
React17.useEffect(function trackMountedState() {
|
|
50
32
|
return () => {
|
|
51
33
|
isMountedRef.current = false;
|
|
52
34
|
};
|
|
@@ -56,10 +38,10 @@ function useIsMounted() {
|
|
|
56
38
|
|
|
57
39
|
// src/shared/hooks/useAsyncAction.ts
|
|
58
40
|
function useAsyncAction(action) {
|
|
59
|
-
const [isPending, setIsPending] =
|
|
60
|
-
const [error, setError] =
|
|
41
|
+
const [isPending, setIsPending] = React17.useState(false);
|
|
42
|
+
const [error, setError] = React17.useState(void 0);
|
|
61
43
|
const isMountedRef = useIsMounted();
|
|
62
|
-
const execute =
|
|
44
|
+
const execute = React17.useCallback(async (...args) => {
|
|
63
45
|
setError(void 0);
|
|
64
46
|
setIsPending(true);
|
|
65
47
|
try {
|
|
@@ -74,7 +56,7 @@ function useAsyncAction(action) {
|
|
|
74
56
|
}
|
|
75
57
|
}
|
|
76
58
|
}, [action, isMountedRef]);
|
|
77
|
-
const clearError =
|
|
59
|
+
const clearError = React17.useCallback(() => {
|
|
78
60
|
setError(void 0);
|
|
79
61
|
}, []);
|
|
80
62
|
return {
|
|
@@ -248,7 +230,7 @@ function formatBytes(bytes) {
|
|
|
248
230
|
var FormField_default = {};
|
|
249
231
|
|
|
250
232
|
// src/action-form/FormField.tsx
|
|
251
|
-
var FormField = /* @__PURE__ */
|
|
233
|
+
var FormField = /* @__PURE__ */ React17.memo(function FormFieldFn({
|
|
252
234
|
fieldKey,
|
|
253
235
|
label,
|
|
254
236
|
isRequired,
|
|
@@ -261,26 +243,26 @@ var FormField = /* @__PURE__ */ React18.memo(function FormFieldFn({
|
|
|
261
243
|
const hasHelperText = helperText != null && helperText !== "";
|
|
262
244
|
const showTooltip = hasHelperText && helperTextPlacement === "tooltip";
|
|
263
245
|
const showBottomText = hasHelperText && helperTextPlacement === "bottom";
|
|
264
|
-
const labelElement = label != null ? /* @__PURE__ */
|
|
246
|
+
const labelElement = label != null ? /* @__PURE__ */ React17__default.default.createElement("label", {
|
|
265
247
|
className: FormField_default.osdkFormFieldLabel,
|
|
266
248
|
htmlFor: fieldKey
|
|
267
|
-
}, label, isRequired === true && /* @__PURE__ */
|
|
249
|
+
}, label, isRequired === true && /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
268
250
|
className: FormField_default.osdkFormFieldRequired,
|
|
269
251
|
"aria-label": "required"
|
|
270
252
|
}, " ", "*")) : null;
|
|
271
|
-
return /* @__PURE__ */
|
|
253
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
272
254
|
className: FormField_default.osdkFormField,
|
|
273
255
|
onBlur
|
|
274
|
-
}, showTooltip ? /* @__PURE__ */
|
|
256
|
+
}, showTooltip ? /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
275
257
|
className: FormField_default.osdkFormFieldLabelRow
|
|
276
|
-
}, labelElement, /* @__PURE__ */
|
|
258
|
+
}, labelElement, /* @__PURE__ */ React17__default.default.createElement(InfoTip, {
|
|
277
259
|
label
|
|
278
|
-
}, helperText)) : labelElement, showBottomText && /* @__PURE__ */
|
|
260
|
+
}, helperText)) : labelElement, showBottomText && /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
279
261
|
className: FormField_default.osdkFormFieldHelperText
|
|
280
|
-
}, helperText), children, /* @__PURE__ */
|
|
262
|
+
}, helperText), children, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
281
263
|
className: FormField_default.osdkFormFieldErrorSlot,
|
|
282
264
|
"data-osdk-form-field-error-slot": ""
|
|
283
|
-
}, error != null && /* @__PURE__ */
|
|
265
|
+
}, error != null && /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
284
266
|
className: FormField_default.osdkFormFieldError,
|
|
285
267
|
role: "alert"
|
|
286
268
|
}, error)));
|
|
@@ -289,33 +271,33 @@ function InfoTip({
|
|
|
289
271
|
label,
|
|
290
272
|
children
|
|
291
273
|
}) {
|
|
292
|
-
return /* @__PURE__ */
|
|
293
|
-
render: /* @__PURE__ */
|
|
274
|
+
return /* @__PURE__ */ React17__default.default.createElement(popover.Popover.Root, null, /* @__PURE__ */ React17__default.default.createElement(popover.Popover.Trigger, {
|
|
275
|
+
render: /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
294
276
|
className: FormField_default.osdkFormFieldInfoIcon
|
|
295
277
|
}),
|
|
296
278
|
nativeButton: false,
|
|
297
279
|
openOnHover: true,
|
|
298
280
|
"aria-label": label != null ? `Info about ${label}` : "More information"
|
|
299
|
-
}, /* @__PURE__ */
|
|
281
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.InfoSign, {
|
|
300
282
|
size: 12
|
|
301
|
-
})), /* @__PURE__ */
|
|
283
|
+
})), /* @__PURE__ */ React17__default.default.createElement(popover.Popover.Portal, null, /* @__PURE__ */ React17__default.default.createElement(popover.Popover.Positioner, {
|
|
302
284
|
sideOffset: 4
|
|
303
|
-
}, /* @__PURE__ */
|
|
285
|
+
}, /* @__PURE__ */ React17__default.default.createElement(popover.Popover.Popup, {
|
|
304
286
|
className: FormField_default.osdkFormFieldInfoPopup
|
|
305
287
|
}, children))));
|
|
306
288
|
}
|
|
307
|
-
var CustomField = /* @__PURE__ */
|
|
289
|
+
var CustomField = /* @__PURE__ */ React17.memo(function CustomFieldFn({
|
|
308
290
|
customRenderer: CustomRenderer,
|
|
309
291
|
...baseProps
|
|
310
292
|
}) {
|
|
311
|
-
return /* @__PURE__ */
|
|
293
|
+
return /* @__PURE__ */ React17__default.default.createElement(CustomRenderer, baseProps);
|
|
312
294
|
});
|
|
313
295
|
|
|
314
296
|
// src/action-form/fields/FilePickerField.module.css
|
|
315
297
|
var FilePickerField_default = {};
|
|
316
298
|
|
|
317
299
|
// src/action-form/fields/FilePickerField.tsx
|
|
318
|
-
var FilePickerField = /* @__PURE__ */
|
|
300
|
+
var FilePickerField = /* @__PURE__ */ React17.memo(function FilePickerFieldFn({
|
|
319
301
|
id,
|
|
320
302
|
value,
|
|
321
303
|
onChange,
|
|
@@ -329,23 +311,23 @@ var FilePickerField = /* @__PURE__ */ React18.memo(function FilePickerFieldFn({
|
|
|
329
311
|
text = "No file chosen",
|
|
330
312
|
buttonText = "Browse"
|
|
331
313
|
}) {
|
|
332
|
-
const inputRef =
|
|
333
|
-
const fileTriggerRef =
|
|
334
|
-
const openFileDialog =
|
|
314
|
+
const inputRef = React17.useRef(null);
|
|
315
|
+
const fileTriggerRef = React17.useRef(null);
|
|
316
|
+
const openFileDialog = React17.useCallback(() => {
|
|
335
317
|
inputRef.current?.click();
|
|
336
318
|
}, []);
|
|
337
|
-
const focusFileTrigger =
|
|
319
|
+
const focusFileTrigger = React17.useCallback(() => {
|
|
338
320
|
fileTriggerRef.current?.focus();
|
|
339
321
|
}, []);
|
|
340
|
-
const handleBrowsePointerDown =
|
|
322
|
+
const handleBrowsePointerDown = React17.useCallback((event) => {
|
|
341
323
|
event.preventDefault();
|
|
342
324
|
focusFileTrigger();
|
|
343
325
|
}, [focusFileTrigger]);
|
|
344
|
-
const handleBrowseClick =
|
|
326
|
+
const handleBrowseClick = React17.useCallback(() => {
|
|
345
327
|
focusFileTrigger();
|
|
346
328
|
openFileDialog();
|
|
347
329
|
}, [focusFileTrigger, openFileDialog]);
|
|
348
|
-
const handleInputChange =
|
|
330
|
+
const handleInputChange = React17.useCallback((event) => {
|
|
349
331
|
const files = event.target.files;
|
|
350
332
|
if (files == null || files.length === 0) {
|
|
351
333
|
onChange?.(null);
|
|
@@ -357,26 +339,26 @@ var FilePickerField = /* @__PURE__ */ React18.memo(function FilePickerFieldFn({
|
|
|
357
339
|
onChange?.(files[0] ?? null);
|
|
358
340
|
}
|
|
359
341
|
}, [onChange, isMulti]);
|
|
360
|
-
const handleClear =
|
|
342
|
+
const handleClear = React17.useCallback((event) => {
|
|
361
343
|
event.preventDefault();
|
|
362
344
|
onChange?.(null);
|
|
363
345
|
if (inputRef.current != null) {
|
|
364
346
|
inputRef.current.value = "";
|
|
365
347
|
}
|
|
366
348
|
}, [onChange]);
|
|
367
|
-
const handleKeyDown =
|
|
349
|
+
const handleKeyDown = React17.useCallback((event) => {
|
|
368
350
|
if (event.key === "Enter" || event.key === " ") {
|
|
369
351
|
event.preventDefault();
|
|
370
352
|
openFileDialog();
|
|
371
353
|
}
|
|
372
354
|
}, [openFileDialog]);
|
|
373
|
-
const displayText =
|
|
355
|
+
const displayText = React17.useMemo(() => getDisplayText(value), [value]);
|
|
374
356
|
const hasValue = displayText != null;
|
|
375
|
-
const acceptString =
|
|
376
|
-
return /* @__PURE__ */
|
|
357
|
+
const acceptString = React17.useMemo(() => normalizeAccept(accept), [accept]);
|
|
358
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
377
359
|
className: FilePickerField_default.osdkFilePickerTrigger,
|
|
378
360
|
"aria-invalid": error != null || void 0
|
|
379
|
-
}, /* @__PURE__ */
|
|
361
|
+
}, /* @__PURE__ */ React17__default.default.createElement("input", {
|
|
380
362
|
ref: inputRef,
|
|
381
363
|
type: "file",
|
|
382
364
|
className: FilePickerField_default.osdkFilePickerHiddenInput,
|
|
@@ -384,7 +366,7 @@ var FilePickerField = /* @__PURE__ */ React18.memo(function FilePickerFieldFn({
|
|
|
384
366
|
accept: acceptString,
|
|
385
367
|
onChange: handleInputChange,
|
|
386
368
|
tabIndex: -1
|
|
387
|
-
}), /* @__PURE__ */
|
|
369
|
+
}), /* @__PURE__ */ React17__default.default.createElement(button.Button, {
|
|
388
370
|
ref: fileTriggerRef,
|
|
389
371
|
id,
|
|
390
372
|
type: "button",
|
|
@@ -393,12 +375,12 @@ var FilePickerField = /* @__PURE__ */ React18.memo(function FilePickerFieldFn({
|
|
|
393
375
|
onKeyDown: handleKeyDown,
|
|
394
376
|
"aria-label": "Choose file",
|
|
395
377
|
"aria-invalid": error != null || void 0
|
|
396
|
-
}, displayText ?? text), hasValue && /* @__PURE__ */
|
|
378
|
+
}, displayText ?? text), hasValue && /* @__PURE__ */ React17__default.default.createElement(button.Button, {
|
|
397
379
|
type: "button",
|
|
398
380
|
className: FilePickerField_default.osdkFilePickerClear,
|
|
399
381
|
onClick: handleClear,
|
|
400
382
|
"aria-label": "Clear selection"
|
|
401
|
-
}, /* @__PURE__ */
|
|
383
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.Cross, null)), /* @__PURE__ */ React17__default.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
|
|
402
384
|
type: "button",
|
|
403
385
|
tabIndex: -1,
|
|
404
386
|
className: FilePickerField_default.osdkFilePickerBrowse,
|
|
@@ -439,8 +421,8 @@ function NumberInputField({
|
|
|
439
421
|
max,
|
|
440
422
|
step
|
|
441
423
|
}) {
|
|
442
|
-
const [displayValue, setDisplayValue] =
|
|
443
|
-
const prevValueRef =
|
|
424
|
+
const [displayValue, setDisplayValue] = React17.useState(() => formatNumberForDisplay(value));
|
|
425
|
+
const prevValueRef = React17.useRef(value);
|
|
444
426
|
if (prevValueRef.current !== value) {
|
|
445
427
|
prevValueRef.current = value;
|
|
446
428
|
const currentParsed = parseNumericValue(displayValue);
|
|
@@ -448,14 +430,14 @@ function NumberInputField({
|
|
|
448
430
|
setDisplayValue(formatNumberForDisplay(value));
|
|
449
431
|
}
|
|
450
432
|
}
|
|
451
|
-
const handleValueChange =
|
|
433
|
+
const handleValueChange = React17.useCallback((newValue) => {
|
|
452
434
|
if (!isValidInput(newValue)) {
|
|
453
435
|
return;
|
|
454
436
|
}
|
|
455
437
|
setDisplayValue(newValue);
|
|
456
438
|
onChange?.(parseNumericValue(newValue));
|
|
457
439
|
}, [onChange]);
|
|
458
|
-
const applyStep =
|
|
440
|
+
const applyStep = React17.useCallback((direction) => {
|
|
459
441
|
const current = parseNumericValue(displayValue) ?? 0;
|
|
460
442
|
const delta = direction * (step ?? DEFAULT_STEP);
|
|
461
443
|
const next = clamp(current + delta, min, max);
|
|
@@ -463,23 +445,23 @@ function NumberInputField({
|
|
|
463
445
|
setDisplayValue(formatted);
|
|
464
446
|
onChange?.(next);
|
|
465
447
|
}, [displayValue, onChange, step, min, max]);
|
|
466
|
-
const handleKeyDown =
|
|
448
|
+
const handleKeyDown = React17.useCallback((e) => {
|
|
467
449
|
if (e.key !== "ArrowUp" && e.key !== "ArrowDown") {
|
|
468
450
|
return;
|
|
469
451
|
}
|
|
470
452
|
e.preventDefault();
|
|
471
453
|
applyStep(e.key === "ArrowUp" ? 1 : -1);
|
|
472
454
|
}, [applyStep]);
|
|
473
|
-
const handleStepUp =
|
|
455
|
+
const handleStepUp = React17.useCallback(() => {
|
|
474
456
|
applyStep(1);
|
|
475
457
|
}, [applyStep]);
|
|
476
|
-
const handleStepDown =
|
|
458
|
+
const handleStepDown = React17.useCallback(() => {
|
|
477
459
|
applyStep(-1);
|
|
478
460
|
}, [applyStep]);
|
|
479
|
-
return /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
480
462
|
className: NumberInputField_default.osdkNumberInputWrapper,
|
|
481
463
|
"aria-invalid": error != null || void 0
|
|
482
|
-
}, /* @__PURE__ */
|
|
464
|
+
}, /* @__PURE__ */ React17__default.default.createElement(input.Input, {
|
|
483
465
|
id,
|
|
484
466
|
className: NumberInputField_default.osdkNumberInputField,
|
|
485
467
|
type: "text",
|
|
@@ -488,21 +470,21 @@ function NumberInputField({
|
|
|
488
470
|
onValueChange: handleValueChange,
|
|
489
471
|
onKeyDown: handleKeyDown,
|
|
490
472
|
placeholder
|
|
491
|
-
}), /* @__PURE__ */
|
|
473
|
+
}), /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
492
474
|
className: NumberInputField_default.osdkNumberInputStepper
|
|
493
|
-
}, /* @__PURE__ */
|
|
475
|
+
}, /* @__PURE__ */ React17__default.default.createElement(button.Button, {
|
|
494
476
|
className: NumberInputField_default.osdkNumberInputStepButton,
|
|
495
477
|
"aria-label": "Increment",
|
|
496
478
|
tabIndex: -1,
|
|
497
479
|
onClick: handleStepUp
|
|
498
|
-
}, /* @__PURE__ */
|
|
480
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.ChevronUp, {
|
|
499
481
|
size: CHEVRON_SIZE
|
|
500
|
-
})), /* @__PURE__ */
|
|
482
|
+
})), /* @__PURE__ */ React17__default.default.createElement(button.Button, {
|
|
501
483
|
className: NumberInputField_default.osdkNumberInputStepButton,
|
|
502
484
|
"aria-label": "Decrement",
|
|
503
485
|
tabIndex: -1,
|
|
504
486
|
onClick: handleStepDown
|
|
505
|
-
}, /* @__PURE__ */
|
|
487
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.ChevronDown, {
|
|
506
488
|
size: CHEVRON_SIZE
|
|
507
489
|
}))));
|
|
508
490
|
}
|
|
@@ -525,8 +507,8 @@ function clamp(value, min, max) {
|
|
|
525
507
|
return value;
|
|
526
508
|
}
|
|
527
509
|
function useDebouncedValue(value, debounceMs) {
|
|
528
|
-
const [debouncedValue, setDebouncedValue] =
|
|
529
|
-
|
|
510
|
+
const [debouncedValue, setDebouncedValue] = React17.useState(value);
|
|
511
|
+
React17.useEffect(function debounceValue() {
|
|
530
512
|
const timer = setTimeout(() => {
|
|
531
513
|
setDebouncedValue(value);
|
|
532
514
|
}, debounceMs);
|
|
@@ -536,20 +518,6 @@ function useDebouncedValue(value, debounceMs) {
|
|
|
536
518
|
}, [value, debounceMs]);
|
|
537
519
|
return debouncedValue;
|
|
538
520
|
}
|
|
539
|
-
function useEventCallback(callback) {
|
|
540
|
-
const latestCallbackValueWrapper = React18__namespace.useRef((...args) => {
|
|
541
|
-
if (typeof globalThis.console !== "undefined") {
|
|
542
|
-
globalThis.console.error("A callback created with `useEventCallback` was called during the initial render of a component. This will throw an error in the future.");
|
|
543
|
-
}
|
|
544
|
-
return callback(...args);
|
|
545
|
-
});
|
|
546
|
-
React18__namespace.useEffect(() => {
|
|
547
|
-
latestCallbackValueWrapper.current = callback;
|
|
548
|
-
}, [callback]);
|
|
549
|
-
return React18__namespace.useCallback((...args) => latestCallbackValueWrapper.current(...args), []);
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
// src/shared/hooks/useInfiniteScroll.ts
|
|
553
521
|
var THRESHOLD = 0.5;
|
|
554
522
|
var OPTIONS = {
|
|
555
523
|
threshold: THRESHOLD
|
|
@@ -558,11 +526,11 @@ function useInfiniteScroll({
|
|
|
558
526
|
callback,
|
|
559
527
|
loadedCount
|
|
560
528
|
}) {
|
|
561
|
-
const observer =
|
|
562
|
-
const targetRef =
|
|
563
|
-
const eventCallback = useEventCallback(callback);
|
|
564
|
-
const throttledCallback =
|
|
565
|
-
const handleObserverUpdate =
|
|
529
|
+
const observer = React17.useRef();
|
|
530
|
+
const targetRef = React17.useRef();
|
|
531
|
+
const eventCallback = chunkFRSIMUPL_cjs.useEventCallback(callback);
|
|
532
|
+
const throttledCallback = React17.useCallback(lodashEs.throttle(eventCallback), []);
|
|
533
|
+
const handleObserverUpdate = React17.useCallback(
|
|
566
534
|
(entries) => {
|
|
567
535
|
const ent = entries[0];
|
|
568
536
|
if (ent && ent.isIntersecting) {
|
|
@@ -572,7 +540,7 @@ function useInfiniteScroll({
|
|
|
572
540
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
573
541
|
[]
|
|
574
542
|
);
|
|
575
|
-
|
|
543
|
+
React17.useEffect(() => {
|
|
576
544
|
const {
|
|
577
545
|
current: targetElement
|
|
578
546
|
} = targetRef;
|
|
@@ -611,7 +579,7 @@ function _extends() {
|
|
|
611
579
|
return n;
|
|
612
580
|
}, _extends.apply(null, arguments);
|
|
613
581
|
}
|
|
614
|
-
var AsyncDropdownField =
|
|
582
|
+
var AsyncDropdownField = chunkFRSIMUPL_cjs.typedReactMemo(function AsyncDropdownFieldFn({
|
|
615
583
|
isLoading,
|
|
616
584
|
hasMore,
|
|
617
585
|
isSearching,
|
|
@@ -620,20 +588,20 @@ var AsyncDropdownField = chunkZBJEZKOD_cjs.typedReactMemo(function AsyncDropdown
|
|
|
620
588
|
...dropdownProps
|
|
621
589
|
}) {
|
|
622
590
|
const itemCount = dropdownProps.items.length;
|
|
623
|
-
const popupStatus =
|
|
591
|
+
const popupStatus = React17.useMemo(() => {
|
|
624
592
|
if (fetchError != null) {
|
|
625
|
-
return /* @__PURE__ */
|
|
593
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
626
594
|
className: AsyncDropdownField_default.osdkAsyncDropdownError,
|
|
627
595
|
role: "alert"
|
|
628
596
|
}, fetchError.message);
|
|
629
597
|
}
|
|
630
598
|
if (isSearching) {
|
|
631
|
-
return /* @__PURE__ */
|
|
599
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
632
600
|
className: AsyncDropdownField_default.osdkAsyncDropdownStatus
|
|
633
601
|
}, "Searching\u2026");
|
|
634
602
|
}
|
|
635
603
|
if (isLoading && itemCount === 0) {
|
|
636
|
-
return /* @__PURE__ */
|
|
604
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
637
605
|
className: AsyncDropdownField_default.osdkAsyncDropdownStatus
|
|
638
606
|
}, "Loading\u2026");
|
|
639
607
|
}
|
|
@@ -643,10 +611,10 @@ var AsyncDropdownField = chunkZBJEZKOD_cjs.typedReactMemo(function AsyncDropdown
|
|
|
643
611
|
callback: onFetchMore,
|
|
644
612
|
loadedCount: itemCount
|
|
645
613
|
});
|
|
646
|
-
return /* @__PURE__ */
|
|
614
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkFRSIMUPL_cjs.DropdownField, _extends({}, dropdownProps, {
|
|
647
615
|
isSearchable: true,
|
|
648
616
|
popupStatus,
|
|
649
|
-
trailingItem: hasMore ? /* @__PURE__ */
|
|
617
|
+
trailingItem: hasMore ? /* @__PURE__ */ React17__default.default.createElement(InfiniteScrollSentinel, {
|
|
650
618
|
key: "sentinel",
|
|
651
619
|
infiniteScrollRef
|
|
652
620
|
}) : null,
|
|
@@ -656,10 +624,10 @@ var AsyncDropdownField = chunkZBJEZKOD_cjs.typedReactMemo(function AsyncDropdown
|
|
|
656
624
|
function InfiniteScrollSentinel({
|
|
657
625
|
infiniteScrollRef
|
|
658
626
|
}) {
|
|
659
|
-
return /* @__PURE__ */
|
|
627
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
660
628
|
ref: infiniteScrollRef,
|
|
661
629
|
role: "presentation"
|
|
662
|
-
}, /* @__PURE__ */
|
|
630
|
+
}, /* @__PURE__ */ React17__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
663
631
|
className: AsyncDropdownField_default.osdkAsyncDropdownSkeleton
|
|
664
632
|
}));
|
|
665
633
|
}
|
|
@@ -677,13 +645,13 @@ function _extends2() {
|
|
|
677
645
|
var SEARCH_DEBOUNCE_MS = 300;
|
|
678
646
|
var PAGE_SIZE = 50;
|
|
679
647
|
var EMPTY_OBJECT_SELECT_ITEMS = [];
|
|
680
|
-
var ObjectSelectField = /* @__PURE__ */
|
|
648
|
+
var ObjectSelectField = /* @__PURE__ */ React17.memo(function ObjectSelectFieldFn(props) {
|
|
681
649
|
const source = resolveObjectSelectSource(props);
|
|
682
|
-
return /* @__PURE__ */
|
|
650
|
+
return /* @__PURE__ */ React17__default.default.createElement(ObjectSelectInner, _extends2({}, props, {
|
|
683
651
|
source
|
|
684
652
|
}));
|
|
685
653
|
});
|
|
686
|
-
var ObjectSelectInner = /* @__PURE__ */
|
|
654
|
+
var ObjectSelectInner = /* @__PURE__ */ React17.memo(function ObjectSelectInnerFn({
|
|
687
655
|
source,
|
|
688
656
|
value,
|
|
689
657
|
onChange,
|
|
@@ -694,9 +662,9 @@ var ObjectSelectInner = /* @__PURE__ */ React18.memo(function ObjectSelectInnerF
|
|
|
694
662
|
portalRef,
|
|
695
663
|
portalContainer
|
|
696
664
|
}) {
|
|
697
|
-
const [query, setQuery] =
|
|
665
|
+
const [query, setQuery] = React17.useState("");
|
|
698
666
|
const debouncedQuery = useDebouncedValue(query, SEARCH_DEBOUNCE_MS);
|
|
699
|
-
const handleChange =
|
|
667
|
+
const handleChange = React17.useCallback((newValue) => {
|
|
700
668
|
onChange?.(newValue);
|
|
701
669
|
setQuery("");
|
|
702
670
|
}, [onChange]);
|
|
@@ -704,7 +672,7 @@ var ObjectSelectInner = /* @__PURE__ */ React18.memo(function ObjectSelectInnerF
|
|
|
704
672
|
metadata
|
|
705
673
|
} = react.useOsdkMetadata(source.objectType);
|
|
706
674
|
const titleProperty = typeof metadata?.titleProperty === "string" ? metadata.titleProperty : void 0;
|
|
707
|
-
const where =
|
|
675
|
+
const where = React17.useMemo(() => {
|
|
708
676
|
const trimmed = debouncedQuery.trim();
|
|
709
677
|
if (trimmed === "" || titleProperty == null) {
|
|
710
678
|
return void 0;
|
|
@@ -733,10 +701,10 @@ var ObjectSelectInner = /* @__PURE__ */ React18.memo(function ObjectSelectInnerF
|
|
|
733
701
|
hasMore
|
|
734
702
|
} = source.kind === "objectSet" ? objectSetResult : objectTypeResult;
|
|
735
703
|
const items = data ?? EMPTY_OBJECT_SELECT_ITEMS;
|
|
736
|
-
const handleFetchMore =
|
|
704
|
+
const handleFetchMore = React17.useCallback(() => {
|
|
737
705
|
void fetchMore?.();
|
|
738
706
|
}, [fetchMore]);
|
|
739
|
-
return /* @__PURE__ */
|
|
707
|
+
return /* @__PURE__ */ React17__default.default.createElement(AsyncDropdownField, {
|
|
740
708
|
id,
|
|
741
709
|
value,
|
|
742
710
|
onChange: handleChange,
|
|
@@ -779,23 +747,23 @@ function itemToKey(obj) {
|
|
|
779
747
|
function isItemEqual(a, b) {
|
|
780
748
|
return a.$primaryKey === b.$primaryKey;
|
|
781
749
|
}
|
|
782
|
-
var BlueprintIcon = /* @__PURE__ */
|
|
750
|
+
var BlueprintIcon = /* @__PURE__ */ React17__default.default.memo(function BlueprintIconFn({
|
|
783
751
|
icon,
|
|
784
752
|
size
|
|
785
753
|
}) {
|
|
786
754
|
const paths = useIcon(icon.name, size);
|
|
787
|
-
return /* @__PURE__ */
|
|
755
|
+
return /* @__PURE__ */ React17__default.default.createElement(icons.SVGIconContainer, {
|
|
788
756
|
iconName: icon.name,
|
|
789
757
|
color: icon.color
|
|
790
|
-
}, paths != null ? paths.map((d, i) => /* @__PURE__ */
|
|
758
|
+
}, paths != null ? paths.map((d, i) => /* @__PURE__ */ React17__default.default.createElement("path", {
|
|
791
759
|
key: i,
|
|
792
760
|
d,
|
|
793
761
|
fillRule: "evenodd"
|
|
794
762
|
})) : []);
|
|
795
763
|
});
|
|
796
764
|
function useIcon(icon, size) {
|
|
797
|
-
const [iconPaths, setIconPaths] =
|
|
798
|
-
|
|
765
|
+
const [iconPaths, setIconPaths] = React17__default.default.useState(() => icons.Icons.getPaths(icon, size));
|
|
766
|
+
React17__default.default.useEffect(function loadIconPaths() {
|
|
799
767
|
let isMounted = true;
|
|
800
768
|
const loadedIconPaths = icons.Icons.getPaths(icon, size);
|
|
801
769
|
if (loadedIconPaths != null) {
|
|
@@ -824,20 +792,20 @@ var DEFAULT_OBJECT_ICON = {
|
|
|
824
792
|
};
|
|
825
793
|
var ICON_SIZE = icons.IconSize.STANDARD;
|
|
826
794
|
var DEFAULT_EMPTY_MESSAGE = "Object set is not defined";
|
|
827
|
-
var ObjectSetField =
|
|
795
|
+
var ObjectSetField = chunkFRSIMUPL_cjs.typedReactMemo(function ObjectSetFieldFn({
|
|
828
796
|
value,
|
|
829
797
|
emptyMessage = DEFAULT_EMPTY_MESSAGE
|
|
830
798
|
}) {
|
|
831
799
|
if (value == null) {
|
|
832
|
-
return /* @__PURE__ */
|
|
800
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
833
801
|
className: classnames__default.default(ObjectSetField_default.osdkObjectSetField, ObjectSetField_default.osdkObjectSetFieldEmpty)
|
|
834
802
|
}, emptyMessage);
|
|
835
803
|
}
|
|
836
|
-
return /* @__PURE__ */
|
|
804
|
+
return /* @__PURE__ */ React17__default.default.createElement(ObjectSetFieldContent, {
|
|
837
805
|
objectSet: value
|
|
838
806
|
});
|
|
839
807
|
});
|
|
840
|
-
var ObjectSetFieldContent = /* @__PURE__ */
|
|
808
|
+
var ObjectSetFieldContent = /* @__PURE__ */ React17__default.default.memo(function ObjectSetFieldContentFn({
|
|
841
809
|
objectSet
|
|
842
810
|
}) {
|
|
843
811
|
const objectTypeDef = objectSet.$objectSetInternals.def;
|
|
@@ -855,22 +823,22 @@ var ObjectSetFieldContent = /* @__PURE__ */ React18__namespace.default.memo(func
|
|
|
855
823
|
pageSize: 1
|
|
856
824
|
});
|
|
857
825
|
const hasMetadata = metadata != null;
|
|
858
|
-
const icon =
|
|
826
|
+
const icon = React17__default.default.useMemo(() => metadata != null && "icon" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);
|
|
859
827
|
const displayName = totalCount === "1" || !hasMetadata || !("pluralDisplayName" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;
|
|
860
828
|
const showLoadingState = metadataLoading && !hasMetadata;
|
|
861
|
-
return /* @__PURE__ */
|
|
829
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
862
830
|
className: ObjectSetField_default.osdkObjectSetField
|
|
863
|
-
}, showLoadingState ? /* @__PURE__ */
|
|
831
|
+
}, showLoadingState ? /* @__PURE__ */ React17__default.default.createElement(React17__default.default.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /* @__PURE__ */ React17__default.default.createElement(React17__default.default.Fragment, null, /* @__PURE__ */ React17__default.default.createElement(BlueprintIcon, {
|
|
864
832
|
icon,
|
|
865
833
|
size: ICON_SIZE
|
|
866
|
-
}), /* @__PURE__ */
|
|
834
|
+
}), /* @__PURE__ */ React17__default.default.createElement(ObjectSetLabel, {
|
|
867
835
|
displayName,
|
|
868
836
|
totalCount,
|
|
869
837
|
error: objectSetError,
|
|
870
838
|
isLoading: objectSetLoading
|
|
871
839
|
})));
|
|
872
840
|
});
|
|
873
|
-
var ObjectSetLabel = /* @__PURE__ */
|
|
841
|
+
var ObjectSetLabel = /* @__PURE__ */ React17__default.default.memo(function ObjectSetLabelFn({
|
|
874
842
|
displayName,
|
|
875
843
|
totalCount,
|
|
876
844
|
isLoading,
|
|
@@ -880,15 +848,15 @@ var ObjectSetLabel = /* @__PURE__ */ React18__namespace.default.memo(function Ob
|
|
|
880
848
|
const label = displayName ?? (totalCount === "1" ? "object" : "objects");
|
|
881
849
|
const showSkeleton = isLoading && !hasData;
|
|
882
850
|
const showError = error != null && !hasData && !isLoading;
|
|
883
|
-
return /* @__PURE__ */
|
|
851
|
+
return /* @__PURE__ */ React17__default.default.createElement(React17__default.default.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
884
852
|
className: ObjectSetField_default.osdkObjectSetFieldError,
|
|
885
853
|
role: "alert"
|
|
886
|
-
}, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */
|
|
854
|
+
}, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */ React17__default.default.createElement("span", null, `${formatCount(totalCount)} ${label}`));
|
|
887
855
|
});
|
|
888
|
-
var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */
|
|
856
|
+
var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */ React17__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
889
857
|
className: ObjectSetField_default.osdkObjectSetIconSkeleton
|
|
890
858
|
});
|
|
891
|
-
var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */
|
|
859
|
+
var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */ React17__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
892
860
|
className: ObjectSetField_default.osdkObjectSetLabelSkeleton
|
|
893
861
|
});
|
|
894
862
|
function formatCount(count) {
|
|
@@ -909,51 +877,51 @@ function toComponentIcon(apiIcon) {
|
|
|
909
877
|
var RadioButtonsField_default = {};
|
|
910
878
|
|
|
911
879
|
// src/action-form/fields/RadioButtonsField.tsx
|
|
912
|
-
var RadioButtonsField =
|
|
880
|
+
var RadioButtonsField = chunkFRSIMUPL_cjs.typedReactMemo(function RadioButtonsFieldFn({
|
|
913
881
|
id,
|
|
914
882
|
value,
|
|
915
883
|
onChange,
|
|
916
884
|
options,
|
|
917
885
|
orientation
|
|
918
886
|
}) {
|
|
919
|
-
const selectedLabel =
|
|
920
|
-
const handleValueChange =
|
|
887
|
+
const selectedLabel = React17.useMemo(() => value != null ? options.find((opt) => opt.value === value)?.label : void 0, [options, value]);
|
|
888
|
+
const handleValueChange = React17.useCallback((nextLabel) => {
|
|
921
889
|
const match = options.find((opt) => opt.label === nextLabel);
|
|
922
890
|
onChange?.(match?.value ?? null);
|
|
923
891
|
}, [options, onChange]);
|
|
924
|
-
return /* @__PURE__ */
|
|
892
|
+
return /* @__PURE__ */ React17__default.default.createElement(radioGroup.RadioGroup, {
|
|
925
893
|
id,
|
|
926
894
|
className: RadioButtonsField_default.osdkRadioGroup,
|
|
927
895
|
"data-orientation": orientation ?? "vertical",
|
|
928
896
|
value: selectedLabel,
|
|
929
897
|
onValueChange: handleValueChange
|
|
930
|
-
}, options.map((option) => /* @__PURE__ */
|
|
898
|
+
}, options.map((option) => /* @__PURE__ */ React17__default.default.createElement(RadioItem, {
|
|
931
899
|
key: option.label,
|
|
932
900
|
option
|
|
933
901
|
})));
|
|
934
902
|
});
|
|
935
|
-
var RadioItem = /* @__PURE__ */
|
|
903
|
+
var RadioItem = /* @__PURE__ */ React17.memo(function RadioItemFn({
|
|
936
904
|
option
|
|
937
905
|
}) {
|
|
938
|
-
return /* @__PURE__ */
|
|
906
|
+
return /* @__PURE__ */ React17__default.default.createElement("label", {
|
|
939
907
|
className: RadioButtonsField_default.osdkRadioItem
|
|
940
|
-
}, /* @__PURE__ */
|
|
908
|
+
}, /* @__PURE__ */ React17__default.default.createElement(radio.Radio.Root, {
|
|
941
909
|
value: option.label,
|
|
942
910
|
className: RadioButtonsField_default.osdkRadioRoot
|
|
943
|
-
}, /* @__PURE__ */
|
|
911
|
+
}, /* @__PURE__ */ React17__default.default.createElement(radio.Radio.Indicator, {
|
|
944
912
|
className: RadioButtonsField_default.osdkRadioIndicator
|
|
945
|
-
})), /* @__PURE__ */
|
|
913
|
+
})), /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
946
914
|
className: RadioButtonsField_default.osdkRadioLabel
|
|
947
915
|
}, option.label));
|
|
948
916
|
});
|
|
949
|
-
var SwitchField = /* @__PURE__ */
|
|
917
|
+
var SwitchField = /* @__PURE__ */ React17__default.default.memo(function SwitchFieldFn({
|
|
950
918
|
id,
|
|
951
919
|
label,
|
|
952
920
|
value,
|
|
953
921
|
onChange,
|
|
954
922
|
error
|
|
955
923
|
}) {
|
|
956
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkSFQMJMTV_cjs.Switch, {
|
|
957
925
|
id,
|
|
958
926
|
checked: value ?? false,
|
|
959
927
|
onCheckedChange: onChange,
|
|
@@ -989,12 +957,12 @@ function TextAreaField({
|
|
|
989
957
|
minLength,
|
|
990
958
|
maxLength
|
|
991
959
|
}) {
|
|
992
|
-
const renderTextarea =
|
|
960
|
+
const renderTextarea = React17.useCallback((props) => /* @__PURE__ */ React17__default.default.createElement("textarea", _extends3({}, props, {
|
|
993
961
|
rows,
|
|
994
962
|
wrap,
|
|
995
963
|
style: TEXTAREA_STYLE
|
|
996
964
|
})), [rows, wrap]);
|
|
997
|
-
return /* @__PURE__ */
|
|
965
|
+
return /* @__PURE__ */ React17__default.default.createElement(input.Input, {
|
|
998
966
|
id,
|
|
999
967
|
className: BaseInput_default.osdkBaseInput,
|
|
1000
968
|
value: value ?? "",
|
|
@@ -1016,13 +984,13 @@ function TextInputField({
|
|
|
1016
984
|
maxLength,
|
|
1017
985
|
disabled
|
|
1018
986
|
}) {
|
|
1019
|
-
const handleValueChange =
|
|
987
|
+
const handleValueChange = React17.useCallback((nextValue) => {
|
|
1020
988
|
if (disabled === true) {
|
|
1021
989
|
return;
|
|
1022
990
|
}
|
|
1023
991
|
onChange?.(nextValue);
|
|
1024
992
|
}, [disabled, onChange]);
|
|
1025
|
-
return /* @__PURE__ */
|
|
993
|
+
return /* @__PURE__ */ React17__default.default.createElement(input.Input, {
|
|
1026
994
|
id,
|
|
1027
995
|
className: BaseInput_default.osdkBaseInput,
|
|
1028
996
|
type: "text",
|
|
@@ -1047,7 +1015,7 @@ function _extends4() {
|
|
|
1047
1015
|
}, _extends4.apply(null, arguments);
|
|
1048
1016
|
}
|
|
1049
1017
|
var UNSUPPORTED_FIELD_MESSAGE = "Unsupported field type. Use a CUSTOM field instead";
|
|
1050
|
-
var FormFieldRenderer = /* @__PURE__ */
|
|
1018
|
+
var FormFieldRenderer = /* @__PURE__ */ React17.memo(function FormFieldRendererFn({
|
|
1051
1019
|
fieldDefinition,
|
|
1052
1020
|
value,
|
|
1053
1021
|
onFieldValueChange,
|
|
@@ -1062,7 +1030,7 @@ var FormFieldRenderer = /* @__PURE__ */ React18.memo(function FormFieldRendererF
|
|
|
1062
1030
|
helperText,
|
|
1063
1031
|
helperTextPlacement
|
|
1064
1032
|
} = fieldDefinition;
|
|
1065
|
-
return /* @__PURE__ */
|
|
1033
|
+
return /* @__PURE__ */ React17__default.default.createElement(FormField, {
|
|
1066
1034
|
label,
|
|
1067
1035
|
isRequired,
|
|
1068
1036
|
fieldKey: fieldDefinition.fieldKey,
|
|
@@ -1075,7 +1043,7 @@ var FormFieldRenderer = /* @__PURE__ */ React18.memo(function FormFieldRendererF
|
|
|
1075
1043
|
function renderFieldComponent(fieldDefinition, value, onChange, error, portalContainer, onFieldBlur) {
|
|
1076
1044
|
switch (fieldDefinition.fieldComponent) {
|
|
1077
1045
|
case "DATE_RANGE_INPUT":
|
|
1078
|
-
return /* @__PURE__ */
|
|
1046
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkZ4JDLERD_cjs.DateRangePicker, _extends4({
|
|
1079
1047
|
id: fieldDefinition.fieldKey,
|
|
1080
1048
|
value: coerceToDateRange(value),
|
|
1081
1049
|
onChange,
|
|
@@ -1084,7 +1052,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1084
1052
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1085
1053
|
}));
|
|
1086
1054
|
case "TEXT_INPUT":
|
|
1087
|
-
return /* @__PURE__ */
|
|
1055
|
+
return /* @__PURE__ */ React17__default.default.createElement(TextInputField, _extends4({
|
|
1088
1056
|
id: fieldDefinition.fieldKey,
|
|
1089
1057
|
value: value != null ? String(value) : "",
|
|
1090
1058
|
onChange,
|
|
@@ -1092,14 +1060,14 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1092
1060
|
error
|
|
1093
1061
|
}, fieldDefinition.fieldComponentProps));
|
|
1094
1062
|
case "UNSUPPORTED":
|
|
1095
|
-
return /* @__PURE__ */
|
|
1063
|
+
return /* @__PURE__ */ React17__default.default.createElement(TextInputField, _extends4({}, fieldDefinition.fieldComponentProps, {
|
|
1096
1064
|
id: fieldDefinition.fieldKey,
|
|
1097
1065
|
value: UNSUPPORTED_FIELD_MESSAGE,
|
|
1098
1066
|
error,
|
|
1099
1067
|
disabled: true
|
|
1100
1068
|
}));
|
|
1101
1069
|
case "TEXT_AREA":
|
|
1102
|
-
return /* @__PURE__ */
|
|
1070
|
+
return /* @__PURE__ */ React17__default.default.createElement(TextAreaField, _extends4({
|
|
1103
1071
|
id: fieldDefinition.fieldKey,
|
|
1104
1072
|
value: value != null ? String(value) : "",
|
|
1105
1073
|
onChange,
|
|
@@ -1107,7 +1075,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1107
1075
|
error
|
|
1108
1076
|
}, fieldDefinition.fieldComponentProps));
|
|
1109
1077
|
case "DROPDOWN": {
|
|
1110
|
-
return /* @__PURE__ */
|
|
1078
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkFRSIMUPL_cjs.DropdownField, _extends4({
|
|
1111
1079
|
id: fieldDefinition.fieldKey,
|
|
1112
1080
|
value,
|
|
1113
1081
|
onChange,
|
|
@@ -1119,7 +1087,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1119
1087
|
}));
|
|
1120
1088
|
}
|
|
1121
1089
|
case "DATETIME_PICKER":
|
|
1122
|
-
return /* @__PURE__ */
|
|
1090
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkZ4JDLERD_cjs.DatePicker, _extends4({
|
|
1123
1091
|
id: fieldDefinition.fieldKey,
|
|
1124
1092
|
placeholder: fieldDefinition.placeholder,
|
|
1125
1093
|
value: value instanceof Date ? value : null,
|
|
@@ -1129,14 +1097,14 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1129
1097
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1130
1098
|
}));
|
|
1131
1099
|
case "RADIO_BUTTONS":
|
|
1132
|
-
return /* @__PURE__ */
|
|
1100
|
+
return /* @__PURE__ */ React17__default.default.createElement(RadioButtonsField, _extends4({
|
|
1133
1101
|
id: fieldDefinition.fieldKey,
|
|
1134
1102
|
value,
|
|
1135
1103
|
onChange,
|
|
1136
1104
|
error
|
|
1137
1105
|
}, fieldDefinition.fieldComponentProps));
|
|
1138
1106
|
case "SWITCH":
|
|
1139
|
-
return /* @__PURE__ */
|
|
1107
|
+
return /* @__PURE__ */ React17__default.default.createElement(SwitchField, _extends4({
|
|
1140
1108
|
id: fieldDefinition.fieldKey,
|
|
1141
1109
|
label: fieldDefinition.label,
|
|
1142
1110
|
value: !!value,
|
|
@@ -1144,14 +1112,14 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1144
1112
|
error
|
|
1145
1113
|
}, fieldDefinition.fieldComponentProps));
|
|
1146
1114
|
case "CUSTOM":
|
|
1147
|
-
return /* @__PURE__ */
|
|
1115
|
+
return /* @__PURE__ */ React17__default.default.createElement(CustomField, _extends4({
|
|
1148
1116
|
id: fieldDefinition.fieldKey,
|
|
1149
1117
|
value,
|
|
1150
1118
|
onChange,
|
|
1151
1119
|
error
|
|
1152
1120
|
}, fieldDefinition.fieldComponentProps));
|
|
1153
1121
|
case "NUMBER_INPUT":
|
|
1154
|
-
return /* @__PURE__ */
|
|
1122
|
+
return /* @__PURE__ */ React17__default.default.createElement(NumberInputField, _extends4({
|
|
1155
1123
|
id: fieldDefinition.fieldKey,
|
|
1156
1124
|
value: typeof value === "number" ? value : null,
|
|
1157
1125
|
onChange,
|
|
@@ -1159,14 +1127,14 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1159
1127
|
error
|
|
1160
1128
|
}, fieldDefinition.fieldComponentProps));
|
|
1161
1129
|
case "FILE_PICKER":
|
|
1162
|
-
return /* @__PURE__ */
|
|
1130
|
+
return /* @__PURE__ */ React17__default.default.createElement(FilePickerField, _extends4({
|
|
1163
1131
|
id: fieldDefinition.fieldKey,
|
|
1164
1132
|
value: coerceToFileValue(value),
|
|
1165
1133
|
onChange,
|
|
1166
1134
|
error
|
|
1167
1135
|
}, fieldDefinition.fieldComponentProps));
|
|
1168
1136
|
case "OBJECT_SELECT":
|
|
1169
|
-
return /* @__PURE__ */
|
|
1137
|
+
return /* @__PURE__ */ React17__default.default.createElement(ObjectSelectField, _extends4({
|
|
1170
1138
|
id: fieldDefinition.fieldKey,
|
|
1171
1139
|
value: narrowToOsdkObject(value),
|
|
1172
1140
|
onChange,
|
|
@@ -1176,7 +1144,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1176
1144
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1177
1145
|
}));
|
|
1178
1146
|
case "OBJECT_SET":
|
|
1179
|
-
return /* @__PURE__ */
|
|
1147
|
+
return /* @__PURE__ */ React17__default.default.createElement(ObjectSetField, _extends4({
|
|
1180
1148
|
id: fieldDefinition.fieldKey
|
|
1181
1149
|
}, fieldDefinition.fieldComponentProps));
|
|
1182
1150
|
default:
|
|
@@ -1217,13 +1185,13 @@ function assertUnreachableFieldComponent(value) {
|
|
|
1217
1185
|
|
|
1218
1186
|
// src/action-form/fields/FieldBridge.tsx
|
|
1219
1187
|
var SELECT_LIKE_FIELDS = /* @__PURE__ */ new Set(["RADIO_BUTTONS", "SWITCH"]);
|
|
1220
|
-
var FieldBridge = /* @__PURE__ */
|
|
1188
|
+
var FieldBridge = /* @__PURE__ */ React17.memo(function FieldBridgeFn({
|
|
1221
1189
|
fieldDef,
|
|
1222
1190
|
control,
|
|
1223
1191
|
onExternalChange,
|
|
1224
1192
|
portalContainer
|
|
1225
1193
|
}) {
|
|
1226
|
-
const rules =
|
|
1194
|
+
const rules = React17.useMemo(() => extractValidationRules(fieldDef), [fieldDef]);
|
|
1227
1195
|
const {
|
|
1228
1196
|
field: {
|
|
1229
1197
|
onChange,
|
|
@@ -1240,20 +1208,20 @@ var FieldBridge = /* @__PURE__ */ React18.memo(function FieldBridgeFn({
|
|
|
1240
1208
|
});
|
|
1241
1209
|
const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);
|
|
1242
1210
|
const isDropdown = fieldDef.fieldComponent === "DROPDOWN";
|
|
1243
|
-
const handleChange =
|
|
1211
|
+
const handleChange = React17.useCallback((newValue) => {
|
|
1244
1212
|
onChange(newValue);
|
|
1245
1213
|
onExternalChange?.(fieldDef.fieldKey, newValue);
|
|
1246
1214
|
if (isSelectLike) {
|
|
1247
1215
|
onBlur();
|
|
1248
1216
|
}
|
|
1249
1217
|
}, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);
|
|
1250
|
-
const handleBlur =
|
|
1218
|
+
const handleBlur = React17.useCallback((e) => {
|
|
1251
1219
|
if (e.currentTarget.contains(e.relatedTarget)) {
|
|
1252
1220
|
return;
|
|
1253
1221
|
}
|
|
1254
1222
|
onBlur();
|
|
1255
1223
|
}, [onBlur]);
|
|
1256
|
-
return /* @__PURE__ */
|
|
1224
|
+
return /* @__PURE__ */ React17__default.default.createElement(FormFieldRenderer, {
|
|
1257
1225
|
value,
|
|
1258
1226
|
fieldDefinition: fieldDef,
|
|
1259
1227
|
onFieldValueChange: handleChange,
|
|
@@ -1268,10 +1236,10 @@ var FieldBridge = /* @__PURE__ */ React18.memo(function FieldBridgeFn({
|
|
|
1268
1236
|
var FormHeader_default = {};
|
|
1269
1237
|
|
|
1270
1238
|
// src/action-form/FormHeader.tsx
|
|
1271
|
-
var FormHeader = /* @__PURE__ */
|
|
1239
|
+
var FormHeader = /* @__PURE__ */ React17.memo(function FormHeaderFn({
|
|
1272
1240
|
title
|
|
1273
1241
|
}) {
|
|
1274
|
-
return /* @__PURE__ */
|
|
1242
|
+
return /* @__PURE__ */ React17__default.default.createElement("h2", {
|
|
1275
1243
|
className: FormHeader_default.osdkFormHeader
|
|
1276
1244
|
}, title);
|
|
1277
1245
|
});
|
|
@@ -1280,7 +1248,7 @@ var FormHeader = /* @__PURE__ */ React18.memo(function FormHeaderFn({
|
|
|
1280
1248
|
var FormSection_default = {};
|
|
1281
1249
|
|
|
1282
1250
|
// src/action-form/FormSection.tsx
|
|
1283
|
-
var FormSection = /* @__PURE__ */
|
|
1251
|
+
var FormSection = /* @__PURE__ */ React17.memo(function FormSectionFn({
|
|
1284
1252
|
definition,
|
|
1285
1253
|
errorCount,
|
|
1286
1254
|
children
|
|
@@ -1295,65 +1263,65 @@ var FormSection = /* @__PURE__ */ React18.memo(function FormSectionFn({
|
|
|
1295
1263
|
} = definition;
|
|
1296
1264
|
const isMinimal = style === "minimal";
|
|
1297
1265
|
if (isMinimal) {
|
|
1298
|
-
return /* @__PURE__ */
|
|
1266
|
+
return /* @__PURE__ */ React17__default.default.createElement(MinimalSection, {
|
|
1299
1267
|
title,
|
|
1300
1268
|
description
|
|
1301
1269
|
}, children);
|
|
1302
1270
|
}
|
|
1303
1271
|
const contentClassName = classnames__default.default(columnCount === 2 ? FormSection_default.osdkFormSectionGrid : FormSection_default.osdkFormSectionContent, FormSection_default.osdkFormSectionDivider);
|
|
1304
1272
|
if (!showTitleBar) {
|
|
1305
|
-
return /* @__PURE__ */
|
|
1273
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1306
1274
|
className: FormSection_default.osdkFormSectionBox
|
|
1307
|
-
}, /* @__PURE__ */
|
|
1275
|
+
}, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1308
1276
|
className: contentClassName
|
|
1309
1277
|
}, children));
|
|
1310
1278
|
}
|
|
1311
|
-
return /* @__PURE__ */
|
|
1279
|
+
return /* @__PURE__ */ React17__default.default.createElement(collapsible.Collapsible.Root, {
|
|
1312
1280
|
// Inverted: Base UI uses "open" semantics, our API uses "collapsed" semantics
|
|
1313
1281
|
defaultOpen: !collapsedByDefault,
|
|
1314
1282
|
className: FormSection_default.osdkFormSectionBox
|
|
1315
|
-
}, /* @__PURE__ */
|
|
1283
|
+
}, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1316
1284
|
className: FormSection_default.osdkFormSectionHeader
|
|
1317
|
-
}, /* @__PURE__ */
|
|
1285
|
+
}, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1318
1286
|
className: FormSection_default.osdkFormSectionTitleArea
|
|
1319
|
-
}, /* @__PURE__ */
|
|
1287
|
+
}, /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1320
1288
|
className: FormSection_default.osdkFormSectionTitle
|
|
1321
|
-
}, title), description != null && /* @__PURE__ */
|
|
1289
|
+
}, title), description != null && /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1322
1290
|
className: FormSection_default.osdkFormSectionDescription
|
|
1323
|
-
}, description)), /* @__PURE__ */
|
|
1291
|
+
}, description)), /* @__PURE__ */ React17__default.default.createElement(collapsible.Collapsible.Trigger, {
|
|
1324
1292
|
className: FormSection_default.osdkFormSectionTrigger,
|
|
1325
1293
|
"aria-label": title
|
|
1326
|
-
}, errorCount > 0 && /* @__PURE__ */
|
|
1294
|
+
}, errorCount > 0 && /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1327
1295
|
className: FormSection_default.osdkFormSectionErrorBadge,
|
|
1328
1296
|
role: "status"
|
|
1329
|
-
}, errorCount === 1 ? "1 error" : `${errorCount} errors`), /* @__PURE__ */
|
|
1297
|
+
}, errorCount === 1 ? "1 error" : `${errorCount} errors`), /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1330
1298
|
className: FormSection_default.osdkFormSectionChevron
|
|
1331
|
-
}, /* @__PURE__ */
|
|
1299
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.CaretDown, {
|
|
1332
1300
|
size: 16
|
|
1333
|
-
})))), /* @__PURE__ */
|
|
1301
|
+
})))), /* @__PURE__ */ React17__default.default.createElement(collapsible.Collapsible.Panel, {
|
|
1334
1302
|
keepMounted: true
|
|
1335
|
-
}, /* @__PURE__ */
|
|
1303
|
+
}, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1336
1304
|
className: contentClassName
|
|
1337
1305
|
}, children)));
|
|
1338
1306
|
});
|
|
1339
|
-
var MinimalSection = /* @__PURE__ */
|
|
1307
|
+
var MinimalSection = /* @__PURE__ */ React17.memo(function MinimalSectionFn({
|
|
1340
1308
|
title,
|
|
1341
1309
|
description,
|
|
1342
1310
|
children
|
|
1343
1311
|
}) {
|
|
1344
|
-
return /* @__PURE__ */
|
|
1312
|
+
return /* @__PURE__ */ React17__default.default.createElement("div", null, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1345
1313
|
className: FormSection_default.osdkFormSectionMinimalHeader
|
|
1346
|
-
}, /* @__PURE__ */
|
|
1314
|
+
}, /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1347
1315
|
className: FormSection_default.osdkFormSectionMinimalTitle
|
|
1348
|
-
}, title), description != null && /* @__PURE__ */
|
|
1316
|
+
}, title), description != null && /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1349
1317
|
className: FormSection_default.osdkFormSectionMinimalDescription
|
|
1350
|
-
}, description)), /* @__PURE__ */
|
|
1318
|
+
}, description)), /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1351
1319
|
className: FormSection_default.osdkFormSectionMinimalContent
|
|
1352
1320
|
}, children));
|
|
1353
1321
|
});
|
|
1354
1322
|
|
|
1355
1323
|
// src/action-form/BaseForm.tsx
|
|
1356
|
-
var BaseForm = /* @__PURE__ */
|
|
1324
|
+
var BaseForm = /* @__PURE__ */ React17.memo(function BaseFormFn({
|
|
1357
1325
|
formTitle,
|
|
1358
1326
|
formContent,
|
|
1359
1327
|
formState: controlledFormState,
|
|
@@ -1366,10 +1334,10 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1366
1334
|
submitButtonText = "Submit",
|
|
1367
1335
|
submitButtonVariant = "primary"
|
|
1368
1336
|
}) {
|
|
1369
|
-
const portalContainerRef =
|
|
1337
|
+
const portalContainerRef = React17.useRef(null);
|
|
1370
1338
|
const isControlled = controlledFormState != null;
|
|
1371
|
-
const allFieldDefinitions =
|
|
1372
|
-
const defaultValues =
|
|
1339
|
+
const allFieldDefinitions = React17.useMemo(() => flattenFieldDefinitions(formContent), [formContent]);
|
|
1340
|
+
const defaultValues = React17.useMemo(() => buildDefaultValues(allFieldDefinitions), [allFieldDefinitions]);
|
|
1373
1341
|
const {
|
|
1374
1342
|
control,
|
|
1375
1343
|
trigger,
|
|
@@ -1388,7 +1356,7 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1388
1356
|
defaultValues
|
|
1389
1357
|
}
|
|
1390
1358
|
});
|
|
1391
|
-
const [hasAttemptedSubmit, setHasAttemptedSubmit] =
|
|
1359
|
+
const [hasAttemptedSubmit, setHasAttemptedSubmit] = React17.useState(false);
|
|
1392
1360
|
const {
|
|
1393
1361
|
isPending: isSubmitting,
|
|
1394
1362
|
error: submissionError,
|
|
@@ -1396,7 +1364,7 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1396
1364
|
clearError
|
|
1397
1365
|
} = useAsyncAction(onSubmit);
|
|
1398
1366
|
const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message : "Submission failed" : void 0;
|
|
1399
|
-
const submitForm =
|
|
1367
|
+
const submitForm = React17.useCallback(async () => {
|
|
1400
1368
|
setHasAttemptedSubmit(true);
|
|
1401
1369
|
const isValid = await trigger();
|
|
1402
1370
|
if (!isValid) {
|
|
@@ -1404,11 +1372,11 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1404
1372
|
}
|
|
1405
1373
|
await executeSubmit(controlledFormState ?? getValues());
|
|
1406
1374
|
}, [trigger, executeSubmit, controlledFormState, getValues]);
|
|
1407
|
-
const handleFieldChange =
|
|
1375
|
+
const handleFieldChange = React17.useCallback((fieldKey, value) => {
|
|
1408
1376
|
clearError();
|
|
1409
1377
|
onFieldValueChange?.(fieldKey, value);
|
|
1410
1378
|
}, [clearError, onFieldValueChange]);
|
|
1411
|
-
const labelByFieldKey =
|
|
1379
|
+
const labelByFieldKey = React17.useMemo(() => new Map(allFieldDefinitions.map((d) => [d.fieldKey, d.label])), [allFieldDefinitions]);
|
|
1412
1380
|
const errorEntries = Object.entries(errors).map(([key, entry]) => ({
|
|
1413
1381
|
label: labelByFieldKey.get(key) ?? key,
|
|
1414
1382
|
message: entry?.message ?? "Invalid"
|
|
@@ -1417,24 +1385,24 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1417
1385
|
const buttonErrorMessage = areErrorsPresent ? "Some fields are invalid" : submissionErrorMessage;
|
|
1418
1386
|
const isFormPending = isPending || isSubmitting;
|
|
1419
1387
|
const isSubmitButtonDisabled = isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent;
|
|
1420
|
-
return /* @__PURE__ */
|
|
1388
|
+
return /* @__PURE__ */ React17__default.default.createElement("form", {
|
|
1421
1389
|
ref: portalContainerRef,
|
|
1422
1390
|
className: classnames__default.default(BaseForm_default.osdkForm, className)
|
|
1423
1391
|
// Workshop widgets can run in iframes without `allow-forms`, where
|
|
1424
1392
|
// native form submission is blocked. Keep the form landmark, but do not
|
|
1425
1393
|
// wire any form-level submit handlers; the submit button invokes our
|
|
1426
1394
|
// JavaScript submit path directly.
|
|
1427
|
-
}, formTitle != null && /* @__PURE__ */
|
|
1395
|
+
}, formTitle != null && /* @__PURE__ */ React17__default.default.createElement(FormHeader, {
|
|
1428
1396
|
title: formTitle
|
|
1429
|
-
}), isLoading && allFieldDefinitions.length === 0 && /* @__PURE__ */
|
|
1397
|
+
}), isLoading && allFieldDefinitions.length === 0 && /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1430
1398
|
role: "status",
|
|
1431
1399
|
"aria-label": "Loading form fields",
|
|
1432
1400
|
className: BaseForm_default.osdkFormFields
|
|
1433
|
-
}, FORM_SKELETON), /* @__PURE__ */
|
|
1401
|
+
}, FORM_SKELETON), /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1434
1402
|
className: BaseForm_default.osdkFormFields
|
|
1435
1403
|
}, formContent.map((item) => {
|
|
1436
1404
|
if (item.type === "field") {
|
|
1437
|
-
return /* @__PURE__ */
|
|
1405
|
+
return /* @__PURE__ */ React17__default.default.createElement(FieldBridge, {
|
|
1438
1406
|
key: item.definition.fieldKey,
|
|
1439
1407
|
fieldDef: item.definition,
|
|
1440
1408
|
control,
|
|
@@ -1443,24 +1411,24 @@ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
|
|
|
1443
1411
|
});
|
|
1444
1412
|
}
|
|
1445
1413
|
const sectionErrorCount = item.definition.fields.reduce((count, field) => count + (errors[field.fieldKey] != null ? 1 : 0), 0);
|
|
1446
|
-
return /* @__PURE__ */
|
|
1414
|
+
return /* @__PURE__ */ React17__default.default.createElement(FormSection, {
|
|
1447
1415
|
key: item.key,
|
|
1448
1416
|
definition: item.definition,
|
|
1449
1417
|
errorCount: sectionErrorCount
|
|
1450
|
-
}, item.definition.fields.map((fieldDef) => /* @__PURE__ */
|
|
1418
|
+
}, item.definition.fields.map((fieldDef) => /* @__PURE__ */ React17__default.default.createElement(FieldBridge, {
|
|
1451
1419
|
key: fieldDef.fieldKey,
|
|
1452
1420
|
fieldDef,
|
|
1453
1421
|
control,
|
|
1454
1422
|
onExternalChange: handleFieldChange,
|
|
1455
1423
|
portalContainer: portalContainerRef
|
|
1456
1424
|
})));
|
|
1457
|
-
})), /* @__PURE__ */
|
|
1425
|
+
})), /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1458
1426
|
className: BaseForm_default.osdkFormFooter
|
|
1459
|
-
}, /* @__PURE__ */
|
|
1427
|
+
}, /* @__PURE__ */ React17__default.default.createElement(ErrorIndicator, {
|
|
1460
1428
|
errorEntries
|
|
1461
|
-
}), /* @__PURE__ */
|
|
1429
|
+
}), /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1462
1430
|
className: BaseForm_default.osdkFormSubmitButton
|
|
1463
|
-
}, /* @__PURE__ */
|
|
1431
|
+
}, /* @__PURE__ */ React17__default.default.createElement(SubmitButton, {
|
|
1464
1432
|
isPending: isFormPending,
|
|
1465
1433
|
isSubmitDisabled: isSubmitButtonDisabled,
|
|
1466
1434
|
errorMessage: buttonErrorMessage,
|
|
@@ -1485,12 +1453,12 @@ function flattenFieldDefinitions(formContent) {
|
|
|
1485
1453
|
var SKELETON_FIELD_COUNT = 3;
|
|
1486
1454
|
var FORM_SKELETON = Array.from({
|
|
1487
1455
|
length: SKELETON_FIELD_COUNT
|
|
1488
|
-
}, (_, i) => /* @__PURE__ */
|
|
1456
|
+
}, (_, i) => /* @__PURE__ */ React17__default.default.createElement("div", {
|
|
1489
1457
|
key: i,
|
|
1490
1458
|
className: BaseForm_default.osdkFormSkeletonField
|
|
1491
|
-
}, /* @__PURE__ */
|
|
1459
|
+
}, /* @__PURE__ */ React17__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1492
1460
|
className: BaseForm_default.osdkFormSkeletonLabel
|
|
1493
|
-
}), /* @__PURE__ */
|
|
1461
|
+
}), /* @__PURE__ */ React17__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1494
1462
|
className: BaseForm_default.osdkFormSkeletonInput
|
|
1495
1463
|
})));
|
|
1496
1464
|
function buildDefaultValues(fieldDefinitions) {
|
|
@@ -1503,7 +1471,7 @@ function buildDefaultValues(fieldDefinitions) {
|
|
|
1503
1471
|
}
|
|
1504
1472
|
return values;
|
|
1505
1473
|
}
|
|
1506
|
-
var SubmitButton = /* @__PURE__ */
|
|
1474
|
+
var SubmitButton = /* @__PURE__ */ React17.memo(function SubmitButtonFn({
|
|
1507
1475
|
isPending,
|
|
1508
1476
|
isSubmitDisabled,
|
|
1509
1477
|
errorMessage,
|
|
@@ -1512,7 +1480,7 @@ var SubmitButton = /* @__PURE__ */ React18.memo(function SubmitButtonFn({
|
|
|
1512
1480
|
onClick
|
|
1513
1481
|
}) {
|
|
1514
1482
|
const buttonLabel = isPending ? "Submitting\u2026" : buttonText;
|
|
1515
|
-
const button = /* @__PURE__ */
|
|
1483
|
+
const button = /* @__PURE__ */ React17__default.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
|
|
1516
1484
|
type: "button",
|
|
1517
1485
|
variant: buttonVariant,
|
|
1518
1486
|
disabled: isSubmitDisabled || isPending,
|
|
@@ -1521,13 +1489,13 @@ var SubmitButton = /* @__PURE__ */ React18.memo(function SubmitButtonFn({
|
|
|
1521
1489
|
if (errorMessage == null) {
|
|
1522
1490
|
return button;
|
|
1523
1491
|
}
|
|
1524
|
-
return /* @__PURE__ */
|
|
1492
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Root, {
|
|
1525
1493
|
defaultOpen: true
|
|
1526
|
-
}, /* @__PURE__ */
|
|
1527
|
-
render: /* @__PURE__ */
|
|
1494
|
+
}, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Trigger, {
|
|
1495
|
+
render: /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1528
1496
|
className: BaseForm_default.osdkTooltipTriggerWrapper
|
|
1529
1497
|
})
|
|
1530
|
-
}, button), /* @__PURE__ */
|
|
1498
|
+
}, button), /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Portal, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Popup, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Arrow, null), errorMessage))));
|
|
1531
1499
|
});
|
|
1532
1500
|
function ErrorIndicator({
|
|
1533
1501
|
errorEntries
|
|
@@ -1536,15 +1504,15 @@ function ErrorIndicator({
|
|
|
1536
1504
|
return null;
|
|
1537
1505
|
}
|
|
1538
1506
|
const count = errorEntries.length;
|
|
1539
|
-
return /* @__PURE__ */
|
|
1507
|
+
return /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Root, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Trigger, null, /* @__PURE__ */ React17__default.default.createElement("span", {
|
|
1540
1508
|
className: BaseForm_default.osdkFormErrorIndicator
|
|
1541
|
-
}, /* @__PURE__ */
|
|
1509
|
+
}, /* @__PURE__ */ React17__default.default.createElement(icons.Error, {
|
|
1542
1510
|
size: 14
|
|
1543
|
-
}), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */
|
|
1511
|
+
}), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Portal, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Popup, null, /* @__PURE__ */ React17__default.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Arrow, null), /* @__PURE__ */ React17__default.default.createElement("ul", {
|
|
1544
1512
|
className: BaseForm_default.osdkFormErrorList
|
|
1545
|
-
}, errorEntries.map((entry) => /* @__PURE__ */
|
|
1513
|
+
}, errorEntries.map((entry) => /* @__PURE__ */ React17__default.default.createElement("li", {
|
|
1546
1514
|
key: entry.label
|
|
1547
|
-
}, /* @__PURE__ */
|
|
1515
|
+
}, /* @__PURE__ */ React17__default.default.createElement("strong", null, entry.label, ":"), " ", entry.message)))))));
|
|
1548
1516
|
}
|
|
1549
1517
|
|
|
1550
1518
|
// src/action-form/utils/coerceFieldValue.ts
|
|
@@ -1725,7 +1693,7 @@ function _extends5() {
|
|
|
1725
1693
|
}
|
|
1726
1694
|
var EMPTY_FIELD_DEFINITIONS = [];
|
|
1727
1695
|
var EMPTY_FORM_CONTENT = [];
|
|
1728
|
-
var ActionForm =
|
|
1696
|
+
var ActionForm = chunkFRSIMUPL_cjs.typedReactMemo(function ActionFormFn({
|
|
1729
1697
|
actionDefinition,
|
|
1730
1698
|
formTitle,
|
|
1731
1699
|
showFormTitle = false,
|
|
@@ -1747,7 +1715,7 @@ var ActionForm = chunkZBJEZKOD_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1747
1715
|
loading: metadataLoading,
|
|
1748
1716
|
error: metadataError
|
|
1749
1717
|
} = react.useOsdkMetadata(actionDefinition);
|
|
1750
|
-
|
|
1718
|
+
React17.useEffect(function saveMetadataError() {
|
|
1751
1719
|
if (metadataError != null) {
|
|
1752
1720
|
onError?.({
|
|
1753
1721
|
type: "unknown",
|
|
@@ -1756,7 +1724,7 @@ var ActionForm = chunkZBJEZKOD_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1756
1724
|
}
|
|
1757
1725
|
}, [metadataError, onError]);
|
|
1758
1726
|
const parameters = metadata?.parameters;
|
|
1759
|
-
const customFieldDefinitions =
|
|
1727
|
+
const customFieldDefinitions = React17.useMemo(() => {
|
|
1760
1728
|
if (formFieldDefinitions == null) {
|
|
1761
1729
|
return null;
|
|
1762
1730
|
}
|
|
@@ -1776,19 +1744,19 @@ var ActionForm = chunkZBJEZKOD_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1776
1744
|
};
|
|
1777
1745
|
});
|
|
1778
1746
|
}, [formFieldDefinitions, parameters]);
|
|
1779
|
-
const rendererFieldDefinitions =
|
|
1780
|
-
const formContent =
|
|
1747
|
+
const rendererFieldDefinitions = React17.useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);
|
|
1748
|
+
const formContent = React17.useMemo(() => rendererFieldDefinitions.length === 0 ? EMPTY_FORM_CONTENT : rendererFieldDefinitions.map((def) => ({
|
|
1781
1749
|
type: "field",
|
|
1782
1750
|
definition: def
|
|
1783
1751
|
})), [rendererFieldDefinitions]);
|
|
1784
|
-
const coerceFormState =
|
|
1752
|
+
const coerceFormState = React17.useCallback((rawState) => {
|
|
1785
1753
|
const coerced = {};
|
|
1786
1754
|
for (const [key, value] of Object.entries(rawState)) {
|
|
1787
1755
|
coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);
|
|
1788
1756
|
}
|
|
1789
1757
|
return coerced;
|
|
1790
1758
|
}, [parameters]);
|
|
1791
|
-
const handleSubmit =
|
|
1759
|
+
const handleSubmit = React17.useCallback(async (rawFormState) => {
|
|
1792
1760
|
const formState = coerceFormState(rawFormState);
|
|
1793
1761
|
try {
|
|
1794
1762
|
if (onSubmit != null) {
|
|
@@ -1804,7 +1772,7 @@ var ActionForm = chunkZBJEZKOD_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1804
1772
|
});
|
|
1805
1773
|
}
|
|
1806
1774
|
}, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);
|
|
1807
|
-
const handleFieldValueChange =
|
|
1775
|
+
const handleFieldValueChange = React17.useCallback((fieldKey, value) => {
|
|
1808
1776
|
onFormStateChange?.((prev) => ({
|
|
1809
1777
|
...prev,
|
|
1810
1778
|
[fieldKey]: value
|
|
@@ -1822,17 +1790,17 @@ var ActionForm = chunkZBJEZKOD_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1822
1790
|
onFieldValueChange: handleFieldValueChange
|
|
1823
1791
|
};
|
|
1824
1792
|
if (!isControlled) {
|
|
1825
|
-
return /* @__PURE__ */
|
|
1793
|
+
return /* @__PURE__ */ React17__default.default.createElement(BaseForm, commonProps);
|
|
1826
1794
|
}
|
|
1827
|
-
return /* @__PURE__ */
|
|
1795
|
+
return /* @__PURE__ */ React17__default.default.createElement(BaseForm, _extends5({}, commonProps, {
|
|
1828
1796
|
formState: controlledFormState
|
|
1829
1797
|
}));
|
|
1830
1798
|
});
|
|
1831
1799
|
|
|
1832
1800
|
// src/public/experimental/action-form.ts
|
|
1833
|
-
var ActionForm2 =
|
|
1801
|
+
var ActionForm2 = chunkIEF4VCDI_cjs.withOsdkMetrics(ActionForm, "ActionForm");
|
|
1834
1802
|
|
|
1835
1803
|
exports.ActionForm = ActionForm2;
|
|
1836
1804
|
exports.BaseForm = BaseForm;
|
|
1837
|
-
//# sourceMappingURL=chunk-
|
|
1838
|
-
//# sourceMappingURL=chunk-
|
|
1805
|
+
//# sourceMappingURL=chunk-2QDWXDLC.cjs.map
|
|
1806
|
+
//# sourceMappingURL=chunk-2QDWXDLC.cjs.map
|