@lattice-php/lattice 0.1.0 → 0.3.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/README.md +3 -1
- package/dist/action/components/action-form.d.ts +24 -0
- package/dist/action/components/action-form.js +238 -0
- package/dist/action/components/action-form.js.map +1 -0
- package/dist/action/components/action-group.d.ts +1 -8
- package/dist/action/components/action-group.js +34 -64
- package/dist/action/components/action-group.js.map +1 -1
- package/dist/action/components/action-menu-context.d.ts +6 -0
- package/dist/action/components/action-menu-context.js +18 -0
- package/dist/action/components/action-menu-context.js.map +1 -0
- package/dist/action/components/action.d.ts +1 -24
- package/dist/action/components/action.js +73 -51
- package/dist/action/components/action.js.map +1 -1
- package/dist/action/index.d.ts +1 -1
- package/dist/action/index.js.map +1 -1
- package/dist/appearance/index.js +7 -2
- package/dist/appearance/index.js.map +1 -1
- package/dist/chat/components/chat-box.d.ts +3 -0
- package/dist/chat/components/chat-box.js +53 -0
- package/dist/chat/components/chat-box.js.map +1 -0
- package/dist/chat/components/message-list.d.ts +5 -0
- package/dist/chat/components/message-list.js +22 -0
- package/dist/chat/components/message-list.js.map +1 -0
- package/dist/chat/components/message.d.ts +5 -0
- package/dist/chat/components/message.js +20 -0
- package/dist/chat/components/message.js.map +1 -0
- package/dist/chat/components/prompt-input.d.ts +8 -0
- package/dist/chat/components/prompt-input.js +49 -0
- package/dist/chat/components/prompt-input.js.map +1 -0
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +15 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/parts/text.d.ts +3 -0
- package/dist/chat/parts/text.js +12 -0
- package/dist/chat/parts/text.js.map +1 -0
- package/dist/chat/parts/tool-call.d.ts +3 -0
- package/dist/chat/parts/tool-call.js +20 -0
- package/dist/chat/parts/tool-call.js.map +1 -0
- package/dist/chat/transport.d.ts +2 -0
- package/dist/chat/transport.js +47 -0
- package/dist/chat/transport.js.map +1 -0
- package/dist/chat/types.d.ts +39 -0
- package/dist/chat/use-chat.d.ts +15 -0
- package/dist/chat/use-chat.js +161 -0
- package/dist/chat/use-chat.js.map +1 -0
- package/dist/core/api.d.ts +18 -0
- package/dist/core/api.js +51 -0
- package/dist/core/api.js.map +1 -0
- package/dist/core/collapsed-context.d.ts +2 -0
- package/dist/core/collapsed-context.js +10 -0
- package/dist/core/collapsed-context.js.map +1 -0
- package/dist/core/column-sizing.d.ts +17 -0
- package/dist/core/column-sizing.js +61 -0
- package/dist/core/column-sizing.js.map +1 -0
- package/dist/core/components/badge.d.ts +1 -8
- package/dist/core/components/badge.js +2 -3
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/button.d.ts +5 -13
- package/dist/core/components/button.js +10 -9
- package/dist/core/components/button.js.map +1 -1
- package/dist/core/components/card.d.ts +1 -9
- package/dist/core/components/card.js +1 -3
- package/dist/core/components/card.js.map +1 -1
- package/dist/core/components/chart.d.ts +3 -0
- package/dist/core/components/chart.js +175 -0
- package/dist/core/components/chart.js.map +1 -0
- package/dist/{form/components/base → core/components}/checkbox.js +7 -4
- package/dist/core/components/checkbox.js.map +1 -0
- package/dist/core/components/combobox.d.ts +33 -0
- package/dist/core/components/combobox.js +99 -0
- package/dist/core/components/combobox.js.map +1 -0
- package/dist/core/components/confirm-dialog.d.ts +2 -3
- package/dist/core/components/confirm-dialog.js +17 -17
- package/dist/core/components/confirm-dialog.js.map +1 -1
- package/dist/core/components/control.d.ts +13 -0
- package/dist/core/components/control.js +27 -0
- package/dist/core/components/control.js.map +1 -0
- package/dist/core/components/dialog.d.ts +19 -0
- package/dist/core/components/dialog.js +75 -0
- package/dist/core/components/dialog.js.map +1 -0
- package/dist/core/components/dropdown-menu.d.ts +14 -0
- package/dist/core/components/dropdown-menu.js +42 -0
- package/dist/core/components/dropdown-menu.js.map +1 -0
- package/dist/core/components/floating-panel.d.ts +3 -0
- package/dist/core/components/floating-panel.js +65 -0
- package/dist/core/components/floating-panel.js.map +1 -0
- package/dist/core/components/fragment.d.ts +1 -10
- package/dist/core/components/fragment.js +29 -18
- package/dist/core/components/fragment.js.map +1 -1
- package/dist/core/components/grid.d.ts +1 -8
- package/dist/core/components/grid.js +1 -2
- package/dist/core/components/grid.js.map +1 -1
- package/dist/core/components/heading.d.ts +1 -9
- package/dist/core/components/heading.js +2 -3
- package/dist/core/components/heading.js.map +1 -1
- package/dist/core/components/icon.d.ts +3 -0
- package/dist/core/components/icon.js +31 -0
- package/dist/core/components/icon.js.map +1 -0
- package/dist/core/components/index.d.ts +1 -1
- package/dist/core/components/index.js +12 -1
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/info-tooltip.d.ts +3 -0
- package/dist/core/components/info-tooltip.js +26 -0
- package/dist/core/components/info-tooltip.js.map +1 -0
- package/dist/core/components/link.d.ts +1 -12
- package/dist/core/components/link.js +12 -11
- package/dist/core/components/link.js.map +1 -1
- package/dist/core/components/modal.d.ts +1 -11
- package/dist/core/components/modal.js +16 -42
- package/dist/core/components/modal.js.map +1 -1
- package/dist/core/components/popover.d.ts +8 -0
- package/dist/core/components/popover.js +37 -0
- package/dist/core/components/popover.js.map +1 -0
- package/dist/core/components/raw-block.d.ts +3 -0
- package/dist/core/components/raw-block.js +10 -0
- package/dist/core/components/raw-block.js.map +1 -0
- package/dist/core/components/section.d.ts +3 -0
- package/dist/core/components/section.js +75 -0
- package/dist/core/components/section.js.map +1 -0
- package/dist/core/components/segmented-control.d.ts +1 -14
- package/dist/core/components/segmented-control.js +4 -7
- package/dist/core/components/segmented-control.js.map +1 -1
- package/dist/core/components/segmented-pills.d.ts +4 -2
- package/dist/core/components/segmented-pills.js +10 -1
- package/dist/core/components/segmented-pills.js.map +1 -1
- package/dist/core/components/skeleton.d.ts +3 -0
- package/dist/core/components/skeleton.js +16 -0
- package/dist/core/components/skeleton.js.map +1 -0
- package/dist/core/components/spinner.js +8 -4
- package/dist/core/components/spinner.js.map +1 -1
- package/dist/core/components/stack.d.ts +1 -11
- package/dist/core/components/stack.js +24 -13
- package/dist/core/components/stack.js.map +1 -1
- package/dist/core/components/tabs.d.ts +1 -19
- package/dist/core/components/tabs.js +45 -21
- package/dist/core/components/tabs.js.map +1 -1
- package/dist/core/components/text.d.ts +1 -9
- package/dist/core/components/text.js +18 -3
- package/dist/core/components/text.js.map +1 -1
- package/dist/core/headers.d.ts +1 -0
- package/dist/core/headers.js +14 -0
- package/dist/core/headers.js.map +1 -0
- package/dist/core/registry-context.d.ts +21 -0
- package/dist/core/registry-context.js +40 -0
- package/dist/core/registry-context.js.map +1 -0
- package/dist/core/registry.d.ts +12 -3
- package/dist/core/registry.js +30 -5
- package/dist/core/registry.js.map +1 -1
- package/dist/core/renderer.d.ts +8 -14
- package/dist/core/renderer.js +20 -36
- package/dist/core/renderer.js.map +1 -1
- package/dist/core/test-id.d.ts +8 -0
- package/dist/core/test-id.js +21 -0
- package/dist/core/test-id.js.map +1 -0
- package/dist/core/types.d.ts +68 -26
- package/dist/core/use-column-resizing.d.ts +27 -0
- package/dist/core/use-column-resizing.js +228 -0
- package/dist/core/use-column-resizing.js.map +1 -0
- package/dist/effects/dispatch.d.ts +20 -0
- package/dist/effects/dispatch.js +39 -0
- package/dist/effects/dispatch.js.map +1 -0
- package/dist/effects/registry.d.ts +38 -0
- package/dist/effects/registry.js +51 -0
- package/dist/effects/registry.js.map +1 -0
- package/dist/effects/use-effect-dispatcher.d.ts +8 -0
- package/dist/effects/use-effect-dispatcher.js +20 -0
- package/dist/effects/use-effect-dispatcher.js.map +1 -0
- package/dist/effects/use-flash-effects.d.ts +5 -0
- package/dist/effects/use-flash-effects.js +22 -0
- package/dist/effects/use-flash-effects.js.map +1 -0
- package/dist/events/event-bridge.d.ts +3 -7
- package/dist/events/event-bridge.js +17 -47
- package/dist/events/event-bridge.js.map +1 -1
- package/dist/events/event-names.d.ts +3 -1
- package/dist/events/event-names.js +3 -1
- package/dist/events/event-names.js.map +1 -1
- package/dist/form/components/base/field.d.ts +3 -1
- package/dist/form/components/base/field.js +21 -2
- package/dist/form/components/base/field.js.map +1 -1
- package/dist/form/components/base/input-error.js +1 -1
- package/dist/form/components/base/input-error.js.map +1 -1
- package/dist/form/components/base/input.js +2 -1
- package/dist/form/components/base/input.js.map +1 -1
- package/dist/form/components/base/label.js.map +1 -1
- package/dist/form/components/base/password-input.js +9 -2
- package/dist/form/components/base/password-input.js.map +1 -1
- package/dist/form/components/base/submit-button.d.ts +4 -4
- package/dist/form/components/base/submit-button.js +5 -3
- package/dist/form/components/base/submit-button.js.map +1 -1
- package/dist/form/components/base/textarea.js +2 -1
- package/dist/form/components/base/textarea.js.map +1 -1
- package/dist/form/components/conditions.d.ts +6 -9
- package/dist/form/components/conditions.js +10 -2
- package/dist/form/components/conditions.js.map +1 -1
- package/dist/form/components/context.d.ts +1 -4
- package/dist/form/components/context.js +2 -5
- package/dist/form/components/context.js.map +1 -1
- package/dist/form/components/field-props.d.ts +28 -0
- package/dist/form/components/field-props.js +15 -0
- package/dist/form/components/field-props.js.map +1 -0
- package/dist/form/components/field-scope.d.ts +21 -0
- package/dist/form/components/field-scope.js +54 -0
- package/dist/form/components/field-scope.js.map +1 -0
- package/dist/form/components/fields/block-add-menu.d.ts +9 -0
- package/dist/form/components/fields/block-add-menu.js +27 -0
- package/dist/form/components/fields/block-add-menu.js.map +1 -0
- package/dist/form/components/fields/builder.d.ts +2 -0
- package/dist/form/components/fields/builder.js +124 -0
- package/dist/form/components/fields/builder.js.map +1 -0
- package/dist/form/components/fields/checkbox.d.ts +2 -16
- package/dist/form/components/fields/checkbox.js +28 -30
- package/dist/form/components/fields/checkbox.js.map +1 -1
- package/dist/form/components/fields/choice.d.ts +2 -14
- package/dist/form/components/fields/choice.js +14 -20
- package/dist/form/components/fields/choice.js.map +1 -1
- package/dist/form/components/fields/date-input.d.ts +2 -20
- package/dist/form/components/fields/date-input.js +12 -16
- package/dist/form/components/fields/date-input.js.map +1 -1
- package/dist/form/components/fields/file-upload.d.ts +2 -0
- package/dist/form/components/fields/file-upload.js +250 -0
- package/dist/form/components/fields/file-upload.js.map +1 -0
- package/dist/form/components/fields/hidden-input.d.ts +2 -10
- package/dist/form/components/fields/hidden-input.js +11 -6
- package/dist/form/components/fields/hidden-input.js.map +1 -1
- package/dist/form/components/fields/number-input.d.ts +2 -23
- package/dist/form/components/fields/number-input.js +40 -41
- package/dist/form/components/fields/number-input.js.map +1 -1
- package/dist/form/components/fields/password-input.d.ts +2 -29
- package/dist/form/components/fields/password-input.js +41 -41
- package/dist/form/components/fields/password-input.js.map +1 -1
- package/dist/form/components/fields/repeater-rows.d.ts +12 -0
- package/dist/form/components/fields/repeater-rows.js +46 -0
- package/dist/form/components/fields/repeater-rows.js.map +1 -0
- package/dist/form/components/fields/repeater.d.ts +2 -0
- package/dist/form/components/fields/repeater.js +97 -0
- package/dist/form/components/fields/repeater.js.map +1 -0
- package/dist/form/components/fields/rich-editor.d.ts +2 -17
- package/dist/form/components/fields/rich-editor.js +90 -52
- package/dist/form/components/fields/rich-editor.js.map +1 -1
- package/dist/form/components/fields/row-action-menu.d.ts +17 -0
- package/dist/form/components/fields/row-action-menu.js +61 -0
- package/dist/form/components/fields/row-action-menu.js.map +1 -0
- package/dist/form/components/fields/row-actions.d.ts +10 -0
- package/dist/form/components/fields/row-actions.js +45 -0
- package/dist/form/components/fields/row-actions.js.map +1 -0
- package/dist/form/components/fields/row-item.d.ts +27 -0
- package/dist/form/components/fields/row-item.js +69 -0
- package/dist/form/components/fields/row-item.js.map +1 -0
- package/dist/form/components/fields/select.d.ts +2 -23
- package/dist/form/components/fields/select.js +97 -121
- package/dist/form/components/fields/select.js.map +1 -1
- package/dist/form/components/fields/simple-field.d.ts +9 -0
- package/dist/form/components/fields/simple-field.js +23 -0
- package/dist/form/components/fields/simple-field.js.map +1 -0
- package/dist/form/components/fields/table-rows.d.ts +32 -0
- package/dist/form/components/fields/table-rows.js +188 -0
- package/dist/form/components/fields/table-rows.js.map +1 -0
- package/dist/form/components/fields/text-input.d.ts +2 -21
- package/dist/form/components/fields/text-input.js +13 -17
- package/dist/form/components/fields/text-input.js.map +1 -1
- package/dist/form/components/fields/textarea.d.ts +2 -20
- package/dist/form/components/fields/textarea.js +12 -16
- package/dist/form/components/fields/textarea.js.map +1 -1
- package/dist/form/components/fields/use-flip-reorder.d.ts +6 -0
- package/dist/form/components/fields/use-flip-reorder.js +51 -0
- package/dist/form/components/fields/use-flip-reorder.js.map +1 -0
- package/dist/form/components/fields/use-row-collection.d.ts +11 -0
- package/dist/form/components/fields/use-row-collection.js +44 -0
- package/dist/form/components/fields/use-row-collection.js.map +1 -0
- package/dist/form/components/form-path.d.ts +5 -0
- package/dist/form/components/form-path.js +40 -0
- package/dist/form/components/form-path.js.map +1 -0
- package/dist/form/components/form-transport.d.ts +3 -4
- package/dist/form/components/form-transport.js +17 -18
- package/dist/form/components/form-transport.js.map +1 -1
- package/dist/form/components/form.d.ts +1 -20
- package/dist/form/components/form.js +47 -48
- package/dist/form/components/form.js.map +1 -1
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/components/index.js +4 -2
- package/dist/form/components/override-keys.d.ts +2 -0
- package/dist/form/components/override-keys.js +12 -0
- package/dist/form/components/override-keys.js.map +1 -0
- package/dist/form/components/prefill-context.d.ts +5 -0
- package/dist/form/components/prefill-context.js +11 -0
- package/dist/form/components/prefill-context.js.map +1 -0
- package/dist/form/components/prefill-targets.d.ts +17 -0
- package/dist/form/components/prefill-targets.js +73 -0
- package/dist/form/components/prefill-targets.js.map +1 -0
- package/dist/form/components/resolved-nodes.d.ts +1 -1
- package/dist/form/components/resolved-nodes.js +6 -3
- package/dist/form/components/resolved-nodes.js.map +1 -1
- package/dist/form/components/row-layout-context.d.ts +5 -0
- package/dist/form/components/row-layout-context.js +18 -0
- package/dist/form/components/row-layout-context.js.map +1 -0
- package/dist/form/components/types.d.ts +1 -0
- package/dist/form/components/use-controlled-field.d.ts +5 -9
- package/dist/form/components/use-controlled-field.js +17 -13
- package/dist/form/components/use-controlled-field.js.map +1 -1
- package/dist/form/components/use-dependent-field.d.ts +1 -1
- package/dist/form/components/use-dependent-field.js +14 -8
- package/dist/form/components/use-dependent-field.js.map +1 -1
- package/dist/form/components/use-field-commit.d.ts +4 -0
- package/dist/form/components/use-field-commit.js +21 -7
- package/dist/form/components/use-field-commit.js.map +1 -1
- package/dist/form/components/use-form-resolver.d.ts +7 -2
- package/dist/form/components/use-form-resolver.js +57 -17
- package/dist/form/components/use-form-resolver.js.map +1 -1
- package/dist/form/components/use-seed-default.d.ts +5 -0
- package/dist/form/components/use-seed-default.js +28 -0
- package/dist/form/components/use-seed-default.js.map +1 -0
- package/dist/form/components/values.js +20 -5
- package/dist/form/components/values.js.map +1 -1
- package/dist/form/index.d.ts +1 -1
- package/dist/form/index.js +13 -11
- package/dist/form/index.js.map +1 -1
- package/dist/form/skeleton.d.ts +1 -1
- package/dist/form/skeleton.js +5 -4
- package/dist/form/skeleton.js.map +1 -1
- package/dist/i18n/backend.d.ts +26 -0
- package/dist/i18n/backend.js +54 -0
- package/dist/i18n/backend.js.map +1 -0
- package/dist/i18n/config.d.ts +6 -0
- package/dist/i18n/config.js +36 -0
- package/dist/i18n/config.js.map +1 -0
- package/dist/i18n/index.d.ts +9 -0
- package/dist/i18n/index.js +7 -0
- package/dist/i18n/instance.d.ts +27 -0
- package/dist/i18n/instance.js +95 -0
- package/dist/i18n/instance.js.map +1 -0
- package/dist/i18n/locale-reload.d.ts +3 -0
- package/dist/i18n/locale-reload.js +17 -0
- package/dist/i18n/locale-reload.js.map +1 -0
- package/dist/i18n/locale-switcher.d.ts +21 -0
- package/dist/i18n/locale-switcher.js +25 -0
- package/dist/i18n/locale-switcher.js.map +1 -0
- package/dist/i18n/locale.d.ts +9 -0
- package/dist/i18n/locale.js +93 -0
- package/dist/i18n/locale.js.map +1 -0
- package/dist/i18n/page-props.d.ts +3 -0
- package/dist/i18n/page-props.js +24 -0
- package/dist/i18n/page-props.js.map +1 -0
- package/dist/icons/icon-renderer.js +30 -5
- package/dist/icons/icon-renderer.js.map +1 -1
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.js +2 -1
- package/dist/icons/sprite.d.ts +30 -0
- package/dist/icons/sprite.js +40 -0
- package/dist/icons/sprite.js.map +1 -0
- package/dist/index.d.ts +23 -9
- package/dist/index.js +22 -7
- package/dist/inertia.d.ts +3 -7
- package/dist/inertia.js +13 -10
- package/dist/inertia.js.map +1 -1
- package/dist/lattice.css +172 -15
- package/dist/layout/breadcrumbs.d.ts +3 -0
- package/dist/layout/breadcrumbs.js +34 -0
- package/dist/layout/breadcrumbs.js.map +1 -0
- package/dist/layout/callouts.d.ts +3 -0
- package/dist/layout/callouts.js +67 -0
- package/dist/layout/callouts.js.map +1 -0
- package/dist/layout/components.d.ts +1 -0
- package/dist/layout/components.js +25 -0
- package/dist/layout/components.js.map +1 -0
- package/dist/layout/context.d.ts +4 -0
- package/dist/layout/context.js +8 -0
- package/dist/layout/context.js.map +1 -0
- package/dist/layout/dropdown.d.ts +3 -0
- package/dist/layout/dropdown.js +23 -0
- package/dist/layout/dropdown.js.map +1 -0
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/menu-item.d.ts +3 -0
- package/dist/layout/menu-item.js +101 -0
- package/dist/layout/menu-item.js.map +1 -0
- package/dist/layout/menu.d.ts +3 -0
- package/dist/layout/menu.js +13 -0
- package/dist/layout/menu.js.map +1 -0
- package/dist/layout/outlet.d.ts +6 -0
- package/dist/layout/outlet.js +14 -0
- package/dist/layout/outlet.js.map +1 -0
- package/dist/layout/popover.d.ts +17 -0
- package/dist/layout/popover.js +46 -0
- package/dist/layout/popover.js.map +1 -0
- package/dist/layout/schema-layout.d.ts +10 -0
- package/dist/layout/schema-layout.js +23 -0
- package/dist/layout/schema-layout.js.map +1 -0
- package/dist/layout/sidebar.d.ts +3 -0
- package/dist/layout/sidebar.js +48 -0
- package/dist/layout/sidebar.js.map +1 -0
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.js +1 -4
- package/dist/lib/utils.js.map +1 -1
- package/dist/page.d.ts +1 -1
- package/dist/page.js +4 -10
- package/dist/page.js.map +1 -1
- package/dist/provider.d.ts +7 -4
- package/dist/provider.js +15 -11
- package/dist/provider.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.js +3 -1
- package/dist/registry.js.map +1 -1
- package/dist/svg-sprite-client/index.d.ts +1 -0
- package/dist/svg-sprite-client/index.js +0 -0
- package/dist/svg-sprite-client.d.ts +1 -0
- package/dist/table/align.d.ts +4 -0
- package/dist/table/align.js +23 -0
- package/dist/table/align.js.map +1 -0
- package/dist/table/bulk.d.ts +6 -10
- package/dist/table/bulk.js +13 -35
- package/dist/table/bulk.js.map +1 -1
- package/dist/table/components/bulk-bar.js +40 -6
- package/dist/table/components/bulk-bar.js.map +1 -1
- package/dist/table/components/cells/badge-cell.d.ts +2 -0
- package/dist/table/components/cells/badge-cell.js +16 -0
- package/dist/table/components/cells/badge-cell.js.map +1 -0
- package/dist/table/components/cells/boolean-cell.d.ts +3 -0
- package/dist/table/components/cells/boolean-cell.js +23 -0
- package/dist/table/components/cells/boolean-cell.js.map +1 -0
- package/dist/table/components/cells/icon-cell.d.ts +2 -0
- package/dist/table/components/cells/icon-cell.js +21 -0
- package/dist/table/components/cells/icon-cell.js.map +1 -0
- package/dist/table/components/cells/image-cell.d.ts +2 -0
- package/dist/table/components/cells/image-cell.js +23 -0
- package/dist/table/components/cells/image-cell.js.map +1 -0
- package/dist/table/components/cells/money-cell.d.ts +2 -0
- package/dist/table/components/cells/money-cell.js +28 -0
- package/dist/table/components/cells/money-cell.js.map +1 -0
- package/dist/table/components/cells/number-cell.d.ts +2 -0
- package/dist/table/components/cells/number-cell.js +25 -0
- package/dist/table/components/cells/number-cell.js.map +1 -0
- package/dist/table/components/cells/numeric.d.ts +2 -0
- package/dist/table/components/cells/numeric.js +10 -0
- package/dist/table/components/cells/numeric.js.map +1 -0
- package/dist/table/components/cells/stack-cell.d.ts +3 -0
- package/dist/table/components/cells/stack-cell.js +17 -0
- package/dist/table/components/cells/stack-cell.js.map +1 -0
- package/dist/table/components/cells/text-cell.d.ts +2 -0
- package/dist/table/components/cells/text-cell.js +49 -0
- package/dist/table/components/cells/text-cell.js.map +1 -0
- package/dist/table/components/column-filter-control.d.ts +3 -1
- package/dist/table/components/column-filter-control.js +125 -100
- package/dist/table/components/column-filter-control.js.map +1 -1
- package/dist/table/components/column-header.d.ts +3 -1
- package/dist/table/components/column-header.js +28 -14
- package/dist/table/components/column-header.js.map +1 -1
- package/dist/table/components/filter-bar.d.ts +15 -0
- package/dist/table/components/filter-bar.js +81 -0
- package/dist/table/components/filter-bar.js.map +1 -0
- package/dist/table/components/filter-controls.d.ts +18 -0
- package/dist/table/components/filter-controls.js +256 -0
- package/dist/table/components/filter-controls.js.map +1 -0
- package/dist/table/components/filter-stack-bar.d.ts +2 -2
- package/dist/table/components/filter-stack-bar.js +10 -8
- package/dist/table/components/filter-stack-bar.js.map +1 -1
- package/dist/table/components/filter-value-input.d.ts +6 -3
- package/dist/table/components/filter-value-input.js +27 -17
- package/dist/table/components/filter-value-input.js.map +1 -1
- package/dist/table/components/pagination.d.ts +1 -1
- package/dist/table/components/pagination.js +20 -8
- package/dist/table/components/pagination.js.map +1 -1
- package/dist/table/components/sort-bar.d.ts +2 -2
- package/dist/table/components/sort-bar.js +12 -10
- package/dist/table/components/sort-bar.js.map +1 -1
- package/dist/table/components/table-action-node.d.ts +1 -1
- package/dist/table/components/table-action-node.js +1 -1
- package/dist/table/components/table-action-node.js.map +1 -1
- package/dist/table/components/table-cell.js +23 -52
- package/dist/table/components/table-cell.js.map +1 -1
- package/dist/table/components/table.d.ts +6 -2
- package/dist/table/components/table.js +198 -136
- package/dist/table/components/table.js.map +1 -1
- package/dist/table/filter-values.d.ts +13 -0
- package/dist/table/filter-values.js +30 -0
- package/dist/table/filter-values.js.map +1 -0
- package/dist/table/format.js +5 -3
- package/dist/table/format.js.map +1 -1
- package/dist/table/index.d.ts +1 -1
- package/dist/table/index.js.map +1 -1
- package/dist/table/payload.d.ts +1 -1
- package/dist/table/payload.js +24 -3
- package/dist/table/payload.js.map +1 -1
- package/dist/table/query.d.ts +10 -2
- package/dist/table/query.js +64 -11
- package/dist/table/query.js.map +1 -1
- package/dist/table/registry.d.ts +19 -0
- package/dist/table/registry.js +14 -0
- package/dist/table/registry.js.map +1 -0
- package/dist/table/types.d.ts +43 -57
- package/dist/table/use-table.d.ts +9 -5
- package/dist/table/use-table.js +66 -27
- package/dist/table/use-table.js.map +1 -1
- package/dist/toast/callout.d.ts +6 -0
- package/dist/toast/callout.js +31 -0
- package/dist/toast/callout.js.map +1 -0
- package/dist/toast/index.d.ts +5 -0
- package/dist/toast/index.js +4 -0
- package/dist/toast/toast.d.ts +14 -0
- package/dist/toast/toast.js +51 -0
- package/dist/toast/toast.js.map +1 -0
- package/dist/toast/toaster.d.ts +3 -0
- package/dist/toast/toaster.js +62 -0
- package/dist/toast/toaster.js.map +1 -0
- package/dist/toast/variant-styles.d.ts +6 -0
- package/dist/toast/variant-styles.js +37 -0
- package/dist/toast/variant-styles.js.map +1 -0
- package/dist/types/generated.d.ts +1037 -0
- package/dist/types/generated.js +0 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/vite-env.d.ts +1 -0
- package/dist/vite.d.ts +25 -0
- package/dist/vite.js +72 -0
- package/dist/vite.js.map +1 -0
- package/package.json +125 -12
- package/resources/icons/align-center.svg +17 -0
- package/resources/icons/align-justify.svg +17 -0
- package/resources/icons/align-left.svg +17 -0
- package/resources/icons/align-right.svg +17 -0
- package/resources/icons/arrow-down.svg +16 -0
- package/resources/icons/arrow-up.svg +16 -0
- package/resources/icons/bold.svg +15 -0
- package/resources/icons/check.svg +15 -0
- package/resources/icons/chevron-down.svg +15 -0
- package/resources/icons/chevron-right.svg +15 -0
- package/resources/icons/chevrons-up-down.svg +16 -0
- package/resources/icons/circle-alert.svg +17 -0
- package/resources/icons/circle-check.svg +16 -0
- package/resources/icons/circle-help.svg +17 -0
- package/resources/icons/circle-x.svg +17 -0
- package/resources/icons/code.svg +16 -0
- package/resources/icons/columns-3.svg +17 -0
- package/resources/icons/copy.svg +16 -0
- package/resources/icons/external-link.svg +17 -0
- package/resources/icons/eye-off.svg +18 -0
- package/resources/icons/eye.svg +16 -0
- package/resources/icons/filter.svg +15 -0
- package/resources/icons/heading-1.svg +18 -0
- package/resources/icons/heading-2.svg +18 -0
- package/resources/icons/heading-3.svg +19 -0
- package/resources/icons/highlighter.svg +16 -0
- package/resources/icons/info.svg +17 -0
- package/resources/icons/italic.svg +17 -0
- package/resources/icons/layout-dashboard.svg +18 -0
- package/resources/icons/link.svg +16 -0
- package/resources/icons/list-ordered.svg +20 -0
- package/resources/icons/list.svg +20 -0
- package/resources/icons/loader-2.svg +15 -0
- package/resources/icons/minus.svg +15 -0
- package/resources/icons/more-horizontal.svg +17 -0
- package/resources/icons/panel-left.svg +16 -0
- package/resources/icons/pencil-line.svg +17 -0
- package/resources/icons/pencil.svg +16 -0
- package/resources/icons/plus.svg +16 -0
- package/resources/icons/quote.svg +16 -0
- package/resources/icons/rotate-ccw.svg +16 -0
- package/resources/icons/rows-3.svg +17 -0
- package/resources/icons/search.svg +16 -0
- package/resources/icons/send.svg +16 -0
- package/resources/icons/settings.svg +16 -0
- package/resources/icons/smile.svg +18 -0
- package/resources/icons/strikethrough.svg +17 -0
- package/resources/icons/table.svg +18 -0
- package/resources/icons/trash-2.svg +19 -0
- package/resources/icons/underline.svg +16 -0
- package/resources/icons/x.svg +16 -0
- package/dist/action/effects.d.ts +0 -30
- package/dist/action/effects.js +0 -44
- package/dist/action/effects.js.map +0 -1
- package/dist/core/props.d.ts +0 -14
- package/dist/core/props.js +0 -30
- package/dist/core/props.js.map +0 -1
- package/dist/form/components/base/checkbox.js.map +0 -1
- package/dist/form/components/fields/submit-button.d.ts +0 -10
- package/dist/form/components/fields/submit-button.js +0 -14
- package/dist/form/components/fields/submit-button.js.map +0 -1
- package/dist/generated/types.d.ts +0 -17
- package/dist/icons/default-icons.d.ts +0 -3
- package/dist/icons/default-icons.js +0 -44
- package/dist/icons/default-icons.js.map +0 -1
- package/dist/icons/dynamic-lucide-renderer.d.ts +0 -2
- package/dist/icons/dynamic-lucide-renderer.js +0 -18
- package/dist/icons/dynamic-lucide-renderer.js.map +0 -1
- package/dist/menu/index.d.ts +0 -1
- package/dist/menu/index.js +0 -2
- package/dist/menu/use-menu.d.ts +0 -2
- package/dist/menu/use-menu.js +0 -9
- package/dist/menu/use-menu.js.map +0 -1
- /package/dist/{generated → chat}/types.js +0 -0
- /package/dist/{form/components/base → core/components}/checkbox.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TableColumn, TableSort, TableState } from '../types';
|
|
2
|
-
export declare function SortBar({
|
|
3
|
-
|
|
2
|
+
export declare function SortBar({ columnsByKey, state, processing, onClear, }: {
|
|
3
|
+
columnsByKey: Map<string, TableColumn>;
|
|
4
4
|
state: TableState;
|
|
5
5
|
processing: boolean;
|
|
6
6
|
onClear: (sort: TableSort) => void;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Icon } from "../../icons/sprite.js";
|
|
2
|
+
import { getSortDirectionLabel } from "../query.js";
|
|
2
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { ArrowDown, ArrowUp, X } from "lucide-react";
|
|
4
4
|
//#region resources/js/table/components/sort-bar.tsx
|
|
5
|
-
function SortBar({
|
|
5
|
+
function SortBar({ columnsByKey, state, processing, onClear }) {
|
|
6
6
|
return /* @__PURE__ */ jsx("div", {
|
|
7
7
|
className: "flex flex-wrap items-center gap-4 border-b border-lt-border px-4 py-2.5 text-sm",
|
|
8
8
|
children: state.sorts.map((sort, index) => {
|
|
9
|
-
const label =
|
|
10
|
-
const
|
|
9
|
+
const label = columnsByKey.get(sort.key)?.label ?? sort.key;
|
|
10
|
+
const arrow = sort.direction === "desc" ? "arrow-down" : "arrow-up";
|
|
11
11
|
return /* @__PURE__ */ jsxs("span", {
|
|
12
12
|
className: "inline-flex items-center gap-1.5",
|
|
13
13
|
children: [
|
|
@@ -15,10 +15,12 @@ function SortBar({ columns, state, processing, onClear }) {
|
|
|
15
15
|
className: "font-medium",
|
|
16
16
|
children: `${index + 1}. ${label}`
|
|
17
17
|
}),
|
|
18
|
-
/* @__PURE__ */ jsx(
|
|
18
|
+
/* @__PURE__ */ jsx(Icon, {
|
|
19
|
+
name: arrow,
|
|
19
20
|
role: "img",
|
|
21
|
+
"aria-hidden": false,
|
|
20
22
|
"aria-label": getSortDirectionLabel(sort.direction),
|
|
21
|
-
className: "size-
|
|
23
|
+
className: "size-lt-icon-sm text-lt-muted-fg"
|
|
22
24
|
}),
|
|
23
25
|
/* @__PURE__ */ jsx("button", {
|
|
24
26
|
type: "button",
|
|
@@ -27,9 +29,9 @@ function SortBar({ columns, state, processing, onClear }) {
|
|
|
27
29
|
"aria-label": `Clear ${label} sort`,
|
|
28
30
|
"data-test": `clear-${sort.key}-sort`,
|
|
29
31
|
onClick: () => onClear(sort),
|
|
30
|
-
children: /* @__PURE__ */ jsx(
|
|
31
|
-
|
|
32
|
-
className: "size-
|
|
32
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
33
|
+
name: "x",
|
|
34
|
+
className: "size-lt-icon-sm"
|
|
33
35
|
})
|
|
34
36
|
})
|
|
35
37
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-bar.js","names":[],"sources":["../../../resources/js/table/components/sort-bar.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"sort-bar.js","names":[],"sources":["../../../resources/js/table/components/sort-bar.tsx"],"sourcesContent":["import { Icon } from \"@lattice-php/lattice/icons\";\nimport { getSortDirectionLabel } from \"../query\";\nimport type { TableColumn, TableSort, TableState } from \"../types\";\n\nexport function SortBar({\n columnsByKey,\n state,\n processing,\n onClear,\n}: {\n columnsByKey: Map<string, TableColumn>;\n state: TableState;\n processing: boolean;\n onClear: (sort: TableSort) => void;\n}) {\n return (\n <div className=\"flex flex-wrap items-center gap-4 border-b border-lt-border px-4 py-2.5 text-sm\">\n {state.sorts.map((sort, index) => {\n const column = columnsByKey.get(sort.key);\n const label = column?.label ?? sort.key;\n const arrow = sort.direction === \"desc\" ? \"arrow-down\" : \"arrow-up\";\n\n return (\n <span key={sort.key} className=\"inline-flex items-center gap-1.5\">\n <span className=\"font-medium\">{`${index + 1}. ${label}`}</span>\n <Icon\n name={arrow}\n role=\"img\"\n aria-hidden={false}\n aria-label={getSortDirectionLabel(sort.direction)}\n className=\"size-lt-icon-sm text-lt-muted-fg\"\n />\n <button\n type=\"button\"\n className=\"inline-flex size-5 items-center justify-center rounded text-lt-muted-fg hover:bg-lt-muted disabled:opacity-50\"\n disabled={processing}\n aria-label={`Clear ${label} sort`}\n data-test={`clear-${sort.key}-sort`}\n onClick={() => onClear(sort)}\n >\n <Icon name=\"x\" className=\"size-lt-icon-sm\" />\n </button>\n </span>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;AAIA,SAAgB,QAAQ,EACtB,cACA,OACA,YACA,WAMC;CACD,OACE,oBAAC,OAAD;EAAK,WAAU;YACZ,MAAM,MAAM,KAAK,MAAM,UAAU;GAEhC,MAAM,QADS,aAAa,IAAI,KAAK,GACvB,GAAQ,SAAS,KAAK;GACpC,MAAM,QAAQ,KAAK,cAAc,SAAS,eAAe;GAEzD,OACE,qBAAC,QAAD;IAAqB,WAAU;cAA/B;KACE,oBAAC,QAAD;MAAM,WAAU;gBAAe,GAAG,QAAQ,EAAE,IAAI;KAAc,CAAA;KAC9D,oBAAC,MAAD;MACE,MAAM;MACN,MAAK;MACL,eAAa;MACb,cAAY,sBAAsB,KAAK,SAAS;MAChD,WAAU;KACX,CAAA;KACD,oBAAC,UAAD;MACE,MAAK;MACL,WAAU;MACV,UAAU;MACV,cAAY,SAAS,MAAM;MAC3B,aAAW,SAAS,KAAK,IAAI;MAC7B,eAAe,QAAQ,IAAI;gBAE3B,oBAAC,MAAD;OAAM,MAAK;OAAI,WAAU;MAAmB,CAAA;KACtC,CAAA;IACJ;MAnBK,KAAK,GAmBV;EAEV,CAAC;CACE,CAAA;AAET"}
|
|
@@ -10,7 +10,7 @@ function TableActionNode({ node }) {
|
|
|
10
10
|
});
|
|
11
11
|
if (node.type === "action.group") return /* @__PURE__ */ jsx(ActionGroupComponent, {
|
|
12
12
|
node,
|
|
13
|
-
children: node.
|
|
13
|
+
children: node.schema?.map((childNode, index) => /* @__PURE__ */ jsx(TableActionNode, { node: childNode }, childNode.key ?? childNode.id ?? `${childNode.type}-${index}`)) ?? null
|
|
14
14
|
});
|
|
15
15
|
if (node.type === "link") return /* @__PURE__ */ jsx(LinkComponent, {
|
|
16
16
|
node,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-action-node.js","names":[],"sources":["../../../resources/js/table/components/table-action-node.tsx"],"sourcesContent":["import type { Node } from \"@lattice/lattice/core/types\";\nimport ActionComponent from \"@lattice/lattice/action/components/action\";\nimport ActionGroupComponent from \"@lattice/lattice/action/components/action-group\";\nimport LinkComponent from \"@lattice/lattice/core/components/link\";\n\nexport function TableActionNode({ node }: { node: Node }) {\n if (node.type === \"action\") {\n return <ActionComponent node={node as Node<\"action\">}>{null}</ActionComponent>;\n }\n\n if (node.type === \"action.group\") {\n return (\n <ActionGroupComponent node={node as Node<\"action.group\">}>\n {node.
|
|
1
|
+
{"version":3,"file":"table-action-node.js","names":[],"sources":["../../../resources/js/table/components/table-action-node.tsx"],"sourcesContent":["import type { Node } from \"@lattice-php/lattice/core/types\";\nimport ActionComponent from \"@lattice-php/lattice/action/components/action\";\nimport ActionGroupComponent from \"@lattice-php/lattice/action/components/action-group\";\nimport LinkComponent from \"@lattice-php/lattice/core/components/link\";\n\nexport function TableActionNode({ node }: { node: Node }) {\n if (node.type === \"action\") {\n return <ActionComponent node={node as Node<\"action\">}>{null}</ActionComponent>;\n }\n\n if (node.type === \"action.group\") {\n return (\n <ActionGroupComponent node={node as Node<\"action.group\">}>\n {node.schema?.map((childNode, index) => (\n <TableActionNode\n key={childNode.key ?? childNode.id ?? `${childNode.type}-${index}`}\n node={childNode}\n />\n )) ?? null}\n </ActionGroupComponent>\n );\n }\n\n if (node.type === \"link\") {\n return <LinkComponent node={node as Node<\"link\">}>{null}</LinkComponent>;\n }\n\n return null;\n}\n"],"mappings":";;;;;AAKA,SAAgB,gBAAgB,EAAE,QAAwB;CACxD,IAAI,KAAK,SAAS,UAChB,OAAO,oBAAC,iBAAD;EAAuB;YAAyB;CAAsB,CAAA;CAG/E,IAAI,KAAK,SAAS,gBAChB,OACE,oBAAC,sBAAD;EAA4B;YACzB,KAAK,QAAQ,KAAK,WAAW,UAC5B,oBAAC,iBAAD,EAEE,MAAM,UACP,GAFM,UAAU,OAAO,UAAU,MAAM,GAAG,UAAU,KAAK,GAAG,OAE5D,CACF,KAAK;CACc,CAAA;CAI1B,IAAI,KAAK,SAAS,QAChB,OAAO,oBAAC,eAAD;EAAqB;YAAuB;CAAoB,CAAA;CAGzE,OAAO;AACT"}
|
|
@@ -1,62 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { useColumnRegistry } from "../../core/registry-context.js";
|
|
2
|
+
import { columnCell } from "../registry.js";
|
|
3
|
+
import { BadgeCell } from "./cells/badge-cell.js";
|
|
4
|
+
import { BooleanCell } from "./cells/boolean-cell.js";
|
|
5
|
+
import { IconCell } from "./cells/icon-cell.js";
|
|
6
|
+
import { ImageCell } from "./cells/image-cell.js";
|
|
7
|
+
import { MoneyCell } from "./cells/money-cell.js";
|
|
8
|
+
import { NumberCell } from "./cells/number-cell.js";
|
|
9
|
+
import { TextCell } from "./cells/text-cell.js";
|
|
10
|
+
import { StackCell } from "./cells/stack-cell.js";
|
|
11
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
12
|
//#region resources/js/table/components/table-cell.tsx
|
|
13
|
+
var builtinColumnCells = {
|
|
14
|
+
"column.badge": columnCell(BadgeCell),
|
|
15
|
+
"column.boolean": columnCell(BooleanCell),
|
|
16
|
+
"column.icon": columnCell(IconCell),
|
|
17
|
+
"column.image": columnCell(ImageCell),
|
|
18
|
+
"column.money": columnCell(MoneyCell),
|
|
19
|
+
"column.number": columnCell(NumberCell),
|
|
20
|
+
"column.stack": columnCell(StackCell),
|
|
21
|
+
"column.text": columnCell(TextCell)
|
|
22
|
+
};
|
|
7
23
|
function ColumnCell({ column, row }) {
|
|
8
|
-
|
|
9
|
-
className: "grid gap-1",
|
|
10
|
-
children: (column.columns ?? []).map((stackedColumn) => /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(TextCell, {
|
|
11
|
-
column: stackedColumn,
|
|
12
|
-
row,
|
|
13
|
-
value: row[stackedColumn.key]
|
|
14
|
-
}) }, stackedColumn.key))
|
|
15
|
-
});
|
|
16
|
-
return /* @__PURE__ */ jsx(TextCell, {
|
|
24
|
+
return /* @__PURE__ */ jsx(useColumnRegistry()[column.type] ?? builtinColumnCells[column.type] ?? builtinColumnCells["column.text"], {
|
|
17
25
|
column,
|
|
26
|
+
props: column.props ?? {},
|
|
18
27
|
row,
|
|
19
28
|
value: row[column.key]
|
|
20
29
|
});
|
|
21
30
|
}
|
|
22
|
-
function TextCell({ column, row, value }) {
|
|
23
|
-
const text = formatCell(value, column);
|
|
24
|
-
const [copied, setCopied] = useState(false);
|
|
25
|
-
const href = resolveLink(column, row, value);
|
|
26
|
-
const content = href ? /* @__PURE__ */ jsx("a", {
|
|
27
|
-
className: "underline underline-offset-2",
|
|
28
|
-
href,
|
|
29
|
-
rel: column.link?.external ? "noreferrer" : void 0,
|
|
30
|
-
target: column.link?.external ? "_blank" : void 0,
|
|
31
|
-
children: text
|
|
32
|
-
}) : text;
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
if (!copied) return;
|
|
35
|
-
const timeout = window.setTimeout(() => setCopied(false), 1500);
|
|
36
|
-
return () => window.clearTimeout(timeout);
|
|
37
|
-
}, [copied]);
|
|
38
|
-
function handleCopy() {
|
|
39
|
-
copyToClipboard(text);
|
|
40
|
-
setCopied(true);
|
|
41
|
-
}
|
|
42
|
-
if (!column.copyable) return content;
|
|
43
|
-
return /* @__PURE__ */ jsxs("span", {
|
|
44
|
-
className: "inline-flex items-center gap-2",
|
|
45
|
-
children: [/* @__PURE__ */ jsx("span", { children: content }), /* @__PURE__ */ jsxs("button", {
|
|
46
|
-
type: "button",
|
|
47
|
-
className: "inline-flex items-center gap-1 rounded border border-lt-border px-2 py-1 text-xs",
|
|
48
|
-
"aria-label": `${copied ? "Copied" : "Copy"} ${column.label}`,
|
|
49
|
-
onClick: handleCopy,
|
|
50
|
-
children: [copied ? /* @__PURE__ */ jsx(Check, {
|
|
51
|
-
"aria-hidden": "true",
|
|
52
|
-
className: "size-3"
|
|
53
|
-
}) : /* @__PURE__ */ jsx(Copy, {
|
|
54
|
-
"aria-hidden": "true",
|
|
55
|
-
className: "size-3"
|
|
56
|
-
}), copied ? "Copied" : "Copy"]
|
|
57
|
-
})]
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
31
|
//#endregion
|
|
61
32
|
export { ColumnCell };
|
|
62
33
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-cell.js","names":[],"sources":["../../../resources/js/table/components/table-cell.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"table-cell.js","names":[],"sources":["../../../resources/js/table/components/table-cell.tsx"],"sourcesContent":["import { useColumnRegistry } from \"../../provider\";\nimport { columnCell, type ColumnRegistry } from \"../registry\";\nimport type { TableColumn, TableRow } from \"../types\";\nimport { BadgeCell } from \"./cells/badge-cell\";\nimport { BooleanCell } from \"./cells/boolean-cell\";\nimport { IconCell } from \"./cells/icon-cell\";\nimport { ImageCell } from \"./cells/image-cell\";\nimport { MoneyCell } from \"./cells/money-cell\";\nimport { NumberCell } from \"./cells/number-cell\";\nimport { StackCell } from \"./cells/stack-cell\";\nimport { TextCell } from \"./cells/text-cell\";\n\n// Built-in cells live with the (lazy-loaded) table feature rather than the\n// eager registry, so they stay code-split. Consumer-registered columns are\n// merged on top and win on type collisions.\nconst builtinColumnCells: ColumnRegistry = {\n \"column.badge\": columnCell(BadgeCell),\n \"column.boolean\": columnCell(BooleanCell),\n \"column.icon\": columnCell(IconCell),\n \"column.image\": columnCell(ImageCell),\n \"column.money\": columnCell(MoneyCell),\n \"column.number\": columnCell(NumberCell),\n \"column.stack\": columnCell(StackCell),\n \"column.text\": columnCell(TextCell),\n};\n\nexport function ColumnCell({ column, row }: { column: TableColumn; row: TableRow }) {\n const customCells = useColumnRegistry();\n const Cell =\n customCells[column.type] ??\n builtinColumnCells[column.type] ??\n builtinColumnCells[\"column.text\"];\n\n return <Cell column={column} props={column.props ?? {}} row={row} value={row[column.key]} />;\n}\n"],"mappings":";;;;;;;;;;;;AAeA,IAAM,qBAAqC;CACzC,gBAAgB,WAAW,SAAS;CACpC,kBAAkB,WAAW,WAAW;CACxC,eAAe,WAAW,QAAQ;CAClC,gBAAgB,WAAW,SAAS;CACpC,gBAAgB,WAAW,SAAS;CACpC,iBAAiB,WAAW,UAAU;CACtC,gBAAgB,WAAW,SAAS;CACpC,eAAe,WAAW,QAAQ;AACpC;AAEA,SAAgB,WAAW,EAAE,QAAQ,OAA+C;CAOlF,OAAO,oBANa,kBAElB,EAAY,OAAO,SACnB,mBAAmB,OAAO,SAC1B,mBAAmB,gBAEd;EAAc;EAAQ,OAAO,OAAO,SAAS,CAAC;EAAQ;EAAK,OAAO,IAAI,OAAO;CAAO,CAAA;AAC7F"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TableNode } from '../types';
|
|
3
|
+
declare const TableComponent: ({ node }: {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
node: TableNode;
|
|
6
|
+
}) => import("react").JSX.Element;
|
|
3
7
|
export default TableComponent;
|
|
@@ -1,28 +1,39 @@
|
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { nodeIdentity } from "../../core/test-id.js";
|
|
3
|
+
import { Icon } from "../../icons/sprite.js";
|
|
4
|
+
import { useT } from "../../i18n/instance.js";
|
|
5
|
+
import { useColumnResizing } from "../../core/use-column-resizing.js";
|
|
6
|
+
import { alignJustifyItems, alignText } from "../align.js";
|
|
1
7
|
import { getBulkActions } from "../bulk.js";
|
|
2
|
-
import { getRowActions, getRowKey } from "../payload.js";
|
|
3
|
-
import {
|
|
8
|
+
import { flattenColumns, getRowActions, getRowKey } from "../payload.js";
|
|
9
|
+
import { getQueryParams, getTableSizingColumns, getTableUtilityTracks, getVisiblePages } from "../query.js";
|
|
4
10
|
import { useTableSelection } from "../use-table-selection.js";
|
|
5
11
|
import { useTable } from "../use-table.js";
|
|
12
|
+
import { Checkbox } from "../../core/components/checkbox.js";
|
|
6
13
|
import { BulkBar } from "./bulk-bar.js";
|
|
7
14
|
import { ColumnFilterControl } from "./column-filter-control.js";
|
|
8
15
|
import { ColumnHeader } from "./column-header.js";
|
|
16
|
+
import { FilterBar } from "./filter-bar.js";
|
|
9
17
|
import { FilterStackBar } from "./filter-stack-bar.js";
|
|
10
18
|
import { TablePagination } from "./pagination.js";
|
|
11
19
|
import { SortBar } from "./sort-bar.js";
|
|
12
20
|
import { TableActionNode } from "./table-action-node.js";
|
|
13
21
|
import { ColumnCell } from "./table-cell.js";
|
|
22
|
+
import { useMemo } from "react";
|
|
14
23
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
24
|
//#region resources/js/table/components/table.tsx
|
|
16
25
|
var TableComponent = ({ node }) => {
|
|
17
|
-
const {
|
|
18
|
-
const
|
|
26
|
+
const { t } = useT("lattice");
|
|
27
|
+
const { columns, rows, pagination, state, filters, tableFilters, addFilter, updateFilter, removeFilter, setTableFilter, resetFilters, searchFilterOptions, processing, hasLoaded, infiniteLoaderRef, sort, clearSort, goToPage, loadMore } = useTable(node);
|
|
28
|
+
const bulkActions = useMemo(() => getBulkActions(node.props?.bulkActions), [node.props?.bulkActions]);
|
|
19
29
|
const hasBulkActions = bulkActions.length > 0;
|
|
20
|
-
const rowEntries = rows.map((row, index) => ({
|
|
30
|
+
const rowEntries = useMemo(() => rows.map((row, index) => ({
|
|
21
31
|
row,
|
|
22
32
|
actions: getRowActions(row),
|
|
23
33
|
key: getRowKey(row, index)
|
|
24
|
-
}));
|
|
34
|
+
})), [rows]);
|
|
25
35
|
const selection = useTableSelection(rowEntries.map((entry) => entry.key));
|
|
36
|
+
const columnsByKey = useMemo(() => new Map(flattenColumns(columns).map((column) => [column.key, column])), [columns]);
|
|
26
37
|
const currentPage = pagination.currentPage ?? state.page;
|
|
27
38
|
const lastPage = pagination.lastPage ?? currentPage;
|
|
28
39
|
const mode = pagination.mode ?? "table";
|
|
@@ -35,152 +46,203 @@ var TableComponent = ({ node }) => {
|
|
|
35
46
|
clause,
|
|
36
47
|
index
|
|
37
48
|
}));
|
|
38
|
-
const
|
|
49
|
+
const filterDefinitions = useMemo(() => Array.isArray(node.props?.filters) ? node.props.filters : [], [node.props?.filters]);
|
|
50
|
+
const hasActiveFilters = filters.length > 0 || Object.keys(tableFilters).length > 0;
|
|
51
|
+
const sizingColumns = useMemo(() => getTableSizingColumns(columns), [columns]);
|
|
52
|
+
const utilityTracks = useMemo(() => getTableUtilityTracks(hasActions, hasBulkActions), [hasActions, hasBulkActions]);
|
|
53
|
+
const resizingEnabled = node.props?.resizableColumns === true;
|
|
54
|
+
const resizeStorageIdentity = nodeIdentity(node);
|
|
55
|
+
const { getResizeHandleProps, gridTemplateColumns, hasOverrides, resetColumns } = useColumnResizing({
|
|
56
|
+
columns: sizingColumns,
|
|
57
|
+
enabled: resizingEnabled,
|
|
58
|
+
leadingTracks: utilityTracks.leadingTracks,
|
|
59
|
+
showIndicator: node.props?.resizeIndicator === true,
|
|
60
|
+
storageKey: resizingEnabled && resizeStorageIdentity ? `lattice:table-columns:${resizeStorageIdentity}` : void 0,
|
|
61
|
+
trailingTracks: utilityTracks.trailingTracks
|
|
62
|
+
});
|
|
39
63
|
return /* @__PURE__ */ jsxs("div", {
|
|
40
64
|
"data-lattice-component": node.id,
|
|
41
|
-
className: "
|
|
42
|
-
children: [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
className: "relative",
|
|
66
|
+
children: [hasOverrides && /* @__PURE__ */ jsx("button", {
|
|
67
|
+
"aria-label": t("a11y.resetColumnWidths", "Reset column widths"),
|
|
68
|
+
className: "absolute right-1 top-1 z-10 hidden rounded-lt-sm p-1 text-lt-muted-fg hover:text-lt-fg md:inline-flex",
|
|
69
|
+
"data-test": "table-reset-columns",
|
|
70
|
+
onClick: resetColumns,
|
|
71
|
+
title: t("a11y.resetColumnWidths", "Reset column widths"),
|
|
72
|
+
type: "button",
|
|
73
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
74
|
+
name: "rotate-ccw",
|
|
75
|
+
className: "size-lt-icon-sm"
|
|
76
|
+
})
|
|
77
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
78
|
+
className: "overflow-x-auto rounded-lt-sm border border-lt-border",
|
|
79
|
+
children: [
|
|
80
|
+
filterDefinitions.length > 0 && /* @__PURE__ */ jsx(FilterBar, {
|
|
81
|
+
filters: filterDefinitions,
|
|
82
|
+
values: tableFilters,
|
|
83
|
+
processing,
|
|
84
|
+
hasActiveFilters,
|
|
85
|
+
onChange: setTableFilter,
|
|
86
|
+
onReset: resetFilters,
|
|
87
|
+
onSearch: searchFilterOptions
|
|
88
|
+
}),
|
|
89
|
+
hasBulkActions && selection.active && /* @__PURE__ */ jsx(BulkBar, {
|
|
90
|
+
actions: bulkActions,
|
|
91
|
+
selectedKeys: selection.selectedKeys,
|
|
92
|
+
allMatching: selection.allMatching,
|
|
93
|
+
total: pagination.total ?? void 0,
|
|
94
|
+
query: getQueryParams(state),
|
|
95
|
+
canSelectAllMatching: selection.allVisibleSelected && !selection.allMatching && pagination.total != null && pagination.total > selection.selectedKeys.length,
|
|
96
|
+
onSelectAllMatching: selection.selectAllMatching,
|
|
97
|
+
onCompleted: selection.clear
|
|
98
|
+
}),
|
|
99
|
+
filters.length > 0 && /* @__PURE__ */ jsx(FilterStackBar, {
|
|
100
|
+
filters,
|
|
101
|
+
columnsByKey,
|
|
102
|
+
processing,
|
|
103
|
+
onRemove: removeFilter
|
|
104
|
+
}),
|
|
105
|
+
state.sorts.length > 0 && /* @__PURE__ */ jsx(SortBar, {
|
|
106
|
+
columnsByKey,
|
|
107
|
+
state,
|
|
108
|
+
processing,
|
|
109
|
+
onClear: clearSort
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ jsxs("div", {
|
|
112
|
+
className: "min-w-full text-sm",
|
|
113
|
+
role: "table",
|
|
71
114
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
72
|
-
className: "
|
|
73
|
-
role: "
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
state
|
|
91
|
-
}, column.key)),
|
|
92
|
-
hasActions && /* @__PURE__ */ jsx("div", {
|
|
93
|
-
className: "px-4 py-3 text-right align-middle font-medium text-lt-muted-fg",
|
|
94
|
-
role: "columnheader",
|
|
95
|
-
children: "Actions"
|
|
96
|
-
})
|
|
97
|
-
]
|
|
98
|
-
}), hasFilters && /* @__PURE__ */ jsxs("div", {
|
|
99
|
-
className: "hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
100
|
-
role: "row",
|
|
101
|
-
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
102
|
-
children: [
|
|
103
|
-
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
104
|
-
className: "px-4 py-2",
|
|
105
|
-
role: "cell"
|
|
106
|
-
}),
|
|
107
|
-
columns.map((column) => /* @__PURE__ */ jsx("div", {
|
|
108
|
-
className: "px-4 py-2",
|
|
109
|
-
role: "cell",
|
|
110
|
-
children: column.filter?.enabled && /* @__PURE__ */ jsx(ColumnFilterControl, {
|
|
115
|
+
className: "border-b border-lt-border bg-lt-muted/50",
|
|
116
|
+
role: "rowgroup",
|
|
117
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
118
|
+
className: "hidden min-w-full md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
119
|
+
role: "row",
|
|
120
|
+
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
121
|
+
children: [
|
|
122
|
+
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
123
|
+
className: "flex items-center px-4 py-3",
|
|
124
|
+
role: "columnheader",
|
|
125
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
126
|
+
"aria-label": t("a11y.selectAllRows", "Select all rows"),
|
|
127
|
+
"data-test": "select-all",
|
|
128
|
+
checked: selection.allSelected,
|
|
129
|
+
onCheckedChange: () => selection.toggleAll()
|
|
130
|
+
})
|
|
131
|
+
}),
|
|
132
|
+
columns.map((column, index) => /* @__PURE__ */ jsx(ColumnHeader, {
|
|
111
133
|
column,
|
|
112
|
-
clauses: filterEntries.filter((entry) => entry.clause.field === column.key),
|
|
113
134
|
processing,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
135
|
+
resizeHandleProps: resizingEnabled ? getResizeHandleProps(sizingColumns[index]) : void 0,
|
|
136
|
+
sort,
|
|
137
|
+
state
|
|
138
|
+
}, column.key)),
|
|
139
|
+
hasActions && /* @__PURE__ */ jsx("div", {
|
|
140
|
+
className: "px-4 py-3 text-right align-middle font-medium text-lt-muted-fg",
|
|
141
|
+
role: "columnheader",
|
|
142
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
143
|
+
className: "sr-only",
|
|
144
|
+
children: node.props?.actionsLabel
|
|
145
|
+
})
|
|
117
146
|
})
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
role: "cell"
|
|
122
|
-
})
|
|
123
|
-
]
|
|
124
|
-
})]
|
|
125
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
126
|
-
role: "rowgroup",
|
|
127
|
-
children: !hasLoaded ? /* @__PURE__ */ jsx("div", {
|
|
128
|
-
className: "p-4 text-lt-muted-fg",
|
|
129
|
-
role: "row",
|
|
130
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
131
|
-
role: "cell",
|
|
132
|
-
children: "Loading rows..."
|
|
133
|
-
})
|
|
134
|
-
}) : rowEntries.map(({ row, actions, key }) => {
|
|
135
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
136
|
-
className: `grid grid-cols-1 border-b border-lt-border last:border-b-0 md:grid-cols-[var(--lattice-table-columns)] ${striped ? "odd:bg-lt-muted/30" : ""}`,
|
|
147
|
+
]
|
|
148
|
+
}), hasFilters && /* @__PURE__ */ jsxs("div", {
|
|
149
|
+
className: "hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
137
150
|
role: "row",
|
|
138
151
|
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
139
152
|
children: [
|
|
140
153
|
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
141
|
-
className: "
|
|
142
|
-
role: "cell"
|
|
143
|
-
children: /* @__PURE__ */ jsx("input", {
|
|
144
|
-
type: "checkbox",
|
|
145
|
-
"aria-label": `Select row ${key}`,
|
|
146
|
-
checked: selection.isSelected(key),
|
|
147
|
-
onChange: () => selection.toggle(key)
|
|
148
|
-
})
|
|
154
|
+
className: "px-4 py-2",
|
|
155
|
+
role: "cell"
|
|
149
156
|
}),
|
|
150
|
-
columns.map((column) => /* @__PURE__ */
|
|
151
|
-
className: "
|
|
157
|
+
columns.map((column) => /* @__PURE__ */ jsx("div", {
|
|
158
|
+
className: "min-w-0 px-2 py-2",
|
|
152
159
|
role: "cell",
|
|
153
|
-
children:
|
|
154
|
-
"aria-hidden": "true",
|
|
155
|
-
className: "text-xs font-medium text-lt-muted-fg md:hidden",
|
|
156
|
-
children: column.label
|
|
157
|
-
}), /* @__PURE__ */ jsx(ColumnCell, {
|
|
160
|
+
children: column.filter?.enabled && /* @__PURE__ */ jsx(ColumnFilterControl, {
|
|
158
161
|
column,
|
|
159
|
-
|
|
160
|
-
|
|
162
|
+
clauses: filterEntries.filter((entry) => entry.clause.field === column.key),
|
|
163
|
+
processing,
|
|
164
|
+
onAdd: addFilter,
|
|
165
|
+
onUpdate: updateFilter,
|
|
166
|
+
onRemove: removeFilter,
|
|
167
|
+
onSearch: (query) => searchFilterOptions(column.key, query)
|
|
168
|
+
})
|
|
161
169
|
}, column.key)),
|
|
162
|
-
|
|
163
|
-
className: "
|
|
164
|
-
role: "cell"
|
|
165
|
-
children: actions.map((action, actionIndex) => /* @__PURE__ */ jsx(TableActionNode, { node: action }, action.key ?? action.id ?? actionIndex))
|
|
170
|
+
hasActions && /* @__PURE__ */ jsx("div", {
|
|
171
|
+
className: "px-4 py-2",
|
|
172
|
+
role: "cell"
|
|
166
173
|
})
|
|
167
174
|
]
|
|
168
|
-
}
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
175
|
+
})]
|
|
176
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
177
|
+
role: "rowgroup",
|
|
178
|
+
children: !hasLoaded ? /* @__PURE__ */ jsx("div", {
|
|
179
|
+
className: "p-4 text-lt-muted-fg",
|
|
180
|
+
role: "row",
|
|
181
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
182
|
+
role: "cell",
|
|
183
|
+
children: t("table.loading", "Loading rows...")
|
|
184
|
+
})
|
|
185
|
+
}) : rowEntries.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
186
|
+
className: "p-8 text-center text-lt-muted-fg",
|
|
187
|
+
role: "row",
|
|
188
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
189
|
+
role: "cell",
|
|
190
|
+
children: node.props?.emptyLabel
|
|
191
|
+
})
|
|
192
|
+
}) : rowEntries.map(({ row, actions, key }) => {
|
|
193
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
194
|
+
className: `grid grid-cols-1 border-b border-lt-border last:border-b-0 md:grid-cols-[var(--lattice-table-columns)] ${striped ? "odd:bg-lt-muted/30" : ""}`,
|
|
195
|
+
role: "row",
|
|
196
|
+
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
197
|
+
children: [
|
|
198
|
+
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
199
|
+
className: "flex items-center p-4",
|
|
200
|
+
role: "cell",
|
|
201
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
202
|
+
"aria-label": t("a11y.selectRow", "Select row {{key}}", { key }),
|
|
203
|
+
"data-test": `select-row-${key}`,
|
|
204
|
+
checked: selection.isSelected(key),
|
|
205
|
+
onCheckedChange: () => selection.toggle(key)
|
|
206
|
+
})
|
|
207
|
+
}),
|
|
208
|
+
columns.map((column) => /* @__PURE__ */ jsxs("div", {
|
|
209
|
+
className: cn("grid min-w-0 gap-1 p-4 align-middle", alignText(column.align), alignJustifyItems(column.align)),
|
|
210
|
+
role: "cell",
|
|
211
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
212
|
+
"aria-hidden": "true",
|
|
213
|
+
className: "text-xs font-medium text-lt-muted-fg md:hidden",
|
|
214
|
+
children: column.label
|
|
215
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
216
|
+
className: "min-w-0 truncate",
|
|
217
|
+
children: /* @__PURE__ */ jsx(ColumnCell, {
|
|
218
|
+
column,
|
|
219
|
+
row
|
|
220
|
+
})
|
|
221
|
+
})]
|
|
222
|
+
}, column.key)),
|
|
223
|
+
actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
224
|
+
className: "flex items-center justify-start gap-2 p-4 md:justify-end",
|
|
225
|
+
role: "cell",
|
|
226
|
+
children: actions.map((action, actionIndex) => /* @__PURE__ */ jsx(TableActionNode, { node: action }, action.key ?? action.id ?? actionIndex))
|
|
227
|
+
})
|
|
228
|
+
]
|
|
229
|
+
}, key);
|
|
230
|
+
})
|
|
231
|
+
})]
|
|
232
|
+
}),
|
|
233
|
+
hasLoaded && /* @__PURE__ */ jsx(TablePagination, {
|
|
234
|
+
pagination,
|
|
235
|
+
currentPage,
|
|
236
|
+
processing,
|
|
237
|
+
mode,
|
|
238
|
+
hasNextPage,
|
|
239
|
+
visiblePages,
|
|
240
|
+
infiniteLoaderRef,
|
|
241
|
+
onPage: goToPage,
|
|
242
|
+
onLoadMore: loadMore
|
|
243
|
+
})
|
|
244
|
+
]
|
|
245
|
+
})]
|
|
184
246
|
});
|
|
185
247
|
};
|
|
186
248
|
//#endregion
|