@osdk/react-components 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -0
- package/CHANGELOG.md +11 -0
- package/build/browser/action-form/ActionForm.js +19 -11
- package/build/browser/action-form/ActionForm.js.map +1 -1
- package/build/browser/action-form/ActionFormApi.js.map +1 -1
- package/build/browser/action-form/BaseForm.js +19 -13
- package/build/browser/action-form/BaseForm.js.map +1 -1
- package/build/browser/action-form/BaseForm.module.css +7 -7
- package/build/browser/action-form/FormField.js +5 -2
- package/build/browser/action-form/FormField.js.map +1 -1
- package/build/browser/action-form/FormField.module.css +6 -1
- package/build/browser/action-form/FormField.module.css.js +1 -0
- package/build/browser/action-form/FormFieldApi.js +7 -1
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/FormHeader.module.css +2 -2
- package/build/browser/action-form/fields/DateCalendar.js +41 -3
- package/build/browser/action-form/fields/DateCalendar.js.map +1 -1
- package/build/browser/action-form/fields/DateCalendar.module.css +59 -10
- package/build/browser/action-form/fields/DateCalendar.module.css.js +5 -1
- package/build/browser/action-form/fields/DateRangeCalendar.js +8 -5
- package/build/browser/action-form/fields/DateRangeCalendar.js.map +1 -1
- package/build/browser/action-form/fields/DateRangeInputField.js +76 -61
- package/build/browser/action-form/fields/DateRangeInputField.js.map +1 -1
- package/build/browser/action-form/fields/DateRangeInputField.module.css +0 -15
- package/build/browser/action-form/fields/DateRangeInputField.module.css.js +1 -2
- package/build/browser/action-form/fields/DatetimePickerField.js +74 -40
- package/build/browser/action-form/fields/DatetimePickerField.js.map +1 -1
- package/build/browser/action-form/fields/DatetimePickerField.module.css +2 -9
- package/build/browser/action-form/fields/FieldBridge.js +1 -1
- package/build/browser/action-form/fields/FieldBridge.js.map +1 -1
- package/build/browser/action-form/fields/FilePickerField.js +47 -39
- package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
- package/build/browser/action-form/fields/FilePickerField.module.css +43 -31
- package/build/browser/action-form/fields/FilePickerField.module.css.js +2 -2
- package/build/browser/action-form/fields/FormFieldRenderer.js +9 -0
- package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/browser/action-form/fields/RadioButtonsField.module.css +3 -3
- package/build/browser/action-form/fields/SwitchField.js +34 -0
- package/build/browser/action-form/fields/SwitchField.js.map +1 -0
- package/build/browser/action-form/fields/TimePicker.js +165 -26
- package/build/browser/action-form/fields/TimePicker.js.map +1 -1
- package/build/browser/action-form/fields/TimePicker.module.css +27 -2
- package/build/browser/action-form/fields/TimePicker.module.css.js +3 -1
- package/build/browser/action-form/fields/calendarShared.js +5 -0
- package/build/browser/action-form/fields/calendarShared.js.map +1 -1
- package/build/browser/action-form/fields/useDateEditState.js +3 -4
- package/build/browser/action-form/fields/useDateEditState.js.map +1 -1
- package/build/browser/base-components/action-button/ActionButton.js +2 -1
- package/build/browser/base-components/action-button/ActionButton.js.map +1 -1
- package/build/browser/base-components/action-button/ActionButton.module.css +19 -0
- package/build/browser/base-components/action-button/ActionButton.module.css.js +2 -1
- package/build/browser/base-components/combobox/Combobox.module.css +31 -3
- package/build/browser/base-components/select/Select.module.css +18 -0
- package/build/browser/base-components/switch/Switch.module.css +18 -6
- package/build/browser/filter-list/base/inputs/ListogramInput.js +34 -6
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +11 -5
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +20 -12
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NoValueLabel.js +36 -0
- package/build/browser/filter-list/base/inputs/NoValueLabel.js.map +1 -0
- package/build/browser/filter-list/base/inputs/NoValueLabel.module.css +20 -0
- package/build/browser/filter-list/base/inputs/NoValueLabel.module.css.js +6 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -3
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +10 -7
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css.js +1 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +13 -8
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -2
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterListState.js +7 -6
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/hooks/useStableMapEntries.js +35 -0
- package/build/browser/filter-list/hooks/useStableMapEntries.js.map +1 -0
- package/build/browser/filter-list/utils/filterValues.js +13 -0
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/object-table/DefaultCellRenderer.js +12 -2
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/browser/object-table/EditableCell.js +14 -4
- package/build/browser/object-table/EditableCell.js.map +1 -1
- package/build/browser/object-table/EditableCell.module.css +4 -0
- package/build/browser/object-table/EditableCell.module.css.js +1 -0
- package/build/browser/object-table/ObjectTable.js +3 -1
- 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/Table.js +8 -4
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/TableBody.js +4 -2
- package/build/browser/object-table/TableBody.js.map +1 -1
- package/build/browser/object-table/TableRow.js +12 -4
- package/build/browser/object-table/TableRow.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/utils/editableUtils.js +39 -0
- package/build/browser/object-table/utils/editableUtils.js.map +1 -0
- package/build/browser/object-table/utils/shouldShowEditableCell.js +1 -1
- package/build/browser/object-table/utils/shouldShowEditableCell.js.map +1 -1
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/styles.css +331 -130
- package/build/browser/tokens/component-tokens/button.css +15 -0
- package/build/browser/tokens/component-tokens/combobox.css +9 -0
- package/build/browser/tokens/component-tokens/datetime-picker.css +2 -2
- package/build/browser/tokens/component-tokens/file-picker.css +0 -10
- package/build/browser/tokens/component-tokens/filter-list.css +9 -6
- package/build/browser/tokens/component-tokens/form-section.css +1 -1
- package/build/browser/tokens/component-tokens/form.css +9 -5
- package/build/browser/tokens/component-tokens/table.css +3 -5
- package/build/browser/tokens.css +1 -0
- package/build/browser/util/UserAgent.js +1 -1
- package/build/cjs/{DateCalendar-2W4QHEEI.css → DateCalendar-G7RC2FCG.css} +105 -8
- package/build/cjs/DateCalendar-G7RC2FCG.css.map +1 -0
- package/build/cjs/DateCalendar-RX7HP2XP.cjs +26 -0
- package/build/cjs/{DateCalendar-QGSYBWJB.cjs.map → DateCalendar-RX7HP2XP.cjs.map} +1 -1
- package/build/cjs/{DateRangeCalendar-M63S2LLG.css → DateRangeCalendar-JBVYJDBJ.css} +105 -8
- package/build/cjs/DateRangeCalendar-JBVYJDBJ.css.map +1 -0
- package/build/cjs/DateRangeCalendar-OHT4IUWQ.cjs +54 -0
- package/build/cjs/DateRangeCalendar-OHT4IUWQ.cjs.map +1 -0
- package/build/cjs/{chunk-T7I6O43T.cjs → chunk-6SPXSFPI.cjs} +237 -85
- package/build/cjs/chunk-6SPXSFPI.cjs.map +1 -0
- package/build/cjs/{chunk-SZXVBDSA.cjs → chunk-6UDBHYSO.cjs} +3 -3
- package/build/cjs/{chunk-SZXVBDSA.cjs.map → chunk-6UDBHYSO.cjs.map} +1 -1
- package/build/cjs/{chunk-YBDS5WQP.cjs → chunk-7H6WXQ35.cjs} +4 -4
- package/build/cjs/{chunk-YBDS5WQP.cjs.map → chunk-7H6WXQ35.cjs.map} +1 -1
- package/build/cjs/{chunk-VVJFMOZI.cjs → chunk-I3OSD6CF.cjs} +19 -45
- package/build/cjs/chunk-I3OSD6CF.cjs.map +1 -0
- package/build/cjs/chunk-MD4KDE44.cjs +41 -0
- package/build/cjs/chunk-MD4KDE44.cjs.map +1 -0
- package/build/cjs/{chunk-YPXTSEE7.cjs → chunk-MLFMSZJQ.cjs} +85 -38
- package/build/cjs/chunk-MLFMSZJQ.cjs.map +1 -0
- package/build/cjs/chunk-MQYOHGPY.cjs +52 -0
- package/build/cjs/chunk-MQYOHGPY.cjs.map +1 -0
- package/build/cjs/{chunk-BJDCC446.cjs → chunk-PTTCWNZZ.cjs} +417 -364
- package/build/cjs/chunk-PTTCWNZZ.cjs.map +1 -0
- package/build/cjs/{chunk-B2GRQRWU.cjs → chunk-TOJSJN3L.cjs} +44 -8
- package/build/cjs/chunk-TOJSJN3L.cjs.map +1 -0
- package/build/cjs/{chunk-JLESWL47.cjs → chunk-V7XWTJV7.cjs} +4 -2
- package/build/cjs/chunk-V7XWTJV7.cjs.map +1 -0
- package/build/cjs/{chunk-L5LPFCXT.cjs → chunk-W2IASYE4.cjs} +163 -125
- package/build/cjs/chunk-W2IASYE4.cjs.map +1 -0
- package/build/cjs/chunk-X337DNCW.cjs +45 -0
- package/build/cjs/chunk-X337DNCW.cjs.map +1 -0
- package/build/cjs/{chunk-SB2VTP67.cjs → chunk-Z7VHLTKD.cjs} +2 -64
- package/build/cjs/chunk-Z7VHLTKD.cjs.map +1 -0
- package/build/cjs/public/experimental/action-form.cjs +11 -9
- package/build/cjs/public/experimental/action-form.css +223 -68
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/action-form.d.cts +83 -74
- package/build/cjs/public/experimental/filter-list.cjs +9 -8
- package/build/cjs/public/experimental/filter-list.css +38 -19
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/object-table.cjs +14 -12
- package/build/cjs/public/experimental/object-table.css +152 -59
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/object-table.d.cts +39 -20
- package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
- package/build/cjs/public/experimental.cjs +46 -44
- package/build/cjs/public/experimental.css +242 -139
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/primitives.cjs +8 -7
- package/build/cjs/public/primitives.css +15 -0
- package/build/cjs/public/primitives.css.map +1 -1
- package/build/cjs/public/primitives.d.cts +1 -0
- package/build/esm/action-form/ActionForm.js +19 -11
- package/build/esm/action-form/ActionForm.js.map +1 -1
- package/build/esm/action-form/ActionFormApi.js.map +1 -1
- package/build/esm/action-form/BaseForm.js +19 -13
- package/build/esm/action-form/BaseForm.js.map +1 -1
- package/build/esm/action-form/BaseForm.module.css +7 -7
- package/build/esm/action-form/FormField.js +5 -2
- package/build/esm/action-form/FormField.js.map +1 -1
- package/build/esm/action-form/FormField.module.css +6 -1
- package/build/esm/action-form/FormFieldApi.js +7 -1
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/FormHeader.module.css +2 -2
- package/build/esm/action-form/fields/DateCalendar.js +41 -3
- package/build/esm/action-form/fields/DateCalendar.js.map +1 -1
- package/build/esm/action-form/fields/DateCalendar.module.css +59 -10
- package/build/esm/action-form/fields/DateRangeCalendar.js +8 -5
- package/build/esm/action-form/fields/DateRangeCalendar.js.map +1 -1
- package/build/esm/action-form/fields/DateRangeInputField.js +76 -61
- package/build/esm/action-form/fields/DateRangeInputField.js.map +1 -1
- package/build/esm/action-form/fields/DateRangeInputField.module.css +0 -15
- package/build/esm/action-form/fields/DatetimePickerField.js +74 -40
- package/build/esm/action-form/fields/DatetimePickerField.js.map +1 -1
- package/build/esm/action-form/fields/DatetimePickerField.module.css +2 -9
- package/build/esm/action-form/fields/FieldBridge.js +1 -1
- package/build/esm/action-form/fields/FieldBridge.js.map +1 -1
- package/build/esm/action-form/fields/FilePickerField.js +47 -39
- package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
- package/build/esm/action-form/fields/FilePickerField.module.css +43 -31
- package/build/esm/action-form/fields/FormFieldRenderer.js +9 -0
- package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/esm/action-form/fields/RadioButtonsField.module.css +3 -3
- package/build/esm/action-form/fields/SwitchField.js +34 -0
- package/build/esm/action-form/fields/SwitchField.js.map +1 -0
- package/build/esm/action-form/fields/TimePicker.js +165 -26
- package/build/esm/action-form/fields/TimePicker.js.map +1 -1
- package/build/esm/action-form/fields/TimePicker.module.css +27 -2
- package/build/esm/action-form/fields/calendarShared.js +5 -0
- package/build/esm/action-form/fields/calendarShared.js.map +1 -1
- package/build/esm/action-form/fields/useDateEditState.js +3 -4
- package/build/esm/action-form/fields/useDateEditState.js.map +1 -1
- package/build/esm/base-components/action-button/ActionButton.js +2 -1
- package/build/esm/base-components/action-button/ActionButton.js.map +1 -1
- package/build/esm/base-components/action-button/ActionButton.module.css +19 -0
- package/build/esm/base-components/combobox/Combobox.module.css +31 -3
- package/build/esm/base-components/select/Select.module.css +18 -0
- package/build/esm/base-components/switch/Switch.module.css +18 -6
- package/build/esm/filter-list/base/inputs/ListogramInput.js +34 -6
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +11 -5
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +20 -12
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NoValueLabel.js +36 -0
- package/build/esm/filter-list/base/inputs/NoValueLabel.js.map +1 -0
- package/build/esm/filter-list/base/inputs/NoValueLabel.module.css +20 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -3
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +10 -7
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +13 -8
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -2
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterListState.js +7 -6
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/hooks/useStableMapEntries.js +35 -0
- package/build/esm/filter-list/hooks/useStableMapEntries.js.map +1 -0
- package/build/esm/filter-list/utils/filterValues.js +13 -0
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/object-table/DefaultCellRenderer.js +12 -2
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/esm/object-table/EditableCell.js +14 -4
- package/build/esm/object-table/EditableCell.js.map +1 -1
- package/build/esm/object-table/EditableCell.module.css +4 -0
- package/build/esm/object-table/ObjectTable.js +3 -1
- 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/Table.js +8 -4
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/TableBody.js +4 -2
- package/build/esm/object-table/TableBody.js.map +1 -1
- package/build/esm/object-table/TableRow.js +12 -4
- package/build/esm/object-table/TableRow.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/utils/editableUtils.js +39 -0
- package/build/esm/object-table/utils/editableUtils.js.map +1 -0
- package/build/esm/object-table/utils/shouldShowEditableCell.js +1 -1
- package/build/esm/object-table/utils/shouldShowEditableCell.js.map +1 -1
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/tokens/component-tokens/button.css +15 -0
- package/build/esm/tokens/component-tokens/combobox.css +9 -0
- package/build/esm/tokens/component-tokens/datetime-picker.css +2 -2
- package/build/esm/tokens/component-tokens/file-picker.css +0 -10
- package/build/esm/tokens/component-tokens/filter-list.css +9 -6
- package/build/esm/tokens/component-tokens/form-section.css +1 -1
- package/build/esm/tokens/component-tokens/form.css +9 -5
- package/build/esm/tokens/component-tokens/table.css +3 -5
- package/build/esm/tokens.css +1 -0
- package/build/esm/util/UserAgent.js +1 -1
- package/build/types/action-form/ActionFormApi.d.ts +8 -8
- package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
- package/build/types/action-form/BaseForm.d.ts.map +1 -1
- package/build/types/action-form/FormFieldApi.d.ts +29 -22
- package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
- package/build/types/action-form/fields/DateCalendar.d.ts +6 -1
- package/build/types/action-form/fields/DateCalendar.d.ts.map +1 -1
- package/build/types/action-form/fields/DateRangeCalendar.d.ts.map +1 -1
- package/build/types/action-form/fields/DateRangeInputField.d.ts.map +1 -1
- package/build/types/action-form/fields/DatetimePickerField.d.ts.map +1 -1
- package/build/types/action-form/fields/FieldBridge.d.ts.map +1 -1
- package/build/types/action-form/fields/FilePickerField.d.ts.map +1 -1
- package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
- package/build/types/action-form/fields/SwitchField.d.ts +7 -0
- package/build/types/action-form/fields/SwitchField.d.ts.map +1 -0
- package/build/types/action-form/fields/TimePicker.d.ts +4 -5
- package/build/types/action-form/fields/TimePicker.d.ts.map +1 -1
- package/build/types/action-form/fields/useDateEditState.d.ts +2 -2
- package/build/types/base-components/action-button/ActionButton.d.ts +1 -0
- package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NoValueLabel.d.ts +15 -0
- package/build/types/filter-list/base/inputs/NoValueLabel.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useStableMapEntries.d.ts +9 -0
- package/build/types/filter-list/hooks/useStableMapEntries.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterValues.d.ts +7 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
- package/build/types/object-table/EditableCell.d.ts +1 -1
- package/build/types/object-table/EditableCell.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +26 -7
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/Table.d.ts +9 -2
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/TableBody.d.ts +2 -1
- package/build/types/object-table/TableBody.d.ts.map +1 -1
- package/build/types/object-table/TableRow.d.ts +2 -1
- package/build/types/object-table/TableRow.d.ts.map +1 -1
- package/build/types/object-table/utils/editableUtils.d.ts +16 -0
- package/build/types/object-table/utils/editableUtils.d.ts.map +1 -0
- package/build/types/object-table/utils/shouldShowEditableCell.d.ts +2 -1
- package/build/types/object-table/utils/shouldShowEditableCell.d.ts.map +1 -1
- package/build/types/object-table/utils/types.d.ts +4 -11
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/docs/ActionForm.md +176 -0
- package/docs/CSSVariables.md +31 -30
- package/docs/ObjectTable.md +141 -16
- package/package.json +6 -5
- package/build/cjs/DateCalendar-2W4QHEEI.css.map +0 -1
- package/build/cjs/DateCalendar-QGSYBWJB.cjs +0 -24
- package/build/cjs/DateRangeCalendar-JHO2BF3Z.cjs +0 -48
- package/build/cjs/DateRangeCalendar-JHO2BF3Z.cjs.map +0 -1
- package/build/cjs/DateRangeCalendar-M63S2LLG.css.map +0 -1
- package/build/cjs/chunk-B2GRQRWU.cjs.map +0 -1
- package/build/cjs/chunk-BJDCC446.cjs.map +0 -1
- package/build/cjs/chunk-JLESWL47.cjs.map +0 -1
- package/build/cjs/chunk-L5LPFCXT.cjs.map +0 -1
- package/build/cjs/chunk-SB2VTP67.cjs.map +0 -1
- package/build/cjs/chunk-T7I6O43T.cjs.map +0 -1
- package/build/cjs/chunk-UCTQICPR.cjs +0 -10
- package/build/cjs/chunk-UCTQICPR.cjs.map +0 -1
- package/build/cjs/chunk-VVJFMOZI.cjs.map +0 -1
- package/build/cjs/chunk-YPXTSEE7.cjs.map +0 -1
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
3
|
+
var chunkX337DNCW_cjs = require('./chunk-X337DNCW.cjs');
|
|
4
|
+
var chunk6SPXSFPI_cjs = require('./chunk-6SPXSFPI.cjs');
|
|
5
|
+
var chunkV7XWTJV7_cjs = require('./chunk-V7XWTJV7.cjs');
|
|
6
|
+
var chunkI3OSD6CF_cjs = require('./chunk-I3OSD6CF.cjs');
|
|
7
|
+
var chunkMD4KDE44_cjs = require('./chunk-MD4KDE44.cjs');
|
|
8
|
+
var chunkMQYOHGPY_cjs = require('./chunk-MQYOHGPY.cjs');
|
|
8
9
|
var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
|
|
9
|
-
var
|
|
10
|
+
var chunk6UDBHYSO_cjs = require('./chunk-6UDBHYSO.cjs');
|
|
10
11
|
var react = require('@osdk/react');
|
|
11
|
-
var
|
|
12
|
+
var React20 = require('react');
|
|
12
13
|
var icons = require('@blueprintjs/icons');
|
|
13
14
|
var classnames = require('classnames');
|
|
14
15
|
var reactHookForm = require('react-hook-form');
|
|
@@ -40,12 +41,12 @@ function _interopNamespace(e) {
|
|
|
40
41
|
return Object.freeze(n);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
var
|
|
44
|
+
var React20__namespace = /*#__PURE__*/_interopNamespace(React20);
|
|
44
45
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
45
46
|
|
|
46
47
|
function useIsMounted() {
|
|
47
|
-
const isMountedRef =
|
|
48
|
-
|
|
48
|
+
const isMountedRef = React20.useRef(true);
|
|
49
|
+
React20.useEffect(function trackMountedState() {
|
|
49
50
|
return () => {
|
|
50
51
|
isMountedRef.current = false;
|
|
51
52
|
};
|
|
@@ -55,10 +56,10 @@ function useIsMounted() {
|
|
|
55
56
|
|
|
56
57
|
// src/shared/hooks/useAsyncAction.ts
|
|
57
58
|
function useAsyncAction(action) {
|
|
58
|
-
const [isPending, setIsPending] =
|
|
59
|
-
const [error, setError] =
|
|
59
|
+
const [isPending, setIsPending] = React20.useState(false);
|
|
60
|
+
const [error, setError] = React20.useState(void 0);
|
|
60
61
|
const isMountedRef = useIsMounted();
|
|
61
|
-
const execute =
|
|
62
|
+
const execute = React20.useCallback(async (...args) => {
|
|
62
63
|
setError(void 0);
|
|
63
64
|
setIsPending(true);
|
|
64
65
|
try {
|
|
@@ -73,7 +74,7 @@ function useAsyncAction(action) {
|
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
}, [action, isMountedRef]);
|
|
76
|
-
const clearError =
|
|
77
|
+
const clearError = React20.useCallback(() => {
|
|
77
78
|
setError(void 0);
|
|
78
79
|
}, []);
|
|
79
80
|
return {
|
|
@@ -247,7 +248,7 @@ function formatBytes(bytes) {
|
|
|
247
248
|
var FormField_default = {};
|
|
248
249
|
|
|
249
250
|
// src/action-form/FormField.tsx
|
|
250
|
-
var FormField = /* @__PURE__ */
|
|
251
|
+
var FormField = /* @__PURE__ */ React20.memo(function FormFieldFn({
|
|
251
252
|
fieldKey,
|
|
252
253
|
label,
|
|
253
254
|
isRequired,
|
|
@@ -260,65 +261,68 @@ var FormField = /* @__PURE__ */ React19.memo(function FormFieldFn({
|
|
|
260
261
|
const hasHelperText = helperText != null && helperText !== "";
|
|
261
262
|
const showTooltip = hasHelperText && helperTextPlacement === "tooltip";
|
|
262
263
|
const showBottomText = hasHelperText && helperTextPlacement === "bottom";
|
|
263
|
-
const labelElement = label != null ? /* @__PURE__ */
|
|
264
|
+
const labelElement = label != null ? /* @__PURE__ */ React20__namespace.default.createElement("label", {
|
|
264
265
|
className: FormField_default.osdkFormFieldLabel,
|
|
265
266
|
htmlFor: fieldKey
|
|
266
|
-
}, label, isRequired === true && /* @__PURE__ */
|
|
267
|
+
}, label, isRequired === true && /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
267
268
|
className: FormField_default.osdkFormFieldRequired,
|
|
268
269
|
"aria-label": "required"
|
|
269
270
|
}, " ", "*")) : null;
|
|
270
|
-
return /* @__PURE__ */
|
|
271
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
271
272
|
className: FormField_default.osdkFormField,
|
|
272
273
|
onBlur
|
|
273
|
-
}, showTooltip ? /* @__PURE__ */
|
|
274
|
+
}, showTooltip ? /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
274
275
|
className: FormField_default.osdkFormFieldLabelRow
|
|
275
|
-
}, labelElement, /* @__PURE__ */
|
|
276
|
+
}, labelElement, /* @__PURE__ */ React20__namespace.default.createElement(InfoTip, {
|
|
276
277
|
label
|
|
277
|
-
}, helperText)) : labelElement, showBottomText && /* @__PURE__ */
|
|
278
|
+
}, helperText)) : labelElement, showBottomText && /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
278
279
|
className: FormField_default.osdkFormFieldHelperText
|
|
279
|
-
}, helperText), children,
|
|
280
|
+
}, helperText), children, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
281
|
+
className: FormField_default.osdkFormFieldErrorSlot,
|
|
282
|
+
"data-osdk-form-field-error-slot": ""
|
|
283
|
+
}, error != null && /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
280
284
|
className: FormField_default.osdkFormFieldError,
|
|
281
285
|
role: "alert"
|
|
282
|
-
}, error));
|
|
286
|
+
}, error)));
|
|
283
287
|
});
|
|
284
288
|
function InfoTip({
|
|
285
289
|
label,
|
|
286
290
|
children
|
|
287
291
|
}) {
|
|
288
|
-
return /* @__PURE__ */
|
|
289
|
-
render: /* @__PURE__ */
|
|
292
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Root, null, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Trigger, {
|
|
293
|
+
render: /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
290
294
|
className: FormField_default.osdkFormFieldInfoIcon
|
|
291
295
|
}),
|
|
292
296
|
nativeButton: false,
|
|
293
297
|
openOnHover: true,
|
|
294
298
|
"aria-label": label != null ? `Info about ${label}` : "More information"
|
|
295
|
-
}, /* @__PURE__ */
|
|
299
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.InfoSign, {
|
|
296
300
|
size: 12
|
|
297
|
-
})), /* @__PURE__ */
|
|
301
|
+
})), /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Portal, null, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Positioner, {
|
|
298
302
|
sideOffset: 4
|
|
299
|
-
}, /* @__PURE__ */
|
|
303
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Popup, {
|
|
300
304
|
className: FormField_default.osdkFormFieldInfoPopup
|
|
301
305
|
}, children))));
|
|
302
306
|
}
|
|
303
307
|
|
|
304
308
|
// src/action-form/FormFieldApi.ts
|
|
305
309
|
var EMPTY_RANGE = [null, null];
|
|
306
|
-
var CustomField = /* @__PURE__ */
|
|
310
|
+
var CustomField = /* @__PURE__ */ React20.memo(function CustomFieldFn({
|
|
307
311
|
customRenderer: CustomRenderer,
|
|
308
312
|
...baseProps
|
|
309
313
|
}) {
|
|
310
|
-
return /* @__PURE__ */
|
|
314
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(CustomRenderer, baseProps);
|
|
311
315
|
});
|
|
312
316
|
|
|
313
317
|
// src/action-form/fields/DateRangeInputField.module.css
|
|
314
318
|
var DateRangeInputField_default = {};
|
|
315
|
-
var DateRangeCalendarLazy = /* @__PURE__ */
|
|
319
|
+
var DateRangeCalendarLazy = /* @__PURE__ */ React20__namespace.default.lazy(() => import('./DateRangeCalendar-OHT4IUWQ.cjs'));
|
|
316
320
|
function LazyDateRangeCalendar(props) {
|
|
317
|
-
return /* @__PURE__ */
|
|
318
|
-
fallback: /* @__PURE__ */
|
|
319
|
-
className:
|
|
321
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(React20.Suspense, {
|
|
322
|
+
fallback: /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
323
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerFallback
|
|
320
324
|
})
|
|
321
|
-
}, /* @__PURE__ */
|
|
325
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(DateRangeCalendarLazy, props));
|
|
322
326
|
}
|
|
323
327
|
|
|
324
328
|
// src/action-form/fields/DateRangeInputField.tsx
|
|
@@ -332,14 +336,14 @@ function _extends() {
|
|
|
332
336
|
}, _extends.apply(null, arguments);
|
|
333
337
|
}
|
|
334
338
|
var SHARED_INPUT_PROPS = {
|
|
335
|
-
className:
|
|
339
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerInput,
|
|
336
340
|
type: "text",
|
|
337
|
-
onClick:
|
|
341
|
+
onClick: chunkV7XWTJV7_cjs.stopPropagation,
|
|
338
342
|
autoComplete: "off",
|
|
339
343
|
role: "combobox",
|
|
340
344
|
"aria-haspopup": "dialog"
|
|
341
345
|
};
|
|
342
|
-
var DateRangeInputField = /* @__PURE__ */
|
|
346
|
+
var DateRangeInputField = /* @__PURE__ */ React20__namespace.default.memo(function DateRangeInputField2({
|
|
343
347
|
id,
|
|
344
348
|
value,
|
|
345
349
|
onChange,
|
|
@@ -354,24 +358,25 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
354
358
|
portalContainer
|
|
355
359
|
}) {
|
|
356
360
|
const shouldCloseOnSelection = !showTime;
|
|
357
|
-
const popoverId =
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
const
|
|
361
|
-
const
|
|
362
|
-
const
|
|
363
|
-
const
|
|
361
|
+
const popoverId = React20.useId();
|
|
362
|
+
const triggerRef = React20.useRef(null);
|
|
363
|
+
const startInputRef = React20.useRef(null);
|
|
364
|
+
const endInputRef = React20.useRef(null);
|
|
365
|
+
const popoverRef = React20.useRef(null);
|
|
366
|
+
const [isOpen, setIsOpen] = React20.useState(false);
|
|
367
|
+
const skipReopenRef = React20.useRef(false);
|
|
368
|
+
const [activeBoundary, setActiveBoundary] = React20.useState("start");
|
|
364
369
|
const [startDate, endDate] = value ?? EMPTY_RANGE;
|
|
365
|
-
const editFormatFn = showTime ?
|
|
366
|
-
const displayFormatFn = formatDate ?? (showTime ?
|
|
367
|
-
const parseFn = parseDate ?? (showTime ?
|
|
368
|
-
const startOnChange =
|
|
370
|
+
const editFormatFn = showTime ? chunkMQYOHGPY_cjs.formatDatetimeForInput : chunkMQYOHGPY_cjs.formatDateForInput;
|
|
371
|
+
const displayFormatFn = formatDate ?? (showTime ? chunkMQYOHGPY_cjs.formatDatetimeForInput : chunkMQYOHGPY_cjs.formatDateForInput);
|
|
372
|
+
const parseFn = parseDate ?? (showTime ? chunkMQYOHGPY_cjs.parseDatetimeFromInput : chunkMQYOHGPY_cjs.parseDateFromInput);
|
|
373
|
+
const startOnChange = React20.useCallback((date) => {
|
|
369
374
|
if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {
|
|
370
375
|
return;
|
|
371
376
|
}
|
|
372
377
|
onChange?.([date, endDate ?? null]);
|
|
373
378
|
}, [endDate, onChange, allowSingleDayRange]);
|
|
374
|
-
const endOnChange =
|
|
379
|
+
const endOnChange = React20.useCallback((date) => {
|
|
375
380
|
if (date != null && isOverlapping(startDate, date, allowSingleDayRange)) {
|
|
376
381
|
return;
|
|
377
382
|
}
|
|
@@ -387,7 +392,7 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
387
392
|
commitAndStopEditing: commitStartAndStopEditing,
|
|
388
393
|
setInputValue: setStartInputValue,
|
|
389
394
|
setDateValue: setStartDateValue
|
|
390
|
-
} =
|
|
395
|
+
} = chunk6SPXSFPI_cjs.useDateEditState({
|
|
391
396
|
value: startDate,
|
|
392
397
|
displayFormatFn,
|
|
393
398
|
editFormatFn,
|
|
@@ -406,7 +411,7 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
406
411
|
commitAndStopEditing: commitEndAndStopEditing,
|
|
407
412
|
setInputValue: setEndInputValue,
|
|
408
413
|
setDateValue: setEndDateValue
|
|
409
|
-
} =
|
|
414
|
+
} = chunk6SPXSFPI_cjs.useDateEditState({
|
|
410
415
|
value: endDate,
|
|
411
416
|
displayFormatFn,
|
|
412
417
|
editFormatFn,
|
|
@@ -423,8 +428,8 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
423
428
|
})();
|
|
424
429
|
const startInvalid = startInputError != null || hasOverlapError;
|
|
425
430
|
const endInvalid = endInputError != null || hasOverlapError;
|
|
426
|
-
const getActiveInputRef =
|
|
427
|
-
const beginEditing =
|
|
431
|
+
const getActiveInputRef = React20.useCallback(() => activeBoundary === "start" ? startInputRef : endInputRef, [activeBoundary]);
|
|
432
|
+
const beginEditing = React20.useCallback((boundary) => {
|
|
428
433
|
if (boundary === "start") {
|
|
429
434
|
beginStartEditing();
|
|
430
435
|
} else {
|
|
@@ -432,7 +437,7 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
432
437
|
}
|
|
433
438
|
setActiveBoundary(boundary);
|
|
434
439
|
}, [beginStartEditing, beginEndEditing]);
|
|
435
|
-
const handleInputFocus =
|
|
440
|
+
const handleInputFocus = React20.useCallback((boundary) => {
|
|
436
441
|
beginEditing(boundary);
|
|
437
442
|
if (skipReopenRef.current) {
|
|
438
443
|
skipReopenRef.current = false;
|
|
@@ -440,20 +445,28 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
440
445
|
}
|
|
441
446
|
setIsOpen(true);
|
|
442
447
|
}, [beginEditing]);
|
|
443
|
-
const handleStartFocus =
|
|
448
|
+
const handleStartFocus = React20.useCallback(() => {
|
|
444
449
|
handleInputFocus("start");
|
|
445
450
|
}, [handleInputFocus]);
|
|
446
|
-
const handleEndFocus =
|
|
451
|
+
const handleEndFocus = React20.useCallback(() => {
|
|
447
452
|
handleInputFocus("end");
|
|
448
453
|
}, [handleInputFocus]);
|
|
449
|
-
const closePopoverForBoundaryExit =
|
|
454
|
+
const closePopoverForBoundaryExit = React20.useCallback(() => {
|
|
450
455
|
skipReopenRef.current = true;
|
|
451
456
|
setIsOpen(false);
|
|
452
457
|
stopStartEditing();
|
|
453
458
|
stopEndEditing();
|
|
454
459
|
getActiveInputRef().current?.focus();
|
|
455
460
|
}, [getActiveInputRef, stopStartEditing, stopEndEditing]);
|
|
456
|
-
const
|
|
461
|
+
const handleStartPointerDown = React20.useCallback(() => {
|
|
462
|
+
startInputRef.current?.focus();
|
|
463
|
+
handleStartFocus();
|
|
464
|
+
}, [handleStartFocus]);
|
|
465
|
+
const handleEndPointerDown = React20.useCallback(() => {
|
|
466
|
+
endInputRef.current?.focus();
|
|
467
|
+
handleEndFocus();
|
|
468
|
+
}, [handleEndFocus]);
|
|
469
|
+
const handleStartBlur = React20.useCallback((e) => {
|
|
457
470
|
const related = e.relatedTarget ?? document.activeElement;
|
|
458
471
|
if (popoverRef.current?.contains(related)) {
|
|
459
472
|
e.stopPropagation();
|
|
@@ -464,7 +477,7 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
464
477
|
}
|
|
465
478
|
commitStartAndStopEditing();
|
|
466
479
|
}, [commitStartAndStopEditing]);
|
|
467
|
-
const handleEndBlur =
|
|
480
|
+
const handleEndBlur = React20.useCallback((e) => {
|
|
468
481
|
const related = e.relatedTarget ?? document.activeElement;
|
|
469
482
|
if (popoverRef.current?.contains(related)) {
|
|
470
483
|
e.stopPropagation();
|
|
@@ -475,14 +488,14 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
475
488
|
}
|
|
476
489
|
commitEndAndStopEditing();
|
|
477
490
|
}, [commitEndAndStopEditing]);
|
|
478
|
-
const closePopover =
|
|
491
|
+
const closePopover = React20.useCallback(() => {
|
|
479
492
|
setIsOpen(false);
|
|
480
493
|
stopStartEditing();
|
|
481
494
|
stopEndEditing();
|
|
482
495
|
startInputRef.current?.blur();
|
|
483
496
|
endInputRef.current?.blur();
|
|
484
497
|
}, [stopStartEditing, stopEndEditing]);
|
|
485
|
-
const handleStartKeyDown =
|
|
498
|
+
const handleStartKeyDown = React20.useCallback((e) => {
|
|
486
499
|
if (e.key === "Enter") {
|
|
487
500
|
e.preventDefault();
|
|
488
501
|
commitStartAndStopEditing();
|
|
@@ -494,7 +507,7 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
494
507
|
setIsOpen(false);
|
|
495
508
|
}
|
|
496
509
|
}, [commitStartAndStopEditing, closePopover]);
|
|
497
|
-
const handleEndKeyDown =
|
|
510
|
+
const handleEndKeyDown = React20.useCallback((e) => {
|
|
498
511
|
if (e.key === "Enter") {
|
|
499
512
|
e.preventDefault();
|
|
500
513
|
commitEndAndStopEditing();
|
|
@@ -510,14 +523,14 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
510
523
|
}
|
|
511
524
|
}
|
|
512
525
|
}, [commitEndAndStopEditing, closePopover, isOpen]);
|
|
513
|
-
const handleOpenChange =
|
|
526
|
+
const handleOpenChange = React20.useCallback((nextOpen) => {
|
|
514
527
|
if (nextOpen) {
|
|
515
528
|
setIsOpen(true);
|
|
516
529
|
} else {
|
|
517
530
|
closePopover();
|
|
518
531
|
}
|
|
519
532
|
}, [closePopover]);
|
|
520
|
-
const handleRangeSelect =
|
|
533
|
+
const handleRangeSelect = React20.useCallback((range) => {
|
|
521
534
|
const newStart = range?.from ?? null;
|
|
522
535
|
const newEnd = range?.to ?? null;
|
|
523
536
|
onChange?.([newStart, newEnd]);
|
|
@@ -532,30 +545,18 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
532
545
|
setEndDateValue(newEnd);
|
|
533
546
|
}
|
|
534
547
|
}, [onChange, shouldCloseOnSelection, closePopover, stopStartEditing, setStartDateValue, setEndDateValue]);
|
|
535
|
-
const handleStartTimeChange =
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
}, [startDate, endDate, onChange, setStartDateValue]);
|
|
545
|
-
const handleEndTimeChange = React19.useCallback((timeString) => {
|
|
546
|
-
const {
|
|
547
|
-
hours,
|
|
548
|
-
minutes
|
|
549
|
-
} = chunkSB2VTP67_cjs.parseTimeString(timeString);
|
|
550
|
-
const base = endDate != null ? new Date(endDate.getTime()) : /* @__PURE__ */ new Date();
|
|
551
|
-
base.setHours(hours, minutes, 0, 0);
|
|
552
|
-
onChange?.([startDate ?? null, base]);
|
|
553
|
-
setEndDateValue(base);
|
|
554
|
-
}, [startDate, endDate, onChange, setEndDateValue]);
|
|
555
|
-
const handleStartFocusBoundary = React19.useCallback(() => {
|
|
548
|
+
const handleStartTimeChange = React20.useCallback((time) => {
|
|
549
|
+
onChange?.([time, endDate ?? null]);
|
|
550
|
+
setStartDateValue(time);
|
|
551
|
+
}, [endDate, onChange, setStartDateValue]);
|
|
552
|
+
const handleEndTimeChange = React20.useCallback((time) => {
|
|
553
|
+
onChange?.([startDate ?? null, time]);
|
|
554
|
+
setEndDateValue(time);
|
|
555
|
+
}, [startDate, onChange, setEndDateValue]);
|
|
556
|
+
const handleStartFocusBoundary = React20.useCallback(() => {
|
|
556
557
|
getActiveInputRef().current?.focus();
|
|
557
558
|
}, [getActiveInputRef]);
|
|
558
|
-
const handleEndFocusBoundary =
|
|
559
|
+
const handleEndFocusBoundary = React20.useCallback((e) => {
|
|
559
560
|
const related = e.relatedTarget ?? document.activeElement;
|
|
560
561
|
if (popoverRef.current?.contains(related)) {
|
|
561
562
|
closePopoverForBoundaryExit();
|
|
@@ -569,14 +570,12 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
569
570
|
from: startDate ?? void 0,
|
|
570
571
|
to: endDate ?? void 0
|
|
571
572
|
} : void 0;
|
|
572
|
-
const timeFooter = showTime ? /* @__PURE__ */
|
|
573
|
-
|
|
574
|
-
}, /* @__PURE__ */ React19__namespace.default.createElement(chunkT7I6O43T_cjs.TimePicker, {
|
|
575
|
-
value: chunkSB2VTP67_cjs.getTimeValue(startDate),
|
|
573
|
+
const timeFooter = showTime ? /* @__PURE__ */ React20__namespace.default.createElement(React20__namespace.default.Fragment, null, /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.TimePicker, {
|
|
574
|
+
value: startDate,
|
|
576
575
|
onChange: handleStartTimeChange,
|
|
577
576
|
label: "Start time"
|
|
578
|
-
}), /* @__PURE__ */
|
|
579
|
-
value:
|
|
577
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.TimePicker, {
|
|
578
|
+
value: endDate,
|
|
580
579
|
onChange: handleEndTimeChange,
|
|
581
580
|
label: "End time"
|
|
582
581
|
})) : void 0;
|
|
@@ -584,73 +583,81 @@ var DateRangeInputField = /* @__PURE__ */ React19__namespace.default.memo(functi
|
|
|
584
583
|
...SHARED_INPUT_PROPS,
|
|
585
584
|
"aria-controls": popoverId
|
|
586
585
|
};
|
|
587
|
-
return /* @__PURE__ */
|
|
586
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Root, {
|
|
588
587
|
open: isOpen,
|
|
589
588
|
onOpenChange: handleOpenChange,
|
|
590
589
|
modal: "trap-focus"
|
|
591
|
-
}, /* @__PURE__ */
|
|
590
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
591
|
+
ref: triggerRef,
|
|
592
|
+
className: DateRangeInputField_default.osdkDateRangeContainer
|
|
593
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
594
|
+
className: classnames__default.default(chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, startInvalid && chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
|
|
595
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Trigger, {
|
|
592
596
|
nativeButton: false,
|
|
593
|
-
render: /* @__PURE__ */
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
597
|
+
render: /* @__PURE__ */ React20__namespace.default.createElement(input.Input, _extends({
|
|
598
|
+
ref: startInputRef,
|
|
599
|
+
id: id != null ? `${id}-start` : void 0,
|
|
600
|
+
value: displayedStart,
|
|
601
|
+
onValueChange: setStartInputValue,
|
|
602
|
+
onFocus: handleStartFocus,
|
|
603
|
+
onPointerDown: handleStartPointerDown,
|
|
604
|
+
onBlur: handleStartBlur,
|
|
605
|
+
onKeyDown: handleStartKeyDown,
|
|
606
|
+
placeholder: placeholderStart,
|
|
607
|
+
"aria-expanded": isOpen && activeBoundary === "start",
|
|
608
|
+
"aria-label": "Start date",
|
|
609
|
+
"aria-invalid": startInvalid || void 0
|
|
610
|
+
}, sharedInputProps))
|
|
611
|
+
})), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
612
|
+
className: classnames__default.default(chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, endInvalid && chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
|
|
613
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Trigger, {
|
|
614
|
+
nativeButton: false,
|
|
615
|
+
render: /* @__PURE__ */ React20__namespace.default.createElement(input.Input, _extends({
|
|
616
|
+
ref: endInputRef,
|
|
617
|
+
id: id != null ? `${id}-end` : void 0,
|
|
618
|
+
value: displayedEnd,
|
|
619
|
+
onValueChange: setEndInputValue,
|
|
620
|
+
onBlur: handleEndBlur,
|
|
621
|
+
onKeyDown: handleEndKeyDown,
|
|
622
|
+
onFocus: handleEndFocus,
|
|
623
|
+
onPointerDown: handleEndPointerDown,
|
|
624
|
+
placeholder: placeholderEnd,
|
|
625
|
+
"aria-expanded": isOpen && activeBoundary === "end",
|
|
626
|
+
"aria-label": "End date",
|
|
627
|
+
"aria-invalid": endInvalid || void 0
|
|
628
|
+
}, sharedInputProps))
|
|
629
|
+
}))), /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Portal, {
|
|
625
630
|
container: portalContainer
|
|
626
|
-
}, /* @__PURE__ */
|
|
627
|
-
className:
|
|
631
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.PortalDismissLayer, {
|
|
632
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerDismissLayer,
|
|
628
633
|
onDismiss: closePopover
|
|
629
|
-
}), /* @__PURE__ */
|
|
630
|
-
|
|
634
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Positioner, {
|
|
635
|
+
anchor: triggerRef,
|
|
636
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerPositioner,
|
|
631
637
|
sideOffset: 4
|
|
632
|
-
}, /* @__PURE__ */
|
|
638
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(popover.Popover.Popup, {
|
|
633
639
|
ref: popoverRef,
|
|
634
|
-
className:
|
|
640
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerPopover,
|
|
635
641
|
id: popoverId,
|
|
636
642
|
role: "dialog",
|
|
637
643
|
"aria-label": "date range picker",
|
|
638
644
|
finalFocus: false
|
|
639
|
-
}, /* @__PURE__ */
|
|
645
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
640
646
|
onFocus: handleStartFocusBoundary,
|
|
641
647
|
tabIndex: 0,
|
|
642
648
|
"aria-label": "Start of date range picker dialog",
|
|
643
|
-
className:
|
|
644
|
-
}), /* @__PURE__ */
|
|
649
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
|
|
650
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(LazyDateRangeCalendar, {
|
|
645
651
|
selected: calendarSelected,
|
|
646
652
|
onSelect: handleRangeSelect,
|
|
647
653
|
min,
|
|
648
|
-
max
|
|
649
|
-
|
|
654
|
+
max,
|
|
655
|
+
footer: timeFooter
|
|
656
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
650
657
|
onFocus: handleEndFocusBoundary,
|
|
651
658
|
tabIndex: 0,
|
|
652
659
|
"aria-label": "End of date range picker dialog",
|
|
653
|
-
className:
|
|
660
|
+
className: chunk6SPXSFPI_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
|
|
654
661
|
})))));
|
|
655
662
|
});
|
|
656
663
|
function isOverlapping(start, end, allowSingleDayRange) {
|
|
@@ -663,7 +670,7 @@ function isOverlapping(start, end, allowSingleDayRange) {
|
|
|
663
670
|
var FilePickerField_default = {};
|
|
664
671
|
|
|
665
672
|
// src/action-form/fields/FilePickerField.tsx
|
|
666
|
-
var FilePickerField = /* @__PURE__ */
|
|
673
|
+
var FilePickerField = /* @__PURE__ */ React20.memo(function FilePickerFieldFn({
|
|
667
674
|
id,
|
|
668
675
|
value,
|
|
669
676
|
onChange,
|
|
@@ -677,11 +684,23 @@ var FilePickerField = /* @__PURE__ */ React19.memo(function FilePickerFieldFn({
|
|
|
677
684
|
text = "No file chosen",
|
|
678
685
|
buttonText = "Browse"
|
|
679
686
|
}) {
|
|
680
|
-
const inputRef =
|
|
681
|
-
const
|
|
687
|
+
const inputRef = React20.useRef(null);
|
|
688
|
+
const fileTriggerRef = React20.useRef(null);
|
|
689
|
+
const openFileDialog = React20.useCallback(() => {
|
|
682
690
|
inputRef.current?.click();
|
|
683
691
|
}, []);
|
|
684
|
-
const
|
|
692
|
+
const focusFileTrigger = React20.useCallback(() => {
|
|
693
|
+
fileTriggerRef.current?.focus();
|
|
694
|
+
}, []);
|
|
695
|
+
const handleBrowsePointerDown = React20.useCallback((event) => {
|
|
696
|
+
event.preventDefault();
|
|
697
|
+
focusFileTrigger();
|
|
698
|
+
}, [focusFileTrigger]);
|
|
699
|
+
const handleBrowseClick = React20.useCallback(() => {
|
|
700
|
+
focusFileTrigger();
|
|
701
|
+
openFileDialog();
|
|
702
|
+
}, [focusFileTrigger, openFileDialog]);
|
|
703
|
+
const handleInputChange = React20.useCallback((event) => {
|
|
685
704
|
const files = event.target.files;
|
|
686
705
|
if (files == null || files.length === 0) {
|
|
687
706
|
onChange?.(null);
|
|
@@ -693,58 +712,54 @@ var FilePickerField = /* @__PURE__ */ React19.memo(function FilePickerFieldFn({
|
|
|
693
712
|
onChange?.(files[0] ?? null);
|
|
694
713
|
}
|
|
695
714
|
}, [onChange, isMulti]);
|
|
696
|
-
const handleClear =
|
|
697
|
-
event.stopPropagation();
|
|
715
|
+
const handleClear = React20.useCallback((event) => {
|
|
698
716
|
event.preventDefault();
|
|
699
717
|
onChange?.(null);
|
|
700
718
|
if (inputRef.current != null) {
|
|
701
719
|
inputRef.current.value = "";
|
|
702
720
|
}
|
|
703
721
|
}, [onChange]);
|
|
704
|
-
const handleKeyDown =
|
|
722
|
+
const handleKeyDown = React20.useCallback((event) => {
|
|
705
723
|
if (event.key === "Enter" || event.key === " ") {
|
|
706
724
|
event.preventDefault();
|
|
707
725
|
openFileDialog();
|
|
708
726
|
}
|
|
709
727
|
}, [openFileDialog]);
|
|
710
|
-
const displayText =
|
|
728
|
+
const displayText = React20.useMemo(() => getDisplayText(value), [value]);
|
|
711
729
|
const hasValue = displayText != null;
|
|
712
|
-
const acceptString =
|
|
713
|
-
return (
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
className: FilePickerField_default.osdkFilePickerBrowse
|
|
746
|
-
}, buttonText))
|
|
747
|
-
);
|
|
730
|
+
const acceptString = React20.useMemo(() => normalizeAccept(accept), [accept]);
|
|
731
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
732
|
+
className: FilePickerField_default.osdkFilePickerTrigger,
|
|
733
|
+
"aria-invalid": error != null || void 0
|
|
734
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("input", {
|
|
735
|
+
ref: inputRef,
|
|
736
|
+
type: "file",
|
|
737
|
+
className: FilePickerField_default.osdkFilePickerHiddenInput,
|
|
738
|
+
multiple: isMulti,
|
|
739
|
+
accept: acceptString,
|
|
740
|
+
onChange: handleInputChange,
|
|
741
|
+
tabIndex: -1
|
|
742
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(button.Button, {
|
|
743
|
+
ref: fileTriggerRef,
|
|
744
|
+
id,
|
|
745
|
+
type: "button",
|
|
746
|
+
className: classnames__default.default(FilePickerField_default.osdkFilePickerText, !hasValue && FilePickerField_default.osdkFilePickerPlaceholder),
|
|
747
|
+
onClick: openFileDialog,
|
|
748
|
+
onKeyDown: handleKeyDown,
|
|
749
|
+
"aria-label": "Choose file",
|
|
750
|
+
"aria-invalid": error != null || void 0
|
|
751
|
+
}, displayText ?? text), hasValue && /* @__PURE__ */ React20__namespace.default.createElement(button.Button, {
|
|
752
|
+
type: "button",
|
|
753
|
+
className: FilePickerField_default.osdkFilePickerClear,
|
|
754
|
+
onClick: handleClear,
|
|
755
|
+
"aria-label": "Clear selection"
|
|
756
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.Cross, null)), /* @__PURE__ */ React20__namespace.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
|
|
757
|
+
type: "button",
|
|
758
|
+
tabIndex: -1,
|
|
759
|
+
className: FilePickerField_default.osdkFilePickerBrowse,
|
|
760
|
+
onPointerDown: handleBrowsePointerDown,
|
|
761
|
+
onClick: handleBrowseClick
|
|
762
|
+
}, buttonText));
|
|
748
763
|
});
|
|
749
764
|
function normalizeAccept(accept) {
|
|
750
765
|
if (accept == null) {
|
|
@@ -779,8 +794,8 @@ function NumberInputField({
|
|
|
779
794
|
max,
|
|
780
795
|
step
|
|
781
796
|
}) {
|
|
782
|
-
const [displayValue, setDisplayValue] =
|
|
783
|
-
const prevValueRef =
|
|
797
|
+
const [displayValue, setDisplayValue] = React20.useState(() => formatNumberForDisplay(value));
|
|
798
|
+
const prevValueRef = React20.useRef(value);
|
|
784
799
|
if (prevValueRef.current !== value) {
|
|
785
800
|
prevValueRef.current = value;
|
|
786
801
|
const currentParsed = parseNumericValue(displayValue);
|
|
@@ -788,14 +803,14 @@ function NumberInputField({
|
|
|
788
803
|
setDisplayValue(formatNumberForDisplay(value));
|
|
789
804
|
}
|
|
790
805
|
}
|
|
791
|
-
const handleValueChange =
|
|
806
|
+
const handleValueChange = React20.useCallback((newValue) => {
|
|
792
807
|
if (!isValidInput(newValue)) {
|
|
793
808
|
return;
|
|
794
809
|
}
|
|
795
810
|
setDisplayValue(newValue);
|
|
796
811
|
onChange?.(parseNumericValue(newValue));
|
|
797
812
|
}, [onChange]);
|
|
798
|
-
const applyStep =
|
|
813
|
+
const applyStep = React20.useCallback((direction) => {
|
|
799
814
|
const current = parseNumericValue(displayValue) ?? 0;
|
|
800
815
|
const delta = direction * (step ?? DEFAULT_STEP);
|
|
801
816
|
const next = clamp(current + delta, min, max);
|
|
@@ -803,23 +818,23 @@ function NumberInputField({
|
|
|
803
818
|
setDisplayValue(formatted);
|
|
804
819
|
onChange?.(next);
|
|
805
820
|
}, [displayValue, onChange, step, min, max]);
|
|
806
|
-
const handleKeyDown =
|
|
821
|
+
const handleKeyDown = React20.useCallback((e) => {
|
|
807
822
|
if (e.key !== "ArrowUp" && e.key !== "ArrowDown") {
|
|
808
823
|
return;
|
|
809
824
|
}
|
|
810
825
|
e.preventDefault();
|
|
811
826
|
applyStep(e.key === "ArrowUp" ? 1 : -1);
|
|
812
827
|
}, [applyStep]);
|
|
813
|
-
const handleStepUp =
|
|
828
|
+
const handleStepUp = React20.useCallback(() => {
|
|
814
829
|
applyStep(1);
|
|
815
830
|
}, [applyStep]);
|
|
816
|
-
const handleStepDown =
|
|
831
|
+
const handleStepDown = React20.useCallback(() => {
|
|
817
832
|
applyStep(-1);
|
|
818
833
|
}, [applyStep]);
|
|
819
|
-
return /* @__PURE__ */
|
|
834
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
820
835
|
className: NumberInputField_default.osdkNumberInputWrapper,
|
|
821
836
|
"aria-invalid": error != null || void 0
|
|
822
|
-
}, /* @__PURE__ */
|
|
837
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(input.Input, {
|
|
823
838
|
id,
|
|
824
839
|
className: NumberInputField_default.osdkNumberInputField,
|
|
825
840
|
type: "text",
|
|
@@ -828,21 +843,21 @@ function NumberInputField({
|
|
|
828
843
|
onValueChange: handleValueChange,
|
|
829
844
|
onKeyDown: handleKeyDown,
|
|
830
845
|
placeholder
|
|
831
|
-
}), /* @__PURE__ */
|
|
846
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
832
847
|
className: NumberInputField_default.osdkNumberInputStepper
|
|
833
|
-
}, /* @__PURE__ */
|
|
848
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(button.Button, {
|
|
834
849
|
className: NumberInputField_default.osdkNumberInputStepButton,
|
|
835
850
|
"aria-label": "Increment",
|
|
836
851
|
tabIndex: -1,
|
|
837
852
|
onClick: handleStepUp
|
|
838
|
-
}, /* @__PURE__ */
|
|
853
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.ChevronUp, {
|
|
839
854
|
size: CHEVRON_SIZE
|
|
840
|
-
})), /* @__PURE__ */
|
|
855
|
+
})), /* @__PURE__ */ React20__namespace.default.createElement(button.Button, {
|
|
841
856
|
className: NumberInputField_default.osdkNumberInputStepButton,
|
|
842
857
|
"aria-label": "Decrement",
|
|
843
858
|
tabIndex: -1,
|
|
844
859
|
onClick: handleStepDown
|
|
845
|
-
}, /* @__PURE__ */
|
|
860
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.ChevronDown, {
|
|
846
861
|
size: CHEVRON_SIZE
|
|
847
862
|
}))));
|
|
848
863
|
}
|
|
@@ -865,8 +880,8 @@ function clamp(value, min, max) {
|
|
|
865
880
|
return value;
|
|
866
881
|
}
|
|
867
882
|
function useDebouncedValue(value, debounceMs) {
|
|
868
|
-
const [debouncedValue, setDebouncedValue] =
|
|
869
|
-
|
|
883
|
+
const [debouncedValue, setDebouncedValue] = React20.useState(value);
|
|
884
|
+
React20.useEffect(function debounceValue() {
|
|
870
885
|
const timer = setTimeout(() => {
|
|
871
886
|
setDebouncedValue(value);
|
|
872
887
|
}, debounceMs);
|
|
@@ -877,16 +892,16 @@ function useDebouncedValue(value, debounceMs) {
|
|
|
877
892
|
return debouncedValue;
|
|
878
893
|
}
|
|
879
894
|
function useEventCallback(callback) {
|
|
880
|
-
const latestCallbackValueWrapper =
|
|
895
|
+
const latestCallbackValueWrapper = React20__namespace.useRef((...args) => {
|
|
881
896
|
if (typeof globalThis.console !== "undefined") {
|
|
882
897
|
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.");
|
|
883
898
|
}
|
|
884
899
|
return callback(...args);
|
|
885
900
|
});
|
|
886
|
-
|
|
901
|
+
React20__namespace.useEffect(() => {
|
|
887
902
|
latestCallbackValueWrapper.current = callback;
|
|
888
903
|
}, [callback]);
|
|
889
|
-
return
|
|
904
|
+
return React20__namespace.useCallback((...args) => latestCallbackValueWrapper.current(...args), []);
|
|
890
905
|
}
|
|
891
906
|
|
|
892
907
|
// src/shared/hooks/useInfiniteScroll.ts
|
|
@@ -898,11 +913,11 @@ function useInfiniteScroll({
|
|
|
898
913
|
callback,
|
|
899
914
|
loadedCount
|
|
900
915
|
}) {
|
|
901
|
-
const observer =
|
|
902
|
-
const targetRef =
|
|
916
|
+
const observer = React20.useRef();
|
|
917
|
+
const targetRef = React20.useRef();
|
|
903
918
|
const eventCallback = useEventCallback(callback);
|
|
904
|
-
const throttledCallback =
|
|
905
|
-
const handleObserverUpdate =
|
|
919
|
+
const throttledCallback = React20.useCallback(lodashEs.throttle(eventCallback), []);
|
|
920
|
+
const handleObserverUpdate = React20.useCallback(
|
|
906
921
|
(entries) => {
|
|
907
922
|
const ent = entries[0];
|
|
908
923
|
if (ent && ent.isIntersecting) {
|
|
@@ -912,7 +927,7 @@ function useInfiniteScroll({
|
|
|
912
927
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
913
928
|
[]
|
|
914
929
|
);
|
|
915
|
-
|
|
930
|
+
React20.useEffect(() => {
|
|
916
931
|
const {
|
|
917
932
|
current: targetElement
|
|
918
933
|
} = targetRef;
|
|
@@ -951,7 +966,7 @@ function _extends2() {
|
|
|
951
966
|
return n;
|
|
952
967
|
}, _extends2.apply(null, arguments);
|
|
953
968
|
}
|
|
954
|
-
var AsyncDropdownField =
|
|
969
|
+
var AsyncDropdownField = chunk6SPXSFPI_cjs.typedReactMemo(function AsyncDropdownFieldFn({
|
|
955
970
|
isLoading,
|
|
956
971
|
hasMore,
|
|
957
972
|
isSearching,
|
|
@@ -960,20 +975,20 @@ var AsyncDropdownField = chunkT7I6O43T_cjs.typedReactMemo(function AsyncDropdown
|
|
|
960
975
|
...dropdownProps
|
|
961
976
|
}) {
|
|
962
977
|
const itemCount = dropdownProps.items.length;
|
|
963
|
-
const popupStatus =
|
|
978
|
+
const popupStatus = React20.useMemo(() => {
|
|
964
979
|
if (fetchError != null) {
|
|
965
|
-
return /* @__PURE__ */
|
|
980
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
966
981
|
className: AsyncDropdownField_default.osdkAsyncDropdownError,
|
|
967
982
|
role: "alert"
|
|
968
983
|
}, fetchError.message);
|
|
969
984
|
}
|
|
970
985
|
if (isSearching) {
|
|
971
|
-
return /* @__PURE__ */
|
|
986
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
972
987
|
className: AsyncDropdownField_default.osdkAsyncDropdownStatus
|
|
973
988
|
}, "Searching\u2026");
|
|
974
989
|
}
|
|
975
990
|
if (isLoading && itemCount === 0) {
|
|
976
|
-
return /* @__PURE__ */
|
|
991
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
977
992
|
className: AsyncDropdownField_default.osdkAsyncDropdownStatus
|
|
978
993
|
}, "Loading\u2026");
|
|
979
994
|
}
|
|
@@ -983,10 +998,10 @@ var AsyncDropdownField = chunkT7I6O43T_cjs.typedReactMemo(function AsyncDropdown
|
|
|
983
998
|
callback: onFetchMore,
|
|
984
999
|
loadedCount: itemCount
|
|
985
1000
|
});
|
|
986
|
-
return /* @__PURE__ */
|
|
1001
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.DropdownField, _extends2({}, dropdownProps, {
|
|
987
1002
|
isSearchable: true,
|
|
988
1003
|
popupStatus,
|
|
989
|
-
trailingItem: hasMore ? /* @__PURE__ */
|
|
1004
|
+
trailingItem: hasMore ? /* @__PURE__ */ React20__namespace.default.createElement(InfiniteScrollSentinel, {
|
|
990
1005
|
key: "sentinel",
|
|
991
1006
|
infiniteScrollRef
|
|
992
1007
|
}) : null,
|
|
@@ -996,10 +1011,10 @@ var AsyncDropdownField = chunkT7I6O43T_cjs.typedReactMemo(function AsyncDropdown
|
|
|
996
1011
|
function InfiniteScrollSentinel({
|
|
997
1012
|
infiniteScrollRef
|
|
998
1013
|
}) {
|
|
999
|
-
return /* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1000
1015
|
ref: infiniteScrollRef,
|
|
1001
1016
|
role: "presentation"
|
|
1002
|
-
}, /* @__PURE__ */
|
|
1017
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1003
1018
|
className: AsyncDropdownField_default.osdkAsyncDropdownSkeleton
|
|
1004
1019
|
}));
|
|
1005
1020
|
}
|
|
@@ -1008,7 +1023,7 @@ function InfiniteScrollSentinel({
|
|
|
1008
1023
|
var SEARCH_DEBOUNCE_MS = 300;
|
|
1009
1024
|
var PAGE_SIZE = 50;
|
|
1010
1025
|
var EMPTY_ITEMS = [];
|
|
1011
|
-
var ObjectSelectField = /* @__PURE__ */
|
|
1026
|
+
var ObjectSelectField = /* @__PURE__ */ React20.memo(function ObjectSelectFieldFn({
|
|
1012
1027
|
objectType,
|
|
1013
1028
|
value,
|
|
1014
1029
|
onChange,
|
|
@@ -1019,9 +1034,9 @@ var ObjectSelectField = /* @__PURE__ */ React19.memo(function ObjectSelectFieldF
|
|
|
1019
1034
|
portalRef,
|
|
1020
1035
|
portalContainer
|
|
1021
1036
|
}) {
|
|
1022
|
-
const [query, setQuery] =
|
|
1037
|
+
const [query, setQuery] = React20.useState("");
|
|
1023
1038
|
const debouncedQuery = useDebouncedValue(query, SEARCH_DEBOUNCE_MS);
|
|
1024
|
-
const handleChange =
|
|
1039
|
+
const handleChange = React20.useCallback((newValue) => {
|
|
1025
1040
|
onChange?.(newValue);
|
|
1026
1041
|
setQuery("");
|
|
1027
1042
|
}, [onChange]);
|
|
@@ -1029,7 +1044,7 @@ var ObjectSelectField = /* @__PURE__ */ React19.memo(function ObjectSelectFieldF
|
|
|
1029
1044
|
metadata
|
|
1030
1045
|
} = react.useOsdkMetadata(objectType);
|
|
1031
1046
|
const titleProperty = typeof metadata?.titleProperty === "string" ? metadata.titleProperty : void 0;
|
|
1032
|
-
const where =
|
|
1047
|
+
const where = React20.useMemo(() => {
|
|
1033
1048
|
const trimmed = debouncedQuery.trim();
|
|
1034
1049
|
if (trimmed === "" || titleProperty == null) {
|
|
1035
1050
|
return void 0;
|
|
@@ -1051,10 +1066,10 @@ var ObjectSelectField = /* @__PURE__ */ React19.memo(function ObjectSelectFieldF
|
|
|
1051
1066
|
pageSize: PAGE_SIZE
|
|
1052
1067
|
});
|
|
1053
1068
|
const items = data ?? EMPTY_ITEMS;
|
|
1054
|
-
const handleFetchMore =
|
|
1069
|
+
const handleFetchMore = React20.useCallback(() => {
|
|
1055
1070
|
void fetchMore?.();
|
|
1056
1071
|
}, [fetchMore]);
|
|
1057
|
-
return /* @__PURE__ */
|
|
1072
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(AsyncDropdownField, {
|
|
1058
1073
|
id,
|
|
1059
1074
|
value,
|
|
1060
1075
|
onChange: handleChange,
|
|
@@ -1084,23 +1099,23 @@ function itemToKey(obj) {
|
|
|
1084
1099
|
function isItemEqual(a, b) {
|
|
1085
1100
|
return a.$primaryKey === b.$primaryKey;
|
|
1086
1101
|
}
|
|
1087
|
-
var BlueprintIcon = /* @__PURE__ */
|
|
1102
|
+
var BlueprintIcon = /* @__PURE__ */ React20__namespace.default.memo(function BlueprintIconFn({
|
|
1088
1103
|
icon,
|
|
1089
1104
|
size
|
|
1090
1105
|
}) {
|
|
1091
1106
|
const paths = useIcon(icon.name, size);
|
|
1092
|
-
return /* @__PURE__ */
|
|
1107
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(icons.SVGIconContainer, {
|
|
1093
1108
|
iconName: icon.name,
|
|
1094
1109
|
color: icon.color
|
|
1095
|
-
}, paths != null ? paths.map((d, i) => /* @__PURE__ */
|
|
1110
|
+
}, paths != null ? paths.map((d, i) => /* @__PURE__ */ React20__namespace.default.createElement("path", {
|
|
1096
1111
|
key: i,
|
|
1097
1112
|
d,
|
|
1098
1113
|
fillRule: "evenodd"
|
|
1099
1114
|
})) : []);
|
|
1100
1115
|
});
|
|
1101
1116
|
function useIcon(icon, size) {
|
|
1102
|
-
const [iconPaths, setIconPaths] =
|
|
1103
|
-
|
|
1117
|
+
const [iconPaths, setIconPaths] = React20__namespace.default.useState(() => icons.Icons.getPaths(icon, size));
|
|
1118
|
+
React20__namespace.default.useEffect(function loadIconPaths() {
|
|
1104
1119
|
let isMounted = true;
|
|
1105
1120
|
const loadedIconPaths = icons.Icons.getPaths(icon, size);
|
|
1106
1121
|
if (loadedIconPaths != null) {
|
|
@@ -1129,20 +1144,20 @@ var DEFAULT_OBJECT_ICON = {
|
|
|
1129
1144
|
};
|
|
1130
1145
|
var ICON_SIZE = icons.IconSize.STANDARD;
|
|
1131
1146
|
var DEFAULT_EMPTY_MESSAGE = "Object set is not defined";
|
|
1132
|
-
var ObjectSetField =
|
|
1147
|
+
var ObjectSetField = chunk6SPXSFPI_cjs.typedReactMemo(function ObjectSetFieldFn({
|
|
1133
1148
|
value,
|
|
1134
1149
|
emptyMessage = DEFAULT_EMPTY_MESSAGE
|
|
1135
1150
|
}) {
|
|
1136
1151
|
if (value == null) {
|
|
1137
|
-
return /* @__PURE__ */
|
|
1152
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1138
1153
|
className: classnames__default.default(ObjectSetField_default.osdkObjectSetField, ObjectSetField_default.osdkObjectSetFieldEmpty)
|
|
1139
1154
|
}, emptyMessage);
|
|
1140
1155
|
}
|
|
1141
|
-
return /* @__PURE__ */
|
|
1156
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(ObjectSetFieldContent, {
|
|
1142
1157
|
objectSet: value
|
|
1143
1158
|
});
|
|
1144
1159
|
});
|
|
1145
|
-
var ObjectSetFieldContent = /* @__PURE__ */
|
|
1160
|
+
var ObjectSetFieldContent = /* @__PURE__ */ React20__namespace.default.memo(function ObjectSetFieldContentFn({
|
|
1146
1161
|
objectSet
|
|
1147
1162
|
}) {
|
|
1148
1163
|
const objectTypeDef = objectSet.$objectSetInternals.def;
|
|
@@ -1160,22 +1175,22 @@ var ObjectSetFieldContent = /* @__PURE__ */ React19__namespace.default.memo(func
|
|
|
1160
1175
|
pageSize: 1
|
|
1161
1176
|
});
|
|
1162
1177
|
const hasMetadata = metadata != null;
|
|
1163
|
-
const icon =
|
|
1178
|
+
const icon = React20__namespace.default.useMemo(() => metadata != null && "icon" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);
|
|
1164
1179
|
const displayName = totalCount === "1" || !hasMetadata || !("pluralDisplayName" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;
|
|
1165
1180
|
const showLoadingState = metadataLoading && !hasMetadata;
|
|
1166
|
-
return /* @__PURE__ */
|
|
1181
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1167
1182
|
className: ObjectSetField_default.osdkObjectSetField
|
|
1168
|
-
}, showLoadingState ? /* @__PURE__ */
|
|
1183
|
+
}, showLoadingState ? /* @__PURE__ */ React20__namespace.default.createElement(React20__namespace.default.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /* @__PURE__ */ React20__namespace.default.createElement(React20__namespace.default.Fragment, null, /* @__PURE__ */ React20__namespace.default.createElement(BlueprintIcon, {
|
|
1169
1184
|
icon,
|
|
1170
1185
|
size: ICON_SIZE
|
|
1171
|
-
}), /* @__PURE__ */
|
|
1186
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(ObjectSetLabel, {
|
|
1172
1187
|
displayName,
|
|
1173
1188
|
totalCount,
|
|
1174
1189
|
error: objectSetError,
|
|
1175
1190
|
isLoading: objectSetLoading
|
|
1176
1191
|
})));
|
|
1177
1192
|
});
|
|
1178
|
-
var ObjectSetLabel = /* @__PURE__ */
|
|
1193
|
+
var ObjectSetLabel = /* @__PURE__ */ React20__namespace.default.memo(function ObjectSetLabelFn({
|
|
1179
1194
|
displayName,
|
|
1180
1195
|
totalCount,
|
|
1181
1196
|
isLoading,
|
|
@@ -1185,15 +1200,15 @@ var ObjectSetLabel = /* @__PURE__ */ React19__namespace.default.memo(function Ob
|
|
|
1185
1200
|
const label = displayName ?? (totalCount === "1" ? "object" : "objects");
|
|
1186
1201
|
const showSkeleton = isLoading && !hasData;
|
|
1187
1202
|
const showError = error != null && !hasData && !isLoading;
|
|
1188
|
-
return /* @__PURE__ */
|
|
1203
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(React20__namespace.default.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1189
1204
|
className: ObjectSetField_default.osdkObjectSetFieldError,
|
|
1190
1205
|
role: "alert"
|
|
1191
|
-
}, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */
|
|
1206
|
+
}, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */ React20__namespace.default.createElement("span", null, `${formatCount(totalCount)} ${label}`));
|
|
1192
1207
|
});
|
|
1193
|
-
var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */
|
|
1208
|
+
var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */ React20__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1194
1209
|
className: ObjectSetField_default.osdkObjectSetIconSkeleton
|
|
1195
1210
|
});
|
|
1196
|
-
var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */
|
|
1211
|
+
var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */ React20__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1197
1212
|
className: ObjectSetField_default.osdkObjectSetLabelSkeleton
|
|
1198
1213
|
});
|
|
1199
1214
|
function formatCount(count) {
|
|
@@ -1214,43 +1229,58 @@ function toComponentIcon(apiIcon) {
|
|
|
1214
1229
|
var RadioButtonsField_default = {};
|
|
1215
1230
|
|
|
1216
1231
|
// src/action-form/fields/RadioButtonsField.tsx
|
|
1217
|
-
var RadioButtonsField =
|
|
1232
|
+
var RadioButtonsField = chunk6SPXSFPI_cjs.typedReactMemo(function RadioButtonsFieldFn({
|
|
1218
1233
|
id,
|
|
1219
1234
|
value,
|
|
1220
1235
|
onChange,
|
|
1221
1236
|
options,
|
|
1222
1237
|
orientation
|
|
1223
1238
|
}) {
|
|
1224
|
-
const selectedLabel =
|
|
1225
|
-
const handleValueChange =
|
|
1239
|
+
const selectedLabel = React20.useMemo(() => value != null ? options.find((opt) => opt.value === value)?.label : void 0, [options, value]);
|
|
1240
|
+
const handleValueChange = React20.useCallback((nextLabel) => {
|
|
1226
1241
|
const match = options.find((opt) => opt.label === nextLabel);
|
|
1227
1242
|
onChange?.(match?.value ?? null);
|
|
1228
1243
|
}, [options, onChange]);
|
|
1229
|
-
return /* @__PURE__ */
|
|
1244
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(radioGroup.RadioGroup, {
|
|
1230
1245
|
id,
|
|
1231
1246
|
className: RadioButtonsField_default.osdkRadioGroup,
|
|
1232
1247
|
"data-orientation": orientation ?? "vertical",
|
|
1233
1248
|
value: selectedLabel,
|
|
1234
1249
|
onValueChange: handleValueChange
|
|
1235
|
-
}, options.map((option) => /* @__PURE__ */
|
|
1250
|
+
}, options.map((option) => /* @__PURE__ */ React20__namespace.default.createElement(RadioItem, {
|
|
1236
1251
|
key: option.label,
|
|
1237
1252
|
option
|
|
1238
1253
|
})));
|
|
1239
1254
|
});
|
|
1240
|
-
var RadioItem = /* @__PURE__ */
|
|
1255
|
+
var RadioItem = /* @__PURE__ */ React20.memo(function RadioItemFn({
|
|
1241
1256
|
option
|
|
1242
1257
|
}) {
|
|
1243
|
-
return /* @__PURE__ */
|
|
1258
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("label", {
|
|
1244
1259
|
className: RadioButtonsField_default.osdkRadioItem
|
|
1245
|
-
}, /* @__PURE__ */
|
|
1260
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(radio.Radio.Root, {
|
|
1246
1261
|
value: option.label,
|
|
1247
1262
|
className: RadioButtonsField_default.osdkRadioRoot
|
|
1248
|
-
}, /* @__PURE__ */
|
|
1263
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(radio.Radio.Indicator, {
|
|
1249
1264
|
className: RadioButtonsField_default.osdkRadioIndicator
|
|
1250
|
-
})), /* @__PURE__ */
|
|
1265
|
+
})), /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1251
1266
|
className: RadioButtonsField_default.osdkRadioLabel
|
|
1252
1267
|
}, option.label));
|
|
1253
1268
|
});
|
|
1269
|
+
var SwitchField = /* @__PURE__ */ React20__namespace.default.memo(function SwitchFieldFn({
|
|
1270
|
+
id,
|
|
1271
|
+
label,
|
|
1272
|
+
value,
|
|
1273
|
+
onChange,
|
|
1274
|
+
error
|
|
1275
|
+
}) {
|
|
1276
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunkX337DNCW_cjs.Switch, {
|
|
1277
|
+
id,
|
|
1278
|
+
checked: value ?? false,
|
|
1279
|
+
onCheckedChange: onChange,
|
|
1280
|
+
"aria-invalid": error != null || void 0,
|
|
1281
|
+
"aria-label": label
|
|
1282
|
+
});
|
|
1283
|
+
});
|
|
1254
1284
|
|
|
1255
1285
|
// src/action-form/fields/BaseInput.module.css
|
|
1256
1286
|
var BaseInput_default = {};
|
|
@@ -1279,12 +1309,12 @@ function TextAreaField({
|
|
|
1279
1309
|
minLength,
|
|
1280
1310
|
maxLength
|
|
1281
1311
|
}) {
|
|
1282
|
-
const renderTextarea =
|
|
1312
|
+
const renderTextarea = React20.useCallback((props) => /* @__PURE__ */ React20__namespace.default.createElement("textarea", _extends3({}, props, {
|
|
1283
1313
|
rows,
|
|
1284
1314
|
wrap,
|
|
1285
1315
|
style: TEXTAREA_STYLE
|
|
1286
1316
|
})), [rows, wrap]);
|
|
1287
|
-
return /* @__PURE__ */
|
|
1317
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(input.Input, {
|
|
1288
1318
|
id,
|
|
1289
1319
|
className: BaseInput_default.osdkBaseInput,
|
|
1290
1320
|
value: value ?? "",
|
|
@@ -1305,7 +1335,7 @@ function TextInputField({
|
|
|
1305
1335
|
minLength,
|
|
1306
1336
|
maxLength
|
|
1307
1337
|
}) {
|
|
1308
|
-
return /* @__PURE__ */
|
|
1338
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(input.Input, {
|
|
1309
1339
|
id,
|
|
1310
1340
|
className: BaseInput_default.osdkBaseInput,
|
|
1311
1341
|
type: "text",
|
|
@@ -1328,7 +1358,7 @@ function _extends4() {
|
|
|
1328
1358
|
return n;
|
|
1329
1359
|
}, _extends4.apply(null, arguments);
|
|
1330
1360
|
}
|
|
1331
|
-
var FormFieldRenderer = /* @__PURE__ */
|
|
1361
|
+
var FormFieldRenderer = /* @__PURE__ */ React20.memo(function FormFieldRendererFn({
|
|
1332
1362
|
fieldDefinition,
|
|
1333
1363
|
value,
|
|
1334
1364
|
onFieldValueChange,
|
|
@@ -1342,7 +1372,7 @@ var FormFieldRenderer = /* @__PURE__ */ React19.memo(function FormFieldRendererF
|
|
|
1342
1372
|
helperText,
|
|
1343
1373
|
helperTextPlacement
|
|
1344
1374
|
} = fieldDefinition;
|
|
1345
|
-
return /* @__PURE__ */
|
|
1375
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(FormField, {
|
|
1346
1376
|
label,
|
|
1347
1377
|
isRequired,
|
|
1348
1378
|
fieldKey: fieldDefinition.fieldKey,
|
|
@@ -1355,7 +1385,7 @@ var FormFieldRenderer = /* @__PURE__ */ React19.memo(function FormFieldRendererF
|
|
|
1355
1385
|
function renderFieldComponent(fieldDefinition, value, onChange, error, portalContainer) {
|
|
1356
1386
|
switch (fieldDefinition.fieldComponent) {
|
|
1357
1387
|
case "DATE_RANGE_INPUT":
|
|
1358
|
-
return /* @__PURE__ */
|
|
1388
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(DateRangeInputField, _extends4({
|
|
1359
1389
|
id: fieldDefinition.fieldKey,
|
|
1360
1390
|
value: coerceToDateRange(value),
|
|
1361
1391
|
onChange,
|
|
@@ -1364,7 +1394,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1364
1394
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1365
1395
|
}));
|
|
1366
1396
|
case "TEXT_INPUT":
|
|
1367
|
-
return /* @__PURE__ */
|
|
1397
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(TextInputField, _extends4({
|
|
1368
1398
|
id: fieldDefinition.fieldKey,
|
|
1369
1399
|
value: value != null ? String(value) : "",
|
|
1370
1400
|
onChange,
|
|
@@ -1372,7 +1402,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1372
1402
|
error
|
|
1373
1403
|
}, fieldDefinition.fieldComponentProps));
|
|
1374
1404
|
case "TEXT_AREA":
|
|
1375
|
-
return /* @__PURE__ */
|
|
1405
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(TextAreaField, _extends4({
|
|
1376
1406
|
id: fieldDefinition.fieldKey,
|
|
1377
1407
|
value: value != null ? String(value) : "",
|
|
1378
1408
|
onChange,
|
|
@@ -1380,7 +1410,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1380
1410
|
error
|
|
1381
1411
|
}, fieldDefinition.fieldComponentProps));
|
|
1382
1412
|
case "DROPDOWN": {
|
|
1383
|
-
return /* @__PURE__ */
|
|
1413
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.DropdownField, _extends4({
|
|
1384
1414
|
id: fieldDefinition.fieldKey,
|
|
1385
1415
|
value,
|
|
1386
1416
|
onChange,
|
|
@@ -1391,7 +1421,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1391
1421
|
}));
|
|
1392
1422
|
}
|
|
1393
1423
|
case "DATETIME_PICKER":
|
|
1394
|
-
return /* @__PURE__ */
|
|
1424
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunk6SPXSFPI_cjs.DatetimePickerField, _extends4({
|
|
1395
1425
|
id: fieldDefinition.fieldKey,
|
|
1396
1426
|
placeholder: fieldDefinition.placeholder,
|
|
1397
1427
|
value: value instanceof Date ? value : null,
|
|
@@ -1401,21 +1431,29 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1401
1431
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1402
1432
|
}));
|
|
1403
1433
|
case "RADIO_BUTTONS":
|
|
1404
|
-
return /* @__PURE__ */
|
|
1434
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(RadioButtonsField, _extends4({
|
|
1405
1435
|
id: fieldDefinition.fieldKey,
|
|
1406
1436
|
value,
|
|
1407
1437
|
onChange,
|
|
1408
1438
|
error
|
|
1409
1439
|
}, fieldDefinition.fieldComponentProps));
|
|
1440
|
+
case "SWITCH":
|
|
1441
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(SwitchField, _extends4({
|
|
1442
|
+
id: fieldDefinition.fieldKey,
|
|
1443
|
+
label: fieldDefinition.label,
|
|
1444
|
+
value: !!value,
|
|
1445
|
+
onChange,
|
|
1446
|
+
error
|
|
1447
|
+
}, fieldDefinition.fieldComponentProps));
|
|
1410
1448
|
case "CUSTOM":
|
|
1411
|
-
return /* @__PURE__ */
|
|
1449
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(CustomField, _extends4({
|
|
1412
1450
|
id: fieldDefinition.fieldKey,
|
|
1413
1451
|
value,
|
|
1414
1452
|
onChange,
|
|
1415
1453
|
error
|
|
1416
1454
|
}, fieldDefinition.fieldComponentProps));
|
|
1417
1455
|
case "NUMBER_INPUT":
|
|
1418
|
-
return /* @__PURE__ */
|
|
1456
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(NumberInputField, _extends4({
|
|
1419
1457
|
id: fieldDefinition.fieldKey,
|
|
1420
1458
|
value: typeof value === "number" ? value : null,
|
|
1421
1459
|
onChange,
|
|
@@ -1423,14 +1461,14 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1423
1461
|
error
|
|
1424
1462
|
}, fieldDefinition.fieldComponentProps));
|
|
1425
1463
|
case "FILE_PICKER":
|
|
1426
|
-
return /* @__PURE__ */
|
|
1464
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(FilePickerField, _extends4({
|
|
1427
1465
|
id: fieldDefinition.fieldKey,
|
|
1428
1466
|
value: coerceToFileValue(value),
|
|
1429
1467
|
onChange,
|
|
1430
1468
|
error
|
|
1431
1469
|
}, fieldDefinition.fieldComponentProps));
|
|
1432
1470
|
case "OBJECT_SELECT":
|
|
1433
|
-
return /* @__PURE__ */
|
|
1471
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(ObjectSelectField, _extends4({
|
|
1434
1472
|
id: fieldDefinition.fieldKey,
|
|
1435
1473
|
value: narrowToOsdkObject(value),
|
|
1436
1474
|
onChange,
|
|
@@ -1440,7 +1478,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error, portalCon
|
|
|
1440
1478
|
portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)
|
|
1441
1479
|
}));
|
|
1442
1480
|
case "OBJECT_SET":
|
|
1443
|
-
return /* @__PURE__ */
|
|
1481
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(ObjectSetField, _extends4({
|
|
1444
1482
|
id: fieldDefinition.fieldKey
|
|
1445
1483
|
}, fieldDefinition.fieldComponentProps));
|
|
1446
1484
|
default:
|
|
@@ -1480,14 +1518,14 @@ function assertUnreachableFieldComponent(value) {
|
|
|
1480
1518
|
}
|
|
1481
1519
|
|
|
1482
1520
|
// src/action-form/fields/FieldBridge.tsx
|
|
1483
|
-
var SELECT_LIKE_FIELDS = /* @__PURE__ */ new Set(["RADIO_BUTTONS", "DROPDOWN"]);
|
|
1484
|
-
var FieldBridge = /* @__PURE__ */
|
|
1521
|
+
var SELECT_LIKE_FIELDS = /* @__PURE__ */ new Set(["RADIO_BUTTONS", "DROPDOWN", "SWITCH"]);
|
|
1522
|
+
var FieldBridge = /* @__PURE__ */ React20.memo(function FieldBridgeFn({
|
|
1485
1523
|
fieldDef,
|
|
1486
1524
|
control,
|
|
1487
1525
|
onExternalChange,
|
|
1488
1526
|
portalContainer
|
|
1489
1527
|
}) {
|
|
1490
|
-
const rules =
|
|
1528
|
+
const rules = React20.useMemo(() => extractValidationRules(fieldDef), [fieldDef]);
|
|
1491
1529
|
const {
|
|
1492
1530
|
field: {
|
|
1493
1531
|
onChange,
|
|
@@ -1503,20 +1541,20 @@ var FieldBridge = /* @__PURE__ */ React19.memo(function FieldBridgeFn({
|
|
|
1503
1541
|
rules
|
|
1504
1542
|
});
|
|
1505
1543
|
const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);
|
|
1506
|
-
const handleChange =
|
|
1544
|
+
const handleChange = React20.useCallback((newValue) => {
|
|
1507
1545
|
onChange(newValue);
|
|
1508
1546
|
onExternalChange?.(fieldDef.fieldKey, newValue);
|
|
1509
1547
|
if (isSelectLike) {
|
|
1510
1548
|
onBlur();
|
|
1511
1549
|
}
|
|
1512
1550
|
}, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);
|
|
1513
|
-
const handleBlur =
|
|
1551
|
+
const handleBlur = React20.useCallback((e) => {
|
|
1514
1552
|
if (e.currentTarget.contains(e.relatedTarget)) {
|
|
1515
1553
|
return;
|
|
1516
1554
|
}
|
|
1517
1555
|
onBlur();
|
|
1518
1556
|
}, [onBlur]);
|
|
1519
|
-
return /* @__PURE__ */
|
|
1557
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(FormFieldRenderer, {
|
|
1520
1558
|
value,
|
|
1521
1559
|
fieldDefinition: fieldDef,
|
|
1522
1560
|
onFieldValueChange: handleChange,
|
|
@@ -1530,10 +1568,10 @@ var FieldBridge = /* @__PURE__ */ React19.memo(function FieldBridgeFn({
|
|
|
1530
1568
|
var FormHeader_default = {};
|
|
1531
1569
|
|
|
1532
1570
|
// src/action-form/FormHeader.tsx
|
|
1533
|
-
var FormHeader = /* @__PURE__ */
|
|
1571
|
+
var FormHeader = /* @__PURE__ */ React20.memo(function FormHeaderFn({
|
|
1534
1572
|
title
|
|
1535
1573
|
}) {
|
|
1536
|
-
return /* @__PURE__ */
|
|
1574
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("h2", {
|
|
1537
1575
|
className: FormHeader_default.osdkFormHeader
|
|
1538
1576
|
}, title);
|
|
1539
1577
|
});
|
|
@@ -1542,7 +1580,7 @@ var FormHeader = /* @__PURE__ */ React19.memo(function FormHeaderFn({
|
|
|
1542
1580
|
var FormSection_default = {};
|
|
1543
1581
|
|
|
1544
1582
|
// src/action-form/FormSection.tsx
|
|
1545
|
-
var FormSection = /* @__PURE__ */
|
|
1583
|
+
var FormSection = /* @__PURE__ */ React20.memo(function FormSectionFn({
|
|
1546
1584
|
definition,
|
|
1547
1585
|
errorCount,
|
|
1548
1586
|
children
|
|
@@ -1557,65 +1595,65 @@ var FormSection = /* @__PURE__ */ React19.memo(function FormSectionFn({
|
|
|
1557
1595
|
} = definition;
|
|
1558
1596
|
const isMinimal = style === "minimal";
|
|
1559
1597
|
if (isMinimal) {
|
|
1560
|
-
return /* @__PURE__ */
|
|
1598
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(MinimalSection, {
|
|
1561
1599
|
title,
|
|
1562
1600
|
description
|
|
1563
1601
|
}, children);
|
|
1564
1602
|
}
|
|
1565
1603
|
const contentClassName = classnames__default.default(columnCount === 2 ? FormSection_default.osdkFormSectionGrid : FormSection_default.osdkFormSectionContent, FormSection_default.osdkFormSectionDivider);
|
|
1566
1604
|
if (!showTitleBar) {
|
|
1567
|
-
return /* @__PURE__ */
|
|
1605
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1568
1606
|
className: FormSection_default.osdkFormSectionBox
|
|
1569
|
-
}, /* @__PURE__ */
|
|
1607
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1570
1608
|
className: contentClassName
|
|
1571
1609
|
}, children));
|
|
1572
1610
|
}
|
|
1573
|
-
return /* @__PURE__ */
|
|
1611
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(collapsible.Collapsible.Root, {
|
|
1574
1612
|
// Inverted: Base UI uses "open" semantics, our API uses "collapsed" semantics
|
|
1575
1613
|
defaultOpen: !collapsedByDefault,
|
|
1576
1614
|
className: FormSection_default.osdkFormSectionBox
|
|
1577
|
-
}, /* @__PURE__ */
|
|
1615
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1578
1616
|
className: FormSection_default.osdkFormSectionHeader
|
|
1579
|
-
}, /* @__PURE__ */
|
|
1617
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1580
1618
|
className: FormSection_default.osdkFormSectionTitleArea
|
|
1581
|
-
}, /* @__PURE__ */
|
|
1619
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1582
1620
|
className: FormSection_default.osdkFormSectionTitle
|
|
1583
|
-
}, title), description != null && /* @__PURE__ */
|
|
1621
|
+
}, title), description != null && /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1584
1622
|
className: FormSection_default.osdkFormSectionDescription
|
|
1585
|
-
}, description)), /* @__PURE__ */
|
|
1623
|
+
}, description)), /* @__PURE__ */ React20__namespace.default.createElement(collapsible.Collapsible.Trigger, {
|
|
1586
1624
|
className: FormSection_default.osdkFormSectionTrigger,
|
|
1587
1625
|
"aria-label": title
|
|
1588
|
-
}, errorCount > 0 && /* @__PURE__ */
|
|
1626
|
+
}, errorCount > 0 && /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1589
1627
|
className: FormSection_default.osdkFormSectionErrorBadge,
|
|
1590
1628
|
role: "status"
|
|
1591
|
-
}, errorCount === 1 ? "1 error" : `${errorCount} errors`), /* @__PURE__ */
|
|
1629
|
+
}, errorCount === 1 ? "1 error" : `${errorCount} errors`), /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1592
1630
|
className: FormSection_default.osdkFormSectionChevron
|
|
1593
|
-
}, /* @__PURE__ */
|
|
1631
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.CaretDown, {
|
|
1594
1632
|
size: 16
|
|
1595
|
-
})))), /* @__PURE__ */
|
|
1633
|
+
})))), /* @__PURE__ */ React20__namespace.default.createElement(collapsible.Collapsible.Panel, {
|
|
1596
1634
|
keepMounted: true
|
|
1597
|
-
}, /* @__PURE__ */
|
|
1635
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1598
1636
|
className: contentClassName
|
|
1599
1637
|
}, children)));
|
|
1600
1638
|
});
|
|
1601
|
-
var MinimalSection = /* @__PURE__ */
|
|
1639
|
+
var MinimalSection = /* @__PURE__ */ React20.memo(function MinimalSectionFn({
|
|
1602
1640
|
title,
|
|
1603
1641
|
description,
|
|
1604
1642
|
children
|
|
1605
1643
|
}) {
|
|
1606
|
-
return /* @__PURE__ */
|
|
1644
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("div", null, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1607
1645
|
className: FormSection_default.osdkFormSectionMinimalHeader
|
|
1608
|
-
}, /* @__PURE__ */
|
|
1646
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1609
1647
|
className: FormSection_default.osdkFormSectionMinimalTitle
|
|
1610
|
-
}, title), description != null && /* @__PURE__ */
|
|
1648
|
+
}, title), description != null && /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1611
1649
|
className: FormSection_default.osdkFormSectionMinimalDescription
|
|
1612
|
-
}, description)), /* @__PURE__ */
|
|
1650
|
+
}, description)), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1613
1651
|
className: FormSection_default.osdkFormSectionMinimalContent
|
|
1614
1652
|
}, children));
|
|
1615
1653
|
});
|
|
1616
1654
|
|
|
1617
1655
|
// src/action-form/BaseForm.tsx
|
|
1618
|
-
var BaseForm = /* @__PURE__ */
|
|
1656
|
+
var BaseForm = /* @__PURE__ */ React20.memo(function BaseFormFn({
|
|
1619
1657
|
formTitle,
|
|
1620
1658
|
formContent,
|
|
1621
1659
|
formState: controlledFormState,
|
|
@@ -1626,12 +1664,12 @@ var BaseForm = /* @__PURE__ */ React19.memo(function BaseFormFn({
|
|
|
1626
1664
|
isLoading = false,
|
|
1627
1665
|
className,
|
|
1628
1666
|
submitButtonText = "Submit",
|
|
1629
|
-
submitButtonVariant = "primary"
|
|
1630
|
-
portalContainer
|
|
1667
|
+
submitButtonVariant = "primary"
|
|
1631
1668
|
}) {
|
|
1669
|
+
const portalContainerRef = React20.useRef(null);
|
|
1632
1670
|
const isControlled = controlledFormState != null;
|
|
1633
|
-
const allFieldDefinitions =
|
|
1634
|
-
const defaultValues =
|
|
1671
|
+
const allFieldDefinitions = React20.useMemo(() => flattenFieldDefinitions(formContent), [formContent]);
|
|
1672
|
+
const defaultValues = React20.useMemo(() => buildDefaultValues(allFieldDefinitions), [allFieldDefinitions]);
|
|
1635
1673
|
const {
|
|
1636
1674
|
control,
|
|
1637
1675
|
trigger,
|
|
@@ -1650,7 +1688,7 @@ var BaseForm = /* @__PURE__ */ React19.memo(function BaseFormFn({
|
|
|
1650
1688
|
defaultValues
|
|
1651
1689
|
}
|
|
1652
1690
|
});
|
|
1653
|
-
const [hasAttemptedSubmit, setHasAttemptedSubmit] =
|
|
1691
|
+
const [hasAttemptedSubmit, setHasAttemptedSubmit] = React20.useState(false);
|
|
1654
1692
|
const {
|
|
1655
1693
|
isPending: isSubmitting,
|
|
1656
1694
|
error: submissionError,
|
|
@@ -1658,8 +1696,7 @@ var BaseForm = /* @__PURE__ */ React19.memo(function BaseFormFn({
|
|
|
1658
1696
|
clearError
|
|
1659
1697
|
} = useAsyncAction(onSubmit);
|
|
1660
1698
|
const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message : "Submission failed" : void 0;
|
|
1661
|
-
const
|
|
1662
|
-
e.preventDefault();
|
|
1699
|
+
const submitForm = React20.useCallback(async () => {
|
|
1663
1700
|
setHasAttemptedSubmit(true);
|
|
1664
1701
|
const isValid = await trigger();
|
|
1665
1702
|
if (!isValid) {
|
|
@@ -1667,63 +1704,69 @@ var BaseForm = /* @__PURE__ */ React19.memo(function BaseFormFn({
|
|
|
1667
1704
|
}
|
|
1668
1705
|
await executeSubmit(controlledFormState ?? getValues());
|
|
1669
1706
|
}, [trigger, executeSubmit, controlledFormState, getValues]);
|
|
1670
|
-
const handleFieldChange =
|
|
1707
|
+
const handleFieldChange = React20.useCallback((fieldKey, value) => {
|
|
1671
1708
|
clearError();
|
|
1672
1709
|
onFieldValueChange?.(fieldKey, value);
|
|
1673
1710
|
}, [clearError, onFieldValueChange]);
|
|
1674
|
-
const
|
|
1675
|
-
const labelByFieldKey = React19.useMemo(() => new Map(allFieldDefinitions.map((d) => [d.fieldKey, d.label])), [allFieldDefinitions]);
|
|
1711
|
+
const labelByFieldKey = React20.useMemo(() => new Map(allFieldDefinitions.map((d) => [d.fieldKey, d.label])), [allFieldDefinitions]);
|
|
1676
1712
|
const errorEntries = Object.entries(errors).map(([key, entry]) => ({
|
|
1677
1713
|
label: labelByFieldKey.get(key) ?? key,
|
|
1678
1714
|
message: entry?.message ?? "Invalid"
|
|
1679
1715
|
}));
|
|
1680
1716
|
const areErrorsPresent = errorEntries.length > 0;
|
|
1681
1717
|
const buttonErrorMessage = areErrorsPresent ? "Some fields are invalid" : submissionErrorMessage;
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1718
|
+
const isFormPending = isPending || isSubmitting;
|
|
1719
|
+
const isSubmitButtonDisabled = isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent;
|
|
1720
|
+
return /* @__PURE__ */ React20__namespace.default.createElement("form", {
|
|
1721
|
+
ref: portalContainerRef,
|
|
1722
|
+
className: classnames__default.default(BaseForm_default.osdkForm, className)
|
|
1723
|
+
// Workshop widgets can run in iframes without `allow-forms`, where
|
|
1724
|
+
// native form submission is blocked. Keep the form landmark, but do not
|
|
1725
|
+
// wire any form-level submit handlers; the submit button invokes our
|
|
1726
|
+
// JavaScript submit path directly.
|
|
1727
|
+
}, formTitle != null && /* @__PURE__ */ React20__namespace.default.createElement(FormHeader, {
|
|
1686
1728
|
title: formTitle
|
|
1687
|
-
}), isLoading && allFieldDefinitions.length === 0 && /* @__PURE__ */
|
|
1729
|
+
}), isLoading && allFieldDefinitions.length === 0 && /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1688
1730
|
role: "status",
|
|
1689
1731
|
"aria-label": "Loading form fields",
|
|
1690
1732
|
className: BaseForm_default.osdkFormFields
|
|
1691
|
-
}, FORM_SKELETON), /* @__PURE__ */
|
|
1733
|
+
}, FORM_SKELETON), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1692
1734
|
className: BaseForm_default.osdkFormFields
|
|
1693
1735
|
}, formContent.map((item) => {
|
|
1694
1736
|
if (item.type === "field") {
|
|
1695
|
-
return /* @__PURE__ */
|
|
1737
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(FieldBridge, {
|
|
1696
1738
|
key: item.definition.fieldKey,
|
|
1697
1739
|
fieldDef: item.definition,
|
|
1698
1740
|
control,
|
|
1699
1741
|
onExternalChange: handleFieldChange,
|
|
1700
|
-
portalContainer
|
|
1742
|
+
portalContainer: portalContainerRef
|
|
1701
1743
|
});
|
|
1702
1744
|
}
|
|
1703
1745
|
const sectionErrorCount = item.definition.fields.reduce((count, field) => count + (errors[field.fieldKey] != null ? 1 : 0), 0);
|
|
1704
|
-
return /* @__PURE__ */
|
|
1746
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(FormSection, {
|
|
1705
1747
|
key: item.key,
|
|
1706
1748
|
definition: item.definition,
|
|
1707
1749
|
errorCount: sectionErrorCount
|
|
1708
|
-
}, item.definition.fields.map((fieldDef) => /* @__PURE__ */
|
|
1750
|
+
}, item.definition.fields.map((fieldDef) => /* @__PURE__ */ React20__namespace.default.createElement(FieldBridge, {
|
|
1709
1751
|
key: fieldDef.fieldKey,
|
|
1710
1752
|
fieldDef,
|
|
1711
1753
|
control,
|
|
1712
1754
|
onExternalChange: handleFieldChange,
|
|
1713
|
-
portalContainer
|
|
1755
|
+
portalContainer: portalContainerRef
|
|
1714
1756
|
})));
|
|
1715
|
-
})), /* @__PURE__ */
|
|
1757
|
+
})), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1716
1758
|
className: BaseForm_default.osdkFormFooter
|
|
1717
|
-
}, /* @__PURE__ */
|
|
1759
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(ErrorIndicator, {
|
|
1718
1760
|
errorEntries
|
|
1719
|
-
}), /* @__PURE__ */
|
|
1761
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1720
1762
|
className: BaseForm_default.osdkFormSubmitButton
|
|
1721
|
-
}, /* @__PURE__ */
|
|
1763
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(SubmitButton, {
|
|
1722
1764
|
isPending: isFormPending,
|
|
1723
|
-
isSubmitDisabled:
|
|
1765
|
+
isSubmitDisabled: isSubmitButtonDisabled,
|
|
1724
1766
|
errorMessage: buttonErrorMessage,
|
|
1725
1767
|
buttonText: submitButtonText,
|
|
1726
|
-
buttonVariant: submitButtonVariant
|
|
1768
|
+
buttonVariant: submitButtonVariant,
|
|
1769
|
+
onClick: submitForm
|
|
1727
1770
|
}))));
|
|
1728
1771
|
});
|
|
1729
1772
|
function flattenFieldDefinitions(formContent) {
|
|
@@ -1742,12 +1785,12 @@ function flattenFieldDefinitions(formContent) {
|
|
|
1742
1785
|
var SKELETON_FIELD_COUNT = 3;
|
|
1743
1786
|
var FORM_SKELETON = Array.from({
|
|
1744
1787
|
length: SKELETON_FIELD_COUNT
|
|
1745
|
-
}, (_, i) => /* @__PURE__ */
|
|
1788
|
+
}, (_, i) => /* @__PURE__ */ React20__namespace.default.createElement("div", {
|
|
1746
1789
|
key: i,
|
|
1747
1790
|
className: BaseForm_default.osdkFormSkeletonField
|
|
1748
|
-
}, /* @__PURE__ */
|
|
1791
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1749
1792
|
className: BaseForm_default.osdkFormSkeletonLabel
|
|
1750
|
-
}), /* @__PURE__ */
|
|
1793
|
+
}), /* @__PURE__ */ React20__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
|
|
1751
1794
|
className: BaseForm_default.osdkFormSkeletonInput
|
|
1752
1795
|
})));
|
|
1753
1796
|
function buildDefaultValues(fieldDefinitions) {
|
|
@@ -1760,29 +1803,31 @@ function buildDefaultValues(fieldDefinitions) {
|
|
|
1760
1803
|
}
|
|
1761
1804
|
return values;
|
|
1762
1805
|
}
|
|
1763
|
-
var SubmitButton = /* @__PURE__ */
|
|
1806
|
+
var SubmitButton = /* @__PURE__ */ React20.memo(function SubmitButtonFn({
|
|
1764
1807
|
isPending,
|
|
1765
1808
|
isSubmitDisabled,
|
|
1766
1809
|
errorMessage,
|
|
1767
1810
|
buttonText,
|
|
1768
|
-
buttonVariant
|
|
1811
|
+
buttonVariant,
|
|
1812
|
+
onClick
|
|
1769
1813
|
}) {
|
|
1770
1814
|
const buttonLabel = isPending ? "Submitting\u2026" : buttonText;
|
|
1771
|
-
const button = /* @__PURE__ */
|
|
1772
|
-
type: "
|
|
1815
|
+
const button = /* @__PURE__ */ React20__namespace.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
|
|
1816
|
+
type: "button",
|
|
1773
1817
|
variant: buttonVariant,
|
|
1774
|
-
disabled: isSubmitDisabled || isPending
|
|
1818
|
+
disabled: isSubmitDisabled || isPending,
|
|
1819
|
+
onClick
|
|
1775
1820
|
}, buttonLabel);
|
|
1776
1821
|
if (errorMessage == null) {
|
|
1777
1822
|
return button;
|
|
1778
1823
|
}
|
|
1779
|
-
return /* @__PURE__ */
|
|
1824
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Root, {
|
|
1780
1825
|
defaultOpen: true
|
|
1781
|
-
}, /* @__PURE__ */
|
|
1782
|
-
render: /* @__PURE__ */
|
|
1826
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Trigger, {
|
|
1827
|
+
render: /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1783
1828
|
className: BaseForm_default.osdkTooltipTriggerWrapper
|
|
1784
1829
|
})
|
|
1785
|
-
}, button), /* @__PURE__ */
|
|
1830
|
+
}, button), /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Portal, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Popup, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Arrow, null), errorMessage))));
|
|
1786
1831
|
});
|
|
1787
1832
|
function ErrorIndicator({
|
|
1788
1833
|
errorEntries
|
|
@@ -1791,15 +1836,15 @@ function ErrorIndicator({
|
|
|
1791
1836
|
return null;
|
|
1792
1837
|
}
|
|
1793
1838
|
const count = errorEntries.length;
|
|
1794
|
-
return /* @__PURE__ */
|
|
1839
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Root, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Trigger, null, /* @__PURE__ */ React20__namespace.default.createElement("span", {
|
|
1795
1840
|
className: BaseForm_default.osdkFormErrorIndicator
|
|
1796
|
-
}, /* @__PURE__ */
|
|
1841
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement(icons.Error, {
|
|
1797
1842
|
size: 14
|
|
1798
|
-
}), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */
|
|
1843
|
+
}), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Portal, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Popup, null, /* @__PURE__ */ React20__namespace.default.createElement(chunkI3OSD6CF_cjs.Tooltip.Arrow, null), /* @__PURE__ */ React20__namespace.default.createElement("ul", {
|
|
1799
1844
|
className: BaseForm_default.osdkFormErrorList
|
|
1800
|
-
}, errorEntries.map((entry) => /* @__PURE__ */
|
|
1845
|
+
}, errorEntries.map((entry) => /* @__PURE__ */ React20__namespace.default.createElement("li", {
|
|
1801
1846
|
key: entry.label
|
|
1802
|
-
}, /* @__PURE__ */
|
|
1847
|
+
}, /* @__PURE__ */ React20__namespace.default.createElement("strong", null, entry.label, ":"), " ", entry.message)))))));
|
|
1803
1848
|
}
|
|
1804
1849
|
|
|
1805
1850
|
// src/action-form/utils/coerceFieldValue.ts
|
|
@@ -1964,7 +2009,7 @@ function buildFieldDefinition(key, param) {
|
|
|
1964
2009
|
fieldComponentProps: {}
|
|
1965
2010
|
};
|
|
1966
2011
|
default:
|
|
1967
|
-
return
|
|
2012
|
+
return chunkX337DNCW_cjs.assertUnreachable(paramType);
|
|
1968
2013
|
}
|
|
1969
2014
|
}
|
|
1970
2015
|
|
|
@@ -1980,9 +2025,10 @@ function _extends5() {
|
|
|
1980
2025
|
}
|
|
1981
2026
|
var EMPTY_FIELD_DEFINITIONS = [];
|
|
1982
2027
|
var EMPTY_FORM_CONTENT = [];
|
|
1983
|
-
var ActionForm =
|
|
2028
|
+
var ActionForm = chunk6SPXSFPI_cjs.typedReactMemo(function ActionFormFn({
|
|
1984
2029
|
actionDefinition,
|
|
1985
2030
|
formTitle,
|
|
2031
|
+
showFormTitle = false,
|
|
1986
2032
|
formFieldDefinitions,
|
|
1987
2033
|
formState: controlledFormState,
|
|
1988
2034
|
onFormStateChange,
|
|
@@ -1990,8 +2036,7 @@ var ActionForm = chunkT7I6O43T_cjs.typedReactMemo(function ActionFormFn({
|
|
|
1990
2036
|
onSubmit,
|
|
1991
2037
|
onValidationResponse: _onValidationResponse,
|
|
1992
2038
|
onSuccess,
|
|
1993
|
-
onError
|
|
1994
|
-
portalContainer
|
|
2039
|
+
onError
|
|
1995
2040
|
}) {
|
|
1996
2041
|
const {
|
|
1997
2042
|
applyAction: osdkApplyAction,
|
|
@@ -2002,7 +2047,7 @@ var ActionForm = chunkT7I6O43T_cjs.typedReactMemo(function ActionFormFn({
|
|
|
2002
2047
|
loading: metadataLoading,
|
|
2003
2048
|
error: metadataError
|
|
2004
2049
|
} = react.useOsdkMetadata(actionDefinition);
|
|
2005
|
-
|
|
2050
|
+
React20.useEffect(function saveMetadataError() {
|
|
2006
2051
|
if (metadataError != null) {
|
|
2007
2052
|
onError?.({
|
|
2008
2053
|
type: "unknown",
|
|
@@ -2011,30 +2056,39 @@ var ActionForm = chunkT7I6O43T_cjs.typedReactMemo(function ActionFormFn({
|
|
|
2011
2056
|
}
|
|
2012
2057
|
}, [metadataError, onError]);
|
|
2013
2058
|
const parameters = metadata?.parameters;
|
|
2014
|
-
const customFieldDefinitions =
|
|
2059
|
+
const customFieldDefinitions = React20.useMemo(() => {
|
|
2015
2060
|
if (formFieldDefinitions == null) {
|
|
2016
2061
|
return null;
|
|
2017
2062
|
}
|
|
2018
|
-
return formFieldDefinitions.map((def) =>
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2063
|
+
return formFieldDefinitions.map((def) => {
|
|
2064
|
+
const {
|
|
2065
|
+
defaultValue,
|
|
2066
|
+
...fieldDefinition
|
|
2067
|
+
} = def;
|
|
2068
|
+
return {
|
|
2069
|
+
...fieldDefinition,
|
|
2070
|
+
fieldKey: String(def.fieldKey),
|
|
2071
|
+
fieldType: parameters?.[String(def.fieldKey)]?.type,
|
|
2072
|
+
fieldComponentProps: defaultValue === void 0 ? def.fieldComponentProps : {
|
|
2073
|
+
...def.fieldComponentProps,
|
|
2074
|
+
defaultValue
|
|
2075
|
+
}
|
|
2076
|
+
};
|
|
2077
|
+
});
|
|
2024
2078
|
}, [formFieldDefinitions, parameters]);
|
|
2025
|
-
const rendererFieldDefinitions =
|
|
2026
|
-
const formContent =
|
|
2079
|
+
const rendererFieldDefinitions = React20.useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);
|
|
2080
|
+
const formContent = React20.useMemo(() => rendererFieldDefinitions.length === 0 ? EMPTY_FORM_CONTENT : rendererFieldDefinitions.map((def) => ({
|
|
2027
2081
|
type: "field",
|
|
2028
2082
|
definition: def
|
|
2029
2083
|
})), [rendererFieldDefinitions]);
|
|
2030
|
-
const coerceFormState =
|
|
2084
|
+
const coerceFormState = React20.useCallback((rawState) => {
|
|
2031
2085
|
const coerced = {};
|
|
2032
2086
|
for (const [key, value] of Object.entries(rawState)) {
|
|
2033
2087
|
coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);
|
|
2034
2088
|
}
|
|
2035
2089
|
return coerced;
|
|
2036
2090
|
}, [parameters]);
|
|
2037
|
-
const handleSubmit =
|
|
2091
|
+
const handleSubmit = React20.useCallback(async (rawFormState) => {
|
|
2038
2092
|
const formState = coerceFormState(rawFormState);
|
|
2039
2093
|
try {
|
|
2040
2094
|
if (onSubmit != null) {
|
|
@@ -2050,13 +2104,13 @@ var ActionForm = chunkT7I6O43T_cjs.typedReactMemo(function ActionFormFn({
|
|
|
2050
2104
|
});
|
|
2051
2105
|
}
|
|
2052
2106
|
}, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);
|
|
2053
|
-
const handleFieldValueChange =
|
|
2107
|
+
const handleFieldValueChange = React20.useCallback((fieldKey, value) => {
|
|
2054
2108
|
onFormStateChange?.((prev) => ({
|
|
2055
2109
|
...prev,
|
|
2056
2110
|
[fieldKey]: value
|
|
2057
2111
|
}));
|
|
2058
2112
|
}, [onFormStateChange]);
|
|
2059
|
-
const resolvedTitle = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;
|
|
2113
|
+
const resolvedTitle = showFormTitle ? formTitle ?? metadata?.displayName ?? actionDefinition.apiName : void 0;
|
|
2060
2114
|
const isControlled = controlledFormState != null;
|
|
2061
2115
|
const commonProps = {
|
|
2062
2116
|
formTitle: resolvedTitle,
|
|
@@ -2065,21 +2119,20 @@ var ActionForm = chunkT7I6O43T_cjs.typedReactMemo(function ActionFormFn({
|
|
|
2065
2119
|
isSubmitDisabled,
|
|
2066
2120
|
isPending,
|
|
2067
2121
|
isLoading: metadataLoading,
|
|
2068
|
-
onFieldValueChange: handleFieldValueChange
|
|
2069
|
-
portalContainer
|
|
2122
|
+
onFieldValueChange: handleFieldValueChange
|
|
2070
2123
|
};
|
|
2071
2124
|
if (!isControlled) {
|
|
2072
|
-
return /* @__PURE__ */
|
|
2125
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(BaseForm, commonProps);
|
|
2073
2126
|
}
|
|
2074
|
-
return /* @__PURE__ */
|
|
2127
|
+
return /* @__PURE__ */ React20__namespace.default.createElement(BaseForm, _extends5({}, commonProps, {
|
|
2075
2128
|
formState: controlledFormState
|
|
2076
2129
|
}));
|
|
2077
2130
|
});
|
|
2078
2131
|
|
|
2079
2132
|
// src/public/experimental/action-form.ts
|
|
2080
|
-
var ActionForm2 =
|
|
2133
|
+
var ActionForm2 = chunk6UDBHYSO_cjs.withOsdkMetrics(ActionForm, "ActionForm");
|
|
2081
2134
|
|
|
2082
2135
|
exports.ActionForm = ActionForm2;
|
|
2083
2136
|
exports.BaseForm = BaseForm;
|
|
2084
|
-
//# sourceMappingURL=chunk-
|
|
2085
|
-
//# sourceMappingURL=chunk-
|
|
2137
|
+
//# sourceMappingURL=chunk-PTTCWNZZ.cjs.map
|
|
2138
|
+
//# sourceMappingURL=chunk-PTTCWNZZ.cjs.map
|