@verbb/plugin-kit-react 1.0.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/CHANGELOG.md +5 -0
- package/LICENSE.md +21 -0
- package/README.md +31 -0
- package/dist/_virtual/_rolldown/runtime.js +34 -0
- package/dist/components/Button.d.ts +26 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +148 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/ButtonGroup.d.ts +11 -0
- package/dist/components/ButtonGroup.d.ts.map +1 -0
- package/dist/components/ButtonGroup.js +59 -0
- package/dist/components/ButtonGroup.js.map +1 -0
- package/dist/components/Calendar.d.ts +11 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +133 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/Checkbox.d.ts +5 -0
- package/dist/components/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox.js +41 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/CheckboxInput.d.ts +14 -0
- package/dist/components/CheckboxInput.d.ts.map +1 -0
- package/dist/components/CheckboxInput.js +31 -0
- package/dist/components/CheckboxInput.js.map +1 -0
- package/dist/components/CheckboxSelect.d.ts +19 -0
- package/dist/components/CheckboxSelect.d.ts.map +1 -0
- package/dist/components/CheckboxSelect.js +63 -0
- package/dist/components/CheckboxSelect.js.map +1 -0
- package/dist/components/ColorInput.d.ts +14 -0
- package/dist/components/ColorInput.d.ts.map +1 -0
- package/dist/components/ColorInput.js +148 -0
- package/dist/components/ColorInput.js.map +1 -0
- package/dist/components/Combobox.d.ts +40 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +393 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/ComboboxInput.d.ts +28 -0
- package/dist/components/ComboboxInput.d.ts.map +1 -0
- package/dist/components/ComboboxInput.js +165 -0
- package/dist/components/ComboboxInput.js.map +1 -0
- package/dist/components/Command.d.ts +26 -0
- package/dist/components/Command.d.ts.map +1 -0
- package/dist/components/Command.js +94 -0
- package/dist/components/Command.js.map +1 -0
- package/dist/components/CopyButton.d.ts +9 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +40 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/DatePicker.d.ts +9 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +46 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Dialog.d.ts +21 -0
- package/dist/components/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog.js +179 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu.d.ts +47 -0
- package/dist/components/DropdownMenu.d.ts.map +1 -0
- package/dist/components/DropdownMenu.js +240 -0
- package/dist/components/DropdownMenu.js.map +1 -0
- package/dist/components/EditableTable.d.ts +28 -0
- package/dist/components/EditableTable.d.ts.map +1 -0
- package/dist/components/EditableTable.js +145 -0
- package/dist/components/EditableTable.js.map +1 -0
- package/dist/components/FadeIn.d.ts +12 -0
- package/dist/components/FadeIn.d.ts.map +1 -0
- package/dist/components/FadeIn.js +24 -0
- package/dist/components/FadeIn.js.map +1 -0
- package/dist/components/Input.d.ts +9 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +43 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputGroup.d.ts +20 -0
- package/dist/components/InputGroup.d.ts.map +1 -0
- package/dist/components/InputGroup.js +111 -0
- package/dist/components/InputGroup.js.map +1 -0
- package/dist/components/Label.d.ts +4 -0
- package/dist/components/Label.d.ts.map +1 -0
- package/dist/components/Label.js +15 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/Lightswitch.d.ts +9 -0
- package/dist/components/Lightswitch.d.ts.map +1 -0
- package/dist/components/Lightswitch.js +56 -0
- package/dist/components/Lightswitch.js.map +1 -0
- package/dist/components/Markdown.d.ts +11 -0
- package/dist/components/Markdown.d.ts.map +1 -0
- package/dist/components/Markdown.js +46 -0
- package/dist/components/Markdown.js.map +1 -0
- package/dist/components/MenuButton.d.ts +40 -0
- package/dist/components/MenuButton.d.ts.map +1 -0
- package/dist/components/MenuButton.js +122 -0
- package/dist/components/MenuButton.js.map +1 -0
- package/dist/components/ModalTabs.d.ts +8 -0
- package/dist/components/ModalTabs.d.ts.map +1 -0
- package/dist/components/ModalTabs.js +37 -0
- package/dist/components/ModalTabs.js.map +1 -0
- package/dist/components/PaneTabs.d.ts +8 -0
- package/dist/components/PaneTabs.d.ts.map +1 -0
- package/dist/components/PaneTabs.js +37 -0
- package/dist/components/PaneTabs.js.map +1 -0
- package/dist/components/Popover.d.ts +12 -0
- package/dist/components/Popover.d.ts.map +1 -0
- package/dist/components/Popover.js +70 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +6 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +34 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +16 -0
- package/dist/components/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea.js +47 -0
- package/dist/components/ScrollArea.js.map +1 -0
- package/dist/components/Select.d.ts +23 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +205 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SelectInput.d.ts +33 -0
- package/dist/components/SelectInput.d.ts.map +1 -0
- package/dist/components/SelectInput.js +85 -0
- package/dist/components/SelectInput.js.map +1 -0
- package/dist/components/Separator.d.ts +4 -0
- package/dist/components/Separator.d.ts.map +1 -0
- package/dist/components/Separator.js +17 -0
- package/dist/components/Separator.js.map +1 -0
- package/dist/components/SlideUp.d.ts +12 -0
- package/dist/components/SlideUp.d.ts.map +1 -0
- package/dist/components/SlideUp.js +36 -0
- package/dist/components/SlideUp.js.map +1 -0
- package/dist/components/Slot.d.ts +6 -0
- package/dist/components/Slot.d.ts.map +1 -0
- package/dist/components/Slot.js +52 -0
- package/dist/components/Slot.js.map +1 -0
- package/dist/components/Spinner.d.ts +9 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +43 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Status.d.ts +8 -0
- package/dist/components/Status.d.ts.map +1 -0
- package/dist/components/Status.js +55 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Table.d.ts +10 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Table.js +64 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +8 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +37 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Textarea.d.ts +8 -0
- package/dist/components/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea.js +26 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/TimePicker.d.ts +9 -0
- package/dist/components/TimePicker.d.ts.map +1 -0
- package/dist/components/TimePicker.js +40 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/TiptapContent.d.ts +9 -0
- package/dist/components/TiptapContent.d.ts.map +1 -0
- package/dist/components/TiptapContent.js +24 -0
- package/dist/components/TiptapContent.js.map +1 -0
- package/dist/components/TiptapEditor.d.ts +41 -0
- package/dist/components/TiptapEditor.d.ts.map +1 -0
- package/dist/components/TiptapEditor.js +555 -0
- package/dist/components/TiptapEditor.js.map +1 -0
- package/dist/components/TiptapInput.d.ts +15 -0
- package/dist/components/TiptapInput.d.ts.map +1 -0
- package/dist/components/TiptapInput.js +138 -0
- package/dist/components/TiptapInput.js.map +1 -0
- package/dist/components/Toggle.d.ts +9 -0
- package/dist/components/Toggle.d.ts.map +1 -0
- package/dist/components/Toggle.js +48 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleGroup.d.ts +11 -0
- package/dist/components/ToggleGroup.d.ts.map +1 -0
- package/dist/components/ToggleGroup.js +70 -0
- package/dist/components/ToggleGroup.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip.js +51 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/VirtualizedScrollArea.d.ts +25 -0
- package/dist/components/VirtualizedScrollArea.d.ts.map +1 -0
- package/dist/components/VirtualizedScrollArea.js +80 -0
- package/dist/components/VirtualizedScrollArea.js.map +1 -0
- package/dist/components/editable-table/RowDataCells.d.ts +3 -0
- package/dist/components/editable-table/RowDataCells.d.ts.map +1 -0
- package/dist/components/editable-table/RowDataCells.js +33 -0
- package/dist/components/editable-table/RowDataCells.js.map +1 -0
- package/dist/components/editable-table/TableCell.d.ts +13 -0
- package/dist/components/editable-table/TableCell.d.ts.map +1 -0
- package/dist/components/editable-table/TableCell.js +415 -0
- package/dist/components/editable-table/TableCell.js.map +1 -0
- package/dist/components/editable-table/TableRow.d.ts +3 -0
- package/dist/components/editable-table/TableRow.d.ts.map +1 -0
- package/dist/components/editable-table/TableRow.js +163 -0
- package/dist/components/editable-table/TableRow.js.map +1 -0
- package/dist/components/editable-table/helpers.d.ts +12 -0
- package/dist/components/editable-table/helpers.d.ts.map +1 -0
- package/dist/components/editable-table/helpers.js +23 -0
- package/dist/components/editable-table/helpers.js.map +1 -0
- package/dist/components/editable-table/index.d.ts +4 -0
- package/dist/components/editable-table/index.d.ts.map +1 -0
- package/dist/components/editable-table/index.js +4 -0
- package/dist/components/editable-table/types.d.ts +43 -0
- package/dist/components/editable-table/types.d.ts.map +1 -0
- package/dist/components/editable-table/types.js +0 -0
- package/dist/components/editable-table/useEditableTableCellChange.d.ts +17 -0
- package/dist/components/editable-table/useEditableTableCellChange.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableCellChange.js +152 -0
- package/dist/components/editable-table/useEditableTableCellChange.js.map +1 -0
- package/dist/components/editable-table/useEditableTableDnd.d.ts +18 -0
- package/dist/components/editable-table/useEditableTableDnd.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableDnd.js +55 -0
- package/dist/components/editable-table/useEditableTableDnd.js.map +1 -0
- package/dist/components/editable-table/useEditableTableRows.d.ts +17 -0
- package/dist/components/editable-table/useEditableTableRows.d.ts.map +1 -0
- package/dist/components/editable-table/useEditableTableRows.js +108 -0
- package/dist/components/editable-table/useEditableTableRows.js.map +1 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +45 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts +24 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.d.ts.map +1 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.js +63 -0
- package/dist/components/tiptap/InlineVariablePickerPopover.js.map +1 -0
- package/dist/components/tiptap/InsertLinkDialog.d.ts +14 -0
- package/dist/components/tiptap/InsertLinkDialog.d.ts.map +1 -0
- package/dist/components/tiptap/InsertLinkDialog.js +145 -0
- package/dist/components/tiptap/InsertLinkDialog.js.map +1 -0
- package/dist/components/tiptap/LinkBubbleMenu.d.ts +10 -0
- package/dist/components/tiptap/LinkBubbleMenu.d.ts.map +1 -0
- package/dist/components/tiptap/LinkBubbleMenu.js +106 -0
- package/dist/components/tiptap/LinkBubbleMenu.js.map +1 -0
- package/dist/components/tiptap/LinkDropdown.d.ts +53 -0
- package/dist/components/tiptap/LinkDropdown.d.ts.map +1 -0
- package/dist/components/tiptap/LinkDropdown.js +155 -0
- package/dist/components/tiptap/LinkDropdown.js.map +1 -0
- package/dist/components/tiptap/VariableCommandList.d.ts +37 -0
- package/dist/components/tiptap/VariableCommandList.d.ts.map +1 -0
- package/dist/components/tiptap/VariableCommandList.js +166 -0
- package/dist/components/tiptap/VariableCommandList.js.map +1 -0
- package/dist/components/tiptap/VariableDropdown.d.ts +33 -0
- package/dist/components/tiptap/VariableDropdown.d.ts.map +1 -0
- package/dist/components/tiptap/VariableDropdown.js +121 -0
- package/dist/components/tiptap/VariableDropdown.js.map +1 -0
- package/dist/components/tiptap/VariablePickerContext.d.ts +38 -0
- package/dist/components/tiptap/VariablePickerContext.d.ts.map +1 -0
- package/dist/components/tiptap/VariablePickerContext.js +30 -0
- package/dist/components/tiptap/VariablePickerContext.js.map +1 -0
- package/dist/components/tiptap/VariableTag.d.ts +6 -0
- package/dist/components/tiptap/VariableTag.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTag.js +153 -0
- package/dist/components/tiptap/VariableTag.js.map +1 -0
- package/dist/components/tiptap/VariableTagView.d.ts +3 -0
- package/dist/components/tiptap/VariableTagView.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTagView.js +445 -0
- package/dist/components/tiptap/VariableTagView.js.map +1 -0
- package/dist/components/tiptap/VariableTransformControls.d.ts +37 -0
- package/dist/components/tiptap/VariableTransformControls.d.ts.map +1 -0
- package/dist/components/tiptap/VariableTransformControls.js +157 -0
- package/dist/components/tiptap/VariableTransformControls.js.map +1 -0
- package/dist/components/tiptap/editorConfig.d.ts +15 -0
- package/dist/components/tiptap/editorConfig.d.ts.map +1 -0
- package/dist/components/tiptap/editorConfig.js +191 -0
- package/dist/components/tiptap/editorConfig.js.map +1 -0
- package/dist/components/tiptap/useInlineVariablePicker.d.ts +34 -0
- package/dist/components/tiptap/useInlineVariablePicker.d.ts.map +1 -0
- package/dist/components/tiptap/useInlineVariablePicker.js +240 -0
- package/dist/components/tiptap/useInlineVariablePicker.js.map +1 -0
- package/dist/components/tiptap/useVariablePicker.d.ts +28 -0
- package/dist/components/tiptap/useVariablePicker.d.ts.map +1 -0
- package/dist/components/tiptap/useVariablePicker.js +122 -0
- package/dist/components/tiptap/useVariablePicker.js.map +1 -0
- package/dist/components/tiptap/variablePickerUtils.d.ts +11 -0
- package/dist/components/tiptap/variablePickerUtils.d.ts.map +1 -0
- package/dist/components/tiptap/variablePickerUtils.js +63 -0
- package/dist/components/tiptap/variablePickerUtils.js.map +1 -0
- package/dist/components/tiptap/variableSerialization.d.ts +49 -0
- package/dist/components/tiptap/variableSerialization.d.ts.map +1 -0
- package/dist/components/tiptap/variableSerialization.js +250 -0
- package/dist/components/tiptap/variableSerialization.js.map +1 -0
- package/dist/css/core.css +288 -0
- package/dist/css/style.css +295 -0
- package/dist/forms/Field.d.ts +37 -0
- package/dist/forms/Field.d.ts.map +1 -0
- package/dist/forms/Field.js +159 -0
- package/dist/forms/Field.js.map +1 -0
- package/dist/forms/SchemaFormEngine.d.ts +23 -0
- package/dist/forms/SchemaFormEngine.d.ts.map +1 -0
- package/dist/forms/SchemaFormEngine.js +444 -0
- package/dist/forms/SchemaFormEngine.js.map +1 -0
- package/dist/forms/components/FieldWrap.d.ts +11 -0
- package/dist/forms/components/FieldWrap.d.ts.map +1 -0
- package/dist/forms/components/FieldWrap.js +84 -0
- package/dist/forms/components/FieldWrap.js.map +1 -0
- package/dist/forms/components/ModalTabs.d.ts +21 -0
- package/dist/forms/components/ModalTabs.d.ts.map +1 -0
- package/dist/forms/components/ModalTabs.js +84 -0
- package/dist/forms/components/ModalTabs.js.map +1 -0
- package/dist/forms/components/index.d.ts +3 -0
- package/dist/forms/components/index.d.ts.map +1 -0
- package/dist/forms/components/index.js +3 -0
- package/dist/forms/contexts/VariableCategoriesContext.d.ts +17 -0
- package/dist/forms/contexts/VariableCategoriesContext.d.ts.map +1 -0
- package/dist/forms/contexts/VariableCategoriesContext.js +18 -0
- package/dist/forms/contexts/VariableCategoriesContext.js.map +1 -0
- package/dist/forms/engine/FormStateStore.d.ts +24 -0
- package/dist/forms/engine/FormStateStore.d.ts.map +1 -0
- package/dist/forms/engine/FormStateStore.js +97 -0
- package/dist/forms/engine/FormStateStore.js.map +1 -0
- package/dist/forms/engine/SchemaIndex.d.ts +33 -0
- package/dist/forms/engine/SchemaIndex.d.ts.map +1 -0
- package/dist/forms/engine/SchemaIndex.js +21 -0
- package/dist/forms/engine/SchemaIndex.js.map +1 -0
- package/dist/forms/engine/ValidationEngine.d.ts +13 -0
- package/dist/forms/engine/ValidationEngine.d.ts.map +1 -0
- package/dist/forms/engine/ValidationEngine.js +155 -0
- package/dist/forms/engine/ValidationEngine.js.map +1 -0
- package/dist/forms/engine/buildGroupedMessage.d.ts +2 -0
- package/dist/forms/engine/buildGroupedMessage.d.ts.map +1 -0
- package/dist/forms/engine/buildGroupedMessage.js +20 -0
- package/dist/forms/engine/buildGroupedMessage.js.map +1 -0
- package/dist/forms/engine/context.d.ts +60 -0
- package/dist/forms/engine/context.d.ts.map +1 -0
- package/dist/forms/engine/context.js +12 -0
- package/dist/forms/engine/context.js.map +1 -0
- package/dist/forms/engine/rules/email.d.ts +2 -0
- package/dist/forms/engine/rules/email.d.ts.map +1 -0
- package/dist/forms/engine/rules/email.js +11 -0
- package/dist/forms/engine/rules/email.js.map +1 -0
- package/dist/forms/engine/rules/emailOrVariable.d.ts +2 -0
- package/dist/forms/engine/rules/emailOrVariable.d.ts.map +1 -0
- package/dist/forms/engine/rules/emailOrVariable.js +13 -0
- package/dist/forms/engine/rules/emailOrVariable.js.map +1 -0
- package/dist/forms/engine/rules/handle.d.ts +2 -0
- package/dist/forms/engine/rules/handle.d.ts.map +1 -0
- package/dist/forms/engine/rules/handle.js +12 -0
- package/dist/forms/engine/rules/handle.js.map +1 -0
- package/dist/forms/engine/rules/index.d.ts +9 -0
- package/dist/forms/engine/rules/index.d.ts.map +1 -0
- package/dist/forms/engine/rules/index.js +35 -0
- package/dist/forms/engine/rules/index.js.map +1 -0
- package/dist/forms/engine/rules/max.d.ts +2 -0
- package/dist/forms/engine/rules/max.d.ts.map +1 -0
- package/dist/forms/engine/rules/max.js +16 -0
- package/dist/forms/engine/rules/max.js.map +1 -0
- package/dist/forms/engine/rules/min.d.ts +2 -0
- package/dist/forms/engine/rules/min.d.ts.map +1 -0
- package/dist/forms/engine/rules/min.js +16 -0
- package/dist/forms/engine/rules/min.js.map +1 -0
- package/dist/forms/engine/rules/required.d.ts +2 -0
- package/dist/forms/engine/rules/required.d.ts.map +1 -0
- package/dist/forms/engine/rules/required.js +11 -0
- package/dist/forms/engine/rules/required.js.map +1 -0
- package/dist/forms/engine/rules/uniqueHandle.d.ts +9 -0
- package/dist/forms/engine/rules/uniqueHandle.d.ts.map +1 -0
- package/dist/forms/engine/rules/uniqueHandle.js +95 -0
- package/dist/forms/engine/rules/uniqueHandle.js.map +1 -0
- package/dist/forms/engine/rules/utils.d.ts +3 -0
- package/dist/forms/engine/rules/utils.d.ts.map +1 -0
- package/dist/forms/engine/rules/utils.js +21 -0
- package/dist/forms/engine/rules/utils.js.map +1 -0
- package/dist/forms/fields/CalculationsField.d.ts +24 -0
- package/dist/forms/fields/CalculationsField.d.ts.map +1 -0
- package/dist/forms/fields/CalculationsField.js +215 -0
- package/dist/forms/fields/CalculationsField.js.map +1 -0
- package/dist/forms/fields/CalculationsToolbar.d.ts +17 -0
- package/dist/forms/fields/CalculationsToolbar.d.ts.map +1 -0
- package/dist/forms/fields/CalculationsToolbar.js +130 -0
- package/dist/forms/fields/CalculationsToolbar.js.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts +19 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.js +30 -0
- package/dist/forms/fields/CheckboxSelectField.js.map +1 -0
- package/dist/forms/fields/ColorField.d.ts +15 -0
- package/dist/forms/fields/ColorField.d.ts.map +1 -0
- package/dist/forms/fields/ColorField.js +30 -0
- package/dist/forms/fields/ColorField.js.map +1 -0
- package/dist/forms/fields/ComboboxField.d.ts +23 -0
- package/dist/forms/fields/ComboboxField.d.ts.map +1 -0
- package/dist/forms/fields/ComboboxField.js +38 -0
- package/dist/forms/fields/ComboboxField.js.map +1 -0
- package/dist/forms/fields/DateTimeField.d.ts +14 -0
- package/dist/forms/fields/DateTimeField.d.ts.map +1 -0
- package/dist/forms/fields/DateTimeField.js +53 -0
- package/dist/forms/fields/DateTimeField.js.map +1 -0
- package/dist/forms/fields/EditableTableField.d.ts +22 -0
- package/dist/forms/fields/EditableTableField.d.ts.map +1 -0
- package/dist/forms/fields/EditableTableField.js +37 -0
- package/dist/forms/fields/EditableTableField.js.map +1 -0
- package/dist/forms/fields/ElementSelectField.d.ts +20 -0
- package/dist/forms/fields/ElementSelectField.d.ts.map +1 -0
- package/dist/forms/fields/ElementSelectField.js +215 -0
- package/dist/forms/fields/ElementSelectField.js.map +1 -0
- package/dist/forms/fields/GroupField.d.ts +19 -0
- package/dist/forms/fields/GroupField.d.ts.map +1 -0
- package/dist/forms/fields/GroupField.js +50 -0
- package/dist/forms/fields/GroupField.js.map +1 -0
- package/dist/forms/fields/HandleField.d.ts +20 -0
- package/dist/forms/fields/HandleField.d.ts.map +1 -0
- package/dist/forms/fields/HandleField.js +70 -0
- package/dist/forms/fields/HandleField.js.map +1 -0
- package/dist/forms/fields/LightswitchField.d.ts +14 -0
- package/dist/forms/fields/LightswitchField.d.ts.map +1 -0
- package/dist/forms/fields/LightswitchField.js +29 -0
- package/dist/forms/fields/LightswitchField.js.map +1 -0
- package/dist/forms/fields/ListField.d.ts +17 -0
- package/dist/forms/fields/ListField.d.ts.map +1 -0
- package/dist/forms/fields/ListField.js +51 -0
- package/dist/forms/fields/ListField.js.map +1 -0
- package/dist/forms/fields/NumberField.d.ts +17 -0
- package/dist/forms/fields/NumberField.d.ts.map +1 -0
- package/dist/forms/fields/NumberField.js +33 -0
- package/dist/forms/fields/NumberField.js.map +1 -0
- package/dist/forms/fields/RadioGroupField.d.ts +25 -0
- package/dist/forms/fields/RadioGroupField.d.ts.map +1 -0
- package/dist/forms/fields/RadioGroupField.js +102 -0
- package/dist/forms/fields/RadioGroupField.js.map +1 -0
- package/dist/forms/fields/RichTextField.d.ts +23 -0
- package/dist/forms/fields/RichTextField.d.ts.map +1 -0
- package/dist/forms/fields/RichTextField.js +50 -0
- package/dist/forms/fields/RichTextField.js.map +1 -0
- package/dist/forms/fields/SelectField.d.ts +25 -0
- package/dist/forms/fields/SelectField.d.ts.map +1 -0
- package/dist/forms/fields/SelectField.js +73 -0
- package/dist/forms/fields/SelectField.js.map +1 -0
- package/dist/forms/fields/StaticTableField.d.ts +34 -0
- package/dist/forms/fields/StaticTableField.d.ts.map +1 -0
- package/dist/forms/fields/StaticTableField.js +128 -0
- package/dist/forms/fields/StaticTableField.js.map +1 -0
- package/dist/forms/fields/TextField.d.ts +16 -0
- package/dist/forms/fields/TextField.d.ts.map +1 -0
- package/dist/forms/fields/TextField.js +31 -0
- package/dist/forms/fields/TextField.js.map +1 -0
- package/dist/forms/fields/TextareaField.d.ts +17 -0
- package/dist/forms/fields/TextareaField.d.ts.map +1 -0
- package/dist/forms/fields/TextareaField.js +32 -0
- package/dist/forms/fields/TextareaField.js.map +1 -0
- package/dist/forms/fields/VariablePickerField.d.ts +21 -0
- package/dist/forms/fields/VariablePickerField.d.ts.map +1 -0
- package/dist/forms/fields/VariablePickerField.js +49 -0
- package/dist/forms/fields/VariablePickerField.js.map +1 -0
- package/dist/forms/index.d.ts +8 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +10 -0
- package/dist/forms/registry.d.ts +8 -0
- package/dist/forms/registry.d.ts.map +1 -0
- package/dist/forms/registry.js +76 -0
- package/dist/forms/registry.js.map +1 -0
- package/dist/forms/store/element-store.d.ts +11 -0
- package/dist/forms/store/element-store.d.ts.map +1 -0
- package/dist/forms/store/element-store.js +41 -0
- package/dist/forms/store/element-store.js.map +1 -0
- package/dist/forms/useEditableTableFieldBinding.d.ts +13 -0
- package/dist/forms/useEditableTableFieldBinding.d.ts.map +1 -0
- package/dist/forms/useEditableTableFieldBinding.js +91 -0
- package/dist/forms/useEditableTableFieldBinding.js.map +1 -0
- package/dist/forms/useEngineField.d.ts +9 -0
- package/dist/forms/useEngineField.d.ts.map +1 -0
- package/dist/forms/useEngineField.js +32 -0
- package/dist/forms/useEngineField.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +14 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +67 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/hooks/useTranslation.d.ts +3 -0
- package/dist/hooks/useTranslation.d.ts.map +1 -0
- package/dist/hooks/useTranslation.js +12 -0
- package/dist/hooks/useTranslation.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
- package/dist/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/classCallCheck.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/createClass.js +21 -0
- package/dist/node_modules/@babel/runtime/helpers/createClass.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
- package/dist/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
- package/dist/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js +21 -0
- package/dist/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
- package/dist/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js +18 -0
- package/dist/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/typeof.js +18 -0
- package/dist/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
- package/dist/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
- package/dist/node_modules/jexl/dist/Expression.js +84 -0
- package/dist/node_modules/jexl/dist/Expression.js.map +1 -0
- package/dist/node_modules/jexl/dist/Jexl.js +165 -0
- package/dist/node_modules/jexl/dist/Jexl.js.map +1 -0
- package/dist/node_modules/jexl/dist/Lexer.js +152 -0
- package/dist/node_modules/jexl/dist/Lexer.js.map +1 -0
- package/dist/node_modules/jexl/dist/PromiseSync.js +87 -0
- package/dist/node_modules/jexl/dist/PromiseSync.js.map +1 -0
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js +98 -0
- package/dist/node_modules/jexl/dist/evaluator/Evaluator.js.map +1 -0
- package/dist/node_modules/jexl/dist/evaluator/handlers.js +162 -0
- package/dist/node_modules/jexl/dist/evaluator/handlers.js.map +1 -0
- package/dist/node_modules/jexl/dist/grammar.js +195 -0
- package/dist/node_modules/jexl/dist/grammar.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/Parser.js +135 -0
- package/dist/node_modules/jexl/dist/parser/Parser.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/handlers.js +205 -0
- package/dist/node_modules/jexl/dist/parser/handlers.js.map +1 -0
- package/dist/node_modules/jexl/dist/parser/states.js +158 -0
- package/dist/node_modules/jexl/dist/parser/states.js.map +1 -0
- package/dist/types/global.d.d.ts +1 -0
- package/dist/types/global.d.js +0 -0
- package/dist/utils/classes.d.ts +18 -0
- package/dist/utils/classes.d.ts.map +1 -0
- package/dist/utils/classes.js +25 -0
- package/dist/utils/classes.js.map +1 -0
- package/dist/utils/config.d.ts +14 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +16 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/craftHostBridge.d.ts +16 -0
- package/dist/utils/craftHostBridge.d.ts.map +1 -0
- package/dist/utils/craftHostBridge.js +28 -0
- package/dist/utils/craftHostBridge.js.map +1 -0
- package/dist/utils/handle.d.ts +10 -0
- package/dist/utils/handle.d.ts.map +1 -0
- package/dist/utils/handle.js +51 -0
- package/dist/utils/handle.js.map +1 -0
- package/dist/utils/hostBridge.d.ts +40 -0
- package/dist/utils/hostBridge.d.ts.map +1 -0
- package/dist/utils/hostBridge.js +35 -0
- package/dist/utils/hostBridge.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +66 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/portal.d.ts +17 -0
- package/dist/utils/portal.d.ts.map +1 -0
- package/dist/utils/portal.js +51 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils/schema.d.ts +17 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +56 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/schemaFieldNames.d.ts +2 -0
- package/dist/utils/schemaFieldNames.d.ts.map +1 -0
- package/dist/utils/schemaFieldNames.js +16 -0
- package/dist/utils/schemaFieldNames.js.map +1 -0
- package/dist/utils/schemaIndex.d.ts +6 -0
- package/dist/utils/schemaIndex.d.ts.map +1 -0
- package/dist/utils/schemaIndex.js +31 -0
- package/dist/utils/schemaIndex.js.map +1 -0
- package/dist/utils/schemaIndexCache.d.ts +6 -0
- package/dist/utils/schemaIndexCache.d.ts.map +1 -0
- package/dist/utils/schemaIndexCache.js +32 -0
- package/dist/utils/schemaIndexCache.js.map +1 -0
- package/dist/utils/schemaNormalize.d.ts +13 -0
- package/dist/utils/schemaNormalize.d.ts.map +1 -0
- package/dist/utils/schemaNormalize.js +17 -0
- package/dist/utils/schemaNormalize.js.map +1 -0
- package/dist/utils/store.d.ts +7 -0
- package/dist/utils/store.d.ts.map +1 -0
- package/dist/utils/store.js +6 -0
- package/dist/utils/store.js.map +1 -0
- package/dist/utils/timeOptions.d.ts +6 -0
- package/dist/utils/timeOptions.d.ts.map +1 -0
- package/dist/utils/timeOptions.js +42 -0
- package/dist/utils/timeOptions.js.map +1 -0
- package/dist/utils/tiptap.d.ts +13 -0
- package/dist/utils/tiptap.d.ts.map +1 -0
- package/dist/utils/tiptap.js +39 -0
- package/dist/utils/tiptap.js.map +1 -0
- package/dist/utils/translation.d.ts +5 -0
- package/dist/utils/translation.d.ts.map +1 -0
- package/dist/utils/translation.js +21 -0
- package/dist/utils/translation.js.map +1 -0
- package/dist/utils/validation.d.ts +4 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +253 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +167 -0
- package/vite-dev.mjs +56 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { cn } from "../../utils/classes.js";
|
|
2
|
+
import "../../utils/index.js";
|
|
3
|
+
import { Checkbox } from "../Checkbox.js";
|
|
4
|
+
import { ComboboxInput } from "../ComboboxInput.js";
|
|
5
|
+
import { ColorInput } from "../ColorInput.js";
|
|
6
|
+
import { DatePicker } from "../DatePicker.js";
|
|
7
|
+
import { useTranslation } from "../../hooks/useTranslation.js";
|
|
8
|
+
import "../../hooks/index.js";
|
|
9
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuTrigger } from "../DropdownMenu.js";
|
|
10
|
+
import { VariableCommandList } from "../tiptap/VariableCommandList.js";
|
|
11
|
+
import { useVariablePicker } from "../tiptap/useVariablePicker.js";
|
|
12
|
+
import { Input } from "../Input.js";
|
|
13
|
+
import { Lightswitch } from "../Lightswitch.js";
|
|
14
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../Popover.js";
|
|
15
|
+
import { SelectInput } from "../SelectInput.js";
|
|
16
|
+
import { Textarea } from "../Textarea.js";
|
|
17
|
+
import { TimePicker } from "../TimePicker.js";
|
|
18
|
+
import "../index.js";
|
|
19
|
+
import { Button } from "../Button.js";
|
|
20
|
+
import { useMemo, useState } from "react";
|
|
21
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
23
|
+
import { faChevronDown, faEllipsis } from "@fortawesome/pro-solid-svg-icons";
|
|
24
|
+
//#region src/components/editable-table/TableCell.tsx
|
|
25
|
+
function VariablePickerCell({ finalColumn, value, updateValue, isInvalid }) {
|
|
26
|
+
const t = useTranslation();
|
|
27
|
+
const [open, setOpen] = useState(false);
|
|
28
|
+
const picker = useVariablePicker({
|
|
29
|
+
variableCategories: finalColumn.variableCategories || {},
|
|
30
|
+
variableCategoryLabels: finalColumn.variableCategoryLabels || {},
|
|
31
|
+
variableCategoryOrder: finalColumn.variableCategoryOrder || [],
|
|
32
|
+
isOpen: open,
|
|
33
|
+
onApply: (_baseVariable, variable) => {
|
|
34
|
+
updateValue(String(variable?.value || ""));
|
|
35
|
+
setOpen(false);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const noneOptionLabel = finalColumn.noneOptionLabel || t("Select an option");
|
|
39
|
+
const selectedLabel = useMemo(() => {
|
|
40
|
+
const targetValue = String(value || "");
|
|
41
|
+
if (!targetValue) return noneOptionLabel;
|
|
42
|
+
let label = "";
|
|
43
|
+
const visit = (items = []) => {
|
|
44
|
+
items.forEach((item) => {
|
|
45
|
+
if (label || !item || typeof item !== "object") return;
|
|
46
|
+
if (String(item.value || "") === targetValue) {
|
|
47
|
+
label = item.label || targetValue;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (Array.isArray(item.children)) visit(item.children);
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
Object.values(finalColumn.variableCategories || {}).forEach((items) => {
|
|
54
|
+
if (Array.isArray(items)) visit(items);
|
|
55
|
+
});
|
|
56
|
+
return label || targetValue;
|
|
57
|
+
}, [
|
|
58
|
+
finalColumn.variableCategories,
|
|
59
|
+
noneOptionLabel,
|
|
60
|
+
value
|
|
61
|
+
]);
|
|
62
|
+
const pickerGroups = useMemo(() => {
|
|
63
|
+
const groups = Array.isArray(picker.groups) ? picker.groups : [];
|
|
64
|
+
const groupedByPage = [];
|
|
65
|
+
groups.forEach((group) => {
|
|
66
|
+
if (group?.value !== "fieldsVariables" || !Array.isArray(group.items)) {
|
|
67
|
+
groupedByPage.push(group);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const pageBuckets = /* @__PURE__ */ new Map();
|
|
71
|
+
group.items.forEach((item) => {
|
|
72
|
+
const pageLabel = String(item?.pageLabel || "").trim() || t("Fields");
|
|
73
|
+
if (!pageBuckets.has(pageLabel)) pageBuckets.set(pageLabel, []);
|
|
74
|
+
const bucket = pageBuckets.get(pageLabel);
|
|
75
|
+
if (bucket) bucket.push(item);
|
|
76
|
+
});
|
|
77
|
+
pageBuckets.forEach((items, pageLabel) => {
|
|
78
|
+
groupedByPage.push({
|
|
79
|
+
label: pageLabel,
|
|
80
|
+
value: `fieldsVariables:${pageLabel}`,
|
|
81
|
+
items
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
if (picker.page) return groupedByPage;
|
|
86
|
+
return [{
|
|
87
|
+
label: "",
|
|
88
|
+
value: "none",
|
|
89
|
+
items: [{
|
|
90
|
+
label: noneOptionLabel,
|
|
91
|
+
value: "__none__"
|
|
92
|
+
}]
|
|
93
|
+
}, ...groupedByPage];
|
|
94
|
+
}, [
|
|
95
|
+
noneOptionLabel,
|
|
96
|
+
picker.groups,
|
|
97
|
+
picker.page,
|
|
98
|
+
t
|
|
99
|
+
]);
|
|
100
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
101
|
+
className: "flex items-center gap-1 px-2",
|
|
102
|
+
children: [/* @__PURE__ */ jsxs(Popover, {
|
|
103
|
+
modal: false,
|
|
104
|
+
open,
|
|
105
|
+
onOpenChange: setOpen,
|
|
106
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
107
|
+
nativeButton: true,
|
|
108
|
+
render: /* @__PURE__ */ jsxs(Button, {
|
|
109
|
+
size: "sm",
|
|
110
|
+
variant: "default",
|
|
111
|
+
className: cn("min-w-0 flex-1 py-[6px] justify-between", isInvalid && "border-error", finalColumn.className),
|
|
112
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
113
|
+
className: "truncate flex-1 text-left",
|
|
114
|
+
children: selectedLabel
|
|
115
|
+
}), /* @__PURE__ */ jsx(FontAwesomeIcon, {
|
|
116
|
+
icon: faChevronDown,
|
|
117
|
+
className: "size-2.5 pointer-events-none ml-2 shrink-0"
|
|
118
|
+
})]
|
|
119
|
+
})
|
|
120
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
121
|
+
align: "start",
|
|
122
|
+
side: "bottom",
|
|
123
|
+
sideOffset: 6,
|
|
124
|
+
positionMethod: "fixed",
|
|
125
|
+
collisionAvoidance: {
|
|
126
|
+
side: "flip",
|
|
127
|
+
align: "shift",
|
|
128
|
+
fallbackAxisSide: "none"
|
|
129
|
+
},
|
|
130
|
+
className: finalColumn.contentClassName || "min-w-[360px] max-w-[480px] p-0 overflow-hidden flex flex-col",
|
|
131
|
+
portalClassName: "z-250",
|
|
132
|
+
children: /* @__PURE__ */ jsx(VariableCommandList, {
|
|
133
|
+
search: picker.search,
|
|
134
|
+
onSearchChange: picker.setSearch,
|
|
135
|
+
groups: pickerGroups,
|
|
136
|
+
options: picker.options,
|
|
137
|
+
onSelect: (item, baseVariable) => {
|
|
138
|
+
if (item?.value === "__none__") {
|
|
139
|
+
updateValue("");
|
|
140
|
+
setOpen(false);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
picker.handleSelect(item, baseVariable);
|
|
144
|
+
},
|
|
145
|
+
placeholder: t("Search values"),
|
|
146
|
+
showSearch: true,
|
|
147
|
+
shouldFilter: false,
|
|
148
|
+
onBack: picker.page ? picker.handleBack : void 0,
|
|
149
|
+
isChildMode: !!picker.page,
|
|
150
|
+
selectFirstItem: true,
|
|
151
|
+
autoFocusSearchInput: true
|
|
152
|
+
})
|
|
153
|
+
})]
|
|
154
|
+
}), finalColumn.showActionsMenu !== false && /* @__PURE__ */ jsxs(DropdownMenu, {
|
|
155
|
+
size: "sm",
|
|
156
|
+
children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, { render: /* @__PURE__ */ jsx(Button, {
|
|
157
|
+
className: "rounded-none w-7 h-7 -mr-1",
|
|
158
|
+
variant: "none",
|
|
159
|
+
"aria-label": t("More actions"),
|
|
160
|
+
size: "xs",
|
|
161
|
+
children: /* @__PURE__ */ jsx(FontAwesomeIcon, {
|
|
162
|
+
icon: faEllipsis,
|
|
163
|
+
className: "size-3"
|
|
164
|
+
})
|
|
165
|
+
}) }), /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
166
|
+
align: "end",
|
|
167
|
+
sideOffset: 8,
|
|
168
|
+
children: /* @__PURE__ */ jsx(DropdownMenuGroup, { children: /* @__PURE__ */ jsx(DropdownMenuItem, {
|
|
169
|
+
onClick: () => {
|
|
170
|
+
updateValue("");
|
|
171
|
+
},
|
|
172
|
+
children: noneOptionLabel
|
|
173
|
+
}) })
|
|
174
|
+
})]
|
|
175
|
+
})]
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function TableCell({ column, value, row, rowIndex, modifyColumn, getCellErrors, onUpdateCell }) {
|
|
179
|
+
const updateValue = (newValue) => {
|
|
180
|
+
onUpdateCell(rowIndex, row, column, newValue);
|
|
181
|
+
};
|
|
182
|
+
const columnModifications = modifyColumn ? modifyColumn(row, column.name) : null;
|
|
183
|
+
const finalColumn = columnModifications ? {
|
|
184
|
+
...column,
|
|
185
|
+
...columnModifications
|
|
186
|
+
} : column;
|
|
187
|
+
const cellErrorList = getCellErrors(rowIndex, finalColumn.name);
|
|
188
|
+
const isInvalid = cellErrorList.length > 0;
|
|
189
|
+
const { renderCell } = finalColumn;
|
|
190
|
+
if (typeof renderCell === "function") return renderCell({
|
|
191
|
+
column: finalColumn,
|
|
192
|
+
value,
|
|
193
|
+
row,
|
|
194
|
+
rowIndex,
|
|
195
|
+
isInvalid,
|
|
196
|
+
updateValue,
|
|
197
|
+
cellErrors: cellErrorList
|
|
198
|
+
});
|
|
199
|
+
switch (finalColumn.type) {
|
|
200
|
+
case "select": return /* @__PURE__ */ jsx("div", {
|
|
201
|
+
className: "min-w-0 px-2",
|
|
202
|
+
children: /* @__PURE__ */ jsx(SelectInput, {
|
|
203
|
+
size: "xs",
|
|
204
|
+
options: finalColumn.options,
|
|
205
|
+
placeholder: finalColumn.placeholder,
|
|
206
|
+
onChange: updateValue,
|
|
207
|
+
value: value || "",
|
|
208
|
+
triggerClassName: cn("w-full max-w-full", isInvalid && "border-error"),
|
|
209
|
+
"data-editable-table-input": "true"
|
|
210
|
+
})
|
|
211
|
+
});
|
|
212
|
+
case "combobox": return /* @__PURE__ */ jsx("div", {
|
|
213
|
+
className: "px-2",
|
|
214
|
+
children: /* @__PURE__ */ jsx(ComboboxInput, {
|
|
215
|
+
options: finalColumn.options,
|
|
216
|
+
placeholder: finalColumn.placeholder,
|
|
217
|
+
value: value || null,
|
|
218
|
+
onValueChange: (nextValue) => {
|
|
219
|
+
return updateValue(nextValue ?? "");
|
|
220
|
+
},
|
|
221
|
+
className: cn(isInvalid && "border-error", finalColumn.className),
|
|
222
|
+
contentClassName: finalColumn.contentClassName
|
|
223
|
+
})
|
|
224
|
+
});
|
|
225
|
+
case "variablePicker": return /* @__PURE__ */ jsx(VariablePickerCell, {
|
|
226
|
+
finalColumn,
|
|
227
|
+
value,
|
|
228
|
+
updateValue,
|
|
229
|
+
isInvalid
|
|
230
|
+
});
|
|
231
|
+
case "textarea": return /* @__PURE__ */ jsx(Textarea, {
|
|
232
|
+
value: value || "",
|
|
233
|
+
"data-editable-table-input": "true",
|
|
234
|
+
onChange: (e) => {
|
|
235
|
+
return updateValue(e.target.value);
|
|
236
|
+
},
|
|
237
|
+
"aria-invalid": isInvalid,
|
|
238
|
+
className: cn([
|
|
239
|
+
"h-full w-full min-h-auto",
|
|
240
|
+
"border-none",
|
|
241
|
+
"rounded-none",
|
|
242
|
+
"bg-transparent",
|
|
243
|
+
"focus-visible:shadow-none",
|
|
244
|
+
"focus-visible:inset-ring-1",
|
|
245
|
+
"focus-visible:inset-ring-gray-200",
|
|
246
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
247
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
248
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
249
|
+
]),
|
|
250
|
+
rows: 1,
|
|
251
|
+
placeholder: finalColumn.placeholder
|
|
252
|
+
});
|
|
253
|
+
case "checkbox": return /* @__PURE__ */ jsx("div", {
|
|
254
|
+
className: "flex items-center justify-center px-2",
|
|
255
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
256
|
+
checked: Boolean(value),
|
|
257
|
+
onCheckedChange: (checked) => {
|
|
258
|
+
return updateValue(Boolean(checked));
|
|
259
|
+
},
|
|
260
|
+
"aria-invalid": isInvalid
|
|
261
|
+
})
|
|
262
|
+
});
|
|
263
|
+
case "radio": return /* @__PURE__ */ jsx("div", {
|
|
264
|
+
className: "flex items-center justify-center px-2",
|
|
265
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
266
|
+
checked: Boolean(value),
|
|
267
|
+
onCheckedChange: (checked) => {
|
|
268
|
+
return updateValue(Boolean(checked));
|
|
269
|
+
},
|
|
270
|
+
"aria-invalid": isInvalid
|
|
271
|
+
})
|
|
272
|
+
});
|
|
273
|
+
case "lightswitch": return /* @__PURE__ */ jsx("div", {
|
|
274
|
+
className: "flex items-center justify-center px-2",
|
|
275
|
+
children: /* @__PURE__ */ jsx(Lightswitch, {
|
|
276
|
+
checked: Boolean(value),
|
|
277
|
+
size: "sm",
|
|
278
|
+
onCheckedChange: (checked) => {
|
|
279
|
+
return updateValue(Boolean(checked));
|
|
280
|
+
},
|
|
281
|
+
"aria-invalid": isInvalid
|
|
282
|
+
})
|
|
283
|
+
});
|
|
284
|
+
case "label": return /* @__PURE__ */ jsx("div", {
|
|
285
|
+
className: "px-2 py-2 text-sm",
|
|
286
|
+
children: value || ""
|
|
287
|
+
});
|
|
288
|
+
case "heading": return /* @__PURE__ */ jsx("div", {
|
|
289
|
+
className: "px-2 py-2 text-sm font-semibold text-gray-800",
|
|
290
|
+
children: value || ""
|
|
291
|
+
});
|
|
292
|
+
case "handle":
|
|
293
|
+
case "value": return /* @__PURE__ */ jsx(Input, {
|
|
294
|
+
type: "text",
|
|
295
|
+
value: value ?? "",
|
|
296
|
+
"data-editable-table-input": "true",
|
|
297
|
+
onChange: (e) => {
|
|
298
|
+
return updateValue(e.target.value);
|
|
299
|
+
},
|
|
300
|
+
"aria-invalid": isInvalid,
|
|
301
|
+
className: cn([
|
|
302
|
+
"h-full w-full",
|
|
303
|
+
"relative",
|
|
304
|
+
"border-none",
|
|
305
|
+
"rounded-none",
|
|
306
|
+
"bg-transparent",
|
|
307
|
+
"font-mono text-[0.9em]",
|
|
308
|
+
"focus-visible:shadow-none",
|
|
309
|
+
"focus-visible:inset-ring-1",
|
|
310
|
+
"focus-visible:inset-ring-gray-200",
|
|
311
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
312
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
313
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
314
|
+
]),
|
|
315
|
+
placeholder: finalColumn.placeholder
|
|
316
|
+
});
|
|
317
|
+
case "color": return /* @__PURE__ */ jsx(ColorInput, {
|
|
318
|
+
value: value || "",
|
|
319
|
+
size: "sm",
|
|
320
|
+
onValueChange: (nextValue) => {
|
|
321
|
+
return updateValue(nextValue);
|
|
322
|
+
},
|
|
323
|
+
isInvalid,
|
|
324
|
+
fitCell: true,
|
|
325
|
+
className: cn([
|
|
326
|
+
"h-full w-full",
|
|
327
|
+
"relative",
|
|
328
|
+
"border-none",
|
|
329
|
+
"rounded-none",
|
|
330
|
+
"bg-transparent",
|
|
331
|
+
"focus-visible:shadow-none",
|
|
332
|
+
"focus-visible:inset-ring-1",
|
|
333
|
+
"focus-visible:inset-ring-gray-200",
|
|
334
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
335
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
336
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
337
|
+
]),
|
|
338
|
+
"data-editable-table-input": "true"
|
|
339
|
+
});
|
|
340
|
+
case "date": return /* @__PURE__ */ jsx(DatePicker, {
|
|
341
|
+
value: value || null,
|
|
342
|
+
onValueChange: (nextDate) => {
|
|
343
|
+
if (!nextDate) {
|
|
344
|
+
updateValue("");
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
const isoDate = nextDate.toISOString().split("T")[0];
|
|
348
|
+
updateValue(isoDate);
|
|
349
|
+
},
|
|
350
|
+
placeholder: finalColumn.placeholder,
|
|
351
|
+
className: cn([
|
|
352
|
+
"h-full w-full",
|
|
353
|
+
"relative",
|
|
354
|
+
"border-none",
|
|
355
|
+
"rounded-none",
|
|
356
|
+
"bg-transparent",
|
|
357
|
+
"focus-visible:shadow-none",
|
|
358
|
+
"focus-visible:inset-ring-1",
|
|
359
|
+
"focus-visible:inset-ring-gray-200",
|
|
360
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
361
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
362
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
363
|
+
]),
|
|
364
|
+
isInvalid
|
|
365
|
+
});
|
|
366
|
+
case "time": return /* @__PURE__ */ jsx(TimePicker, {
|
|
367
|
+
value: value || "",
|
|
368
|
+
onValueChange: (nextValue) => {
|
|
369
|
+
return updateValue(nextValue || "");
|
|
370
|
+
},
|
|
371
|
+
placeholder: finalColumn.placeholder,
|
|
372
|
+
className: cn([
|
|
373
|
+
"h-full w-full",
|
|
374
|
+
"relative",
|
|
375
|
+
"border-none",
|
|
376
|
+
"rounded-none",
|
|
377
|
+
"bg-transparent",
|
|
378
|
+
"focus-visible:shadow-none",
|
|
379
|
+
"focus-visible:inset-ring-1",
|
|
380
|
+
"focus-visible:inset-ring-gray-200",
|
|
381
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
382
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
383
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
384
|
+
]),
|
|
385
|
+
isInvalid
|
|
386
|
+
});
|
|
387
|
+
default: return /* @__PURE__ */ jsx(Input, {
|
|
388
|
+
type: finalColumn.type || "text",
|
|
389
|
+
value: value || "",
|
|
390
|
+
"data-editable-table-input": "true",
|
|
391
|
+
onChange: (e) => {
|
|
392
|
+
return updateValue(e.target.value);
|
|
393
|
+
},
|
|
394
|
+
"aria-invalid": isInvalid,
|
|
395
|
+
className: cn([
|
|
396
|
+
"h-full w-full",
|
|
397
|
+
"relative",
|
|
398
|
+
"border-none",
|
|
399
|
+
"rounded-none",
|
|
400
|
+
"bg-transparent",
|
|
401
|
+
"focus-visible:shadow-none",
|
|
402
|
+
"focus-visible:inset-ring-1",
|
|
403
|
+
"focus-visible:inset-ring-gray-200",
|
|
404
|
+
"aria-invalid:focus-visible:shadow-none!",
|
|
405
|
+
"aria-invalid:focus-visible:inset-ring-rose-600!",
|
|
406
|
+
isInvalid && "inset-ring-1 inset-ring-rose-600"
|
|
407
|
+
]),
|
|
408
|
+
placeholder: finalColumn.placeholder
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
//#endregion
|
|
413
|
+
export { TableCell };
|
|
414
|
+
|
|
415
|
+
//# sourceMappingURL=TableCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableCell.js","names":[],"sources":["../../../src/components/editable-table/TableCell.tsx"],"sourcesContent":["import {\n Input,\n Textarea,\n SelectInput,\n ComboboxInput,\n Button,\n Popover,\n PopoverTrigger,\n PopoverContent,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n Checkbox,\n Lightswitch,\n ColorInput,\n DatePicker,\n TimePicker,\n} from '@verbb/plugin-kit-react/components';\nimport type { ComponentProps } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useVariablePicker } from '@verbb/plugin-kit-react/components/tiptap/useVariablePicker';\nimport type { VariableGroup } from '@verbb/plugin-kit-react/components/tiptap/VariableCommandList';\nimport { VariableCommandList } from '@verbb/plugin-kit-react/components/tiptap/VariableCommandList';\nimport type { VariableOption } from '@verbb/plugin-kit-react/components/tiptap/VariableDropdown';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronDown, faEllipsis } from '@fortawesome/pro-solid-svg-icons';\nimport { cn } from '@verbb/plugin-kit-react/utils';\nimport { useTranslation } from '@verbb/plugin-kit-react/hooks';\nimport type {\n EditableTableColumn,\n EditableTableModifyColumn,\n EditableTableRow,\n} from './types';\n\ntype Props = {\n column: EditableTableColumn;\n value: unknown;\n row: EditableTableRow;\n rowIndex: number;\n modifyColumn?: EditableTableModifyColumn | null;\n getCellErrors: (rowIndex: number, columnName: string) => unknown[];\n onUpdateCell: (rowIndex: number, row: EditableTableRow, column: EditableTableColumn, newValue: unknown) => void;\n};\n\nfunction VariablePickerCell({\n finalColumn,\n value,\n updateValue,\n isInvalid,\n}: {\n finalColumn: EditableTableColumn;\n value: unknown;\n updateValue: (newValue: unknown) => void;\n isInvalid: boolean;\n}) {\n const t = useTranslation();\n const [open, setOpen] = useState(false);\n const picker = useVariablePicker({\n variableCategories: finalColumn.variableCategories || {},\n variableCategoryLabels: finalColumn.variableCategoryLabels || {},\n variableCategoryOrder: finalColumn.variableCategoryOrder || [],\n isOpen: open,\n onApply: (_baseVariable, variable) => {\n updateValue(String(variable?.value || ''));\n setOpen(false);\n },\n });\n\n const noneOptionLabel = finalColumn.noneOptionLabel || t('Select an option');\n\n const selectedLabel = useMemo(() => {\n const targetValue = String(value || '');\n if (!targetValue) {\n return noneOptionLabel;\n }\n\n let label = '';\n\n const visit = (items: VariableOption[] = []) => {\n items.forEach((item) => {\n if (label || !item || typeof item !== 'object') {\n return;\n }\n\n if (String(item.value || '') === targetValue) {\n label = item.label || targetValue;\n return;\n }\n\n if (Array.isArray(item.children)) {\n visit(item.children);\n }\n });\n };\n\n Object.values(finalColumn.variableCategories || {}).forEach((items) => {\n if (Array.isArray(items)) {\n visit(items);\n }\n });\n\n return label || targetValue;\n }, [finalColumn.variableCategories, noneOptionLabel, value]);\n\n const pickerGroups = useMemo(() => {\n const groups: VariableGroup[] = Array.isArray(picker.groups) ? picker.groups : [];\n const groupedByPage: VariableGroup[] = [];\n\n groups.forEach((group) => {\n if (group?.value !== 'fieldsVariables' || !Array.isArray(group.items)) {\n groupedByPage.push(group);\n return;\n }\n\n const pageBuckets = new Map<string, VariableOption[]>();\n group.items.forEach((item) => {\n const pageLabel = String(item?.pageLabel || '').trim() || t('Fields');\n if (!pageBuckets.has(pageLabel)) {\n pageBuckets.set(pageLabel, []);\n }\n const bucket = pageBuckets.get(pageLabel);\n if (bucket) {\n bucket.push(item);\n }\n });\n\n pageBuckets.forEach((items, pageLabel) => {\n groupedByPage.push({\n label: pageLabel,\n value: `fieldsVariables:${pageLabel}`,\n items,\n });\n });\n });\n\n if (picker.page) {\n return groupedByPage;\n }\n\n return [{\n label: '',\n value: 'none',\n items: [{ label: noneOptionLabel, value: '__none__' }],\n }, ...groupedByPage];\n }, [noneOptionLabel, picker.groups, picker.page, t]);\n\n return (\n <div className=\"flex items-center gap-1 px-2\">\n <Popover modal={false} open={open} onOpenChange={setOpen}>\n <PopoverTrigger\n nativeButton={true}\n render={(\n <Button\n size=\"sm\"\n variant=\"default\"\n className={cn(\n 'min-w-0 flex-1 py-[6px] justify-between',\n isInvalid && 'border-error',\n finalColumn.className,\n )}\n >\n <span className=\"truncate flex-1 text-left\">{selectedLabel}</span>\n <FontAwesomeIcon icon={faChevronDown} className=\"size-2.5 pointer-events-none ml-2 shrink-0\" />\n </Button>\n )}\n />\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={6}\n positionMethod=\"fixed\"\n collisionAvoidance={{\n side: 'flip',\n align: 'shift',\n fallbackAxisSide: 'none',\n }}\n className={finalColumn.contentClassName || 'min-w-[360px] max-w-[480px] p-0 overflow-hidden flex flex-col'}\n portalClassName=\"z-250\"\n >\n <VariableCommandList\n search={picker.search}\n onSearchChange={picker.setSearch}\n groups={pickerGroups}\n options={picker.options}\n onSelect={(item, baseVariable) => {\n if (item?.value === '__none__') {\n updateValue('');\n setOpen(false);\n return;\n }\n\n picker.handleSelect(item, baseVariable);\n }}\n placeholder={t('Search values')}\n showSearch\n shouldFilter={false}\n onBack={picker.page ? picker.handleBack : undefined}\n isChildMode={!!picker.page}\n selectFirstItem\n autoFocusSearchInput={true}\n />\n </PopoverContent>\n </Popover>\n\n {finalColumn.showActionsMenu !== false && (\n <DropdownMenu size=\"sm\">\n <DropdownMenuTrigger\n render={(\n <Button className=\"rounded-none w-7 h-7 -mr-1\" variant=\"none\" aria-label={t('More actions')} size=\"xs\">\n <FontAwesomeIcon icon={faEllipsis} className=\"size-3\" />\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" sideOffset={8}>\n <DropdownMenuGroup>\n <DropdownMenuItem onClick={() => { updateValue(''); }}>\n {noneOptionLabel}\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n );\n}\n\nexport function TableCell({\n column,\n value,\n row,\n rowIndex,\n modifyColumn,\n getCellErrors,\n onUpdateCell,\n}: Props) {\n const updateValue = (newValue: unknown) => {\n onUpdateCell(rowIndex, row, column, newValue);\n };\n\n const columnModifications = modifyColumn ? modifyColumn(row, column.name) : null;\n const finalColumn = columnModifications ? { ...column, ...columnModifications } : column;\n const cellErrorList = getCellErrors(rowIndex, finalColumn.name);\n const isInvalid = cellErrorList.length > 0;\n const { renderCell } = finalColumn;\n\n if (typeof renderCell === 'function') {\n return renderCell({\n column: finalColumn,\n value,\n row,\n rowIndex,\n isInvalid,\n updateValue,\n cellErrors: cellErrorList,\n });\n }\n\n switch (finalColumn.type) {\n case 'select':\n return (\n <div className=\"min-w-0 px-2\">\n <SelectInput\n size=\"xs\"\n options={finalColumn.options as ComponentProps<typeof SelectInput>['options']}\n placeholder={finalColumn.placeholder}\n onChange={updateValue}\n value={value || ''}\n triggerClassName={cn('w-full max-w-full', isInvalid && 'border-error')}\n data-editable-table-input=\"true\"\n />\n </div>\n );\n\n case 'combobox':\n return (\n <div className=\"px-2\">\n <ComboboxInput\n options={finalColumn.options as ComponentProps<typeof ComboboxInput>['options']}\n placeholder={finalColumn.placeholder}\n value={value || null}\n onValueChange={(nextValue) => { return updateValue(nextValue ?? ''); }}\n className={cn(isInvalid && 'border-error', finalColumn.className)}\n contentClassName={finalColumn.contentClassName}\n />\n </div>\n );\n\n case 'variablePicker':\n return (\n <VariablePickerCell\n finalColumn={finalColumn}\n value={value}\n updateValue={updateValue}\n isInvalid={isInvalid}\n />\n );\n\n case 'textarea':\n return (\n <Textarea\n value={value || ''}\n data-editable-table-input=\"true\"\n onChange={(e) => { return updateValue(e.target.value); }}\n aria-invalid={isInvalid}\n className={cn([\n 'h-full w-full min-h-auto',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n rows={1}\n placeholder={finalColumn.placeholder}\n />\n );\n\n case 'checkbox':\n return (\n <div className=\"flex items-center justify-center px-2\">\n <Checkbox\n checked={Boolean(value)}\n onCheckedChange={(checked) => { return updateValue(Boolean(checked)); }}\n aria-invalid={isInvalid}\n />\n </div>\n );\n\n case 'radio':\n return (\n <div className=\"flex items-center justify-center px-2\">\n <Checkbox\n checked={Boolean(value)}\n onCheckedChange={(checked) => { return updateValue(Boolean(checked)); }}\n aria-invalid={isInvalid}\n />\n </div>\n );\n\n case 'lightswitch':\n return (\n <div className=\"flex items-center justify-center px-2\">\n <Lightswitch\n checked={Boolean(value)}\n size=\"sm\"\n onCheckedChange={(checked) => { return updateValue(Boolean(checked)); }}\n aria-invalid={isInvalid}\n />\n </div>\n );\n\n case 'label':\n return <div className=\"px-2 py-2 text-sm\">{value || ''}</div>;\n\n case 'heading':\n return <div className=\"px-2 py-2 text-sm font-semibold text-gray-800\">{value || ''}</div>;\n\n case 'handle':\n case 'value':\n return (\n <Input\n type=\"text\"\n value={value ?? ''}\n data-editable-table-input=\"true\"\n onChange={(e) => { return updateValue(e.target.value); }}\n aria-invalid={isInvalid}\n className={cn([\n 'h-full w-full',\n 'relative',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'font-mono text-[0.9em]',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n placeholder={finalColumn.placeholder}\n />\n );\n\n case 'color':\n return (\n <ColorInput\n value={value || ''}\n size=\"sm\"\n onValueChange={(nextValue) => { return updateValue(nextValue); }}\n isInvalid={isInvalid}\n fitCell\n className={cn([\n 'h-full w-full',\n 'relative',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n data-editable-table-input=\"true\"\n />\n );\n\n case 'date':\n return (\n <DatePicker\n value={value || null}\n onValueChange={(nextDate) => {\n if (!nextDate) {\n updateValue('');\n return;\n }\n\n const isoDate = nextDate.toISOString().split('T')[0];\n updateValue(isoDate);\n }}\n placeholder={finalColumn.placeholder}\n className={cn([\n 'h-full w-full',\n 'relative',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n isInvalid={isInvalid}\n />\n );\n\n case 'time':\n return (\n <TimePicker\n value={value || ''}\n onValueChange={(nextValue) => { return updateValue(nextValue || ''); }}\n placeholder={finalColumn.placeholder}\n className={cn([\n 'h-full w-full',\n 'relative',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n isInvalid={isInvalid}\n />\n );\n\n case 'email':\n case 'number':\n case 'text':\n case 'url':\n default:\n return (\n <Input\n type={finalColumn.type || 'text'}\n value={value || ''}\n data-editable-table-input=\"true\"\n onChange={(e) => { return updateValue(e.target.value); }}\n aria-invalid={isInvalid}\n className={cn([\n 'h-full w-full',\n 'relative',\n 'border-none',\n 'rounded-none',\n 'bg-transparent',\n 'focus-visible:shadow-none',\n 'focus-visible:inset-ring-1',\n 'focus-visible:inset-ring-gray-200',\n 'aria-invalid:focus-visible:shadow-none!',\n 'aria-invalid:focus-visible:inset-ring-rose-600!',\n isInvalid && 'inset-ring-1 inset-ring-rose-600',\n ])}\n placeholder={finalColumn.placeholder}\n />\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/TableRow.jsx"],"names":[],"mappings":"AA4DA,0DAoLG;kBAhPe,OAAO"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { cn } from "../../utils/classes.js";
|
|
2
|
+
import "../../utils/index.js";
|
|
3
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "../DropdownMenu.js";
|
|
4
|
+
import { RowDataCells } from "./RowDataCells.js";
|
|
5
|
+
import { TableCell, TableRow as TableRow$1 } from "../Table.js";
|
|
6
|
+
import "../index.js";
|
|
7
|
+
import { Button } from "../Button.js";
|
|
8
|
+
import React from "react";
|
|
9
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
11
|
+
import { faArrowDown, faArrowUp, faEllipsis, faXmark } from "@fortawesome/pro-solid-svg-icons";
|
|
12
|
+
import { useSortable } from "@dnd-kit/react/sortable";
|
|
13
|
+
import { RestrictToVerticalAxis } from "@dnd-kit/abstract/modifiers";
|
|
14
|
+
import { RestrictToElement } from "@dnd-kit/dom/modifiers";
|
|
15
|
+
//#region src/components/editable-table/TableRow.jsx
|
|
16
|
+
var SortableRow = ({ row, rowIndex, allowReorder, className, children }) => {
|
|
17
|
+
const sortable = useSortable({
|
|
18
|
+
id: row._id,
|
|
19
|
+
index: rowIndex,
|
|
20
|
+
disabled: !allowReorder,
|
|
21
|
+
modifiers: [RestrictToVerticalAxis, RestrictToElement.configure({ element: (operation) => {
|
|
22
|
+
return (operation?.source?.element)?.parentElement ?? null;
|
|
23
|
+
} })]
|
|
24
|
+
});
|
|
25
|
+
return /* @__PURE__ */ jsx(TableRow$1, {
|
|
26
|
+
ref: sortable.ref,
|
|
27
|
+
className: cn(sortable.isDragging && "shadow-lg", className),
|
|
28
|
+
children: children({ handleRef: sortable.handleRef })
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
var PlainRow = ({ className, children }) => {
|
|
32
|
+
return /* @__PURE__ */ jsx(TableRow$1, {
|
|
33
|
+
className,
|
|
34
|
+
children: typeof children === "function" ? children({ handleRef: void 0 }) : children
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var TableRow = React.memo(({ row, rowIndex, rowCount, columns, columnsSignature, useDnd, allowReorder, showReorderControls, allowDelete, modifyColumn, getCellErrors, onUpdateCell, moveRow, removeRow, t, renderRowActions, renderRowMenuItemsBeforeCore, renderRowMenuItemsAfterCore, renderRowMenuItems }) => {
|
|
38
|
+
return /* @__PURE__ */ jsx(useDnd ? SortableRow : PlainRow, {
|
|
39
|
+
row,
|
|
40
|
+
rowIndex,
|
|
41
|
+
allowReorder,
|
|
42
|
+
className: "bg-white",
|
|
43
|
+
children: ({ handleRef }) => {
|
|
44
|
+
const dragHandleRef = useDnd ? handleRef : void 0;
|
|
45
|
+
const legacyBeforeRowMenuItems = renderRowMenuItems?.({
|
|
46
|
+
row,
|
|
47
|
+
rowIndex,
|
|
48
|
+
rowCount
|
|
49
|
+
});
|
|
50
|
+
const customRowMenuItemsBeforeCore = renderRowMenuItemsBeforeCore?.({
|
|
51
|
+
row,
|
|
52
|
+
rowIndex,
|
|
53
|
+
rowCount
|
|
54
|
+
}) ?? legacyBeforeRowMenuItems;
|
|
55
|
+
const customRowMenuItemsAfterCore = renderRowMenuItemsAfterCore?.({
|
|
56
|
+
row,
|
|
57
|
+
rowIndex,
|
|
58
|
+
rowCount
|
|
59
|
+
});
|
|
60
|
+
const hasCustomRowMenuItemsBeforeCore = Boolean(customRowMenuItemsBeforeCore);
|
|
61
|
+
const hasCustomRowMenuItemsAfterCore = Boolean(customRowMenuItemsAfterCore);
|
|
62
|
+
const hasMoveActions = showReorderControls && rowCount > 1;
|
|
63
|
+
const hasMenuActions = hasMoveActions || hasCustomRowMenuItemsBeforeCore || hasCustomRowMenuItemsAfterCore;
|
|
64
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(RowDataCells, {
|
|
65
|
+
row,
|
|
66
|
+
rowIndex,
|
|
67
|
+
columns,
|
|
68
|
+
columnsSignature,
|
|
69
|
+
modifyColumn,
|
|
70
|
+
getCellErrors,
|
|
71
|
+
onUpdateCell
|
|
72
|
+
}), (showReorderControls || allowDelete) && /* @__PURE__ */ jsx(TableCell, {
|
|
73
|
+
className: cn("bg-[#fbfcfe]"),
|
|
74
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
75
|
+
className: "flex items-center px-1",
|
|
76
|
+
children: [
|
|
77
|
+
showReorderControls && /* @__PURE__ */ jsx("span", {
|
|
78
|
+
ref: dragHandleRef,
|
|
79
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
80
|
+
type: "button",
|
|
81
|
+
variant: "none",
|
|
82
|
+
size: "xs",
|
|
83
|
+
disabled: !useDnd,
|
|
84
|
+
className: cn("cursor-move", "p-0 w-[24px] h-[24px]", "text-gray-500", "hover:bg-transparent", "active:bg-transparent", "hover:text-blue-500", !useDnd && "opacity-40 cursor-default"),
|
|
85
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
86
|
+
className: "size-3",
|
|
87
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
88
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
89
|
+
viewBox: "0 0 448 512",
|
|
90
|
+
focusable: "false",
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
93
|
+
fill: "currentColor",
|
|
94
|
+
d: "M71.3 295.6c-21.9-21.9-21.9-57.3 0-79.2s57.3-21.9 79.2 0 21.9 57.3 0 79.2s-57.4 21.9-79.2 0zM184.4 182.5c-21.9-21.9-21.9-57.3 0-79.2s57.3-21.9 79.2 0 21.9 57.3 0 79.2-57.3 21.8-79.2 0zm0 147c21.9-21.9 57.3-21.9 79.2 0s21.9 57.3 0 79.2s-57.3 21.9-79.2 0c-21.9-21.8-21.9-57.3 0-79.2zM297.5 216.4c21.9-21.9 57.3-21.9 79.2 0s21.9 57.3 0 79.2s-57.3 21.9-79.2 0c-21.8-21.9-21.8-57.3 0-79.2z"
|
|
95
|
+
})
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
}),
|
|
100
|
+
showReorderControls && /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
101
|
+
render: /* @__PURE__ */ jsx(Button, {
|
|
102
|
+
type: "button",
|
|
103
|
+
variant: "none",
|
|
104
|
+
size: "xs",
|
|
105
|
+
disabled: !hasMenuActions,
|
|
106
|
+
className: cn("p-0 w-[24px] h-[24px]", "text-gray-500", "hover:bg-transparent", "active:bg-transparent", "hover:text-blue-500", !hasMenuActions && "opacity-40 cursor-not-allowed"),
|
|
107
|
+
"aria-label": t("Row actions")
|
|
108
|
+
}),
|
|
109
|
+
children: /* @__PURE__ */ jsx(FontAwesomeIcon, {
|
|
110
|
+
icon: faEllipsis,
|
|
111
|
+
className: "size-[12px]"
|
|
112
|
+
})
|
|
113
|
+
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
114
|
+
align: "end",
|
|
115
|
+
children: [
|
|
116
|
+
customRowMenuItemsBeforeCore,
|
|
117
|
+
hasCustomRowMenuItemsBeforeCore && hasMoveActions && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
118
|
+
showReorderControls && rowIndex > 0 && /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
119
|
+
onClick: () => {
|
|
120
|
+
return moveRow(row, -1);
|
|
121
|
+
},
|
|
122
|
+
children: [/* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faArrowUp }), t("Move up")]
|
|
123
|
+
}),
|
|
124
|
+
showReorderControls && rowIndex < rowCount - 1 && /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
125
|
+
onClick: () => {
|
|
126
|
+
return moveRow(row, 1);
|
|
127
|
+
},
|
|
128
|
+
children: [/* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faArrowDown }), t("Move down")]
|
|
129
|
+
}),
|
|
130
|
+
hasMoveActions && hasCustomRowMenuItemsAfterCore && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
131
|
+
customRowMenuItemsAfterCore
|
|
132
|
+
]
|
|
133
|
+
})] }),
|
|
134
|
+
renderRowActions?.({
|
|
135
|
+
row,
|
|
136
|
+
rowIndex,
|
|
137
|
+
rowCount
|
|
138
|
+
}),
|
|
139
|
+
allowDelete && /* @__PURE__ */ jsx(Button, {
|
|
140
|
+
type: "button",
|
|
141
|
+
variant: "none",
|
|
142
|
+
size: "xs",
|
|
143
|
+
onClick: () => {
|
|
144
|
+
return removeRow(row);
|
|
145
|
+
},
|
|
146
|
+
className: cn("p-0 w-[24px] h-[24px]", "text-gray-500", "hover:bg-transparent", "active:bg-transparent", "hover:text-red-500"),
|
|
147
|
+
children: /* @__PURE__ */ jsx(FontAwesomeIcon, {
|
|
148
|
+
icon: faXmark,
|
|
149
|
+
className: "size-[12px] mt-[2px]"
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
]
|
|
153
|
+
})
|
|
154
|
+
})] });
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}, (prevProps, nextProps) => {
|
|
158
|
+
return prevProps.row === nextProps.row && prevProps.rowIndex === nextProps.rowIndex && prevProps.rowCount === nextProps.rowCount && prevProps.columnsSignature === nextProps.columnsSignature && prevProps.getCellErrors === nextProps.getCellErrors && prevProps.useDnd === nextProps.useDnd && prevProps.allowReorder === nextProps.allowReorder && prevProps.showReorderControls === nextProps.showReorderControls && prevProps.allowDelete === nextProps.allowDelete && prevProps.renderRowActions === nextProps.renderRowActions && prevProps.renderRowMenuItemsBeforeCore === nextProps.renderRowMenuItemsBeforeCore && prevProps.renderRowMenuItemsAfterCore === nextProps.renderRowMenuItemsAfterCore && prevProps.renderRowMenuItems === nextProps.renderRowMenuItems;
|
|
159
|
+
});
|
|
160
|
+
//#endregion
|
|
161
|
+
export { TableRow };
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=TableRow.js.map
|