@lattice-php/lattice 0.2.0 → 0.4.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 +2 -2
- package/dist/action/components/action-form.js +35 -67
- package/dist/action/components/action-form.js.map +1 -1
- package/dist/action/components/action-group.js +18 -6
- 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.js +20 -13
- package/dist/action/components/action.js.map +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 +4 -0
- package/dist/chat/transport.js +67 -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 +25 -0
- package/dist/core/api.js +127 -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.js +3 -3
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/button.d.ts +1 -1
- package/dist/core/components/button.js +19 -15
- package/dist/core/components/button.js.map +1 -1
- package/dist/core/components/card.js +1 -1
- 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 +4 -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.js +6 -12
- 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 +76 -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.js +25 -13
- package/dist/core/components/fragment.js.map +1 -1
- package/dist/core/components/grid.js.map +1 -1
- package/dist/core/components/heading.js +1 -1
- package/dist/core/components/heading.js.map +1 -1
- package/dist/core/components/icon.js +1 -0
- package/dist/core/components/icon.js.map +1 -1
- package/dist/core/components/index.js +8 -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.js +12 -6
- package/dist/core/components/link.js.map +1 -1
- package/dist/core/components/modal.js +9 -31
- 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.js +8 -12
- package/dist/core/components/section.js.map +1 -1
- package/dist/core/components/segmented-control.js.map +1 -1
- package/dist/core/components/segmented-pills.js +1 -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.map +1 -1
- package/dist/core/components/stack.js +25 -8
- package/dist/core/components/stack.js.map +1 -1
- package/dist/core/components/tabs.js +1 -1
- package/dist/core/components/tabs.js.map +1 -1
- package/dist/core/components/text.js +17 -1
- 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 +4 -1
- package/dist/core/registry.js +10 -1
- package/dist/core/registry.js.map +1 -1
- package/dist/core/renderer.d.ts +8 -14
- package/dist/core/renderer.js +17 -27
- 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 +25 -9
- 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/affix-group.d.ts +17 -0
- package/dist/form/components/base/affix-group.js +49 -0
- package/dist/form/components/base/affix-group.js.map +1 -0
- package/dist/form/components/base/field.d.ts +2 -1
- package/dist/form/components/base/field.js +17 -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 +1 -1
- package/dist/form/components/base/label.js.map +1 -1
- package/dist/form/components/base/password-input.js.map +1 -1
- package/dist/form/components/base/submit-button.js +4 -2
- 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.js.map +1 -1
- package/dist/form/components/context.d.ts +1 -0
- package/dist/form/components/context.js +1 -0
- package/dist/form/components/context.js.map +1 -1
- package/dist/form/components/field-props.d.ts +4 -0
- package/dist/form/components/field-props.js.map +1 -1
- 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 +1 -1
- package/dist/form/components/fields/checkbox.js +14 -11
- package/dist/form/components/fields/checkbox.js.map +1 -1
- package/dist/form/components/fields/choice.d.ts +1 -1
- package/dist/form/components/fields/choice.js +5 -4
- package/dist/form/components/fields/choice.js.map +1 -1
- package/dist/form/components/fields/date-input.d.ts +1 -1
- package/dist/form/components/fields/date-input.js +2 -1
- 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 +282 -0
- package/dist/form/components/fields/file-upload.js.map +1 -0
- package/dist/form/components/fields/hidden-input.d.ts +1 -1
- package/dist/form/components/fields/hidden-input.js +11 -5
- package/dist/form/components/fields/hidden-input.js.map +1 -1
- package/dist/form/components/fields/number-input.d.ts +1 -1
- package/dist/form/components/fields/number-input.js +23 -15
- package/dist/form/components/fields/number-input.js.map +1 -1
- package/dist/form/components/fields/password-input.d.ts +1 -1
- package/dist/form/components/fields/password-input.js +42 -27
- 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 +1 -1
- package/dist/form/components/fields/rich-editor.js +39 -11
- 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 +1 -1
- package/dist/form/components/fields/select.js +69 -104
- package/dist/form/components/fields/select.js.map +1 -1
- package/dist/form/components/fields/simple-field.js +1 -0
- package/dist/form/components/fields/simple-field.js.map +1 -1
- 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 +1 -1
- package/dist/form/components/fields/text-input.js +19 -12
- package/dist/form/components/fields/text-input.js.map +1 -1
- package/dist/form/components/fields/textarea.d.ts +1 -1
- package/dist/form/components/fields/textarea.js +2 -1
- 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.js +24 -18
- package/dist/form/components/form.js.map +1 -1
- package/dist/form/components/index.d.ts +3 -0
- package/dist/form/components/index.js +4 -1
- 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.js +4 -1
- 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/use-controlled-field.d.ts +2 -0
- package/dist/form/components/use-controlled-field.js +13 -5
- package/dist/form/components/use-controlled-field.js.map +1 -1
- package/dist/form/components/use-dependent-field.js +7 -1
- 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 +6 -1
- package/dist/form/components/use-form-resolver.js +50 -5
- package/dist/form/components/use-form-resolver.js.map +1 -1
- package/dist/form/components/use-seed-default.js +8 -3
- package/dist/form/components/use-seed-default.js.map +1 -1
- package/dist/form/components/values.js +20 -5
- package/dist/form/components/values.js.map +1 -1
- package/dist/form/index.js +13 -10
- package/dist/form/index.js.map +1 -1
- package/dist/form/skeleton.js +5 -4
- package/dist/form/skeleton.js.map +1 -1
- package/dist/i18n/backend.d.ts +7 -5
- package/dist/i18n/backend.js +23 -8
- package/dist/i18n/backend.js.map +1 -1
- 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 +7 -1
- package/dist/i18n/index.js +5 -1
- package/dist/i18n/instance.d.ts +27 -0
- package/dist/i18n/instance.js +63 -16
- package/dist/i18n/instance.js.map +1 -1
- 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/i18n/translatable.d.ts +4 -0
- package/dist/i18n/translatable.js +24 -0
- package/dist/i18n/translatable.js.map +1 -0
- package/dist/index.d.ts +20 -8
- package/dist/index.js +19 -7
- package/dist/inertia.d.ts +2 -1
- package/dist/inertia.js +9 -2
- package/dist/inertia.js.map +1 -1
- package/dist/lattice.css +148 -22
- 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.js +9 -1
- package/dist/layout/components.js.map +1 -1
- package/dist/layout/context.d.ts +2 -10
- package/dist/layout/context.js +3 -14
- package/dist/layout/context.js.map +1 -1
- package/dist/layout/dropdown.d.ts +3 -0
- package/dist/layout/dropdown.js +24 -0
- package/dist/layout/dropdown.js.map +1 -0
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.js +3 -1
- package/dist/layout/menu-item.js +54 -62
- package/dist/layout/menu-item.js.map +1 -1
- package/dist/layout/menu.js.map +1 -1
- package/dist/layout/outlet.js +2 -2
- package/dist/layout/outlet.js.map +1 -1
- 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.js +2 -9
- package/dist/layout/schema-layout.js.map +1 -1
- package/dist/layout/sidebar.js +4 -4
- package/dist/layout/sidebar.js.map +1 -1
- package/dist/layout/topbar.d.ts +3 -0
- package/dist/layout/topbar.js +15 -0
- package/dist/layout/topbar.js.map +1 -0
- package/dist/page.js +16 -17
- package/dist/page.js.map +1 -1
- package/dist/provider.d.ts +2 -4
- package/dist/provider.js +5 -9
- package/dist/provider.js.map +1 -1
- package/dist/realtime/build-effects.d.ts +4 -0
- package/dist/realtime/build-effects.js +23 -0
- package/dist/realtime/build-effects.js.map +1 -0
- package/dist/realtime/listeners.d.ts +8 -0
- package/dist/realtime/listeners.js +31 -0
- package/dist/realtime/listeners.js.map +1 -0
- package/dist/realtime/subscriptions.d.ts +4 -0
- package/dist/realtime/subscriptions.js +45 -0
- package/dist/realtime/subscriptions.js.map +1 -0
- package/dist/registry.js +3 -1
- package/dist/registry.js.map +1 -1
- package/dist/remote/components/chat-box.d.ts +3 -0
- package/dist/remote/components/chat-box.js +65 -0
- package/dist/remote/components/chat-box.js.map +1 -0
- package/dist/remote/components/data-list.d.ts +10 -0
- package/dist/remote/components/data-list.js +106 -0
- package/dist/remote/components/data-list.js.map +1 -0
- package/dist/remote/index.d.ts +1 -0
- package/dist/remote/index.js +15 -0
- package/dist/remote/index.js.map +1 -0
- 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.js +1 -1
- package/dist/table/bulk.js.map +1 -1
- package/dist/table/components/bulk-bar.js +8 -5
- package/dist/table/components/bulk-bar.js.map +1 -1
- package/dist/table/components/cells/badge-cell.d.ts +2 -5
- package/dist/table/components/cells/badge-cell.js +3 -3
- package/dist/table/components/cells/badge-cell.js.map +1 -1
- 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 -5
- package/dist/table/components/cells/icon-cell.js +4 -5
- package/dist/table/components/cells/icon-cell.js.map +1 -1
- package/dist/table/components/cells/image-cell.d.ts +2 -5
- package/dist/table/components/cells/image-cell.js +4 -5
- package/dist/table/components/cells/image-cell.js.map +1 -1
- 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 -6
- package/dist/table/components/cells/text-cell.js +6 -7
- package/dist/table/components/cells/text-cell.js.map +1 -1
- package/dist/table/components/column-filter-control.d.ts +4 -1
- package/dist/table/components/column-filter-control.js +82 -11
- 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 +11 -8
- package/dist/table/components/column-header.js.map +1 -1
- package/dist/table/components/filter-bar.d.ts +16 -0
- package/dist/table/components/filter-bar.js +104 -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.js +4 -3
- package/dist/table/components/filter-stack-bar.js.map +1 -1
- package/dist/table/components/filter-value-input.d.ts +1 -0
- package/dist/table/components/filter-value-input.js +7 -6
- package/dist/table/components/filter-value-input.js.map +1 -1
- package/dist/table/components/pagination.js +1 -1
- package/dist/table/components/pagination.js.map +1 -1
- package/dist/table/components/sort-bar.js +1 -1
- package/dist/table/components/sort-bar.js.map +1 -1
- package/dist/table/components/table-action-node.js.map +1 -1
- package/dist/table/components/table-cell.d.ts +1 -1
- package/dist/table/components/table-cell.js +18 -28
- package/dist/table/components/table-cell.js.map +1 -1
- package/dist/table/components/table.js +200 -152
- 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.map +1 -1
- package/dist/table/index.js.map +1 -1
- package/dist/table/payload.js +24 -3
- package/dist/table/payload.js.map +1 -1
- package/dist/table/query.d.ts +10 -1
- package/dist/table/query.js +60 -6
- 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 +9 -19
- package/dist/table/use-table.d.ts +8 -2
- package/dist/table/use-table.js +61 -7
- 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 +4 -0
- package/dist/toast/index.js +3 -1
- package/dist/toast/toast.d.ts +14 -0
- package/dist/toast/toast.js +54 -0
- package/dist/toast/toast.js.map +1 -0
- package/dist/toast/toaster.js +14 -77
- package/dist/toast/toaster.js.map +1 -1
- 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 +547 -103
- 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 +130 -13
- package/resources/icons/rotate-ccw.svg +16 -0
- package/dist/_virtual/_rolldown/runtime.js +0 -8
- package/dist/action/effects.d.ts +0 -11
- package/dist/action/effects.js +0 -44
- package/dist/action/effects.js.map +0 -1
- package/dist/form/components/base/checkbox.js.map +0 -1
- package/dist/node_modules/i18next/dist/esm/i18next.js +0 -1982
- package/dist/node_modules/i18next/dist/esm/i18next.js.map +0 -1
- package/dist/node_modules/i18next-http-backend/esm/index.js +0 -352
- package/dist/node_modules/i18next-http-backend/esm/index.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/context.js +0 -23
- package/dist/node_modules/react-i18next/dist/es/context.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/defaults.js +0 -29
- package/dist/node_modules/react-i18next/dist/es/defaults.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/i18nInstance.js +0 -10
- package/dist/node_modules/react-i18next/dist/es/i18nInstance.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/initReactI18next.js +0 -14
- package/dist/node_modules/react-i18next/dist/es/initReactI18next.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/unescape.js +0 -30
- package/dist/node_modules/react-i18next/dist/es/unescape.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js +0 -157
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js.map +0 -1
- package/dist/node_modules/react-i18next/dist/es/utils.js +0 -58
- package/dist/node_modules/react-i18next/dist/es/utils.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -70
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -61
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/shim/index.js +0 -13
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +0 -1
- package/dist/table/column-registry.d.ts +0 -9
- package/dist/test-support.d.ts +0 -14
- package/dist/test-support.js +0 -14
- package/dist/test-support.js.map +0 -1
- /package/dist/{table/column-registry.js → chat/types.js} +0 -0
- /package/dist/{form/components/base → core/components}/checkbox.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort-bar.js","names":[],"sources":["../../../resources/js/table/components/sort-bar.tsx"],"sourcesContent":["import { Icon } from \"@lattice/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"}
|
|
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-lt-sm 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"}
|
|
@@ -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.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
|
+
{"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"}
|
|
@@ -2,4 +2,4 @@ import { TableColumn, TableRow } from '../types';
|
|
|
2
2
|
export declare function ColumnCell({ column, row }: {
|
|
3
3
|
column: TableColumn;
|
|
4
4
|
row: TableRow;
|
|
5
|
-
}):
|
|
5
|
+
}): import("react").JSX.Element;
|
|
@@ -1,39 +1,29 @@
|
|
|
1
|
-
import { useColumnRegistry } from "../../
|
|
1
|
+
import { useColumnRegistry } from "../../core/registry-context.js";
|
|
2
|
+
import { columnCell } from "../registry.js";
|
|
2
3
|
import { BadgeCell } from "./cells/badge-cell.js";
|
|
4
|
+
import { BooleanCell } from "./cells/boolean-cell.js";
|
|
3
5
|
import { IconCell } from "./cells/icon-cell.js";
|
|
4
6
|
import { ImageCell } from "./cells/image-cell.js";
|
|
7
|
+
import { MoneyCell } from "./cells/money-cell.js";
|
|
8
|
+
import { NumberCell } from "./cells/number-cell.js";
|
|
5
9
|
import { TextCell } from "./cells/text-cell.js";
|
|
10
|
+
import { StackCell } from "./cells/stack-cell.js";
|
|
6
11
|
import { jsx } from "react/jsx-runtime";
|
|
7
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
|
+
};
|
|
8
23
|
function ColumnCell({ column, row }) {
|
|
9
|
-
|
|
10
|
-
if (customRenderer) return customRenderer({
|
|
11
|
-
column,
|
|
12
|
-
row,
|
|
13
|
-
value: row[column.key]
|
|
14
|
-
});
|
|
15
|
-
if (column.type === "stack") return /* @__PURE__ */ jsx("div", {
|
|
16
|
-
className: "grid gap-1",
|
|
17
|
-
children: (column.columns ?? []).map((stackedColumn) => /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(TextCell, {
|
|
18
|
-
column: stackedColumn,
|
|
19
|
-
row,
|
|
20
|
-
value: row[stackedColumn.key]
|
|
21
|
-
}) }, stackedColumn.key))
|
|
22
|
-
});
|
|
23
|
-
if (column.type === "badge") return /* @__PURE__ */ jsx(BadgeCell, {
|
|
24
|
-
column,
|
|
25
|
-
value: row[column.key]
|
|
26
|
-
});
|
|
27
|
-
if (column.type === "icon") return /* @__PURE__ */ jsx(IconCell, {
|
|
28
|
-
column,
|
|
29
|
-
value: row[column.key]
|
|
30
|
-
});
|
|
31
|
-
if (column.type === "image") return /* @__PURE__ */ jsx(ImageCell, {
|
|
32
|
-
column,
|
|
33
|
-
value: row[column.key]
|
|
34
|
-
});
|
|
35
|
-
return /* @__PURE__ */ jsx(TextCell, {
|
|
24
|
+
return /* @__PURE__ */ jsx(useColumnRegistry()[column.type] ?? builtinColumnCells[column.type] ?? builtinColumnCells["column.text"], {
|
|
36
25
|
column,
|
|
26
|
+
props: column.props ?? {},
|
|
37
27
|
row,
|
|
38
28
|
value: row[column.key]
|
|
39
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-cell.js","names":[],"sources":["../../../resources/js/table/components/table-cell.tsx"],"sourcesContent":["import { useColumnRegistry } from \"../../provider\";\nimport type { TableColumn, TableRow } from \"../types\";\nimport { BadgeCell } from \"./cells/badge-cell\";\nimport { IconCell } from \"./cells/icon-cell\";\nimport { ImageCell } from \"./cells/image-cell\";\nimport {
|
|
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,12 +1,19 @@
|
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { nodeIdentity } from "../../core/test-id.js";
|
|
3
|
+
import { Icon } from "../../icons/sprite.js";
|
|
1
4
|
import { useT } from "../../i18n/instance.js";
|
|
5
|
+
import { useColumnResizing } from "../../core/use-column-resizing.js";
|
|
6
|
+
import { alignJustifyItems, alignText } from "../align.js";
|
|
2
7
|
import { getBulkActions } from "../bulk.js";
|
|
3
8
|
import { flattenColumns, getRowActions, getRowKey } from "../payload.js";
|
|
4
|
-
import {
|
|
9
|
+
import { getQueryParams, getTableSizingColumns, getTableUtilityTracks, getVisiblePages } from "../query.js";
|
|
5
10
|
import { useTableSelection } from "../use-table-selection.js";
|
|
6
11
|
import { useTable } from "../use-table.js";
|
|
12
|
+
import { Checkbox } from "../../core/components/checkbox.js";
|
|
7
13
|
import { BulkBar } from "./bulk-bar.js";
|
|
8
14
|
import { ColumnFilterControl } from "./column-filter-control.js";
|
|
9
15
|
import { ColumnHeader } from "./column-header.js";
|
|
16
|
+
import { FilterBar, FilterMenu } from "./filter-bar.js";
|
|
10
17
|
import { FilterStackBar } from "./filter-stack-bar.js";
|
|
11
18
|
import { TablePagination } from "./pagination.js";
|
|
12
19
|
import { SortBar } from "./sort-bar.js";
|
|
@@ -17,7 +24,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
17
24
|
//#region resources/js/table/components/table.tsx
|
|
18
25
|
var TableComponent = ({ node }) => {
|
|
19
26
|
const { t } = useT("lattice");
|
|
20
|
-
const { columns, rows, pagination, state, filters, addFilter, updateFilter, removeFilter, processing, hasLoaded, infiniteLoaderRef, sort, clearSort, goToPage, loadMore } = useTable(node);
|
|
27
|
+
const { columns, rows, pagination, state, filters, tableFilters, addFilter, updateFilter, removeFilter, replaceColumnFilters, setTableFilter, resetFilters, searchFilterOptions, processing, hasLoaded, infiniteLoaderRef, sort, clearSort, goToPage, loadMore } = useTable(node);
|
|
21
28
|
const bulkActions = useMemo(() => getBulkActions(node.props?.bulkActions), [node.props?.bulkActions]);
|
|
22
29
|
const hasBulkActions = bulkActions.length > 0;
|
|
23
30
|
const rowEntries = useMemo(() => rows.map((row, index) => ({
|
|
@@ -39,171 +46,212 @@ var TableComponent = ({ node }) => {
|
|
|
39
46
|
clause,
|
|
40
47
|
index
|
|
41
48
|
}));
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
]);
|
|
49
|
+
const filterDefinitions = useMemo(() => Array.isArray(node.props?.filters) ? node.props.filters : [], [node.props?.filters]);
|
|
50
|
+
const hasDedicatedFilters = filterDefinitions.length > 0;
|
|
51
|
+
const hasActiveFilters = filters.length > 0 || Object.keys(tableFilters).length > 0;
|
|
52
|
+
const hasTrailingUtility = hasActions || hasDedicatedFilters;
|
|
53
|
+
const sizingColumns = useMemo(() => getTableSizingColumns(columns), [columns]);
|
|
54
|
+
const utilityTracks = useMemo(() => getTableUtilityTracks(hasTrailingUtility, hasBulkActions), [hasTrailingUtility, hasBulkActions]);
|
|
55
|
+
const resizingEnabled = node.props?.resizableColumns === true;
|
|
56
|
+
const resizeStorageIdentity = nodeIdentity(node);
|
|
57
|
+
const { getResizeHandleProps, gridTemplateColumns, hasOverrides, resetColumns } = useColumnResizing({
|
|
58
|
+
columns: sizingColumns,
|
|
59
|
+
enabled: resizingEnabled,
|
|
60
|
+
leadingTracks: utilityTracks.leadingTracks,
|
|
61
|
+
showIndicator: node.props?.resizeIndicator === true,
|
|
62
|
+
storageKey: resizingEnabled && resizeStorageIdentity ? `lattice:table-columns:${resizeStorageIdentity}` : void 0,
|
|
63
|
+
trailingTracks: utilityTracks.trailingTracks
|
|
64
|
+
});
|
|
47
65
|
return /* @__PURE__ */ jsxs("div", {
|
|
48
66
|
"data-lattice-component": node.id,
|
|
49
|
-
className: "
|
|
50
|
-
children: [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
className: "relative",
|
|
68
|
+
children: [hasOverrides && /* @__PURE__ */ jsx("button", {
|
|
69
|
+
"aria-label": t("a11y.resetColumnWidths", "Reset column widths"),
|
|
70
|
+
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",
|
|
71
|
+
"data-test": "table-reset-columns",
|
|
72
|
+
onClick: resetColumns,
|
|
73
|
+
title: t("a11y.resetColumnWidths", "Reset column widths"),
|
|
74
|
+
type: "button",
|
|
75
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
76
|
+
name: "rotate-ccw",
|
|
77
|
+
className: "size-lt-icon-sm"
|
|
78
|
+
})
|
|
79
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
80
|
+
className: "overflow-x-auto rounded-lt-sm border border-lt-border",
|
|
81
|
+
children: [
|
|
82
|
+
hasDedicatedFilters && hasActiveFilters && /* @__PURE__ */ jsx(FilterBar, {
|
|
83
|
+
filters: filterDefinitions,
|
|
84
|
+
values: tableFilters,
|
|
85
|
+
processing,
|
|
86
|
+
hasActiveFilters,
|
|
87
|
+
onChange: setTableFilter,
|
|
88
|
+
onReset: resetFilters
|
|
89
|
+
}),
|
|
90
|
+
hasBulkActions && selection.active && /* @__PURE__ */ jsx(BulkBar, {
|
|
91
|
+
actions: bulkActions,
|
|
92
|
+
selectedKeys: selection.selectedKeys,
|
|
93
|
+
allMatching: selection.allMatching,
|
|
94
|
+
total: pagination.total ?? void 0,
|
|
95
|
+
query: getQueryParams(state),
|
|
96
|
+
canSelectAllMatching: selection.allVisibleSelected && !selection.allMatching && pagination.total != null && pagination.total > selection.selectedKeys.length,
|
|
97
|
+
onSelectAllMatching: selection.selectAllMatching,
|
|
98
|
+
onCompleted: selection.clear
|
|
99
|
+
}),
|
|
100
|
+
filters.length > 0 && /* @__PURE__ */ jsx(FilterStackBar, {
|
|
101
|
+
filters,
|
|
102
|
+
columnsByKey,
|
|
103
|
+
processing,
|
|
104
|
+
onRemove: removeFilter
|
|
105
|
+
}),
|
|
106
|
+
state.sorts.length > 0 && /* @__PURE__ */ jsx(SortBar, {
|
|
107
|
+
columnsByKey,
|
|
108
|
+
state,
|
|
109
|
+
processing,
|
|
110
|
+
onClear: clearSort
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ jsxs("div", {
|
|
113
|
+
className: "min-w-full text-base",
|
|
114
|
+
role: "table",
|
|
79
115
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
80
|
-
className: "
|
|
81
|
-
role: "
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
sort,
|
|
99
|
-
state
|
|
100
|
-
}, column.key)),
|
|
101
|
-
hasActions && /* @__PURE__ */ jsx("div", {
|
|
102
|
-
className: "px-4 py-3 text-right align-middle font-medium text-lt-muted-fg",
|
|
103
|
-
role: "columnheader",
|
|
104
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
105
|
-
className: "sr-only",
|
|
106
|
-
children: node.props?.actionsLabel
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
]
|
|
110
|
-
}), hasFilters && /* @__PURE__ */ jsxs("div", {
|
|
111
|
-
className: "hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
112
|
-
role: "row",
|
|
113
|
-
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
114
|
-
children: [
|
|
115
|
-
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
116
|
-
className: "px-4 py-2",
|
|
117
|
-
role: "cell"
|
|
118
|
-
}),
|
|
119
|
-
columns.map((column) => /* @__PURE__ */ jsx("div", {
|
|
120
|
-
className: "min-w-0 px-2 py-2",
|
|
121
|
-
role: "cell",
|
|
122
|
-
children: column.filter?.enabled && /* @__PURE__ */ jsx(ColumnFilterControl, {
|
|
116
|
+
className: "border-b border-lt-border bg-lt-muted/50",
|
|
117
|
+
role: "rowgroup",
|
|
118
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
119
|
+
className: "hidden min-w-full md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
120
|
+
role: "row",
|
|
121
|
+
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
122
|
+
children: [
|
|
123
|
+
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
124
|
+
className: "flex items-center px-4 py-3",
|
|
125
|
+
role: "columnheader",
|
|
126
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
127
|
+
"aria-label": t("a11y.selectAllRows", "Select all rows"),
|
|
128
|
+
"data-test": "select-all",
|
|
129
|
+
checked: selection.allSelected,
|
|
130
|
+
onCheckedChange: () => selection.toggleAll()
|
|
131
|
+
})
|
|
132
|
+
}),
|
|
133
|
+
columns.map((column, index) => /* @__PURE__ */ jsx(ColumnHeader, {
|
|
123
134
|
column,
|
|
124
|
-
clauses: filterEntries.filter((entry) => entry.clause.field === column.key),
|
|
125
135
|
processing,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
resizeHandleProps: resizingEnabled ? getResizeHandleProps(sizingColumns[index]) : void 0,
|
|
137
|
+
sort,
|
|
138
|
+
state
|
|
139
|
+
}, column.key)),
|
|
140
|
+
hasTrailingUtility && /* @__PURE__ */ jsxs("div", {
|
|
141
|
+
className: "flex items-center justify-end gap-2 px-4 py-2 align-middle font-semibold text-lt-fg",
|
|
142
|
+
role: "columnheader",
|
|
143
|
+
children: [hasDedicatedFilters && /* @__PURE__ */ jsx(FilterMenu, {
|
|
144
|
+
filters: filterDefinitions,
|
|
145
|
+
values: tableFilters,
|
|
146
|
+
processing,
|
|
147
|
+
onChange: setTableFilter,
|
|
148
|
+
onSearch: searchFilterOptions
|
|
149
|
+
}), hasActions && /* @__PURE__ */ jsx("span", {
|
|
150
|
+
className: "sr-only",
|
|
151
|
+
children: node.props?.actionsLabel
|
|
152
|
+
})]
|
|
129
153
|
})
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
role: "cell"
|
|
134
|
-
})
|
|
135
|
-
]
|
|
136
|
-
})]
|
|
137
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
138
|
-
role: "rowgroup",
|
|
139
|
-
children: !hasLoaded ? /* @__PURE__ */ jsx("div", {
|
|
140
|
-
className: "p-4 text-lt-muted-fg",
|
|
141
|
-
role: "row",
|
|
142
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
143
|
-
role: "cell",
|
|
144
|
-
children: t("table.loading", "Loading rows...")
|
|
145
|
-
})
|
|
146
|
-
}) : rowEntries.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
147
|
-
className: "p-8 text-center text-lt-muted-fg",
|
|
148
|
-
role: "row",
|
|
149
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
150
|
-
role: "cell",
|
|
151
|
-
children: node.props?.emptyLabel
|
|
152
|
-
})
|
|
153
|
-
}) : rowEntries.map(({ row, actions, key }) => {
|
|
154
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
155
|
-
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" : ""}`,
|
|
154
|
+
]
|
|
155
|
+
}), hasFilters && /* @__PURE__ */ jsxs("div", {
|
|
156
|
+
className: "hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]",
|
|
156
157
|
role: "row",
|
|
157
158
|
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
158
159
|
children: [
|
|
159
160
|
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
160
|
-
className: "
|
|
161
|
-
role: "cell"
|
|
162
|
-
children: /* @__PURE__ */ jsx("input", {
|
|
163
|
-
type: "checkbox",
|
|
164
|
-
"aria-label": t("a11y.selectRow", "Select row {{key}}", { key }),
|
|
165
|
-
"data-test": `select-row-${key}`,
|
|
166
|
-
checked: selection.isSelected(key),
|
|
167
|
-
onChange: () => selection.toggle(key)
|
|
168
|
-
})
|
|
161
|
+
className: "px-4 py-2",
|
|
162
|
+
role: "cell"
|
|
169
163
|
}),
|
|
170
|
-
columns.map((column) => /* @__PURE__ */
|
|
171
|
-
className: "
|
|
164
|
+
columns.map((column) => /* @__PURE__ */ jsx("div", {
|
|
165
|
+
className: "min-w-0 px-2 py-2",
|
|
172
166
|
role: "cell",
|
|
173
|
-
children:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
})]
|
|
167
|
+
children: column.filter?.enabled && /* @__PURE__ */ jsx(ColumnFilterControl, {
|
|
168
|
+
column,
|
|
169
|
+
clauses: filterEntries.filter((entry) => entry.clause.field === column.key),
|
|
170
|
+
processing,
|
|
171
|
+
onAdd: addFilter,
|
|
172
|
+
onUpdate: updateFilter,
|
|
173
|
+
onRemove: removeFilter,
|
|
174
|
+
onReplace: replaceColumnFilters,
|
|
175
|
+
onSearch: (query) => searchFilterOptions(column.key, query)
|
|
176
|
+
})
|
|
184
177
|
}, column.key)),
|
|
185
|
-
|
|
186
|
-
className: "
|
|
187
|
-
role: "cell"
|
|
188
|
-
children: actions.map((action, actionIndex) => /* @__PURE__ */ jsx(TableActionNode, { node: action }, action.key ?? action.id ?? actionIndex))
|
|
178
|
+
hasTrailingUtility && /* @__PURE__ */ jsx("div", {
|
|
179
|
+
className: "px-4 py-2",
|
|
180
|
+
role: "cell"
|
|
189
181
|
})
|
|
190
182
|
]
|
|
191
|
-
}
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
183
|
+
})]
|
|
184
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
185
|
+
role: "rowgroup",
|
|
186
|
+
children: !hasLoaded ? /* @__PURE__ */ jsx("div", {
|
|
187
|
+
className: "p-4 text-lt-muted-fg",
|
|
188
|
+
role: "row",
|
|
189
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
190
|
+
role: "cell",
|
|
191
|
+
children: t("table.loading", "Loading rows...")
|
|
192
|
+
})
|
|
193
|
+
}) : rowEntries.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
194
|
+
className: "p-8 text-center text-lt-muted-fg",
|
|
195
|
+
role: "row",
|
|
196
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
197
|
+
role: "cell",
|
|
198
|
+
children: node.props?.emptyLabel
|
|
199
|
+
})
|
|
200
|
+
}) : rowEntries.map(({ row, actions, key }) => {
|
|
201
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
202
|
+
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" : ""}`,
|
|
203
|
+
role: "row",
|
|
204
|
+
style: { "--lattice-table-columns": gridTemplateColumns },
|
|
205
|
+
children: [
|
|
206
|
+
hasBulkActions && /* @__PURE__ */ jsx("div", {
|
|
207
|
+
className: "flex items-center p-4",
|
|
208
|
+
role: "cell",
|
|
209
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
210
|
+
"aria-label": t("a11y.selectRow", "Select row {{key}}", { key }),
|
|
211
|
+
"data-test": `select-row-${key}`,
|
|
212
|
+
checked: selection.isSelected(key),
|
|
213
|
+
onCheckedChange: () => selection.toggle(key)
|
|
214
|
+
})
|
|
215
|
+
}),
|
|
216
|
+
columns.map((column) => /* @__PURE__ */ jsxs("div", {
|
|
217
|
+
className: cn("grid min-w-0 gap-1 overflow-hidden p-4 align-middle", alignText(column.align), alignJustifyItems(column.align)),
|
|
218
|
+
role: "cell",
|
|
219
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
220
|
+
"aria-hidden": "true",
|
|
221
|
+
className: "text-xs font-medium text-lt-muted-fg md:hidden",
|
|
222
|
+
children: column.label
|
|
223
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
224
|
+
"data-slot": "table-cell-content",
|
|
225
|
+
className: "min-w-0 max-w-full overflow-hidden truncate",
|
|
226
|
+
children: /* @__PURE__ */ jsx(ColumnCell, {
|
|
227
|
+
column,
|
|
228
|
+
row
|
|
229
|
+
})
|
|
230
|
+
})]
|
|
231
|
+
}, column.key)),
|
|
232
|
+
hasTrailingUtility && /* @__PURE__ */ jsx("div", {
|
|
233
|
+
className: cn("items-center justify-start gap-2 p-4 md:justify-end", actions.length > 0 ? "flex" : "hidden md:flex"),
|
|
234
|
+
role: "cell",
|
|
235
|
+
children: actions.map((action, actionIndex) => /* @__PURE__ */ jsx(TableActionNode, { node: action }, action.key ?? action.id ?? actionIndex))
|
|
236
|
+
})
|
|
237
|
+
]
|
|
238
|
+
}, key);
|
|
239
|
+
})
|
|
240
|
+
})]
|
|
241
|
+
}),
|
|
242
|
+
hasLoaded && /* @__PURE__ */ jsx(TablePagination, {
|
|
243
|
+
pagination,
|
|
244
|
+
currentPage,
|
|
245
|
+
processing,
|
|
246
|
+
mode,
|
|
247
|
+
hasNextPage,
|
|
248
|
+
visiblePages,
|
|
249
|
+
infiniteLoaderRef,
|
|
250
|
+
onPage: goToPage,
|
|
251
|
+
onLoadMore: loadMore
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
})]
|
|
207
255
|
});
|
|
208
256
|
};
|
|
209
257
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","names":[],"sources":["../../../resources/js/table/components/table.tsx"],"sourcesContent":["import { type ReactNode, useMemo } from \"react\";\nimport { useT } from \"@lattice/lattice/i18n\";\nimport type { TableNode } from \"../types\";\nimport { getBulkActions } from \"../bulk\";\nimport { flattenColumns, getRowActions, getRowKey } from \"../payload\";\nimport { getColumnGridTemplate, getQueryParams, getVisiblePages } from \"../query\";\nimport { useTable } from \"../use-table\";\nimport { useTableSelection } from \"../use-table-selection\";\nimport { BulkBar } from \"./bulk-bar\";\nimport { ColumnFilterControl } from \"./column-filter-control\";\nimport { ColumnHeader } from \"./column-header\";\nimport { FilterStackBar } from \"./filter-stack-bar\";\nimport { TablePagination } from \"./pagination\";\nimport { SortBar } from \"./sort-bar\";\nimport { TableActionNode } from \"./table-action-node\";\nimport { ColumnCell } from \"./table-cell\";\n\nconst TableComponent = ({ node }: { children?: ReactNode; node: TableNode }) => {\n const { t } = useT(\"lattice\");\n const {\n columns,\n rows,\n pagination,\n state,\n filters,\n addFilter,\n updateFilter,\n removeFilter,\n processing,\n hasLoaded,\n infiniteLoaderRef,\n sort,\n clearSort,\n goToPage,\n loadMore,\n } = useTable(node);\n\n const bulkActions = useMemo(\n () => getBulkActions(node.props?.bulkActions),\n [node.props?.bulkActions],\n );\n const hasBulkActions = bulkActions.length > 0;\n const rowEntries = useMemo(\n () =>\n rows.map((row, index) => ({ row, actions: getRowActions(row), key: getRowKey(row, index) })),\n [rows],\n );\n const selection = useTableSelection(rowEntries.map((entry) => entry.key));\n\n const columnsByKey = useMemo(\n () => new Map(flattenColumns(columns).map((column) => [column.key, column])),\n [columns],\n );\n const currentPage = pagination.currentPage ?? state.page;\n const lastPage = pagination.lastPage ?? currentPage;\n const mode = pagination.mode ?? \"table\";\n const visiblePages = getVisiblePages(currentPage, lastPage);\n const hasNextPage = pagination.hasMore ?? currentPage < lastPage;\n const hasActions = rowEntries.some((entry) => entry.actions.length > 0);\n const striped = node.props?.striped === true;\n const hasFilters = columns.some((column) => column.filter?.enabled);\n const filterEntries = filters.map((clause, index) => ({ clause, index }));\n const gridTemplateColumns = useMemo(\n () => getColumnGridTemplate(columns, hasActions, hasBulkActions),\n [columns, hasActions, hasBulkActions],\n );\n\n return (\n <div\n data-lattice-component={node.id}\n className=\"overflow-x-auto rounded-lt-sm border border-lt-border\"\n >\n {hasBulkActions && selection.active && (\n <BulkBar\n actions={bulkActions}\n selectedKeys={selection.selectedKeys}\n allMatching={selection.allMatching}\n total={pagination.total}\n query={getQueryParams(state)}\n canSelectAllMatching={\n selection.allVisibleSelected &&\n !selection.allMatching &&\n pagination.total !== undefined &&\n pagination.total > selection.selectedKeys.length\n }\n onSelectAllMatching={selection.selectAllMatching}\n onCompleted={selection.clear}\n />\n )}\n {filters.length > 0 && (\n <FilterStackBar\n filters={filters}\n columnsByKey={columnsByKey}\n processing={processing}\n onRemove={removeFilter}\n />\n )}\n {state.sorts.length > 0 && (\n <SortBar\n columnsByKey={columnsByKey}\n state={state}\n processing={processing}\n onClear={clearSort}\n />\n )}\n <div className=\"min-w-full text-sm\" role=\"table\">\n <div className=\"border-b border-lt-border bg-lt-muted/50\" role=\"rowgroup\">\n <div\n className=\"hidden min-w-full md:grid md:grid-cols-[var(--lattice-table-columns)]\"\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && (\n <div className=\"flex items-center px-4 py-3\" role=\"columnheader\">\n <input\n type=\"checkbox\"\n aria-label={t(\"a11y.selectAllRows\", \"Select all rows\")}\n data-test=\"select-all\"\n checked={selection.allSelected}\n onChange={selection.toggleAll}\n />\n </div>\n )}\n {columns.map((column) => (\n <ColumnHeader\n column={column}\n key={column.key}\n processing={processing}\n sort={sort}\n state={state}\n />\n ))}\n {hasActions && (\n <div\n className=\"px-4 py-3 text-right align-middle font-medium text-lt-muted-fg\"\n role=\"columnheader\"\n >\n <span className=\"sr-only\">{node.props?.actionsLabel}</span>\n </div>\n )}\n </div>\n {hasFilters && (\n <div\n className=\"hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]\"\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && <div className=\"px-4 py-2\" role=\"cell\" />}\n {columns.map((column) => (\n <div key={column.key} className=\"min-w-0 px-2 py-2\" role=\"cell\">\n {column.filter?.enabled && (\n <ColumnFilterControl\n column={column}\n clauses={filterEntries.filter((entry) => entry.clause.field === column.key)}\n processing={processing}\n onAdd={addFilter}\n onUpdate={updateFilter}\n onRemove={removeFilter}\n />\n )}\n </div>\n ))}\n {hasActions && <div className=\"px-4 py-2\" role=\"cell\" />}\n </div>\n )}\n </div>\n <div role=\"rowgroup\">\n {!hasLoaded ? (\n <div className=\"p-4 text-lt-muted-fg\" role=\"row\">\n <div role=\"cell\">{t(\"table.loading\", \"Loading rows...\")}</div>\n </div>\n ) : rowEntries.length === 0 ? (\n <div className=\"p-8 text-center text-lt-muted-fg\" role=\"row\">\n <div role=\"cell\">{node.props?.emptyLabel}</div>\n </div>\n ) : (\n rowEntries.map(({ row, actions, key }) => {\n return (\n <div\n key={key}\n className={`grid grid-cols-1 border-b border-lt-border last:border-b-0 md:grid-cols-[var(--lattice-table-columns)] ${\n striped ? \"odd:bg-lt-muted/30\" : \"\"\n }`}\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && (\n <div className=\"flex items-center p-4\" role=\"cell\">\n <input\n type=\"checkbox\"\n aria-label={t(\"a11y.selectRow\", \"Select row {{key}}\", { key })}\n data-test={`select-row-${key}`}\n checked={selection.isSelected(key)}\n onChange={() => selection.toggle(key)}\n />\n </div>\n )}\n {columns.map((column) => (\n <div\n key={column.key}\n className=\"grid min-w-0 gap-1 p-4 align-middle\"\n role=\"cell\"\n >\n <span\n aria-hidden=\"true\"\n className=\"text-xs font-medium text-lt-muted-fg md:hidden\"\n >\n {column.label}\n </span>\n <div className=\"min-w-0 truncate\">\n <ColumnCell column={column} row={row} />\n </div>\n </div>\n ))}\n {actions.length > 0 && (\n <div\n className=\"flex items-center justify-start gap-2 p-4 md:justify-end\"\n role=\"cell\"\n >\n {actions.map((action, actionIndex) => (\n <TableActionNode\n key={action.key ?? action.id ?? actionIndex}\n node={action}\n />\n ))}\n </div>\n )}\n </div>\n );\n })\n )}\n </div>\n </div>\n {hasLoaded && (\n <TablePagination\n pagination={pagination}\n currentPage={currentPage}\n processing={processing}\n mode={mode}\n hasNextPage={hasNextPage}\n visiblePages={visiblePages}\n infiniteLoaderRef={infiniteLoaderRef}\n onPage={goToPage}\n onLoadMore={loadMore}\n />\n )}\n </div>\n );\n};\n\nexport default TableComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../resources/js/table/components/table.tsx"],"sourcesContent":["import { type ReactNode, useMemo } from \"react\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport { useColumnResizing } from \"@lattice-php/lattice/core/use-column-resizing\";\nimport { nodeIdentity } from \"@lattice-php/lattice/core/test-id\";\nimport { Checkbox } from \"@lattice-php/lattice/core/components/checkbox\";\nimport { Icon } from \"@lattice-php/lattice/icons\";\nimport { alignJustifyItems, alignText } from \"../align\";\nimport type { TableNode } from \"../types\";\nimport { getBulkActions } from \"../bulk\";\nimport { flattenColumns, getRowActions, getRowKey } from \"../payload\";\nimport {\n getQueryParams,\n getTableSizingColumns,\n getTableUtilityTracks,\n getVisiblePages,\n} from \"../query\";\nimport { useTable } from \"../use-table\";\nimport { useTableSelection } from \"../use-table-selection\";\nimport { BulkBar } from \"./bulk-bar\";\nimport { ColumnFilterControl } from \"./column-filter-control\";\nimport { ColumnHeader } from \"./column-header\";\nimport { FilterBar, FilterMenu } from \"./filter-bar\";\nimport { FilterStackBar } from \"./filter-stack-bar\";\nimport { TablePagination } from \"./pagination\";\nimport { SortBar } from \"./sort-bar\";\nimport { TableActionNode } from \"./table-action-node\";\nimport { ColumnCell } from \"./table-cell\";\n\nconst TableComponent = ({ node }: { children?: ReactNode; node: TableNode }) => {\n const { t } = useT(\"lattice\");\n const {\n columns,\n rows,\n pagination,\n state,\n filters,\n tableFilters,\n addFilter,\n updateFilter,\n removeFilter,\n replaceColumnFilters,\n setTableFilter,\n resetFilters,\n searchFilterOptions,\n processing,\n hasLoaded,\n infiniteLoaderRef,\n sort,\n clearSort,\n goToPage,\n loadMore,\n } = useTable(node);\n\n const bulkActions = useMemo(\n () => getBulkActions(node.props?.bulkActions),\n [node.props?.bulkActions],\n );\n const hasBulkActions = bulkActions.length > 0;\n const rowEntries = useMemo(\n () =>\n rows.map((row, index) => ({ row, actions: getRowActions(row), key: getRowKey(row, index) })),\n [rows],\n );\n const selection = useTableSelection(rowEntries.map((entry) => entry.key));\n\n const columnsByKey = useMemo(\n () => new Map(flattenColumns(columns).map((column) => [column.key, column])),\n [columns],\n );\n const currentPage = pagination.currentPage ?? state.page;\n const lastPage = pagination.lastPage ?? currentPage;\n const mode = pagination.mode ?? \"table\";\n const visiblePages = getVisiblePages(currentPage, lastPage);\n const hasNextPage = pagination.hasMore ?? currentPage < lastPage;\n const hasActions = rowEntries.some((entry) => entry.actions.length > 0);\n const striped = node.props?.striped === true;\n const hasFilters = columns.some((column) => column.filter?.enabled);\n const filterEntries = filters.map((clause, index) => ({ clause, index }));\n const filterDefinitions = useMemo(\n () => (Array.isArray(node.props?.filters) ? node.props.filters : []),\n [node.props?.filters],\n );\n const hasDedicatedFilters = filterDefinitions.length > 0;\n const hasActiveFilters = filters.length > 0 || Object.keys(tableFilters).length > 0;\n const hasTrailingUtility = hasActions || hasDedicatedFilters;\n const sizingColumns = useMemo(() => getTableSizingColumns(columns), [columns]);\n const utilityTracks = useMemo(\n () => getTableUtilityTracks(hasTrailingUtility, hasBulkActions),\n [hasTrailingUtility, hasBulkActions],\n );\n const resizingEnabled = node.props?.resizableColumns === true;\n const resizeStorageIdentity = nodeIdentity(node);\n const { getResizeHandleProps, gridTemplateColumns, hasOverrides, resetColumns } =\n useColumnResizing({\n columns: sizingColumns,\n enabled: resizingEnabled,\n leadingTracks: utilityTracks.leadingTracks,\n showIndicator: node.props?.resizeIndicator === true,\n storageKey:\n resizingEnabled && resizeStorageIdentity\n ? `lattice:table-columns:${resizeStorageIdentity}`\n : undefined,\n trailingTracks: utilityTracks.trailingTracks,\n });\n\n return (\n <div data-lattice-component={node.id} className=\"relative\">\n {hasOverrides && (\n <button\n aria-label={t(\"a11y.resetColumnWidths\", \"Reset column widths\")}\n 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\"\n data-test=\"table-reset-columns\"\n onClick={resetColumns}\n title={t(\"a11y.resetColumnWidths\", \"Reset column widths\")}\n type=\"button\"\n >\n <Icon name=\"rotate-ccw\" className=\"size-lt-icon-sm\" />\n </button>\n )}\n <div className=\"overflow-x-auto rounded-lt-sm border border-lt-border\">\n {hasDedicatedFilters && hasActiveFilters && (\n <FilterBar\n filters={filterDefinitions}\n values={tableFilters}\n processing={processing}\n hasActiveFilters={hasActiveFilters}\n onChange={setTableFilter}\n onReset={resetFilters}\n />\n )}\n {hasBulkActions && selection.active && (\n <BulkBar\n actions={bulkActions}\n selectedKeys={selection.selectedKeys}\n allMatching={selection.allMatching}\n total={pagination.total ?? undefined}\n query={getQueryParams(state)}\n canSelectAllMatching={\n selection.allVisibleSelected &&\n !selection.allMatching &&\n pagination.total != null &&\n pagination.total > selection.selectedKeys.length\n }\n onSelectAllMatching={selection.selectAllMatching}\n onCompleted={selection.clear}\n />\n )}\n {filters.length > 0 && (\n <FilterStackBar\n filters={filters}\n columnsByKey={columnsByKey}\n processing={processing}\n onRemove={removeFilter}\n />\n )}\n {state.sorts.length > 0 && (\n <SortBar\n columnsByKey={columnsByKey}\n state={state}\n processing={processing}\n onClear={clearSort}\n />\n )}\n <div className=\"min-w-full text-base\" role=\"table\">\n <div className=\"border-b border-lt-border bg-lt-muted/50\" role=\"rowgroup\">\n <div\n className=\"hidden min-w-full md:grid md:grid-cols-[var(--lattice-table-columns)]\"\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && (\n <div className=\"flex items-center px-4 py-3\" role=\"columnheader\">\n <Checkbox\n aria-label={t(\"a11y.selectAllRows\", \"Select all rows\")}\n data-test=\"select-all\"\n checked={selection.allSelected}\n onCheckedChange={() => selection.toggleAll()}\n />\n </div>\n )}\n {columns.map((column, index) => (\n <ColumnHeader\n column={column}\n key={column.key}\n processing={processing}\n resizeHandleProps={\n resizingEnabled ? getResizeHandleProps(sizingColumns[index]) : undefined\n }\n sort={sort}\n state={state}\n />\n ))}\n {hasTrailingUtility && (\n <div\n className=\"flex items-center justify-end gap-2 px-4 py-2 align-middle font-semibold text-lt-fg\"\n role=\"columnheader\"\n >\n {hasDedicatedFilters && (\n <FilterMenu\n filters={filterDefinitions}\n values={tableFilters}\n processing={processing}\n onChange={setTableFilter}\n onSearch={searchFilterOptions}\n />\n )}\n {hasActions && <span className=\"sr-only\">{node.props?.actionsLabel}</span>}\n </div>\n )}\n </div>\n {hasFilters && (\n <div\n className=\"hidden min-w-full border-t border-lt-border md:grid md:grid-cols-[var(--lattice-table-columns)]\"\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && <div className=\"px-4 py-2\" role=\"cell\" />}\n {columns.map((column) => (\n <div key={column.key} className=\"min-w-0 px-2 py-2\" role=\"cell\">\n {column.filter?.enabled && (\n <ColumnFilterControl\n column={column}\n clauses={filterEntries.filter((entry) => entry.clause.field === column.key)}\n processing={processing}\n onAdd={addFilter}\n onUpdate={updateFilter}\n onRemove={removeFilter}\n onReplace={replaceColumnFilters}\n onSearch={(query) => searchFilterOptions(column.key, query)}\n />\n )}\n </div>\n ))}\n {hasTrailingUtility && <div className=\"px-4 py-2\" role=\"cell\" />}\n </div>\n )}\n </div>\n <div role=\"rowgroup\">\n {!hasLoaded ? (\n <div className=\"p-4 text-lt-muted-fg\" role=\"row\">\n <div role=\"cell\">{t(\"table.loading\", \"Loading rows...\")}</div>\n </div>\n ) : rowEntries.length === 0 ? (\n <div className=\"p-8 text-center text-lt-muted-fg\" role=\"row\">\n <div role=\"cell\">{node.props?.emptyLabel}</div>\n </div>\n ) : (\n rowEntries.map(({ row, actions, key }) => {\n return (\n <div\n key={key}\n className={`grid grid-cols-1 border-b border-lt-border last:border-b-0 md:grid-cols-[var(--lattice-table-columns)] ${\n striped ? \"odd:bg-lt-muted/30\" : \"\"\n }`}\n role=\"row\"\n style={{ \"--lattice-table-columns\": gridTemplateColumns } as never}\n >\n {hasBulkActions && (\n <div className=\"flex items-center p-4\" role=\"cell\">\n <Checkbox\n aria-label={t(\"a11y.selectRow\", \"Select row {{key}}\", { key })}\n data-test={`select-row-${key}`}\n checked={selection.isSelected(key)}\n onCheckedChange={() => selection.toggle(key)}\n />\n </div>\n )}\n {columns.map((column) => (\n <div\n key={column.key}\n className={cn(\n \"grid min-w-0 gap-1 overflow-hidden p-4 align-middle\",\n alignText(column.align),\n alignJustifyItems(column.align),\n )}\n role=\"cell\"\n >\n <span\n aria-hidden=\"true\"\n className=\"text-xs font-medium text-lt-muted-fg md:hidden\"\n >\n {column.label}\n </span>\n <div\n data-slot=\"table-cell-content\"\n className=\"min-w-0 max-w-full overflow-hidden truncate\"\n >\n <ColumnCell column={column} row={row} />\n </div>\n </div>\n ))}\n {hasTrailingUtility && (\n <div\n className={cn(\n \"items-center justify-start gap-2 p-4 md:justify-end\",\n actions.length > 0 ? \"flex\" : \"hidden md:flex\",\n )}\n role=\"cell\"\n >\n {actions.map((action, actionIndex) => (\n <TableActionNode\n key={action.key ?? action.id ?? actionIndex}\n node={action}\n />\n ))}\n </div>\n )}\n </div>\n );\n })\n )}\n </div>\n </div>\n {hasLoaded && (\n <TablePagination\n pagination={pagination}\n currentPage={currentPage}\n processing={processing}\n mode={mode}\n hasNextPage={hasNextPage}\n visiblePages={visiblePages}\n infiniteLoaderRef={infiniteLoaderRef}\n onPage={goToPage}\n onLoadMore={loadMore}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default TableComponent;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FilterData, Option } from '../types/generated';
|
|
2
|
+
/**
|
|
3
|
+
* Whether a table-filter value should clear the filter rather than apply it —
|
|
4
|
+
* an empty string, empty list, or an object whose every member is empty.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isEmptyFilterValue(value: unknown): boolean;
|
|
7
|
+
export declare function isActiveFilterValue(value: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Read a string entry from a filter's loose `props` bag, falling back when the
|
|
10
|
+
* key is absent or not a string.
|
|
11
|
+
*/
|
|
12
|
+
export declare function stringProp(filter: FilterData, key: string, fallback: string): string;
|
|
13
|
+
export declare function filterOptions(filter: FilterData): Option[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region resources/js/table/filter-values.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether a table-filter value should clear the filter rather than apply it —
|
|
4
|
+
* an empty string, empty list, or an object whose every member is empty.
|
|
5
|
+
*/
|
|
6
|
+
function isEmptyFilterValue(value) {
|
|
7
|
+
if (value == null || value === "") return true;
|
|
8
|
+
if (Array.isArray(value)) return value.length === 0;
|
|
9
|
+
if (typeof value === "object") return Object.values(value).every((member) => member == null || member === "");
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
function isActiveFilterValue(value) {
|
|
13
|
+
return !isEmptyFilterValue(value);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Read a string entry from a filter's loose `props` bag, falling back when the
|
|
17
|
+
* key is absent or not a string.
|
|
18
|
+
*/
|
|
19
|
+
function stringProp(filter, key, fallback) {
|
|
20
|
+
const value = filter.props[key];
|
|
21
|
+
return typeof value === "string" ? value : fallback;
|
|
22
|
+
}
|
|
23
|
+
function filterOptions(filter) {
|
|
24
|
+
const value = filter.props.options;
|
|
25
|
+
return Array.isArray(value) ? value : [];
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { filterOptions, isActiveFilterValue, isEmptyFilterValue, stringProp };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=filter-values.js.map
|