@toolbox-web/grid 1.24.1 → 1.25.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/all.d.ts +0 -1
- package/all.js +2 -2
- package/all.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/lib/core/constants.d.ts +0 -1
- package/lib/core/grid.d.ts +145 -33
- package/lib/core/internal/aggregators.d.ts +0 -1
- package/lib/core/internal/aria.d.ts +8 -1
- package/lib/core/internal/columns.d.ts +3 -4
- package/lib/core/internal/config-manager.d.ts +2 -54
- package/lib/core/internal/dom-builder.d.ts +0 -1
- package/lib/core/internal/event-delegation.d.ts +3 -4
- package/lib/core/internal/feature-hook.d.ts +0 -1
- package/lib/core/internal/focus-manager.d.ts +49 -0
- package/lib/core/internal/header.d.ts +2 -3
- package/lib/core/internal/idle-scheduler.d.ts +0 -1
- package/lib/core/internal/inference.d.ts +0 -1
- package/lib/core/internal/keyboard.d.ts +3 -4
- package/lib/core/internal/loading.d.ts +0 -1
- package/lib/core/internal/render-scheduler.d.ts +3 -66
- package/lib/core/internal/resize.d.ts +2 -3
- package/lib/core/internal/row-animation.d.ts +0 -1
- package/lib/core/internal/row-manager.d.ts +31 -0
- package/lib/core/internal/rows.d.ts +4 -5
- package/lib/core/internal/sanitize.d.ts +0 -1
- package/lib/core/internal/shell.d.ts +7 -25
- package/lib/core/internal/sorting.d.ts +3 -4
- package/lib/core/internal/style-injector.d.ts +0 -1
- package/lib/core/internal/touch-scroll.d.ts +31 -12
- package/lib/core/internal/utils.d.ts +8 -1
- package/lib/core/internal/validate-config.d.ts +4 -5
- package/lib/core/internal/virtualization-manager.d.ts +48 -0
- package/lib/core/internal/virtualization.d.ts +0 -1
- package/lib/core/plugin/base-plugin.d.ts +2 -3
- package/lib/core/plugin/expander-column.d.ts +0 -1
- package/lib/core/plugin/index.d.ts +0 -1
- package/lib/core/plugin/plugin-manager.d.ts +2 -1
- package/lib/core/plugin/types.d.ts +7 -2
- package/lib/core/styles/index.d.ts +0 -1
- package/lib/core/types.d.ts +364 -54
- package/lib/features/clipboard.d.ts +0 -1
- package/lib/features/column-virtualization.d.ts +0 -1
- package/lib/features/context-menu.d.ts +0 -1
- package/lib/features/editing.d.ts +0 -1
- package/lib/features/export.d.ts +0 -1
- package/lib/features/filtering.d.ts +0 -1
- package/lib/features/grouping-columns.d.ts +0 -1
- package/lib/features/grouping-rows.d.ts +0 -1
- package/lib/features/master-detail.d.ts +0 -1
- package/lib/features/multi-sort.d.ts +1 -2
- package/lib/features/multi-sort.js.map +1 -1
- package/lib/features/pinned-columns.d.ts +0 -1
- package/lib/features/pinned-rows.d.ts +0 -1
- package/lib/features/pivot.d.ts +0 -1
- package/lib/features/print.d.ts +0 -1
- package/lib/features/registry.d.ts +0 -1
- package/lib/features/reorder-columns.d.ts +1 -2
- package/lib/features/reorder-columns.js.map +1 -1
- package/lib/features/reorder-rows.d.ts +1 -2
- package/lib/features/reorder-rows.js.map +1 -1
- package/lib/features/responsive.d.ts +0 -1
- package/lib/features/selection.d.ts +0 -1
- package/lib/features/server-side.d.ts +0 -1
- package/lib/features/tree.d.ts +0 -1
- package/lib/features/undo-redo.d.ts +0 -1
- package/lib/features/visibility.d.ts +0 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts +0 -1
- package/lib/plugins/clipboard/copy.d.ts +0 -1
- package/lib/plugins/clipboard/index.d.ts +0 -1
- package/lib/plugins/clipboard/index.js +1 -1
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/clipboard/paste.d.ts +0 -1
- package/lib/plugins/clipboard/types.d.ts +6 -1
- package/lib/plugins/column-virtualization/ColumnVirtualizationPlugin.d.ts +0 -1
- package/lib/plugins/column-virtualization/column-virtualization.d.ts +0 -1
- package/lib/plugins/column-virtualization/index.d.ts +0 -1
- package/lib/plugins/column-virtualization/index.js +1 -1
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/column-virtualization/types.d.ts +0 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts +16 -1
- package/lib/plugins/context-menu/index.d.ts +1 -2
- package/lib/plugins/context-menu/index.js +1 -1
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/context-menu/menu.d.ts +14 -1
- package/lib/plugins/context-menu/types.d.ts +13 -3
- package/lib/plugins/editing/EditingPlugin.d.ts +4 -6
- package/lib/plugins/editing/editors.d.ts +0 -1
- package/lib/plugins/editing/index.d.ts +0 -1
- package/lib/plugins/editing/index.js +1 -1
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/editing/internal/cell-validation.d.ts +0 -1
- package/lib/plugins/editing/internal/dirty-tracking-manager.d.ts +0 -1
- package/lib/plugins/editing/internal/dirty-tracking.d.ts +2 -2
- package/lib/plugins/editing/internal/editor-injection.d.ts +3 -4
- package/lib/plugins/editing/internal/helpers.d.ts +0 -1
- package/lib/plugins/editing/types.d.ts +15 -14
- package/lib/plugins/export/ExportPlugin.d.ts +0 -1
- package/lib/plugins/export/csv.d.ts +0 -1
- package/lib/plugins/export/excel.d.ts +0 -1
- package/lib/plugins/export/index.d.ts +0 -1
- package/lib/plugins/export/index.js +1 -1
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/export/types.d.ts +4 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +0 -1
- package/lib/plugins/filtering/filter-model.d.ts +0 -1
- package/lib/plugins/filtering/filter-panel-date.d.ts +0 -1
- package/lib/plugins/filtering/filter-panel-default.d.ts +0 -1
- package/lib/plugins/filtering/filter-panel-number.d.ts +0 -1
- package/lib/plugins/filtering/index.d.ts +0 -1
- package/lib/plugins/filtering/index.js +1 -1
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/filtering/types.d.ts +4 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts +0 -1
- package/lib/plugins/grouping-columns/grouping-columns.d.ts +2 -3
- package/lib/plugins/grouping-columns/index.d.ts +1 -2
- package/lib/plugins/grouping-columns/index.js +1 -1
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-columns/types.d.ts +33 -7
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +0 -1
- package/lib/plugins/grouping-rows/grouping-rows.d.ts +0 -1
- package/lib/plugins/grouping-rows/index.d.ts +0 -1
- package/lib/plugins/grouping-rows/index.js +1 -1
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/grouping-rows/types.d.ts +4 -1
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts +0 -1
- package/lib/plugins/master-detail/index.d.ts +0 -1
- package/lib/plugins/master-detail/index.js +1 -1
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/master-detail/master-detail.d.ts +0 -1
- package/lib/plugins/master-detail/types.d.ts +4 -1
- package/lib/plugins/multi-sort/MultiSortPlugin.d.ts +3 -3
- package/lib/plugins/multi-sort/index.d.ts +1 -2
- package/lib/plugins/multi-sort/index.js +1 -1
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/multi-sort/multi-sort.d.ts +0 -1
- package/lib/plugins/multi-sort/types.d.ts +5 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +0 -1
- package/lib/plugins/pinned-columns/index.d.ts +0 -1
- package/lib/plugins/pinned-columns/index.js +1 -1
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-columns/pinned-columns.d.ts +0 -1
- package/lib/plugins/pinned-columns/types.d.ts +0 -1
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts +0 -1
- package/lib/plugins/pinned-rows/index.d.ts +0 -1
- package/lib/plugins/pinned-rows/index.js +1 -1
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pinned-rows/pinned-rows.d.ts +0 -1
- package/lib/plugins/pinned-rows/types.d.ts +0 -1
- package/lib/plugins/pivot/PivotPlugin.d.ts +0 -1
- package/lib/plugins/pivot/index.d.ts +0 -1
- package/lib/plugins/pivot/index.js +1 -1
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/pivot/pivot-engine.d.ts +0 -1
- package/lib/plugins/pivot/pivot-model.d.ts +0 -1
- package/lib/plugins/pivot/pivot-panel.d.ts +0 -1
- package/lib/plugins/pivot/pivot-rows.d.ts +0 -1
- package/lib/plugins/pivot/types.d.ts +0 -1
- package/lib/plugins/print/PrintPlugin.d.ts +0 -1
- package/lib/plugins/print/index.d.ts +0 -1
- package/lib/plugins/print/index.js +1 -1
- package/lib/plugins/print/index.js.map +1 -1
- package/lib/plugins/print/print-isolated.d.ts +0 -1
- package/lib/plugins/print/types.d.ts +6 -1
- package/lib/plugins/reorder-columns/ReorderPlugin.d.ts +5 -5
- package/lib/plugins/reorder-columns/column-drag.d.ts +3 -2
- package/lib/plugins/reorder-columns/index.d.ts +0 -1
- package/lib/plugins/reorder-columns/index.js +1 -1
- package/lib/plugins/reorder-columns/index.js.map +1 -1
- package/lib/plugins/reorder-columns/types.d.ts +4 -1
- package/lib/plugins/reorder-rows/RowReorderPlugin.d.ts +3 -3
- package/lib/plugins/reorder-rows/index.d.ts +0 -1
- package/lib/plugins/reorder-rows/index.js +1 -1
- package/lib/plugins/reorder-rows/index.js.map +1 -1
- package/lib/plugins/reorder-rows/types.d.ts +4 -1
- package/lib/plugins/responsive/ResponsivePlugin.d.ts +0 -1
- package/lib/plugins/responsive/index.d.ts +0 -1
- package/lib/plugins/responsive/index.js +1 -1
- package/lib/plugins/responsive/index.js.map +1 -1
- package/lib/plugins/responsive/types.d.ts +4 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts +1 -3
- package/lib/plugins/selection/index.d.ts +0 -1
- package/lib/plugins/selection/index.js +1 -1
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/selection/range-selection.d.ts +0 -1
- package/lib/plugins/selection/row-selection.d.ts +0 -1
- package/lib/plugins/selection/types.d.ts +4 -1
- package/lib/plugins/server-side/ServerSidePlugin.d.ts +0 -1
- package/lib/plugins/server-side/cache.d.ts +0 -1
- package/lib/plugins/server-side/datasource.d.ts +0 -1
- package/lib/plugins/server-side/index.d.ts +0 -1
- package/lib/plugins/server-side/index.js +1 -1
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/server-side/types.d.ts +0 -1
- package/lib/plugins/shared/data-collection.d.ts +0 -1
- package/lib/plugins/tree/TreePlugin.d.ts +0 -1
- package/lib/plugins/tree/index.d.ts +0 -1
- package/lib/plugins/tree/index.js +1 -1
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/tree/tree-data.d.ts +0 -1
- package/lib/plugins/tree/tree-detect.d.ts +0 -1
- package/lib/plugins/tree/types.d.ts +4 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +1 -2
- package/lib/plugins/undo-redo/history.d.ts +0 -1
- package/lib/plugins/undo-redo/index.d.ts +0 -1
- package/lib/plugins/undo-redo/index.js +1 -1
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/undo-redo/types.d.ts +6 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts +0 -1
- package/lib/plugins/visibility/index.d.ts +0 -1
- package/lib/plugins/visibility/index.js +1 -1
- package/lib/plugins/visibility/index.js.map +1 -1
- package/lib/plugins/visibility/types.d.ts +0 -1
- package/lib/plugins/visibility/visibility.d.ts +0 -1
- package/package.json +1 -1
- package/public.d.ts +31 -12
- package/umd/grid.all.umd.js +1 -1
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +1 -1
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/clipboard.umd.js +1 -1
- package/umd/plugins/clipboard.umd.js.map +1 -1
- package/umd/plugins/column-virtualization.umd.js +1 -1
- package/umd/plugins/column-virtualization.umd.js.map +1 -1
- package/umd/plugins/context-menu.umd.js +1 -1
- package/umd/plugins/context-menu.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/master-detail.umd.js +1 -1
- package/umd/plugins/master-detail.umd.js.map +1 -1
- package/umd/plugins/multi-sort.umd.js +1 -1
- package/umd/plugins/multi-sort.umd.js.map +1 -1
- package/umd/plugins/pinned-columns.umd.js +1 -1
- package/umd/plugins/pinned-columns.umd.js.map +1 -1
- package/umd/plugins/pinned-rows.umd.js +1 -1
- package/umd/plugins/pinned-rows.umd.js.map +1 -1
- package/umd/plugins/print.umd.js +1 -1
- package/umd/plugins/print.umd.js.map +1 -1
- package/umd/plugins/reorder-columns.umd.js +1 -1
- package/umd/plugins/reorder-columns.umd.js.map +1 -1
- package/umd/plugins/reorder-rows.umd.js +1 -1
- package/umd/plugins/reorder-rows.umd.js.map +1 -1
- package/umd/plugins/responsive.umd.js +1 -1
- package/umd/plugins/responsive.umd.js.map +1 -1
- package/umd/plugins/selection.umd.js +1 -1
- package/umd/plugins/selection.umd.js.map +1 -1
- package/umd/plugins/server-side.umd.js.map +1 -1
- package/umd/plugins/tree.umd.js +1 -1
- package/umd/plugins/tree.umd.js.map +1 -1
- package/umd/plugins/undo-redo.umd.js.map +1 -1
- package/umd/plugins/visibility.umd.js +1 -1
- package/umd/plugins/visibility.umd.js.map +1 -1
- package/all.d.ts.map +0 -1
- package/index.d.ts.map +0 -1
- package/lib/core/constants.d.ts.map +0 -1
- package/lib/core/grid.d.ts.map +0 -1
- package/lib/core/internal/aggregators.d.ts.map +0 -1
- package/lib/core/internal/aria.d.ts.map +0 -1
- package/lib/core/internal/columns.d.ts.map +0 -1
- package/lib/core/internal/config-manager.d.ts.map +0 -1
- package/lib/core/internal/dom-builder.d.ts.map +0 -1
- package/lib/core/internal/event-delegation.d.ts.map +0 -1
- package/lib/core/internal/feature-hook.d.ts.map +0 -1
- package/lib/core/internal/header.d.ts.map +0 -1
- package/lib/core/internal/idle-scheduler.d.ts.map +0 -1
- package/lib/core/internal/inference.d.ts.map +0 -1
- package/lib/core/internal/keyboard.d.ts.map +0 -1
- package/lib/core/internal/loading.d.ts.map +0 -1
- package/lib/core/internal/render-scheduler.d.ts.map +0 -1
- package/lib/core/internal/resize.d.ts.map +0 -1
- package/lib/core/internal/row-animation.d.ts.map +0 -1
- package/lib/core/internal/rows.d.ts.map +0 -1
- package/lib/core/internal/sanitize.d.ts.map +0 -1
- package/lib/core/internal/shell.d.ts.map +0 -1
- package/lib/core/internal/sorting.d.ts.map +0 -1
- package/lib/core/internal/style-injector.d.ts.map +0 -1
- package/lib/core/internal/touch-scroll.d.ts.map +0 -1
- package/lib/core/internal/utils.d.ts.map +0 -1
- package/lib/core/internal/validate-config.d.ts.map +0 -1
- package/lib/core/internal/virtualization.d.ts.map +0 -1
- package/lib/core/plugin/base-plugin.d.ts.map +0 -1
- package/lib/core/plugin/expander-column.d.ts.map +0 -1
- package/lib/core/plugin/index.d.ts.map +0 -1
- package/lib/core/plugin/plugin-manager.d.ts.map +0 -1
- package/lib/core/plugin/types.d.ts.map +0 -1
- package/lib/core/styles/index.d.ts.map +0 -1
- package/lib/core/types.d.ts.map +0 -1
- package/lib/features/clipboard.d.ts.map +0 -1
- package/lib/features/column-virtualization.d.ts.map +0 -1
- package/lib/features/context-menu.d.ts.map +0 -1
- package/lib/features/editing.d.ts.map +0 -1
- package/lib/features/export.d.ts.map +0 -1
- package/lib/features/filtering.d.ts.map +0 -1
- package/lib/features/grouping-columns.d.ts.map +0 -1
- package/lib/features/grouping-rows.d.ts.map +0 -1
- package/lib/features/magic-string.es-CkyDP9Ir.mjs.map +0 -1
- package/lib/features/master-detail.d.ts.map +0 -1
- package/lib/features/multi-sort.d.ts.map +0 -1
- package/lib/features/pinned-columns.d.ts.map +0 -1
- package/lib/features/pinned-rows.d.ts.map +0 -1
- package/lib/features/pivot.d.ts.map +0 -1
- package/lib/features/print.d.ts.map +0 -1
- package/lib/features/registry.d.ts.map +0 -1
- package/lib/features/registry.spec.js +0 -5
- package/lib/features/registry.spec.js.map +0 -1
- package/lib/features/reorder-columns.d.ts.map +0 -1
- package/lib/features/reorder-rows.d.ts.map +0 -1
- package/lib/features/responsive.d.ts.map +0 -1
- package/lib/features/selection.d.ts.map +0 -1
- package/lib/features/server-side.d.ts.map +0 -1
- package/lib/features/tree.d.ts.map +0 -1
- package/lib/features/undo-redo.d.ts.map +0 -1
- package/lib/features/visibility.d.ts.map +0 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts.map +0 -1
- package/lib/plugins/clipboard/copy.d.ts.map +0 -1
- package/lib/plugins/clipboard/index.d.ts.map +0 -1
- package/lib/plugins/clipboard/paste.d.ts.map +0 -1
- package/lib/plugins/clipboard/types.d.ts.map +0 -1
- package/lib/plugins/column-virtualization/ColumnVirtualizationPlugin.d.ts.map +0 -1
- package/lib/plugins/column-virtualization/column-virtualization.d.ts.map +0 -1
- package/lib/plugins/column-virtualization/index.d.ts.map +0 -1
- package/lib/plugins/column-virtualization/types.d.ts.map +0 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts.map +0 -1
- package/lib/plugins/context-menu/index.d.ts.map +0 -1
- package/lib/plugins/context-menu/menu.d.ts.map +0 -1
- package/lib/plugins/context-menu/types.d.ts.map +0 -1
- package/lib/plugins/editing/EditingPlugin.d.ts.map +0 -1
- package/lib/plugins/editing/editors.d.ts.map +0 -1
- package/lib/plugins/editing/index.d.ts.map +0 -1
- package/lib/plugins/editing/internal/cell-validation.d.ts.map +0 -1
- package/lib/plugins/editing/internal/dirty-tracking-manager.d.ts.map +0 -1
- package/lib/plugins/editing/internal/dirty-tracking.d.ts.map +0 -1
- package/lib/plugins/editing/internal/editor-injection.d.ts.map +0 -1
- package/lib/plugins/editing/internal/helpers.d.ts.map +0 -1
- package/lib/plugins/editing/types.d.ts.map +0 -1
- package/lib/plugins/export/ExportPlugin.d.ts.map +0 -1
- package/lib/plugins/export/csv.d.ts.map +0 -1
- package/lib/plugins/export/excel.d.ts.map +0 -1
- package/lib/plugins/export/index.d.ts.map +0 -1
- package/lib/plugins/export/types.d.ts.map +0 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +0 -1
- package/lib/plugins/filtering/filter-model.d.ts.map +0 -1
- package/lib/plugins/filtering/filter-panel-date.d.ts.map +0 -1
- package/lib/plugins/filtering/filter-panel-default.d.ts.map +0 -1
- package/lib/plugins/filtering/filter-panel-number.d.ts.map +0 -1
- package/lib/plugins/filtering/index.d.ts.map +0 -1
- package/lib/plugins/filtering/types.d.ts.map +0 -1
- package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts.map +0 -1
- package/lib/plugins/grouping-columns/grouping-columns.d.ts.map +0 -1
- package/lib/plugins/grouping-columns/index.d.ts.map +0 -1
- package/lib/plugins/grouping-columns/types.d.ts.map +0 -1
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +0 -1
- package/lib/plugins/grouping-rows/grouping-rows.d.ts.map +0 -1
- package/lib/plugins/grouping-rows/index.d.ts.map +0 -1
- package/lib/plugins/grouping-rows/types.d.ts.map +0 -1
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts.map +0 -1
- package/lib/plugins/master-detail/index.d.ts.map +0 -1
- package/lib/plugins/master-detail/master-detail.d.ts.map +0 -1
- package/lib/plugins/master-detail/types.d.ts.map +0 -1
- package/lib/plugins/multi-sort/MultiSortPlugin.d.ts.map +0 -1
- package/lib/plugins/multi-sort/index.d.ts.map +0 -1
- package/lib/plugins/multi-sort/multi-sort.d.ts.map +0 -1
- package/lib/plugins/multi-sort/types.d.ts.map +0 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +0 -1
- package/lib/plugins/pinned-columns/index.d.ts.map +0 -1
- package/lib/plugins/pinned-columns/pinned-columns.d.ts.map +0 -1
- package/lib/plugins/pinned-columns/types.d.ts.map +0 -1
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts.map +0 -1
- package/lib/plugins/pinned-rows/index.d.ts.map +0 -1
- package/lib/plugins/pinned-rows/pinned-rows.d.ts.map +0 -1
- package/lib/plugins/pinned-rows/types.d.ts.map +0 -1
- package/lib/plugins/pivot/PivotPlugin.d.ts.map +0 -1
- package/lib/plugins/pivot/index.d.ts.map +0 -1
- package/lib/plugins/pivot/pivot-engine.d.ts.map +0 -1
- package/lib/plugins/pivot/pivot-model.d.ts.map +0 -1
- package/lib/plugins/pivot/pivot-panel.d.ts.map +0 -1
- package/lib/plugins/pivot/pivot-rows.d.ts.map +0 -1
- package/lib/plugins/pivot/types.d.ts.map +0 -1
- package/lib/plugins/print/PrintPlugin.d.ts.map +0 -1
- package/lib/plugins/print/index.d.ts.map +0 -1
- package/lib/plugins/print/print-isolated.d.ts.map +0 -1
- package/lib/plugins/print/types.d.ts.map +0 -1
- package/lib/plugins/reorder-columns/ReorderPlugin.d.ts.map +0 -1
- package/lib/plugins/reorder-columns/column-drag.d.ts.map +0 -1
- package/lib/plugins/reorder-columns/index.d.ts.map +0 -1
- package/lib/plugins/reorder-columns/types.d.ts.map +0 -1
- package/lib/plugins/reorder-rows/RowReorderPlugin.d.ts.map +0 -1
- package/lib/plugins/reorder-rows/index.d.ts.map +0 -1
- package/lib/plugins/reorder-rows/types.d.ts.map +0 -1
- package/lib/plugins/responsive/ResponsivePlugin.d.ts.map +0 -1
- package/lib/plugins/responsive/index.d.ts.map +0 -1
- package/lib/plugins/responsive/types.d.ts.map +0 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts.map +0 -1
- package/lib/plugins/selection/index.d.ts.map +0 -1
- package/lib/plugins/selection/range-selection.d.ts.map +0 -1
- package/lib/plugins/selection/row-selection.d.ts.map +0 -1
- package/lib/plugins/selection/types.d.ts.map +0 -1
- package/lib/plugins/server-side/ServerSidePlugin.d.ts.map +0 -1
- package/lib/plugins/server-side/cache.d.ts.map +0 -1
- package/lib/plugins/server-side/datasource.d.ts.map +0 -1
- package/lib/plugins/server-side/index.d.ts.map +0 -1
- package/lib/plugins/server-side/types.d.ts.map +0 -1
- package/lib/plugins/shared/data-collection.d.ts.map +0 -1
- package/lib/plugins/tree/TreePlugin.d.ts.map +0 -1
- package/lib/plugins/tree/index.d.ts.map +0 -1
- package/lib/plugins/tree/tree-data.d.ts.map +0 -1
- package/lib/plugins/tree/tree-detect.d.ts.map +0 -1
- package/lib/plugins/tree/types.d.ts.map +0 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +0 -1
- package/lib/plugins/undo-redo/history.d.ts.map +0 -1
- package/lib/plugins/undo-redo/index.d.ts.map +0 -1
- package/lib/plugins/undo-redo/types.d.ts.map +0 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts.map +0 -1
- package/lib/plugins/visibility/index.d.ts.map +0 -1
- package/lib/plugins/visibility/types.d.ts.map +0 -1
- package/lib/plugins/visibility/visibility.d.ts.map +0 -1
- package/public.d.ts.map +0 -1
|
@@ -137,8 +137,24 @@ export declare class ContextMenuPlugin extends BaseGridPlugin<ContextMenuConfig>
|
|
|
137
137
|
* Convert plugin-contributed HeaderContextMenuItems to the internal ContextMenuItem format.
|
|
138
138
|
*/
|
|
139
139
|
private convertPluginItems;
|
|
140
|
+
/**
|
|
141
|
+
* Shared logic to build menu items, create the menu element, and show it.
|
|
142
|
+
* Used by both the contextmenu mouse handler and keyboard triggers.
|
|
143
|
+
*
|
|
144
|
+
* @param params - Context menu parameters
|
|
145
|
+
* @param x - Viewport X coordinate
|
|
146
|
+
* @param y - Viewport Y coordinate
|
|
147
|
+
* @param focusFirst - Whether to focus the first menu item (keyboard-triggered)
|
|
148
|
+
*/
|
|
149
|
+
private openMenuAt;
|
|
140
150
|
/** @internal */
|
|
141
151
|
afterRender(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Handle keyboard shortcuts to open the context menu.
|
|
154
|
+
* Shift+F10 and the dedicated ContextMenu key open the menu at the focused cell.
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
onKeyDown(event: KeyboardEvent): boolean | void;
|
|
142
158
|
/**
|
|
143
159
|
* Programmatically show the context menu at the specified position.
|
|
144
160
|
* @param x - X coordinate
|
|
@@ -156,4 +172,3 @@ export declare class ContextMenuPlugin extends BaseGridPlugin<ContextMenuConfig>
|
|
|
156
172
|
*/
|
|
157
173
|
isMenuOpen(): boolean;
|
|
158
174
|
}
|
|
159
|
-
//# sourceMappingURL=ContextMenuPlugin.d.ts.map
|
|
@@ -5,5 +5,4 @@
|
|
|
5
5
|
* @module Plugins/Context Menu
|
|
6
6
|
*/
|
|
7
7
|
export { ContextMenuPlugin } from './ContextMenuPlugin';
|
|
8
|
-
export type { ContextMenuConfig, ContextMenuItem, ContextMenuParams, HeaderContextMenuItem } from './types';
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
8
|
+
export type { ContextMenuConfig, ContextMenuItem, ContextMenuOpenDetail, ContextMenuParams, HeaderContextMenuItem } from './types';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',t={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:e,filterActive:e,print:"🖨️"};class n{static dependencies;static manifest;aliases;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid}get disconnectSignal(){return this.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...t,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;if(t){return"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=t:t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(e){console.warn(`[tbw-grid:${this.name}] ${e}`)}}const o="@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--tbw-context-menu-bg, var(--tbw-color-panel-bg));color:var(--tbw-context-menu-fg, var(--tbw-color-fg));border:1px solid var(--tbw-context-menu-border, var(--tbw-color-border));border-radius:var(--tbw-context-menu-radius, var(--tbw-border-radius));box-shadow:var(--tbw-context-menu-shadow, 0 2px 10px var(--tbw-color-shadow));min-width:var(--tbw-context-menu-min-width, var(--tbw-menu-min-width));padding:var(--tbw-spacing-xs) 0;z-index:10000;font-size:var(--tbw-context-menu-font-size, var(--tbw-font-size-sm));font-family:var(--tbw-context-menu-font-family, var(--tbw-font-family))}.tbw-context-menu-item{display:flex;align-items:center;padding:var(--tbw-context-menu-item-padding, var(--tbw-menu-item-padding));cursor:pointer;gap:var(--tbw-context-menu-item-gap, var(--tbw-menu-item-gap))}.tbw-context-menu-item:hover:not(.disabled){background:var(--tbw-context-menu-hover, var(--tbw-color-row-hover))}.tbw-context-menu-item.disabled{opacity:.5;cursor:default}.tbw-context-menu-item.danger{color:var(--tbw-context-menu-danger, var(--tbw-color-danger))}.tbw-context-menu-icon{width:var(--tbw-context-menu-icon-size, var(--tbw-icon-size));text-align:center}.tbw-context-menu-label{flex:1}.tbw-context-menu-shortcut kbd{color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted));font-size:var(--tbw-context-menu-shortcut-size, var(--tbw-font-size-xs))}.tbw-context-menu-arrow{font-size:var(--tbw-context-menu-arrow-size, var(--tbw-font-size-2xs));color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted))}.tbw-context-menu-separator{height:1px;background:var(--tbw-context-menu-border, var(--tbw-color-border));margin:var(--tbw-spacing-xs) 0}}";function r(e,t){return("function"==typeof e?e(t):e).filter(e=>!0!==e.hidden&&("function"!=typeof e.hidden||!e.hidden(t)))}function i(e){const t=[];for(const n of e)n.separator&&(0===t.length||t[t.length-1].separator)||t.push(n);return t.length>0&&t[t.length-1].separator&&t.pop(),t}function s(e,t){return!0===e.disabled||"function"==typeof e.disabled&&e.disabled(t)}function l(e,n,o,i=t.submenuArrow){const a=document.createElement("div");a.className="tbw-context-menu",a.setAttribute("role","menu");const c=e.some(e=>!e.separator&&e.icon);for(const t of e){if(t.separator){const e=document.createElement("div");e.className="tbw-context-menu-separator",e.setAttribute("role","separator"),a.appendChild(e);continue}const e=document.createElement("div");e.className="tbw-context-menu-item",t.cssClass&&e.classList.add(t.cssClass),e.setAttribute("role","menuitem"),e.setAttribute("data-id",t.id);const u=s(t,n);if(u&&(e.classList.add("disabled"),e.setAttribute("aria-disabled","true")),t.icon){const n=document.createElement("span");n.className="tbw-context-menu-icon",n.innerHTML=t.icon,e.appendChild(n)}else if(c){const t=document.createElement("span");t.className="tbw-context-menu-icon",t.innerHTML=" ",e.appendChild(t)}const d=document.createElement("span");if(d.className="tbw-context-menu-label",d.textContent=t.name,e.appendChild(d),t.shortcut){const n=document.createElement("span");if(n.className="tbw-context-menu-shortcut",Array.isArray(t.shortcut))t.shortcut.forEach((e,t)=>{t>0&&n.appendChild(document.createTextNode("+"));const o=document.createElement("kbd");o.textContent=e,n.appendChild(o)});else{const e=document.createElement("kbd");e.textContent=t.shortcut,n.appendChild(e)}e.appendChild(n)}if(t.subMenu?.length){const s=document.createElement("span");s.className="tbw-context-menu-arrow","string"==typeof i?s.innerHTML=i:i instanceof HTMLElement&&s.appendChild(i.cloneNode(!0)),e.appendChild(s),e.addEventListener("mouseenter",()=>{if(e.querySelector(".tbw-context-menu"))return;if(!t.subMenu)return;const s=l(r(t.subMenu,n),n,o,i);s.classList.add("tbw-context-submenu"),s.style.position="absolute",s.style.left="100%",s.style.top="0",e.style.position="relative",e.appendChild(s)}),e.addEventListener("mouseleave",()=>{const t=e.querySelector(".tbw-context-menu");t&&t.remove()})}u||!t.action||t.subMenu||e.addEventListener("click",e=>{e.stopPropagation(),o(t)}),a.appendChild(e)}return a}function a(e,t,n){e.style.position="fixed",e.style.left=`${t}px`,e.style.top=`${n}px`,e.style.visibility="hidden",e.style.zIndex="10000";const o=e.getBoundingClientRect(),r=window.innerWidth,i=window.innerHeight;let s=t,l=n;t+o.width>r&&(s=t-o.width),n+o.height>i&&(l=n-o.height),s=Math.max(0,s),l=Math.max(0,l),e.style.left=`${s}px`,e.style.top=`${l}px`,e.style.visibility="visible"}const c="getContextMenuItems";let u=null,d=null,m=null,h=0;const b=[{id:"copy",name:"Copy",shortcut:"Ctrl+C",action:e=>{const t=e.grid;t?.plugins?.clipboard?.copy?.()}},{separator:!0,id:"sep1",name:""},{id:"export-csv",name:"Export CSV",action:e=>{const t=e.grid;t?.plugins?.export?.exportCsv?.()}}];class p extends n{static manifest={queries:[{type:c,description:"Collects context menu items from other plugins for header right-click menus"}]};name="contextMenu";get defaultConfig(){return{items:b}}isOpen=!1;position={x:0,y:0};params=null;menuElement=null;attach(e){super.attach(e),this.installGlobalHandlers(),h++}detach(){this.menuElement&&(this.menuElement.remove(),this.menuElement=null),this.isOpen=!1,this.params=null,this.uninstallGlobalHandlers()}syncSelectionOnContextMenu(e){if(e<0)return[];const t=this.grid?.query("getSelectedRowIndices"),n=t?.[0];return n?n.includes(e)?n:(this.grid?.query("selectRows",[e]),[e]):[e]}static CSS_VARS_TO_COPY=["--tbw-color-panel-bg","--tbw-color-fg","--tbw-color-fg-muted","--tbw-color-border","--tbw-color-row-hover","--tbw-color-shadow","--tbw-color-danger","--tbw-border-radius","--tbw-font-family","--tbw-font-size-sm","--tbw-font-size-xs","--tbw-font-size-2xs","--tbw-spacing-xs","--tbw-icon-size","--tbw-menu-min-width","--tbw-menu-item-padding","--tbw-menu-item-gap","--tbw-context-menu-bg","--tbw-context-menu-fg","--tbw-context-menu-border","--tbw-context-menu-radius","--tbw-context-menu-shadow","--tbw-context-menu-hover","--tbw-context-menu-danger","--tbw-context-menu-muted","--tbw-context-menu-min-width","--tbw-context-menu-font-size","--tbw-context-menu-font-family","--tbw-context-menu-item-padding","--tbw-context-menu-item-gap","--tbw-context-menu-icon-size","--tbw-context-menu-shortcut-size","--tbw-context-menu-arrow-size"];copyGridStyles(e){const t=this.gridElement;if(!t)return;const n=getComputedStyle(t),o=[],r=n.getPropertyValue("color-scheme").trim();r&&o.push(`color-scheme: ${r}`);for(const i of p.CSS_VARS_TO_COPY){const e=n.getPropertyValue(i).trim();e&&o.push(`${i}: ${e}`)}if(o.length>0){const t=e.getAttribute("style")||"";e.setAttribute("style",t+o.join("; ")+";")}}installGlobalHandlers(){!m&&"undefined"!=typeof document&&o&&(m=document.createElement("style"),m.id="tbw-context-menu-styles",m.textContent=o,document.head.appendChild(m)),u||(u=()=>{document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove())},document.addEventListener("click",u)),d||(d=e=>{if("Escape"===e.key){document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove())}},document.addEventListener("keydown",d))}uninstallGlobalHandlers(){h--,h>0||(u&&(document.removeEventListener("click",u),u=null),d&&(document.removeEventListener("keydown",d),d=null),m&&(m.remove(),m=null))}collectPluginItems(e){if(!this.grid)return[];const t=this.grid.query(c,e),n=[];for(const o of t)Array.isArray(o)&&n.push(...o);return n.sort((e,t)=>(e.order??100)-(t.order??100)),this.insertGroupSeparators(n)}insertGroupSeparators(e){if(e.length<=1)return e;const t=[];let n=-1;for(const o of e){if(o.separator){t.push(o);continue}const e=Math.floor((o.order??100)/10);n>=0&&e!==n&&t.push({id:`__sep-${n}-${e}`,label:"",separator:!0,action:()=>{}}),n=e,t.push(o)}return t}convertPluginItems(e){return e.map(e=>({id:e.id,name:e.label,icon:e.icon,shortcut:e.shortcut,disabled:e.disabled??!1,action:()=>e.action(),separator:e.separator,cssClass:e.cssClass}))}afterRender(){const e=this.gridElement;if(!e)return;const t=e.querySelector(".tbw-grid-root");t&&"true"!==t.getAttribute("data-context-menu-bound")&&(t.setAttribute("data-context-menu-bound","true"),t.addEventListener("contextmenu",e=>{const t=e;t.preventDefault();const n=t.target,o=n.closest("[data-row][data-col]"),s=n.closest('[part~="header-cell"]');let c;if(o){const e=parseInt(o.getAttribute("data-row")??"-1",10),n=parseInt(o.getAttribute("data-col")??"-1",10),r=this.visibleColumns[n],i=this.rows[e],s=this.syncSelectionOnContextMenu(e);c={row:i,rowIndex:e,column:r,columnIndex:n,field:r?.field??"",value:i?.[r?.field]??null,isHeader:!1,event:t,selectedRows:s}}else{if(!s)return;{const e=parseInt(s.getAttribute("data-col")??"-1",10),n=this.visibleColumns[e];c={row:null,rowIndex:-1,column:n,columnIndex:e,field:n?.field??"",value:null,isHeader:!0,event:t,selectedRows:[]}}}this.params=c,this.position={x:t.clientX,y:t.clientY};const u=this.collectPluginItems(c);let d=r(this.config.items??b,c);if(u.length>0){const e=this.convertPluginItems(u);d=d.length>0&&e.length>0?[...d,{id:"__plugin-sep",name:"",separator:!0},...e]:[...d,...e]}d=i(d),d.length&&(this.menuElement&&this.menuElement.remove(),this.menuElement=l(d,c,e=>{e.action&&e.action(c),this.menuElement?.remove(),this.menuElement=null,this.isOpen=!1},this.gridIcons.submenuArrow),document.body.appendChild(this.menuElement),this.copyGridStyles(this.menuElement),a(this.menuElement,t.clientX,t.clientY),this.isOpen=!0,this.emit("context-menu-open",{params:c,items:d}))}))}showMenu(e,t,n){const o={row:n.row??null,rowIndex:n.rowIndex??-1,column:n.column??null,columnIndex:n.columnIndex??-1,field:n.field??"",value:n.value??null,isHeader:n.isHeader??!1,event:n.event??new MouseEvent("contextmenu"),selectedRows:n.selectedRows??[]},s=this.collectPluginItems(o);let c=r(this.config.items??b,o);if(s.length>0){const e=this.convertPluginItems(s);c=c.length>0&&e.length>0?[...c,{id:"__plugin-sep",name:"",separator:!0},...e]:[...c,...e]}c=i(c),this.menuElement&&this.menuElement.remove(),this.menuElement=l(c,o,e=>{e.action&&e.action(o),this.menuElement?.remove(),this.menuElement=null,this.isOpen=!1},this.gridIcons.submenuArrow),document.body.appendChild(this.menuElement),this.copyGridStyles(this.menuElement),a(this.menuElement,e,t),this.isOpen=!0}hideMenu(){this.menuElement&&(this.menuElement.remove(),this.menuElement=null,this.isOpen=!1)}isMenuOpen(){return this.isOpen}}export{p as ContextMenuPlugin};
|
|
1
|
+
const e='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',t={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:e,filterActive:e,print:"🖨️"};class n{static dependencies;static manifest;aliases;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid?._hostElement}get disconnectSignal(){return this.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...t,...e}}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;if(t){return"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}resolveIcon(e,t){return void 0!==t?t:this.gridIcons[e]}setIcon(e,t){"string"==typeof t?e.innerHTML=t:t instanceof HTMLElement&&(e.innerHTML="",e.appendChild(t.cloneNode(!0)))}warn(e){var t,n;console.warn(`${t=this.gridElement.id,n=this.name,`[tbw-grid${t?`#${t}`:""}${n?`:${n}`:""}]`} ${e}`)}}const o="@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--tbw-context-menu-bg, var(--tbw-color-panel-bg));color:var(--tbw-context-menu-fg, var(--tbw-color-fg));border:1px solid var(--tbw-context-menu-border, var(--tbw-color-border));border-radius:var(--tbw-context-menu-radius, var(--tbw-border-radius));box-shadow:var(--tbw-context-menu-shadow, 0 2px 10px var(--tbw-color-shadow));min-width:var(--tbw-context-menu-min-width, var(--tbw-menu-min-width));padding:var(--tbw-spacing-xs) 0;z-index:10000;font-size:var(--tbw-context-menu-font-size, var(--tbw-font-size-sm));font-family:var(--tbw-context-menu-font-family, var(--tbw-font-family))}.tbw-context-menu-item{display:flex;align-items:center;padding:var(--tbw-context-menu-item-padding, var(--tbw-menu-item-padding));cursor:pointer;gap:var(--tbw-context-menu-item-gap, var(--tbw-menu-item-gap))}.tbw-context-menu-item:hover:not(.disabled){background:var(--tbw-context-menu-hover, var(--tbw-color-row-hover))}.tbw-context-menu-item.disabled{opacity:.5;cursor:default}.tbw-context-menu-item.danger{color:var(--tbw-context-menu-danger, var(--tbw-color-danger))}.tbw-context-menu-icon{width:var(--tbw-context-menu-icon-size, var(--tbw-icon-size));text-align:center}.tbw-context-menu-label{flex:1}.tbw-context-menu-shortcut kbd{color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted));font-size:var(--tbw-context-menu-shortcut-size, var(--tbw-font-size-xs))}.tbw-context-menu-arrow{font-size:var(--tbw-context-menu-arrow-size, var(--tbw-font-size-2xs));color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted))}.tbw-context-menu-separator{height:1px;background:var(--tbw-context-menu-border, var(--tbw-color-border));margin:var(--tbw-spacing-xs) 0}}";function r(e,t){return("function"==typeof e?e(t):e).filter(e=>!0!==e.hidden&&("function"!=typeof e.hidden||!e.hidden(t)))}function i(e,t){return!0===e.disabled||"function"==typeof e.disabled&&e.disabled(t)}function s(e,n,o,l=t.submenuArrow){const a=document.createElement("div");a.className="tbw-context-menu",a.setAttribute("role","menu");const c=e.some(e=>!e.separator&&e.icon);for(const t of e){if(t.separator){const e=document.createElement("div");e.className="tbw-context-menu-separator",e.setAttribute("role","separator"),a.appendChild(e);continue}const e=document.createElement("div");e.className="tbw-context-menu-item",t.cssClass&&e.classList.add(t.cssClass),e.setAttribute("role","menuitem"),e.setAttribute("data-id",t.id),e.setAttribute("tabindex","-1");const u=i(t,n);if(u&&(e.classList.add("disabled"),e.setAttribute("aria-disabled","true")),t.icon){const n=document.createElement("span");n.className="tbw-context-menu-icon",n.innerHTML=t.icon,e.appendChild(n)}else if(c){const t=document.createElement("span");t.className="tbw-context-menu-icon",t.innerHTML=" ",e.appendChild(t)}const d=document.createElement("span");if(d.className="tbw-context-menu-label",d.textContent=t.name,e.appendChild(d),t.shortcut){const n=document.createElement("span");if(n.className="tbw-context-menu-shortcut",Array.isArray(t.shortcut))t.shortcut.forEach((e,t)=>{t>0&&n.appendChild(document.createTextNode("+"));const o=document.createElement("kbd");o.textContent=e,n.appendChild(o)});else{const e=document.createElement("kbd");e.textContent=t.shortcut,n.appendChild(e)}e.appendChild(n)}if(t.subMenu?.length){const i=document.createElement("span");i.className="tbw-context-menu-arrow","string"==typeof l?i.innerHTML=l:l instanceof HTMLElement&&i.appendChild(l.cloneNode(!0)),e.appendChild(i),e.addEventListener("mouseenter",()=>{if(e.querySelector(".tbw-context-menu"))return;if(!t.subMenu)return;const i=s(r(t.subMenu,n),n,o,l);i.classList.add("tbw-context-submenu"),i.style.position="absolute",i.style.left="100%",i.style.top="0",e.style.position="relative",e.appendChild(i)}),e.addEventListener("mouseleave",()=>{const t=e.querySelector(".tbw-context-menu");t&&t.remove()})}u||!t.action||t.subMenu||e.addEventListener("click",e=>{e.stopPropagation(),o(t)}),a.appendChild(e)}return a}const l="getContextMenuItems";let a=null,c=null,u=null,d=null,m=0;const h=[{id:"copy",name:"Copy",shortcut:"Ctrl+C",action:e=>{const t=e.grid;t?.plugins?.clipboard?.copy?.()}},{separator:!0,id:"sep1",name:""},{id:"export-csv",name:"Export CSV",action:e=>{const t=e.grid;t?.plugins?.export?.exportCsv?.()}}];class b extends n{static manifest={queries:[{type:l,description:"Collects context menu items from other plugins for header right-click menus"}]};name="contextMenu";get defaultConfig(){return{items:h}}isOpen=!1;position={x:0,y:0};params=null;menuElement=null;attach(e){super.attach(e),this.installGlobalHandlers(),m++}detach(){this.menuElement&&(this.menuElement.remove(),this.menuElement=null),this.isOpen=!1,this.params=null,this.uninstallGlobalHandlers()}syncSelectionOnContextMenu(e){if(e<0)return[];const t=this.grid?.query("getSelectedRowIndices"),n=t?.[0];return n?n.includes(e)?n:(this.grid?.query("selectRows",[e]),[e]):[e]}static CSS_VARS_TO_COPY=["--tbw-color-panel-bg","--tbw-color-fg","--tbw-color-fg-muted","--tbw-color-border","--tbw-color-row-hover","--tbw-color-shadow","--tbw-color-danger","--tbw-border-radius","--tbw-font-family","--tbw-font-size-sm","--tbw-font-size-xs","--tbw-font-size-2xs","--tbw-spacing-xs","--tbw-icon-size","--tbw-menu-min-width","--tbw-menu-item-padding","--tbw-menu-item-gap","--tbw-context-menu-bg","--tbw-context-menu-fg","--tbw-context-menu-border","--tbw-context-menu-radius","--tbw-context-menu-shadow","--tbw-context-menu-hover","--tbw-context-menu-danger","--tbw-context-menu-muted","--tbw-context-menu-min-width","--tbw-context-menu-font-size","--tbw-context-menu-font-family","--tbw-context-menu-item-padding","--tbw-context-menu-item-gap","--tbw-context-menu-icon-size","--tbw-context-menu-shortcut-size","--tbw-context-menu-arrow-size"];copyGridStyles(e){const t=this.gridElement;if(!t)return;const n=getComputedStyle(t),o=[],r=n.getPropertyValue("color-scheme").trim();r&&o.push(`color-scheme: ${r}`);for(const i of b.CSS_VARS_TO_COPY){const e=n.getPropertyValue(i).trim();e&&o.push(`${i}: ${e}`)}if(o.length>0){const t=e.getAttribute("style")||"";e.setAttribute("style",t+o.join("; ")+";")}}installGlobalHandlers(){!d&&"undefined"!=typeof document&&o&&(d=document.createElement("style"),d.id="tbw-context-menu-styles",d.textContent=o,document.head.appendChild(d)),a||(a=()=>{document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove())},document.addEventListener("click",a)),c||(c=e=>{if("Escape"===e.key){document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove())}},document.addEventListener("keydown",c)),u||(u=()=>{document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove())},document.addEventListener("scroll",u,!0))}uninstallGlobalHandlers(){m--,m>0||(a&&(document.removeEventListener("click",a),a=null),c&&(document.removeEventListener("keydown",c),c=null),u&&(document.removeEventListener("scroll",u,!0),u=null),d&&(d.remove(),d=null))}collectPluginItems(e){if(!this.grid)return[];const t=this.grid.query(l,e),n=[];for(const o of t)Array.isArray(o)&&n.push(...o);return n.sort((e,t)=>(e.order??100)-(t.order??100)),this.insertGroupSeparators(n)}insertGroupSeparators(e){if(e.length<=1)return e;const t=[];let n=-1;for(const o of e){if(o.separator){t.push(o);continue}const e=Math.floor((o.order??100)/10);n>=0&&e!==n&&t.push({id:`__sep-${n}-${e}`,label:"",separator:!0,action:()=>{}}),n=e,t.push(o)}return t}convertPluginItems(e){return e.map(e=>({id:e.id,name:e.label,icon:e.icon,shortcut:e.shortcut,disabled:e.disabled??!1,action:()=>e.action(),separator:e.separator,cssClass:e.cssClass}))}openMenuAt(e,t,n,o=!1){this.params=e,this.position={x:t,y:n};const i=this.collectPluginItems(e);let l=r(this.config.items??h,e);if(i.length>0){const e=this.convertPluginItems(i);l=l.length>0&&e.length>0?[...l,{id:"__plugin-sep",name:"",separator:!0},...e]:[...l,...e]}var a,c;(l=function(e){const t=[];for(const n of e)n.separator&&(0===t.length||t[t.length-1].separator)||t.push(n);return t.length>0&&t[t.length-1].separator&&t.pop(),t}(l),l.length)&&(document.querySelectorAll(".tbw-context-menu").forEach(e=>e.remove()),this.menuElement=null,this.menuElement=s(l,e,t=>{t.action&&t.action(e),this.menuElement?.remove(),this.menuElement=null,this.isOpen=!1},this.gridIcons.submenuArrow),a=this.menuElement,c=()=>this.hideMenu(),a.addEventListener("keydown",e=>{const t=Array.from(a.querySelectorAll('[role="menuitem"]:not(.disabled)'));if(!t.length)return;const n=document.activeElement,o=t.indexOf(n);switch(e.key){case"ArrowDown":e.preventDefault(),t[o<t.length-1?o+1:0].focus();break;case"ArrowUp":e.preventDefault(),t[o>0?o-1:t.length-1].focus();break;case"Enter":case" ":e.preventDefault(),n&&t.includes(n)&&n.click();break;case"Escape":e.preventDefault(),c()}}),document.body.appendChild(this.menuElement),this.copyGridStyles(this.menuElement),function(e,t,n){e.style.position="fixed",e.style.left=`${t}px`,e.style.top=`${n}px`,e.style.visibility="hidden",e.style.zIndex="10000";const o=e.getBoundingClientRect(),r=window.innerWidth,i=window.innerHeight;let s=t,l=n;t+o.width>r&&(s=t-o.width),n+o.height>i&&(l=n-o.height),s=Math.max(0,s),l=Math.max(0,l),e.style.left=`${s}px`,e.style.top=`${l}px`,e.style.visibility="visible"}(this.menuElement,t,n),this.isOpen=!0,o&&function(e){const t=e.querySelector('[role="menuitem"]:not(.disabled)');t?.focus()}(this.menuElement),this.emit("context-menu-open",{params:e,items:l}))}afterRender(){const e=this.gridElement;if(!e)return;const t=e.querySelector(".tbw-grid-root");t&&"true"!==t.getAttribute("data-context-menu-bound")&&(t.setAttribute("data-context-menu-bound","true"),t.addEventListener("contextmenu",e=>{const t=e;t.preventDefault();const n=t.target,o=n.closest("[data-row][data-col]"),r=n.closest('[part~="header-cell"]');let i;if(o){const e=parseInt(o.getAttribute("data-row")??"-1",10),n=parseInt(o.getAttribute("data-col")??"-1",10),r=this.visibleColumns[n],s=this.rows[e],l=this.syncSelectionOnContextMenu(e);i={row:s,rowIndex:e,column:r,columnIndex:n,field:r?.field??"",value:s?.[r?.field]??null,isHeader:!1,event:t,selectedRows:l}}else{if(!r)return;{const e=parseInt(r.getAttribute("data-col")??"-1",10),n=this.visibleColumns[e];i={row:null,rowIndex:-1,column:n,columnIndex:e,field:n?.field??"",value:null,isHeader:!0,event:t,selectedRows:[]}}}this.openMenuAt(i,t.clientX,t.clientY)}))}onKeyDown(e){const t="F10"===e.key&&e.shiftKey,n="ContextMenu"===e.key;if(!t&&!n)return;e.preventDefault();const o=this.grid;if(!o)return;const r=o._focusRow,i=o._focusCol,s=this.visibleColumns[i],l=this.rows[r],a=this.gridElement,c=a?.querySelector(`[data-row="${r}"][data-col="${i}"]`);let u=0,d=0;if(c){const e=c.getBoundingClientRect();u=e.left+e.width/2,d=e.bottom}const m=this.syncSelectionOnContextMenu(r),h={row:l,rowIndex:r,column:s,columnIndex:i,field:s?.field??"",value:l?.[s?.field]??null,isHeader:!1,event:e,selectedRows:m};return this.openMenuAt(h,u,d,!0),!0}showMenu(e,t,n){const o={row:n.row??null,rowIndex:n.rowIndex??-1,column:n.column??null,columnIndex:n.columnIndex??-1,field:n.field??"",value:n.value??null,isHeader:n.isHeader??!1,event:n.event??new MouseEvent("contextmenu"),selectedRows:n.selectedRows??[]};this.openMenuAt(o,e,t)}hideMenu(){this.menuElement&&(this.menuElement.remove(),this.menuElement=null,this.isOpen=!1)}isMenuOpen(){return this.isOpen}}export{b as ContextMenuPlugin};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|