@globalpayments/vega 2.92.0 → 2.94.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/dist/cjs/{app-globals-2f326662.js → app-globals-d05c3410.js} +14 -9
- package/dist/cjs/{child-nodes-event-prevent-slimmer-b9a5b3e2.js → child-nodes-event-prevent-slimmer-e67ee84c.js} +1 -1
- package/dist/cjs/{code-block-6435d641.js → code-block-493c7ce7.js} +117 -31
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-e4c9a5ba.js → component-value-history-controller-slimmer.abstract-ab21fcbf.js} +72 -39
- package/dist/cjs/{content-state-96ec9114.js → content-state-fc34a814.js} +61 -7
- package/dist/cjs/{date-required-rule-8c9e312b.js → date-required-rule-4ab06a82.js} +1 -1
- package/dist/cjs/{design-token-3548af29.js → design-token-d3d12fa0.js} +3 -3
- package/dist/cjs/{element-appender-slimmer-3bf69990.js → element-appender-slimmer-1d6323c2.js} +17 -8
- package/dist/cjs/{event-emit-slimmer-5bab10c2.js → event-emit-slimmer-d234a619.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-e0efac05.js → form-field-controller-slimmer-d638ba12.js} +1 -1
- package/dist/cjs/{image-annotation-action-853f72c8.js → image-annotation-action-7c4cd316.js} +4 -4
- package/dist/cjs/image-extension-30a7c10f.js +56 -0
- package/dist/cjs/index.cjs.js +24 -19
- package/dist/cjs/{inject-keyboard-manager-0dccff1a.js → inject-keyboard-manager-5a105612.js} +1 -1
- package/dist/cjs/{internal-calendar-period-factory-6187ec4c.js → internal-calendar-period-factory-b76006f7.js} +1 -1
- package/dist/cjs/{internal-translation-controller-48ebfd0f.js → internal-translation-controller-eb02c3b1.js} +6 -0
- package/dist/cjs/{internal-vega-event-manager-7196a847.js → internal-vega-event-manager-13c4012b.js} +2 -1
- package/dist/cjs/{keyboard-manager-dfe8d924.js → keyboard-manager-ca76d4dc.js} +1 -1
- package/dist/cjs/{keyboard-manager-slimmer-4a2560a1.js → keyboard-manager-slimmer-a1223714.js} +1 -1
- package/dist/cjs/{link-extension-28d95849.js → link-extension-92a63cb7.js} +3 -3
- package/dist/cjs/loader.cjs.js +14 -14
- package/dist/cjs/{month-view-generator-2e59b188.js → month-view-generator-876c50d4.js} +1 -1
- package/dist/cjs/{public-rules-8727c42c.js → public-rules-9e1ea1d9.js} +7 -7
- package/dist/cjs/{range-5cb3d1e4.js → range-30219330.js} +1 -1
- package/dist/cjs/{responsive-format-facade-98b89142.js → responsive-format-facade-25e9f30d.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-8e4d577d.js → rich-text-editor-required-rule-23bf7485.js} +1 -1
- package/dist/cjs/{split-cell-operation-9e3ab88d.js → split-cell-operation-43752212.js} +3 -3
- package/dist/cjs/{state-border-formatter-626b0a14.js → state-border-formatter-f1ce0f3b.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-981f43e1.js → string-format-strategy.abstract-b22f7754.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-fc4a0ba5.js → string-input-formatter-slimmer-d2c248f7.js} +1 -1
- package/dist/cjs/{string-mask-strategy-b47fa159.js → string-mask-strategy-fc01a500.js} +2 -2
- package/dist/cjs/{style-formatter-baf18624.js → style-formatter-73205450.js} +2 -2
- package/dist/cjs/{time-required-rule-e77d174f.js → time-required-rule-12d2f394.js} +1 -1
- package/dist/cjs/{token-extension-3aec039f.js → token-extension-ea891d54.js} +3318 -1742
- package/dist/cjs/{translation-slimmer-1e05769e.js → translation-slimmer-9099f56c.js} +1 -1
- package/dist/cjs/{type-guard-7ab48d6c.js → type-guard-f354af8b.js} +1 -1
- package/dist/cjs/{valid-credit-card-number-rule-52ba9c67.js → valid-credit-card-number-rule-8d370163.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
- package/dist/cjs/vega-app-footer.cjs.entry.js +3 -3
- package/dist/cjs/vega-app-header-button.cjs.entry.js +9 -9
- package/dist/cjs/vega-banner.cjs.entry.js +3 -3
- package/dist/cjs/vega-box.cjs.entry.js +6 -6
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-circle.cjs.entry.js +9 -9
- package/dist/cjs/vega-button-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
- package/dist/cjs/vega-button.cjs.entry.js +12 -9
- package/dist/cjs/vega-calendar_5.cjs.entry.js +11 -11
- package/dist/cjs/vega-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +6 -6
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-chip.cjs.entry.js +9 -9
- package/dist/cjs/vega-code-block.cjs.entry.js +12 -12
- package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +7 -7
- package/dist/cjs/vega-color-swatch.cjs.entry.js +5 -5
- package/dist/cjs/vega-combo-box.cjs.entry.js +19 -13
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +17 -17
- package/dist/cjs/vega-dialog_2.cjs.entry.js +20 -9
- package/dist/cjs/vega-divider.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +693 -195
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/{vega-event-id-df22d80e.js → vega-event-id-58afed7a.js} +2 -0
- package/dist/cjs/vega-field-label.cjs.entry.js +5 -5
- package/dist/cjs/vega-file-uploader.cjs.entry.js +6 -6
- package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-flex.cjs.entry.js +6 -6
- package/dist/cjs/vega-font.cjs.entry.js +5 -5
- package/dist/cjs/vega-form.cjs.entry.js +7 -7
- package/dist/cjs/vega-grid.cjs.entry.js +5 -5
- package/dist/cjs/vega-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-image-uploader.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +10 -10
- package/dist/cjs/vega-input-numeric.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-passcode.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +8 -8
- package/dist/cjs/vega-input-range.cjs.entry.js +7 -7
- package/dist/cjs/vega-input-select.cjs.entry.js +9 -9
- package/dist/cjs/vega-input.cjs.entry.js +9 -9
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +316 -111
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination.cjs.entry.js +8 -8
- package/dist/cjs/vega-popover_2.cjs.entry.js +11 -11
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +510 -73
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +4 -4
- package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +8 -8
- package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +15 -15
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +6 -6
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +6 -6
- package/dist/cjs/vega-signature-capture.cjs.entry.js +10 -10
- package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-table_11.cjs.entry.js +968 -425
- package/dist/cjs/vega-textarea.cjs.entry.js +7 -9
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +34 -14
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
- package/dist/cjs/vega.cjs.js +14 -14
- package/dist/collection/components/vega-button/vega-button.css +4 -0
- package/dist/collection/components/vega-button/vega-button.js +4 -1
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +4 -1
- package/dist/collection/components/vega-combo-box/vega-combo-box.js +7 -1
- package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
- package/dist/collection/components/vega-dropdown/constants.js +1 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +9 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.js +97 -4
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.js +219 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.js +78 -13
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.js +13 -1
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +7 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +52 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +4 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +5 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +126 -1
- package/dist/collection/components/vega-field-label/vega-field-label.js +1 -1
- package/dist/collection/components/vega-hint/vega-hint.js +1 -1
- package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +4 -1
- package/dist/collection/components/vega-modal/vega-modal.css +0 -1
- package/dist/collection/components/vega-modal/vega-modal.js +38 -0
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.js +4 -6
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.js +23 -68
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.js +74 -0
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +16 -2
- package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.js +2 -2
- package/dist/collection/components/vega-nav/vega-left-nav/vega-left-nav.js +7 -2
- package/dist/collection/components/vega-rich-text-editor/assets/redo.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/assets/undo.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.js +11 -5
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.js +9 -4
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.js +61 -5
- package/dist/collection/components/vega-rich-text-editor/dto/actions/paste-content-action.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-style-annotation.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-node-filter-styles-strategy.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.js +61 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.js +40 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.js +4 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.js +47 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.js +76 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.js +70 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.js +53 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.js +41 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +260 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.js +21 -7
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.js +156 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +73 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/image/image-extension.js +34 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/image/type.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/assets/paste.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +145 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +442 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-toolbar-popover-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +4 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +85 -15
- package/dist/collection/components/vega-rich-text-editor/public-api.js +5 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +385 -25
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +69 -36
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +59 -14
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +11 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +19 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +28 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.js +1 -1
- package/dist/collection/components/vega-table/slimmers/controllers/dto/column-render-input-model.js +32 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +77 -0
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +121 -0
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-cell-renderer.js +41 -14
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +207 -7
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-row-renderer.js +16 -3
- package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +113 -11
- package/dist/collection/components/vega-table/vega-table-expand-row/slimmers/controllers/vega-table-expand-row-col-span-controller.js +11 -2
- package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +5 -1
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +22 -1
- package/dist/collection/components/vega-table/vega-table.css +5 -0
- package/dist/collection/components/vega-table/vega-table.js +5 -0
- package/dist/collection/components/vega-text/vega-text.js +1 -1
- package/dist/collection/components/vega-textarea/vega-textarea.js +1 -3
- package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.js +4 -0
- package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.js +4 -0
- package/dist/collection/components/vega-time-picker/vega-time-picker.js +39 -0
- package/dist/collection/constants/ui.js +1 -0
- package/dist/collection/global/scripts/before-vega-load.js +8 -0
- package/dist/collection/helpers/backdrop/index.js +1 -0
- package/dist/collection/helpers/backdrop/shared-backdrop-manager.js +163 -0
- package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +2 -1
- package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +11 -4
- package/dist/collection/helpers/translation/locales/en.js +6 -0
- package/dist/collection/helpers/ui/element-appender.js +5 -2
- package/dist/esm/{app-globals-5e0d319a.js → app-globals-f2336686.js} +14 -9
- package/dist/esm/{child-nodes-event-prevent-slimmer-f24618c5.js → child-nodes-event-prevent-slimmer-96c14f5a.js} +1 -1
- package/dist/esm/{code-block-b71b2aa4.js → code-block-e12588fe.js} +117 -32
- package/dist/esm/{component-value-history-controller-slimmer.abstract-282df6e5.js → component-value-history-controller-slimmer.abstract-4e8eb313.js} +72 -39
- package/dist/esm/{content-state-909099f8.js → content-state-8032467a.js} +61 -7
- package/dist/esm/{date-required-rule-15edb04a.js → date-required-rule-b88e1650.js} +1 -1
- package/dist/esm/{design-token-cb5ed6b9.js → design-token-76bd217c.js} +3 -3
- package/dist/esm/{element-appender-slimmer-e41120ee.js → element-appender-slimmer-7fcb944b.js} +17 -8
- package/dist/esm/{event-emit-slimmer-03deba18.js → event-emit-slimmer-db4a82e0.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-cfe1d8a7.js → form-field-controller-slimmer-395c23e3.js} +1 -1
- package/dist/esm/{image-annotation-action-98232dc4.js → image-annotation-action-b3b6c308.js} +4 -4
- package/dist/esm/image-extension-b6c7e4a7.js +53 -0
- package/dist/esm/index.js +19 -19
- package/dist/esm/{inject-keyboard-manager-13cc77ab.js → inject-keyboard-manager-86126b5b.js} +1 -1
- package/dist/esm/{internal-calendar-period-factory-c3d70f3b.js → internal-calendar-period-factory-3a07dba0.js} +1 -1
- package/dist/esm/{internal-translation-controller-8e8a514a.js → internal-translation-controller-16709132.js} +6 -0
- package/dist/esm/{internal-vega-event-manager-75e5e3bb.js → internal-vega-event-manager-48690e5b.js} +2 -1
- package/dist/esm/{keyboard-manager-fe885db1.js → keyboard-manager-a0c3e1cf.js} +1 -1
- package/dist/esm/{keyboard-manager-slimmer-61d4c79b.js → keyboard-manager-slimmer-f3f66c15.js} +1 -1
- package/dist/esm/{link-extension-f1a3bea7.js → link-extension-97fcb8fb.js} +3 -3
- package/dist/esm/loader.js +14 -14
- package/dist/esm/{month-view-generator-85eecb95.js → month-view-generator-fd0e1856.js} +1 -1
- package/dist/esm/{public-rules-323bea4b.js → public-rules-c06f0d2a.js} +7 -7
- package/dist/esm/{range-e63068d1.js → range-e999837f.js} +1 -1
- package/dist/esm/{responsive-format-facade-fb424f5b.js → responsive-format-facade-ced96b0b.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-0edb8ba7.js → rich-text-editor-required-rule-71f8ee98.js} +1 -1
- package/dist/esm/{split-cell-operation-93b4d775.js → split-cell-operation-359f8082.js} +3 -3
- package/dist/esm/{state-border-formatter-1a528ca4.js → state-border-formatter-b680e922.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-72fc98aa.js → string-format-strategy.abstract-23faab71.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-b0c480d8.js → string-input-formatter-slimmer-4b4866a6.js} +1 -1
- package/dist/esm/{string-mask-strategy-4e00c173.js → string-mask-strategy-66586cd8.js} +2 -2
- package/dist/esm/{style-formatter-5c1bea8d.js → style-formatter-f4e16af5.js} +2 -2
- package/dist/esm/{time-required-rule-df500b14.js → time-required-rule-6e80a9ab.js} +1 -1
- package/dist/esm/{token-extension-32d1fa56.js → token-extension-9896879b.js} +3314 -1742
- package/dist/esm/{translation-slimmer-60408f13.js → translation-slimmer-21748a0e.js} +1 -1
- package/dist/esm/{type-guard-91087018.js → type-guard-ec5e8628.js} +1 -1
- package/dist/esm/{valid-credit-card-number-rule-681ecb75.js → valid-credit-card-number-rule-ca5a47d6.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +9 -9
- package/dist/esm/vega-app-footer.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +9 -9
- package/dist/esm/vega-banner.entry.js +3 -3
- package/dist/esm/vega-box.entry.js +6 -6
- package/dist/esm/vega-breadcrumb.entry.js +4 -4
- package/dist/esm/vega-button-circle.entry.js +9 -9
- package/dist/esm/vega-button-group_2.entry.js +4 -4
- package/dist/esm/vega-button-link.entry.js +4 -4
- package/dist/esm/vega-button.entry.js +12 -9
- package/dist/esm/vega-calendar_5.entry.js +11 -11
- package/dist/esm/vega-card.entry.js +5 -5
- package/dist/esm/vega-carousel.entry.js +6 -6
- package/dist/esm/vega-checkbox_2.entry.js +6 -6
- package/dist/esm/vega-chip.entry.js +9 -9
- package/dist/esm/vega-code-block.entry.js +12 -12
- package/dist/esm/vega-color-picker.entry.js +5 -5
- package/dist/esm/vega-color-swatch-picker.entry.js +7 -7
- package/dist/esm/vega-color-swatch.entry.js +5 -5
- package/dist/esm/vega-combo-box.entry.js +19 -13
- package/dist/esm/vega-date-picker_2.entry.js +17 -17
- package/dist/esm/vega-dialog_2.entry.js +20 -9
- package/dist/esm/vega-divider.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +695 -197
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-d3017041.js → vega-event-id-270fe47e.js} +2 -1
- package/dist/esm/vega-field-label.entry.js +5 -5
- package/dist/esm/vega-file-uploader.entry.js +6 -6
- package/dist/esm/vega-flag-icon.entry.js +5 -5
- package/dist/esm/vega-flex.entry.js +6 -6
- package/dist/esm/vega-font.entry.js +5 -5
- package/dist/esm/vega-form.entry.js +7 -7
- package/dist/esm/vega-grid.entry.js +5 -5
- package/dist/esm/vega-icon.entry.js +5 -5
- package/dist/esm/vega-image-uploader.entry.js +9 -9
- package/dist/esm/vega-input-credit-card.entry.js +10 -10
- package/dist/esm/vega-input-numeric.entry.js +9 -9
- package/dist/esm/vega-input-passcode.entry.js +9 -9
- package/dist/esm/vega-input-phone-number.entry.js +8 -8
- package/dist/esm/vega-input-range.entry.js +7 -7
- package/dist/esm/vega-input-select.entry.js +9 -9
- package/dist/esm/vega-input.entry.js +9 -9
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +316 -111
- package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
- package/dist/esm/vega-page-notification_2.entry.js +1 -1
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +3 -3
- package/dist/esm/vega-pagination.entry.js +8 -8
- package/dist/esm/vega-popover_2.entry.js +11 -11
- package/dist/esm/vega-progress-tracker_2.entry.js +6 -6
- package/dist/esm/vega-radio_2.entry.js +9 -9
- package/dist/esm/vega-rich-text-content.entry.js +7 -7
- package/dist/esm/vega-rich-text-editor_4.entry.js +507 -70
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +4 -4
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +15 -15
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +8 -8
- package/dist/esm/vega-selection-tile_2.entry.js +6 -6
- package/dist/esm/vega-sidenav_3.entry.js +6 -6
- package/dist/esm/vega-signature-capture.entry.js +10 -10
- package/dist/esm/vega-stepper.entry.js +6 -6
- package/dist/esm/vega-tab-group_2.entry.js +4 -4
- package/dist/esm/vega-table_11.entry.js +968 -425
- package/dist/esm/vega-textarea.entry.js +7 -9
- package/dist/esm/vega-time-picker_2.entry.js +34 -14
- package/dist/esm/vega-toggle-switch.entry.js +5 -5
- package/dist/esm/vega-tooltip_2.entry.js +6 -6
- package/dist/esm/vega.js +14 -14
- package/dist/sri/vega-sri-manifest.json +356 -356
- package/dist/types/components/vega-combo-box/types.d.ts +6 -1
- package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +1 -0
- package/dist/types/components/vega-dropdown/constants.d.ts +1 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +2 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.d.ts +36 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.d.ts +107 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.d.ts +17 -0
- package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.d.ts +5 -0
- package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.d.ts +2 -0
- package/dist/types/components/vega-dropdown/types.d.ts +8 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.d.ts +25 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
- package/dist/types/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.d.ts +4 -0
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +48 -0
- package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +2 -1
- package/dist/types/components/vega-modal/vega-modal.d.ts +9 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.d.ts +0 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.d.ts +12 -19
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.d.ts +41 -0
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +4 -1
- package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.d.ts +1 -1
- package/dist/types/components/vega-nav/vega-left-nav/vega-left-nav.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.d.ts +14 -4
- package/dist/types/components/vega-rich-text-editor/dto/actions/paste-content-action.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.d.ts +34 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.d.ts +9 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.d.ts +48 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.d.ts +56 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.d.ts +35 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.d.ts +31 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.d.ts +113 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.d.ts +15 -4
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.d.ts +63 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.d.ts +40 -0
- package/dist/types/components/vega-rich-text-editor/extensions/image/image-extension.d.ts +27 -0
- package/dist/types/components/vega-rich-text-editor/extensions/image/type.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/assets/paste.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +58 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +150 -0
- package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +26 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/public-api.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.d.ts +114 -3
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +22 -13
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +10 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -4
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.d.ts +1 -1
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.d.ts +1 -1
- package/dist/types/components/vega-table/interface.d.ts +31 -0
- package/dist/types/components/vega-table/slimmers/controllers/dto/column-render-input-model.d.ts +13 -0
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +43 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +38 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-cell-renderer.d.ts +11 -2
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +4 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-row-renderer.d.ts +1 -0
- package/dist/types/components/vega-table/vega-table-cell/slimmers/controllers/vega-table-row-state-subscriber.d.ts +1 -1
- package/dist/types/components/vega-table/vega-table-cell/vega-table-cell.d.ts +23 -0
- package/dist/types/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.d.ts +1 -0
- package/dist/types/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.d.ts +9 -0
- package/dist/types/components/vega-table/vega-table.d.ts +2 -0
- package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.d.ts +1 -0
- package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.d.ts +1 -0
- package/dist/types/components/vega-time-picker/types.d.ts +7 -0
- package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +11 -1
- package/dist/types/components.d.ts +90 -3
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/helpers/backdrop/index.d.ts +1 -0
- package/dist/types/helpers/backdrop/shared-backdrop-manager.d.ts +67 -0
- package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
- package/dist/types/helpers/translation/interface.d.ts +7 -0
- package/dist/types/helpers/ui/element-appender.d.ts +4 -1
- package/dist/types/types/components.type.d.ts +5 -1
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-92823583.js → p-02355de8.js} +1 -1
- package/dist/vega/{p-481601c0.entry.js → p-0af32f31.entry.js} +1 -1
- package/dist/vega/{p-438b7404.entry.js → p-0b311599.entry.js} +1 -1
- package/dist/vega/{p-56cf1a65.entry.js → p-0b9c7c79.entry.js} +1 -1
- package/dist/vega/p-0be4df0a.js +1 -0
- package/dist/vega/p-0d18368b.js +1 -0
- package/dist/vega/{p-9fafc956.entry.js → p-1232b553.entry.js} +1 -1
- package/dist/vega/{p-70817cf5.js → p-140616fe.js} +1 -1
- package/dist/vega/{p-f365601c.entry.js → p-14559974.entry.js} +1 -1
- package/dist/vega/{p-aa32f2f3.js → p-14baa886.js} +1 -1
- package/dist/vega/p-2364be92.entry.js +1 -0
- package/dist/vega/{p-c0629528.entry.js → p-26c7fe8b.entry.js} +1 -1
- package/dist/vega/p-270697c0.entry.js +1 -0
- package/dist/vega/p-282b37cb.js +1 -0
- package/dist/vega/{p-06c2ce2c.entry.js → p-288d65ad.entry.js} +1 -1
- package/dist/vega/p-2bf17505.entry.js +1 -0
- package/dist/vega/{p-c78aeaf3.entry.js → p-2dc5edd0.entry.js} +1 -1
- package/dist/vega/{p-136226f8.js → p-320091b7.js} +1 -1
- package/dist/vega/{p-b799fc1f.entry.js → p-341a6b32.entry.js} +1 -1
- package/dist/vega/p-36949349.js +1 -0
- package/dist/vega/p-38c9d782.js +1 -0
- package/dist/vega/{p-a361456d.js → p-3c309a38.js} +1 -1
- package/dist/vega/{p-71e2a3ec.js → p-3dee1e55.js} +1 -1
- package/dist/vega/{p-ef2b9846.entry.js → p-3e8baeac.entry.js} +1 -1
- package/dist/vega/{p-8f078d0d.entry.js → p-44439ecc.entry.js} +1 -1
- package/dist/vega/{p-68e16c70.entry.js → p-45e8424a.entry.js} +1 -1
- package/dist/vega/{p-ce7e9515.entry.js → p-46fe3154.entry.js} +1 -1
- package/dist/vega/{p-c2e0f8b7.entry.js → p-48ee3e24.entry.js} +1 -1
- package/dist/vega/{p-e371738b.js → p-4fe40b76.js} +1 -1
- package/dist/vega/p-4ff48b84.js +1 -0
- package/dist/vega/{p-2e58d99e.entry.js → p-5107277d.entry.js} +1 -1
- package/dist/vega/{p-2def8e3e.js → p-51b68d25.js} +1 -1
- package/dist/vega/p-52c6a399.entry.js +1 -0
- package/dist/vega/p-579cdeae.js +1 -0
- package/dist/vega/{p-e9cee498.entry.js → p-595998d9.entry.js} +1 -1
- package/dist/vega/{p-7798254d.entry.js → p-5db61a12.entry.js} +1 -1
- package/dist/vega/{p-e41d9d0e.entry.js → p-5df2d6a1.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-d7369441.js → p-61ce8029.js} +1 -1
- package/dist/vega/{p-2da12975.entry.js → p-62d6e063.entry.js} +1 -1
- package/dist/vega/p-698fbd73.js +1 -0
- package/dist/vega/p-6ad7144a.entry.js +1 -0
- package/dist/vega/{p-f70f7ad8.entry.js → p-6c9c2f8c.entry.js} +1 -1
- package/dist/vega/{p-b730bf6e.js → p-6cde45fc.js} +1 -1
- package/dist/vega/p-6dfe2407.js +1 -0
- package/dist/vega/{p-d3c8b871.entry.js → p-6f01a71a.entry.js} +1 -1
- package/dist/vega/p-6f70a10f.entry.js +1 -0
- package/dist/vega/p-73f2c3c0.entry.js +1 -0
- package/dist/vega/{p-de885ef2.js → p-75e33859.js} +1 -1
- package/dist/vega/p-762ea523.entry.js +1 -0
- package/dist/vega/{p-f6bccb06.entry.js → p-782eb312.entry.js} +1 -1
- package/dist/vega/p-7a88a3d3.entry.js +1 -0
- package/dist/vega/{p-5038b6d7.entry.js → p-7b57a845.entry.js} +1 -1
- package/dist/vega/p-83a16285.entry.js +1 -0
- package/dist/vega/{p-8da860f6.js → p-8720816e.js} +1 -1
- package/dist/vega/{p-9219201a.entry.js → p-892edf88.entry.js} +1 -1
- package/dist/vega/{p-625351a3.entry.js → p-8c083255.entry.js} +1 -1
- package/dist/vega/{p-4d9061fb.js → p-8db904dc.js} +1 -1
- package/dist/vega/{p-22f73e6e.entry.js → p-91287214.entry.js} +1 -1
- package/dist/vega/{p-5946fadf.js → p-919cddc3.js} +1 -1
- package/dist/vega/{p-fc5dfb52.entry.js → p-95913e3c.entry.js} +1 -1
- package/dist/vega/p-97215133.js +1 -0
- package/dist/vega/{p-5829a66d.entry.js → p-9bdc6e11.entry.js} +1 -1
- package/dist/vega/{p-8b9a8603.entry.js → p-9d18ba7f.entry.js} +1 -1
- package/dist/vega/{p-f7739cbb.entry.js → p-9dca874d.entry.js} +1 -1
- package/dist/vega/{p-c67ce78c.entry.js → p-9f38448c.entry.js} +1 -1
- package/dist/vega/{p-e3803943.js → p-9f7154d2.js} +1 -1
- package/dist/vega/{p-2314494a.entry.js → p-a057285e.entry.js} +1 -1
- package/dist/vega/{p-f515d189.entry.js → p-a0a58295.entry.js} +1 -1
- package/dist/vega/p-a7209700.js +1 -0
- package/dist/vega/{p-40501057.entry.js → p-a890d60b.entry.js} +1 -1
- package/dist/vega/{p-450bf94d.entry.js → p-addbca58.entry.js} +1 -1
- package/dist/vega/{p-45ab490c.js → p-b1eb9ff0.js} +1 -1
- package/dist/vega/{p-5beec481.js → p-b1ff70bf.js} +1 -1
- package/dist/vega/{p-9cdedcfb.entry.js → p-b39d4a88.entry.js} +1 -1
- package/dist/vega/{p-ea22cba0.js → p-b4e7c967.js} +1 -1
- package/dist/vega/{p-228c5de8.js → p-b775e51f.js} +1 -1
- package/dist/vega/{p-43c3848f.entry.js → p-b8f8e480.entry.js} +1 -1
- package/dist/vega/{p-8d69b201.js → p-ba662fe5.js} +1 -1
- package/dist/vega/p-c66d2a1e.js +1 -0
- package/dist/vega/{p-a268a4fb.entry.js → p-c67b9aba.entry.js} +1 -1
- package/dist/vega/{p-2353b64f.entry.js → p-c9c6daa6.entry.js} +1 -1
- package/dist/vega/p-c9daabe1.entry.js +1 -0
- package/dist/vega/{p-37dffdf6.entry.js → p-cad5222a.entry.js} +1 -1
- package/dist/vega/{p-e160a727.entry.js → p-cb90163a.entry.js} +1 -1
- package/dist/vega/{p-5545a235.entry.js → p-d08ffdf1.entry.js} +1 -1
- package/dist/vega/{p-30561e1d.entry.js → p-d3a36d19.entry.js} +1 -1
- package/dist/vega/{p-cd1844ad.entry.js → p-e235020b.entry.js} +1 -1
- package/dist/vega/{p-9440a8a5.entry.js → p-e4266b45.entry.js} +1 -1
- package/dist/vega/{p-18413b62.entry.js → p-e48a870f.entry.js} +1 -1
- package/dist/vega/{p-590c8720.entry.js → p-e8ee70c5.entry.js} +1 -1
- package/dist/vega/p-ed103a1a.entry.js +1 -0
- package/dist/vega/p-f05a193e.entry.js +1 -0
- package/dist/vega/{p-7be548a7.js → p-f1974321.js} +1 -1
- package/dist/vega/{p-916dfa7e.entry.js → p-f246f125.entry.js} +1 -1
- package/dist/vega/p-f4da615a.js +3 -0
- package/dist/vega/{p-d0ce752f.entry.js → p-f5d7b89f.entry.js} +1 -1
- package/dist/vega/{p-c8eaf91c.entry.js → p-f651df3b.entry.js} +1 -1
- package/dist/vega/{p-93dfab05.js → p-f7e459cd.js} +1 -1
- package/dist/vega/{p-b6ebfd5c.entry.js → p-f8a29127.entry.js} +1 -1
- package/dist/vega/p-f906a7bc.entry.js +1 -0
- package/dist/vega/{p-d20587b4.entry.js → p-f96d0503.entry.js} +1 -1
- package/dist/vega/{p-cd9fb2ca.entry.js → p-fbd3be00.entry.js} +1 -1
- package/dist/vega/{p-f0bc2bbb.js → p-fe24b459.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +2 -16
- package/readme.md +0 -5
- package/dist/cjs/replace-selected-text-action-a31563ed.js +0 -20
- package/dist/esm/replace-selected-text-action-c0817b2b.js +0 -18
- package/dist/vega/p-0179f55d.js +0 -1
- package/dist/vega/p-07b56f2b.entry.js +0 -1
- package/dist/vega/p-209e0166.js +0 -1
- package/dist/vega/p-35df0f0a.entry.js +0 -1
- package/dist/vega/p-3cf4339a.entry.js +0 -1
- package/dist/vega/p-4953bb1a.js +0 -1
- package/dist/vega/p-4e39adf5.entry.js +0 -1
- package/dist/vega/p-5319da71.entry.js +0 -1
- package/dist/vega/p-53c76d9d.entry.js +0 -1
- package/dist/vega/p-5de1acdb.js +0 -1
- package/dist/vega/p-5df9047c.js +0 -1
- package/dist/vega/p-683cfe24.js +0 -1
- package/dist/vega/p-802bf369.js +0 -1
- package/dist/vega/p-82279b03.entry.js +0 -1
- package/dist/vega/p-8509c140.entry.js +0 -1
- package/dist/vega/p-8aa07ed0.js +0 -1
- package/dist/vega/p-970115d6.js +0 -1
- package/dist/vega/p-9b1d718c.entry.js +0 -1
- package/dist/vega/p-c78e8081.entry.js +0 -1
- package/dist/vega/p-ca9852bb.js +0 -1
- package/dist/vega/p-dee38163.entry.js +0 -1
- package/dist/vega/p-e5502873.entry.js +0 -1
- package/dist/vega/p-ea54ce0a.js +0 -3
- package/dist/vega/p-ee3155bd.js +0 -1
- package/dist/vega/p-eee01ba7.entry.js +0 -1
- package/dist/vega/p-f4a01959.js +0 -1
- package/dist/vega/p-f5aefb2f.entry.js +0 -1
|
@@ -10,9 +10,9 @@ import { f as findParent, a as arrayToClassString, m as extractNumberFromString
|
|
|
10
10
|
import { d as domNodeSubjectFactory, D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-ddff8662.js';
|
|
11
11
|
import { r as remoteInvocationRegistry } from './remote-invocation-registry-d69245c2.js';
|
|
12
12
|
import { U as VegaInternalTableRowExpand, W as VegaInternalTableRowSelect, X as VegaInternalTableRowSelectAll, Y as VegaInternalVegaTableRenderInputChange, Z as VegaInternalColumnHeadRowRenderInputRIC, _ as VegaInternalColumnHeadCellRenderInputRIC, $ as VegaInternalColumnBodyCellRenderInputRIC, a0 as VegaInternalTableHeadCellSortEvent } from './vega-internal-event-id-827eb1ce.js';
|
|
13
|
-
import { a as VegaClick, d as VegaChange,
|
|
14
|
-
import { R as ResponsiveFormatFacade } from './responsive-format-facade-
|
|
15
|
-
import { i as isNonNullable, s as isBreakpointsTokenType, ap as isVegaTableColumnGroupingModelType } from './type-guard-
|
|
13
|
+
import { a as VegaClick, d as VegaChange, _ as VegaPageSizeChange, e as VegaExpand, a2 as VegaSelectChange, a3 as VegaSelectAllChange, a4 as VegaRowClick, a5 as VegaRowExpand, a6 as VegaRowDragDrop, a7 as VegaRowSelect, a8 as VegaRowSelectAll } from './vega-event-id-270fe47e.js';
|
|
14
|
+
import { R as ResponsiveFormatFacade } from './responsive-format-facade-ced96b0b.js';
|
|
15
|
+
import { i as isNonNullable, s as isBreakpointsTokenType, ap as isVegaTableColumnGroupingModelType } from './type-guard-ec5e8628.js';
|
|
16
16
|
import { s as sanitizeVegaComponent } from './component-7d906393.js';
|
|
17
17
|
import { g as generateUUID } from './misc-9fdbcfbb.js';
|
|
18
18
|
import { g as getCurrentBreakpoint } from './breakpoints-332702ed.js';
|
|
@@ -20,10 +20,10 @@ import { M as MutationObserverSlimmer } from './mutation-observer-slimmer-58ebc1
|
|
|
20
20
|
import { T as TagNameMutationFilter } from './mutation-observer-filters-1a054fb0.js';
|
|
21
21
|
import { P as PageResizeObserverSlimmer } from './page-resize-observer-slimmer-e24d36c5.js';
|
|
22
22
|
import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-0f72ce74.js';
|
|
23
|
-
import { C as ChildNodesEventPreventSlimmer } from './child-nodes-event-prevent-slimmer-
|
|
24
|
-
import { c as createEventEmitSlimmer } from './event-emit-slimmer-
|
|
23
|
+
import { C as ChildNodesEventPreventSlimmer } from './child-nodes-event-prevent-slimmer-96c14f5a.js';
|
|
24
|
+
import { c as createEventEmitSlimmer } from './event-emit-slimmer-db4a82e0.js';
|
|
25
25
|
import { I as ImmutableMap } from './immutable-map-4fe22b11.js';
|
|
26
|
-
import { T as TranslationSlimmer } from './translation-slimmer-
|
|
26
|
+
import { T as TranslationSlimmer } from './translation-slimmer-21748a0e.js';
|
|
27
27
|
import { S as SynchronizeTaskQueue } from './synchronize-task-queue-ac8acc3b.js';
|
|
28
28
|
import { c as createDynamicSlimmer } from './dynamic-slimmer-90b8af32.js';
|
|
29
29
|
import { I as InternalVegaZIndexManager } from './internal-vega-z-index-manager-7d2b54c3.js';
|
|
@@ -39,9 +39,9 @@ import './number-4398f2e1.js';
|
|
|
39
39
|
import './pixel-f32c07ce.js';
|
|
40
40
|
import './array-7888f339.js';
|
|
41
41
|
import './typography-19c3b9be.js';
|
|
42
|
-
import './internal-translation-controller-
|
|
42
|
+
import './internal-translation-controller-16709132.js';
|
|
43
43
|
import './try-get-document-bef0f526.js';
|
|
44
|
-
import './internal-vega-event-manager-
|
|
44
|
+
import './internal-vega-event-manager-48690e5b.js';
|
|
45
45
|
import './vega-env-manager-8f8dc473.js';
|
|
46
46
|
import './index-9c9865c0.js';
|
|
47
47
|
import './icon-manager-4ef3f6dd.js';
|
|
@@ -157,7 +157,256 @@ const VegaTableEditableFieldTypes = [
|
|
|
157
157
|
'time-picker',
|
|
158
158
|
];
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
/**
|
|
161
|
+
* ColumnRenderInputModel
|
|
162
|
+
*
|
|
163
|
+
* Render-time representation of a column or group node used by header/body renderers.
|
|
164
|
+
* Built from a ColumnStructureModel tree, it carries computed layout metadata required
|
|
165
|
+
* for rendering and pinned/sticky calculations (colSpan, rowSpan, pinned boundaries, etc).
|
|
166
|
+
*
|
|
167
|
+
* Instances form a forest (root-level nodes in an array) that mirrors the structure model
|
|
168
|
+
* but contains additional render-specific properties and parent/child links for renderers.
|
|
169
|
+
*/
|
|
170
|
+
class ColumnRenderInputModel {
|
|
171
|
+
/**
|
|
172
|
+
* Create a new render input node.
|
|
173
|
+
*
|
|
174
|
+
* @param {string} key - Unique key (matches ColumnStructureModel.key).
|
|
175
|
+
* @param {string} label - Optional display label (from structure model).
|
|
176
|
+
* @param {VegaTablePinnedType} pinned - Pinned type for this node ('left' | 'right' | null).
|
|
177
|
+
* @param {Nullable<number>} colSpan - Number of visual columns spanned by this node's subtree.
|
|
178
|
+
* @param {Nullable<number>} rowSpan - Number of header rows this node should span.
|
|
179
|
+
* @param {boolean} isViewStart - True when this node is the start of a visible view range.
|
|
180
|
+
* @param {boolean} isViewEnd - True when this node is the end of a visible view range.
|
|
181
|
+
* @param {boolean} isLeftEndPinned - True when node is last left-pinned sibling.
|
|
182
|
+
* @param {boolean} isRightStartPinned - True when node is first right-pinned sibling.
|
|
183
|
+
* @param {boolean} isNoPinnedEnd - True when node is last non-pinned sibling.
|
|
184
|
+
* @param {boolean} headHasGroupColumn - Header contains group columns (affects rowSpan).
|
|
185
|
+
* @param {boolean} headHasPinnedColumn - Header contains pinned columns.
|
|
186
|
+
* @param {number} headMaxDepth - Maximum header depth (number of header rows).
|
|
187
|
+
* @param {number} level - Level/index of this node within header rows (0-based).
|
|
188
|
+
* @param {number} columnIndex - Sequential leaf index (used for ordering).
|
|
189
|
+
* @param {Nullable<ColumnRenderInputModel>} parent - Parent render input node (null for root-level).
|
|
190
|
+
* @param {ColumnRenderInputModel[]} children - Child render input nodes.
|
|
191
|
+
*/
|
|
192
|
+
constructor(key, label, pinned, colSpan, rowSpan, isViewStart, isViewEnd, isLeftEndPinned, isRightStartPinned, isNoPinnedEnd, headHasGroupColumn, headHasPinnedColumn, headMaxDepth, level, columnIndex, parent, children = []) {
|
|
193
|
+
this.key = key;
|
|
194
|
+
this.label = label;
|
|
195
|
+
this.pinned = pinned;
|
|
196
|
+
this.colSpan = colSpan;
|
|
197
|
+
this.rowSpan = rowSpan;
|
|
198
|
+
this.isViewStart = isViewStart;
|
|
199
|
+
this.isViewEnd = isViewEnd;
|
|
200
|
+
this.isLeftEndPinned = isLeftEndPinned;
|
|
201
|
+
this.isRightStartPinned = isRightStartPinned;
|
|
202
|
+
this.isNoPinnedEnd = isNoPinnedEnd;
|
|
203
|
+
this.headHasGroupColumn = headHasGroupColumn;
|
|
204
|
+
this.headHasPinnedColumn = headHasPinnedColumn;
|
|
205
|
+
this.headMaxDepth = headMaxDepth;
|
|
206
|
+
this.level = level;
|
|
207
|
+
this.columnIndex = columnIndex;
|
|
208
|
+
this.parent = parent;
|
|
209
|
+
this.children = children;
|
|
210
|
+
this.iteratorCacheMap = new Map();
|
|
211
|
+
this.leaves = [];
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Build a forest of ColumnRenderInputModel nodes from a ColumnStructureModel root.
|
|
215
|
+
*
|
|
216
|
+
* @param {ColumnStructureModel} rootModel - Root ColumnStructureModel that supplies tree and level data.
|
|
217
|
+
* @returns {ColumnRenderInputModel[]} Array of root-level ColumnRenderInputModel nodes (the render forest).
|
|
218
|
+
*/
|
|
219
|
+
static from(rootModel) {
|
|
220
|
+
const renderInputs = [];
|
|
221
|
+
const parentStack = [];
|
|
222
|
+
const maxLevel = rootModel.getMaxDepth();
|
|
223
|
+
const hasGroupColumn = rootModel.hasGroupColumn();
|
|
224
|
+
const hasPinnedColumn = rootModel.hasLeftPinnedColumn() || rootModel.hasRightPinnedColumn();
|
|
225
|
+
let columnIndex = 0;
|
|
226
|
+
// Iterate structure model (DFS by default) and construct render nodes.
|
|
227
|
+
rootModel.iterator().forEach((model) => {
|
|
228
|
+
const parent = model.level > 0 ? parentStack[model.level - 1] : null;
|
|
229
|
+
const isParentStart = hasGroupColumn && this.isParentStart(model);
|
|
230
|
+
const isParentEnd = hasGroupColumn && this.isParentEnd(model);
|
|
231
|
+
const renderInput = new ColumnRenderInputModel(model.key, model.label, parent ? parent.pinned : model.pinned, hasGroupColumn ? this.getColSpan(model) : null, hasGroupColumn ? (model.isLeaf() ? maxLevel - model.level : 1) : null, parent ? parent.isViewStart && isParentStart : isParentStart, parent ? parent.isViewEnd && isParentEnd : isParentEnd, parent
|
|
232
|
+
? parent.isLeftEndPinned && isParentEnd
|
|
233
|
+
: hasPinnedColumn && this.isLeftEndPinned(model), parent
|
|
234
|
+
? parent.isRightStartPinned && isParentStart
|
|
235
|
+
: hasPinnedColumn && this.isRightStartPinned(model), parent ? parent.isNoPinnedEnd && isParentEnd : hasPinnedColumn && this.isNoPinnedEnd(model), hasGroupColumn, hasPinnedColumn, maxLevel, model.level, columnIndex, parent);
|
|
236
|
+
// Attach to parent if present, otherwise add to root-level array.
|
|
237
|
+
parent ? parent.children.push(renderInput) : renderInputs.push(renderInput);
|
|
238
|
+
// Maintain parent stack keyed by level to allow next nodes to find their parent.
|
|
239
|
+
parentStack[model.level] = renderInput;
|
|
240
|
+
parentStack.length = model.level + 1;
|
|
241
|
+
// Increment leaf index when encountering a leaf structure node.
|
|
242
|
+
if (model.isLeaf())
|
|
243
|
+
columnIndex++;
|
|
244
|
+
});
|
|
245
|
+
return renderInputs;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Create a new render input that merges pinned-boundary flags from a set of spanned leaves.
|
|
249
|
+
*
|
|
250
|
+
* Used when a body cell with `colSpan > 1` consumes neighboring leaves. The spanning cell
|
|
251
|
+
* must inherit boundary indicators (`isLeftEndPinned`, `isRightStartPinned`, `isNoPinnedEnd`)
|
|
252
|
+
* from any consumed leaf that carries them, so the pinned-boundary visual (divider/shadow)
|
|
253
|
+
* remains visible on the spanning cell.
|
|
254
|
+
*
|
|
255
|
+
* @param {ColumnRenderInputModel} base - The render input of the originating (leftmost) leaf.
|
|
256
|
+
* @param {ColumnRenderInputModel[]} spannedLeaves - All leaves consumed by the span (including base).
|
|
257
|
+
* @returns {ColumnRenderInputModel} A new instance with OR-merged boundary flags.
|
|
258
|
+
*/
|
|
259
|
+
static withMergedBoundaries(base, spannedLeaves) {
|
|
260
|
+
let isLeftEndPinned = base.isLeftEndPinned;
|
|
261
|
+
let isRightStartPinned = base.isRightStartPinned;
|
|
262
|
+
let isNoPinnedEnd = base.isNoPinnedEnd;
|
|
263
|
+
let isViewEnd = base.isViewEnd;
|
|
264
|
+
for (const leaf of spannedLeaves) {
|
|
265
|
+
isLeftEndPinned = isLeftEndPinned || leaf.isLeftEndPinned;
|
|
266
|
+
isRightStartPinned = isRightStartPinned || leaf.isRightStartPinned;
|
|
267
|
+
isNoPinnedEnd = isNoPinnedEnd || leaf.isNoPinnedEnd;
|
|
268
|
+
isViewEnd = isViewEnd || leaf.isViewEnd;
|
|
269
|
+
}
|
|
270
|
+
// Return the base unchanged when no flags were gained (common fast-path).
|
|
271
|
+
if (isLeftEndPinned === base.isLeftEndPinned &&
|
|
272
|
+
isRightStartPinned === base.isRightStartPinned &&
|
|
273
|
+
isNoPinnedEnd === base.isNoPinnedEnd &&
|
|
274
|
+
isViewEnd === base.isViewEnd) {
|
|
275
|
+
return base;
|
|
276
|
+
}
|
|
277
|
+
return new ColumnRenderInputModel(base.key, base.label, base.pinned, base.colSpan, base.rowSpan, base.isViewStart, isViewEnd, isLeftEndPinned, isRightStartPinned, isNoPinnedEnd, base.headHasGroupColumn, base.headHasPinnedColumn, base.headMaxDepth, base.level, base.columnIndex, base.parent, base.children);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* True when the provided structure model is the last left-pinned sibling in its parent's children.
|
|
281
|
+
* Used to mark boundary nodes for left-pinned groups.
|
|
282
|
+
*
|
|
283
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
284
|
+
* @returns {boolean} True when model is the last left-pinned sibling.
|
|
285
|
+
*/
|
|
286
|
+
static isLeftEndPinned(model) {
|
|
287
|
+
const siblings = model.parent
|
|
288
|
+
.getOrderedChildren()
|
|
289
|
+
.filter((child) => child.pinned === 'left');
|
|
290
|
+
return siblings[siblings.length - 1] === model;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* True when the provided structure model is the first right-pinned sibling in its parent's children.
|
|
294
|
+
* Used to mark boundary nodes for right-pinned groups.
|
|
295
|
+
*
|
|
296
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
297
|
+
* @returns {boolean} True when model is the first right-pinned sibling.
|
|
298
|
+
*/
|
|
299
|
+
static isRightStartPinned(model) {
|
|
300
|
+
const siblings = model.parent
|
|
301
|
+
.getOrderedChildren()
|
|
302
|
+
.filter((child) => child.pinned === 'right');
|
|
303
|
+
return siblings[0] === model;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* True when the provided structure model is the last non-pinned sibling in its parent's children.
|
|
307
|
+
* Useful to handle the 'no-pinned-end' condition.
|
|
308
|
+
*
|
|
309
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
310
|
+
* @returns {boolean} True when model is the last non-pinned sibling.
|
|
311
|
+
*/
|
|
312
|
+
static isNoPinnedEnd(model) {
|
|
313
|
+
const siblings = model.parent
|
|
314
|
+
.getOrderedChildren()
|
|
315
|
+
.filter((child) => !child.pinned);
|
|
316
|
+
return siblings[siblings.length - 1] === model;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* True when the provided model is the first child of its parent.
|
|
320
|
+
*
|
|
321
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
322
|
+
* @returns {boolean} True when model is the first child.
|
|
323
|
+
*/
|
|
324
|
+
static isParentStart(model) {
|
|
325
|
+
return model.parent.getOrderedChildren()[0] === model;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* True when the provided model is the last child of its parent.
|
|
329
|
+
*
|
|
330
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
331
|
+
* @returns {boolean} True when model is the last child.
|
|
332
|
+
*/
|
|
333
|
+
static isParentEnd(model) {
|
|
334
|
+
const parentChildren = model.parent.getOrderedChildren();
|
|
335
|
+
return parentChildren[parentChildren.length - 1] === model;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Compute a node's colSpan by iterating its subtree and counting the maximum number
|
|
339
|
+
* of nodes present at any single level (visual column span).
|
|
340
|
+
*
|
|
341
|
+
* @param {ColumnStructureModel} mode - ColumnStructureModel node to examine.
|
|
342
|
+
* @returns {number} Number of visual columns spanned by the node.
|
|
343
|
+
*/
|
|
344
|
+
static getColSpan(mode) {
|
|
345
|
+
const children = mode.iterator();
|
|
346
|
+
const rowMap = {};
|
|
347
|
+
children.forEach((node) => {
|
|
348
|
+
rowMap[node.level] = (rowMap[node.level] || 0) + 1;
|
|
349
|
+
});
|
|
350
|
+
return Math.max(...Object.values(rowMap));
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Return cached leaf render nodes for this subtree.
|
|
354
|
+
* Caches the result on first call and returns cached array on subsequent calls.
|
|
355
|
+
*
|
|
356
|
+
* @returns {ColumnRenderInputModel[]} Array of leaf render input nodes.
|
|
357
|
+
*/
|
|
358
|
+
getLeaves() {
|
|
359
|
+
if (this.leaves.length > 0) {
|
|
360
|
+
return this.leaves;
|
|
361
|
+
}
|
|
362
|
+
const leaves = this.iterator().filter((model) => model.isLeaf());
|
|
363
|
+
this.leaves = leaves;
|
|
364
|
+
return leaves;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Generic iterator that supports traversal modes ('dfs' currently implemented).
|
|
368
|
+
*
|
|
369
|
+
* @param {IteratorMode} [mode='dfs'] - Iterator mode ('dfs' | 'bfs').
|
|
370
|
+
* @returns {ColumnRenderInputModel[]} Traversal-ordered array of nodes.
|
|
371
|
+
*/
|
|
372
|
+
iterator(mode = 'dfs') {
|
|
373
|
+
if (mode === 'dfs') {
|
|
374
|
+
return this.dfsIterator();
|
|
375
|
+
}
|
|
376
|
+
// Future: implement BFS mode here.
|
|
377
|
+
return [];
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Depth-first pre-order traversal of this node and its descendants.
|
|
381
|
+
* Caches the result for the 'dfs' mode to avoid repeated recursion.
|
|
382
|
+
*
|
|
383
|
+
* @returns {ColumnRenderInputModel[]} Array of nodes in DFS order (includes this node).
|
|
384
|
+
*/
|
|
385
|
+
dfsIterator() {
|
|
386
|
+
if (this.iteratorCacheMap.has('dfs')) {
|
|
387
|
+
return this.iteratorCacheMap.get('dfs');
|
|
388
|
+
}
|
|
389
|
+
const localResult = [];
|
|
390
|
+
localResult.push(this);
|
|
391
|
+
if (this.children && this.children.length > 0) {
|
|
392
|
+
this.children.forEach((child) => {
|
|
393
|
+
localResult.push(...child.dfsIterator());
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
this.iteratorCacheMap.set('dfs', localResult);
|
|
397
|
+
return localResult;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* True when this render node has no children (visual leaf).
|
|
401
|
+
*
|
|
402
|
+
* @returns {boolean} True when node is a leaf.
|
|
403
|
+
*/
|
|
404
|
+
isLeaf() {
|
|
405
|
+
return !this.children || this.children.length === 0;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
var __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
161
410
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
162
411
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
163
412
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
@@ -177,7 +426,7 @@ var __rest$1 = (undefined && undefined.__rest) || function (s, e) {
|
|
|
177
426
|
class VegaTableCellRenderer extends VegaSlimmer {
|
|
178
427
|
constructor() {
|
|
179
428
|
super(...arguments);
|
|
180
|
-
this.renderTableCellContent = (column, record, index) => {
|
|
429
|
+
this.renderTableCellContent = (column, record, index, isSpanning) => {
|
|
181
430
|
var _a, _b;
|
|
182
431
|
const value = getValueByPath(record, column.prop);
|
|
183
432
|
const rowKey = this.vegaTableDataSourceController.getRecordKey(record);
|
|
@@ -186,13 +435,14 @@ class VegaTableCellRenderer extends VegaSlimmer {
|
|
|
186
435
|
.find((item) => this.vegaTableDataSourceController.getRecordKey(item) === rowKey);
|
|
187
436
|
const editing = this.vegaTableEditableController.isEditing(rowKey);
|
|
188
437
|
const rowForm = this.vegaTableEditableController.getRowFormRefMap().get(rowKey);
|
|
189
|
-
|
|
438
|
+
// REQ-007: spanning cells are forced read-only — never render editable form items.
|
|
439
|
+
if (!isSpanning && editing && rowForm && column.renderFormItem) {
|
|
190
440
|
return column.renderFormItem(h, column.prop ? value : rowKey, record, index, {
|
|
191
441
|
rowForm,
|
|
192
442
|
isNewRow,
|
|
193
443
|
});
|
|
194
444
|
}
|
|
195
|
-
if (editing && rowForm && column.editable) {
|
|
445
|
+
if (!isSpanning && editing && rowForm && column.editable) {
|
|
196
446
|
const formItemProps = (_a = column.formItemProps) === null || _a === void 0 ? void 0 : _a.call(column, rowForm, {
|
|
197
447
|
record,
|
|
198
448
|
index,
|
|
@@ -240,58 +490,279 @@ class VegaTableCellRenderer extends VegaSlimmer {
|
|
|
240
490
|
new RegExp(VegaTableEditableFieldTypes.join('|'), 'i').test(tagName));
|
|
241
491
|
};
|
|
242
492
|
}
|
|
243
|
-
render(renderInput, record, index) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
493
|
+
render(renderInput, record, index, colSpanResult) {
|
|
494
|
+
var _a;
|
|
495
|
+
const column = this.vegaTableBodyColSpanController.findColumn(renderInput);
|
|
496
|
+
/* istanbul ignore next -- defensive: colSpanResult is always provided by the caller */
|
|
497
|
+
const htmlColspan = (_a = colSpanResult === null || colSpanResult === void 0 ? void 0 : colSpanResult.htmlColspan) !== null && _a !== void 0 ? _a : 1;
|
|
498
|
+
const isSpanning = htmlColspan > 1;
|
|
499
|
+
// When a cell spans, merge pinned-boundary flags from all consumed leaves so the spanning
|
|
500
|
+
// cell inherits boundary indicators (e.g. right-divider for pinned-end).
|
|
501
|
+
const effectiveRenderInput = isSpanning && colSpanResult
|
|
502
|
+
? this.getMergedRenderInputForSpan(renderInput, colSpanResult)
|
|
503
|
+
: renderInput;
|
|
247
504
|
if (column) {
|
|
248
505
|
const rowKey = this.vegaTableDataSourceController.getRecordKey(record);
|
|
249
506
|
const columnKey = `${rowKey}_${column.key || column.prop}`;
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
507
|
+
const ellipsisOptions = column.ellipsisOptions;
|
|
508
|
+
const ellipsisShowTooltip = !!(ellipsisOptions === null || ellipsisOptions === void 0 ? void 0 : ellipsisOptions.showTooltip);
|
|
509
|
+
return (h("vega-table-cell", { key: columnKey, textAlign: column.align, breakpoint: column.breakpoint, overflow: column.overflow, ellipsisShowTooltip: ellipsisShowTooltip, colSpan: isSpanning ? htmlColspan : undefined, ref: (ref) => {
|
|
510
|
+
this.vegaTableRenderInputController.addCellRenderInputMap(ref, effectiveRenderInput);
|
|
511
|
+
} }, this.renderTableCellContent(column, record, index, isSpanning)));
|
|
253
512
|
}
|
|
254
513
|
else {
|
|
255
514
|
return (h("vega-table-cell", { key: renderInput.key, ref: (ref) => {
|
|
256
|
-
this.vegaTableRenderInputController.addCellRenderInputMap(ref,
|
|
515
|
+
this.vegaTableRenderInputController.addCellRenderInputMap(ref, effectiveRenderInput);
|
|
257
516
|
} }));
|
|
258
517
|
}
|
|
259
518
|
}
|
|
519
|
+
/**
|
|
520
|
+
* Build a render input with merged boundary flags from all leaves consumed by a body colSpan.
|
|
521
|
+
*
|
|
522
|
+
* @param {ColumnRenderInputModel} baseInput - The starting leaf's render input.
|
|
523
|
+
* @param {BodyColSpanResult} colSpanResult - The resolved span result (provides skipCount).
|
|
524
|
+
* @returns {ColumnRenderInputModel} A render input with OR-merged boundary flags.
|
|
525
|
+
*/
|
|
526
|
+
getMergedRenderInputForSpan(baseInput, colSpanResult) {
|
|
527
|
+
const allLeaves = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
528
|
+
const startIndex = allLeaves.indexOf(baseInput);
|
|
529
|
+
/* istanbul ignore next -- defensive: baseInput should always be in the leaves array */
|
|
530
|
+
if (startIndex < 0)
|
|
531
|
+
return baseInput;
|
|
532
|
+
const spannedLeaves = allLeaves.slice(startIndex + 1, startIndex + 1 + colSpanResult.skipCount);
|
|
533
|
+
return ColumnRenderInputModel.withMergedBoundaries(baseInput, spannedLeaves);
|
|
534
|
+
}
|
|
260
535
|
}
|
|
261
|
-
__decorate$
|
|
536
|
+
__decorate$V([
|
|
262
537
|
MapToComponentField()
|
|
263
538
|
], VegaTableCellRenderer.prototype, "rowKey", void 0);
|
|
264
|
-
__decorate$
|
|
265
|
-
MapToComponentField()
|
|
266
|
-
], VegaTableCellRenderer.prototype, "columns", void 0);
|
|
267
|
-
__decorate$U([
|
|
539
|
+
__decorate$V([
|
|
268
540
|
MapToComponentField()
|
|
269
541
|
], VegaTableCellRenderer.prototype, "vegaTableDataSourceController", void 0);
|
|
270
|
-
__decorate$
|
|
542
|
+
__decorate$V([
|
|
271
543
|
MapToComponentField()
|
|
272
544
|
], VegaTableCellRenderer.prototype, "vegaTableEditableController", void 0);
|
|
273
|
-
__decorate$
|
|
545
|
+
__decorate$V([
|
|
274
546
|
MapToComponentField()
|
|
275
547
|
], VegaTableCellRenderer.prototype, "vegaTableRenderInputController", void 0);
|
|
548
|
+
__decorate$V([
|
|
549
|
+
MapToComponentField()
|
|
550
|
+
], VegaTableCellRenderer.prototype, "vegaTableBodyColSpanController", void 0);
|
|
276
551
|
|
|
277
|
-
|
|
278
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
279
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
280
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
281
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
282
|
-
};
|
|
552
|
+
const NO_SPAN = { htmlColspan: 1, skipCount: 0 };
|
|
283
553
|
/**
|
|
284
|
-
*
|
|
554
|
+
* Read the declared span for a column, resolving the function form against the row value.
|
|
555
|
+
* Returns 1 when the column declares no span (REQ-008: span < 2 means no spanning).
|
|
556
|
+
*
|
|
557
|
+
* @param {VegaTableColumnConfig} column - The column configuration to read the span from.
|
|
558
|
+
* @param {VegaTableDataSourceItem} record - The row data record (passed to the function form).
|
|
559
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
560
|
+
* @returns {number} The declared span (>= 1).
|
|
285
561
|
*/
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
562
|
+
function getDeclaredSpan(column, record, rowIndex) {
|
|
563
|
+
const rawSpan = column === null || column === void 0 ? void 0 : column.colSpan;
|
|
564
|
+
if (rawSpan == null)
|
|
565
|
+
return 1;
|
|
566
|
+
if (typeof rawSpan !== 'function')
|
|
567
|
+
return normalizeSpan(rawSpan);
|
|
568
|
+
const value = column.prop ? getValueByPath(record, column.prop) : undefined;
|
|
569
|
+
return normalizeSpan(rawSpan(value, record, rowIndex));
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Normalize a raw span value to a positive integer. Non-finite values (NaN/Infinity) and values
|
|
573
|
+
* below 1 collapse to 1 (no spanning); fractional values are floored so the resulting `colspan`
|
|
574
|
+
* attribute is always a valid integer string.
|
|
575
|
+
*
|
|
576
|
+
* @param {number} rawSpan - The raw span value declared by the column (numeric or function result).
|
|
577
|
+
* @returns {number} A positive integer span (>= 1).
|
|
578
|
+
*/
|
|
579
|
+
function normalizeSpan(rawSpan) {
|
|
580
|
+
if (!Number.isFinite(rawSpan))
|
|
581
|
+
return 1;
|
|
582
|
+
const floored = Math.floor(rawSpan);
|
|
583
|
+
return floored >= 1 ? floored : 1;
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Walk rightward from the starting leaf to find the widest legal span.
|
|
587
|
+
*
|
|
588
|
+
* Stops (and returns a clamp reason) when the span would either run past the end of the
|
|
589
|
+
* row or cross a pinned ↔ unpinned column boundary (which would break sticky positioning).
|
|
590
|
+
* Breakpoint-hidden columns are intentionally **not** a stop condition — the span mirrors
|
|
591
|
+
* across them (matching header group colSpan).
|
|
592
|
+
*
|
|
593
|
+
* @param {number} declared - The declared span requested by the column.
|
|
594
|
+
* @param {number} leafIndex - Index of the starting leaf in the flattened render-input array.
|
|
595
|
+
* @param {ColumnRenderInputModel[]} allLeaves - All leaf render inputs for the table (ordered).
|
|
596
|
+
* @returns {MaxSpan} The widest legal span plus the clamp reason (null when unconstrained).
|
|
597
|
+
*/
|
|
598
|
+
function computeMaxSpan(declared, leafIndex, allLeaves) {
|
|
599
|
+
var _a, _b;
|
|
600
|
+
const startPinned = (_a = allLeaves[leafIndex]) === null || _a === void 0 ? void 0 : _a.pinned;
|
|
601
|
+
let span = 1;
|
|
602
|
+
for (let offset = 1; offset < declared; offset++) {
|
|
603
|
+
const nextLeaf = allLeaves[leafIndex + offset];
|
|
604
|
+
if (!nextLeaf) {
|
|
605
|
+
return {
|
|
606
|
+
span,
|
|
607
|
+
clampReason: `extends past the end of the row (${allLeaves.length} columns total)`,
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
// Reject if the next column is in a different pinned group.
|
|
611
|
+
if (nextLeaf.pinned !== startPinned) {
|
|
612
|
+
return {
|
|
613
|
+
span,
|
|
614
|
+
clampReason: `crosses a pinned-column boundary (pinned="${startPinned !== null && startPinned !== void 0 ? startPinned : 'none'}" → pinned="${(_b = nextLeaf.pinned) !== null && _b !== void 0 ? _b : 'none'}")`,
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
span++;
|
|
618
|
+
}
|
|
619
|
+
return { span, clampReason: null };
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Emit a clamp warning at most once per column key (per-instance, tracked via {@link warnedKeys}).
|
|
623
|
+
*
|
|
624
|
+
* @param {string} colKey - The column key used to dedupe warnings.
|
|
625
|
+
* @param {number} declared - The originally declared span.
|
|
626
|
+
* @param {number} effective - The clamped (effective) span actually applied.
|
|
627
|
+
* @param {string} reason - Human-readable reason the span was clamped.
|
|
628
|
+
* @param {Set<string>} warnedKeys - Per-instance set tracking already-warned column keys.
|
|
629
|
+
*/
|
|
630
|
+
function warnClampOnce(colKey, declared, effective, reason, warnedKeys) {
|
|
631
|
+
if (warnedKeys.has(colKey))
|
|
632
|
+
return;
|
|
633
|
+
warnedKeys.add(colKey);
|
|
634
|
+
LogUtility.warn(`[vega-table] colSpan for column "${colKey}" was clamped from ${declared} to ${effective} because it ${reason}.`);
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Resolve the effective body-cell colspan for a single source-data row cell.
|
|
638
|
+
*
|
|
639
|
+
* Clamps the declared span so it never runs past the end of the row nor crosses a
|
|
640
|
+
* pinned ↔ unpinned column boundary. Structural clamps (end-of-row / pinned boundary) emit a
|
|
641
|
+
* warning once per column key (tracked via the caller-supplied {@link warnedKeys} set).
|
|
642
|
+
* Breakpoint-hidden columns are **not** clamped — the span mirrors across a `display: none`
|
|
643
|
+
* column (matching header group colSpan) so the body grid stays column-aligned with the header.
|
|
644
|
+
*
|
|
645
|
+
* @param {VegaTableColumnConfig} column - The column configuration for the spanning cell.
|
|
646
|
+
* @param {VegaTableDataSourceItem} record - The row data record.
|
|
647
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
648
|
+
* @param {number} leafIndex - Index of this column in the flattened leaf render-input array.
|
|
649
|
+
* @param {ColumnRenderInputModel[]} allLeaves - All leaf render inputs for the table (ordered).
|
|
650
|
+
* @param {Set<string>} warnedKeys - Per-instance set tracking column keys that have already received a clamping warning.
|
|
651
|
+
* @returns {BodyColSpanResult} Resolved spanning metadata for the cell.
|
|
652
|
+
*/
|
|
653
|
+
function resolveBodyColSpan(column, record, rowIndex, leafIndex, allLeaves, warnedKeys) {
|
|
654
|
+
var _a, _b, _c;
|
|
655
|
+
const declared = getDeclaredSpan(column, record, rowIndex);
|
|
656
|
+
if (!declared || declared <= 1)
|
|
657
|
+
return NO_SPAN;
|
|
658
|
+
const { span, clampReason } = computeMaxSpan(declared, leafIndex, allLeaves);
|
|
659
|
+
const effectiveSpan = Math.min(declared, span);
|
|
660
|
+
if (clampReason && effectiveSpan < declared) {
|
|
661
|
+
const colKey = (_c = (_b = (_a = column.key) !== null && _a !== void 0 ? _a : column.prop) !== null && _b !== void 0 ? _b : column.label) !== null && _c !== void 0 ? _c : '';
|
|
662
|
+
warnClampOnce(colKey, declared, effectiveSpan, clampReason, warnedKeys);
|
|
663
|
+
}
|
|
664
|
+
if (effectiveSpan <= 1)
|
|
665
|
+
return NO_SPAN;
|
|
666
|
+
return {
|
|
667
|
+
htmlColspan: effectiveSpan,
|
|
668
|
+
skipCount: effectiveSpan - 1,
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
var __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
673
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
674
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
675
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
676
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
677
|
+
};
|
|
678
|
+
/**
|
|
679
|
+
* Per-row body colspan controller.
|
|
680
|
+
*
|
|
681
|
+
* Centralizes the source-data body colSpan computation that was previously scattered across the
|
|
682
|
+
* cell renderer (cache + per-cell resolve) and the row renderer (imperative `skipCount`). It owns
|
|
683
|
+
* the once-per-key warning cache and exposes {@link resolveRow}, which computes the colspan result
|
|
684
|
+
* for every leaf in a row in a single pass so renderers can consume the result declaratively.
|
|
685
|
+
*
|
|
686
|
+
* The structural shape (a {@link VegaSlimmer} controller reading component fields) mirrors the
|
|
687
|
+
* main-branch `VegaTableExpandRowController` paradigm.
|
|
688
|
+
*/
|
|
689
|
+
class VegaTableBodyColSpanController extends VegaSlimmer {
|
|
690
|
+
constructor() {
|
|
691
|
+
super(...arguments);
|
|
692
|
+
this.warnedColSpanKeys = new Set();
|
|
693
|
+
this.lastWarnedColumnsRef = null;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Resolve the effective colspan for every leaf cell in a single source-data row.
|
|
697
|
+
*
|
|
698
|
+
* Walks the row left-to-right, resolving each non-consumed leaf's span and marking the leaves
|
|
699
|
+
* consumed by a span as `null` so the caller can skip them declaratively (no mutable
|
|
700
|
+
* `skipCount` orchestration). The returned array is index-aligned with `leaves`.
|
|
701
|
+
*
|
|
702
|
+
* @param {VegaTableDataSourceItem} record - The row data record.
|
|
703
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
704
|
+
* @param {ColumnRenderInputModel[]} leaves - All leaf render inputs for the table (ordered).
|
|
705
|
+
* @returns {Array<Nullable<BodyColSpanResult>>} One entry per leaf: a {@link BodyColSpanResult}
|
|
706
|
+
* for a cell to render, or `null` for a leaf consumed by a preceding spanning cell.
|
|
707
|
+
*/
|
|
708
|
+
resolveRow(record, rowIndex, leaves) {
|
|
709
|
+
// Reset the once-per-key warning cache whenever the column configuration changes,
|
|
710
|
+
// so clamping conditions introduced by a new `columns` value can warn again.
|
|
711
|
+
if (this.columns !== this.lastWarnedColumnsRef) {
|
|
712
|
+
this.warnedColSpanKeys.clear();
|
|
713
|
+
this.lastWarnedColumnsRef = this.columns;
|
|
714
|
+
}
|
|
715
|
+
const results = new Array(leaves.length).fill(null);
|
|
716
|
+
let skipCount = 0;
|
|
717
|
+
leaves.forEach((leaf, leafIndex) => {
|
|
718
|
+
if (skipCount > 0) {
|
|
719
|
+
// This leaf is consumed by a preceding spanning cell — leave it null (skipped).
|
|
720
|
+
skipCount--;
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
const column = this.findColumn(leaf);
|
|
724
|
+
const result = column
|
|
725
|
+
? resolveBodyColSpan(column, record, rowIndex, leafIndex, leaves, this.warnedColSpanKeys)
|
|
726
|
+
: { htmlColspan: 1, skipCount: 0 };
|
|
727
|
+
results[leafIndex] = result;
|
|
728
|
+
skipCount = result.skipCount;
|
|
729
|
+
});
|
|
730
|
+
return results;
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* Find the column config that backs a leaf render input.
|
|
734
|
+
*
|
|
735
|
+
* @param {ColumnRenderInputModel} renderInput - The leaf render input.
|
|
736
|
+
* @returns {Nullable<VegaTableColumnConfig>} The matching column config, or `undefined`.
|
|
737
|
+
*/
|
|
738
|
+
findColumn(renderInput) {
|
|
739
|
+
return this.columns.find((column) => column.key === renderInput.key ||
|
|
740
|
+
column.prop === renderInput.key ||
|
|
741
|
+
column.label === renderInput.key);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
__decorate$U([
|
|
745
|
+
MapToComponentField()
|
|
746
|
+
], VegaTableBodyColSpanController.prototype, "columns", void 0);
|
|
747
|
+
|
|
748
|
+
var __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
749
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
750
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
751
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
752
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
753
|
+
};
|
|
754
|
+
/**
|
|
755
|
+
* The expand row controller of VegaTable
|
|
756
|
+
*/
|
|
757
|
+
class VegaTableExpandRowController extends VegaSlimmer {
|
|
758
|
+
constructor() {
|
|
759
|
+
super(...arguments);
|
|
760
|
+
/**
|
|
761
|
+
* Toggle expandable row by rowKey
|
|
762
|
+
*
|
|
763
|
+
* @param {string} rowKey - The row key of the row
|
|
764
|
+
*/
|
|
765
|
+
this.toggleExpandRow = (rowKey) => {
|
|
295
766
|
this.isRowExpandable(rowKey) && this.handleToggleExpandRow(rowKey, !this.isExpanded(rowKey));
|
|
296
767
|
};
|
|
297
768
|
/**
|
|
@@ -2408,6 +2879,18 @@ class VegaTableRowRenderer$1 extends VegaSlimmer {
|
|
|
2408
2879
|
this.renderTableRowComponent = (rowProps) => {
|
|
2409
2880
|
const { rowKey, index, record, isVisibleInCurrentPage } = rowProps;
|
|
2410
2881
|
const renderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
2882
|
+
// Resolve every leaf's colspan in one pass. Entries are index-aligned with renderInputs;
|
|
2883
|
+
// a `null` entry marks a leaf consumed by a preceding spanning cell (skip it).
|
|
2884
|
+
const colSpanResults = this.vegaTableBodyColSpanController.resolveRow(record, index, renderInputs);
|
|
2885
|
+
const cells = [];
|
|
2886
|
+
renderInputs.forEach((renderInput, leafIndex) => {
|
|
2887
|
+
const colSpanResult = colSpanResults[leafIndex];
|
|
2888
|
+
if (!colSpanResult) {
|
|
2889
|
+
// Consumed by a preceding spanning cell — nothing to render for this leaf.
|
|
2890
|
+
return;
|
|
2891
|
+
}
|
|
2892
|
+
cells.push(this.vegaTableCellRenderer.render(renderInput, record, index, colSpanResult));
|
|
2893
|
+
});
|
|
2411
2894
|
return (h("vega-table-row", { class: {
|
|
2412
2895
|
'v-hidden': !isVisibleInCurrentPage,
|
|
2413
2896
|
}, key: `vega-table-row-${rowKey}`, rowKey: rowKey,
|
|
@@ -2416,9 +2899,7 @@ class VegaTableRowRenderer$1 extends VegaSlimmer {
|
|
|
2416
2899
|
DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaClick, () => {
|
|
2417
2900
|
this.rowClickEventEmitter.emit({ record: record, index: index });
|
|
2418
2901
|
});
|
|
2419
|
-
}, striped: this.striped && index % 2 === 1, rowDivider: this.rowDivider && !rowProps.isLastRow },
|
|
2420
|
-
return this.vegaTableCellRenderer.render(renderInput, record, index);
|
|
2421
|
-
})));
|
|
2902
|
+
}, striped: this.striped && index % 2 === 1, rowDivider: this.rowDivider && !rowProps.isLastRow }, cells));
|
|
2422
2903
|
};
|
|
2423
2904
|
}
|
|
2424
2905
|
render(rowProps, editable) {
|
|
@@ -2435,6 +2916,9 @@ __decorate$G([
|
|
|
2435
2916
|
__decorate$G([
|
|
2436
2917
|
MapToComponentField()
|
|
2437
2918
|
], VegaTableRowRenderer$1.prototype, "vegaTableCellRenderer", void 0);
|
|
2919
|
+
__decorate$G([
|
|
2920
|
+
MapToComponentField()
|
|
2921
|
+
], VegaTableRowRenderer$1.prototype, "vegaTableBodyColSpanController", void 0);
|
|
2438
2922
|
__decorate$G([
|
|
2439
2923
|
MapToComponentField()
|
|
2440
2924
|
], VegaTableRowRenderer$1.prototype, "striped", void 0);
|
|
@@ -2666,409 +3150,192 @@ class ColumnStructureModel {
|
|
|
2666
3150
|
/**
|
|
2667
3151
|
* Checks if this subtree contains any right pinned children.
|
|
2668
3152
|
*
|
|
2669
|
-
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2670
|
-
*/
|
|
2671
|
-
hasRightPinnedColumn() {
|
|
2672
|
-
return !!this.children.find((model) => model.pinned === 'right');
|
|
2673
|
-
}
|
|
2674
|
-
/**
|
|
2675
|
-
* Checks if this node is a leaf (no children).
|
|
2676
|
-
*
|
|
2677
|
-
* @returns {boolean} True when this node has no children.
|
|
2678
|
-
*/
|
|
2679
|
-
isLeaf() {
|
|
2680
|
-
return !this.children || this.children.length === 0;
|
|
2681
|
-
}
|
|
2682
|
-
/**
|
|
2683
|
-
* Return an array of nodes for this subtree using the specified traversal mode.
|
|
2684
|
-
*
|
|
2685
|
-
* Currently only depth-first search ('dfs') is supported. The returned array is
|
|
2686
|
-
* cached per-mode to avoid repeated traversal costs.
|
|
2687
|
-
*
|
|
2688
|
-
* @param {IteratorMode} mode - Traversal mode to use. Defaults to 'dfs'.
|
|
2689
|
-
* @returns {ColumnStructureModel[]} Array of ColumnStructureModel nodes in traversal order.
|
|
2690
|
-
*/
|
|
2691
|
-
iterator(mode = 'dfs') {
|
|
2692
|
-
if (mode === 'dfs') {
|
|
2693
|
-
return this.dfsIterator();
|
|
2694
|
-
}
|
|
2695
|
-
return [];
|
|
2696
|
-
}
|
|
2697
|
-
/**
|
|
2698
|
-
* Gets all leaf nodes in the subtree, with caching.
|
|
2699
|
-
*
|
|
2700
|
-
* Subsequent calls return the cached array until the underlying model is rebuilt.
|
|
2701
|
-
*
|
|
2702
|
-
* @returns {ColumnStructureModel[]} Array of leaf column models.
|
|
2703
|
-
*/
|
|
2704
|
-
getLeaves() {
|
|
2705
|
-
if (this.leaves.length > 0) {
|
|
2706
|
-
return this.leaves;
|
|
2707
|
-
}
|
|
2708
|
-
const leaves = this.dfsIterator().filter((model) => model.isLeaf());
|
|
2709
|
-
this.leaves = leaves;
|
|
2710
|
-
return leaves;
|
|
2711
|
-
}
|
|
2712
|
-
/**
|
|
2713
|
-
* For root nodes, returns children ordered by pinned type (left, none, right).
|
|
2714
|
-
* For non-root nodes, returns children in their natural order.
|
|
2715
|
-
*
|
|
2716
|
-
* @returns {ColumnStructureModel[]} Array of child column models.
|
|
2717
|
-
*/
|
|
2718
|
-
getOrderedChildren() {
|
|
2719
|
-
if (!this.isRoot())
|
|
2720
|
-
return this.children;
|
|
2721
|
-
return this.orderedChildren;
|
|
2722
|
-
}
|
|
2723
|
-
/**
|
|
2724
|
-
* Orders root children by pinned type (left, none, right) and caches the result.
|
|
2725
|
-
*
|
|
2726
|
-
* For non-root nodes this method returns children in their natural order.
|
|
2727
|
-
*
|
|
2728
|
-
* @returns {ColumnStructureModel[]} Array of ordered child column models.
|
|
2729
|
-
*/
|
|
2730
|
-
orderChildrenByPinned() {
|
|
2731
|
-
if (!this.isRoot())
|
|
2732
|
-
return this.children;
|
|
2733
|
-
if (this.orderedChildren.length > 0) {
|
|
2734
|
-
return this.orderedChildren;
|
|
2735
|
-
}
|
|
2736
|
-
const leftPinned = [];
|
|
2737
|
-
const noPinned = [];
|
|
2738
|
-
const rightPinned = [];
|
|
2739
|
-
this.children.forEach((child) => {
|
|
2740
|
-
if (child.pinned === 'left') {
|
|
2741
|
-
leftPinned.push(child);
|
|
2742
|
-
}
|
|
2743
|
-
else if (child.pinned === 'right') {
|
|
2744
|
-
rightPinned.push(child);
|
|
2745
|
-
}
|
|
2746
|
-
else {
|
|
2747
|
-
noPinned.push(child);
|
|
2748
|
-
}
|
|
2749
|
-
});
|
|
2750
|
-
const children = [...leftPinned, ...noPinned, ...rightPinned];
|
|
2751
|
-
this.orderedChildren = children;
|
|
2752
|
-
return children;
|
|
2753
|
-
}
|
|
2754
|
-
/**
|
|
2755
|
-
* Checks if this node is the root node.
|
|
2756
|
-
*
|
|
2757
|
-
* @returns {boolean} True if root node, false otherwise.
|
|
2758
|
-
*/
|
|
2759
|
-
isRoot() {
|
|
2760
|
-
return this.level === ColumnStructureModel.ROOT_LEVEL;
|
|
2761
|
-
}
|
|
2762
|
-
/**
|
|
2763
|
-
* Performs a depth-first traversal of the column structure.
|
|
2764
|
-
*
|
|
2765
|
-
* The traversal respects root-child pinned ordering (left/no/right) for the root node.
|
|
2766
|
-
* Results are cached per-node to avoid repeated recursion costs.
|
|
2767
|
-
*
|
|
2768
|
-
* @returns {ColumnStructureModel[]} Array of all nodes in DFS order.
|
|
2769
|
-
*/
|
|
2770
|
-
dfsIterator() {
|
|
2771
|
-
if (this.iteratorCacheMap.has('dfs')) {
|
|
2772
|
-
return this.iteratorCacheMap.get('dfs');
|
|
2773
|
-
}
|
|
2774
|
-
const localResult = [];
|
|
2775
|
-
const children = this.orderChildrenByPinned();
|
|
2776
|
-
if (!this.isRoot()) {
|
|
2777
|
-
localResult.push(this);
|
|
2778
|
-
}
|
|
2779
|
-
if (children && children.length > 0) {
|
|
2780
|
-
children.forEach((child) => {
|
|
2781
|
-
localResult.push(...child.dfsIterator());
|
|
2782
|
-
});
|
|
2783
|
-
}
|
|
2784
|
-
this.iteratorCacheMap.set('dfs', localResult);
|
|
2785
|
-
return localResult;
|
|
2786
|
-
}
|
|
2787
|
-
}
|
|
2788
|
-
ColumnStructureModel.ROOT_LEVEL = -1;
|
|
2789
|
-
ColumnStructureModel.ROOT_KEY = '#root-model#';
|
|
2790
|
-
|
|
2791
|
-
var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
2792
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2793
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
2794
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2795
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2796
|
-
};
|
|
2797
|
-
/**
|
|
2798
|
-
* Controller responsible for building and keeping the ColumnStructureModel in sync
|
|
2799
|
-
* with the component's `columns` and `groupColumns` properties.
|
|
2800
|
-
*
|
|
2801
|
-
* This slimmer maps relevant component fields and lifecycle/watch hooks to
|
|
2802
|
-
* automatically rebuild the column structure when inputs change.
|
|
2803
|
-
*/
|
|
2804
|
-
class VegaTableColumnStructureModelController extends VegaSlimmer {
|
|
2805
|
-
/**
|
|
2806
|
-
* Component lifecycle hook mapped to the host's componentWillLoad.
|
|
2807
|
-
* Initializes the ColumnStructureModel prior to initial render.
|
|
2808
|
-
*/
|
|
2809
|
-
componentWillLoad() {
|
|
2810
|
-
this.setColumnStructureModel();
|
|
2811
|
-
}
|
|
2812
|
-
/**
|
|
2813
|
-
* Watch handler mapped to the host's watchColumns.
|
|
2814
|
-
* Rebuilds the ColumnStructureModel when `columns` changes.
|
|
2815
|
-
*/
|
|
2816
|
-
watchColumns() {
|
|
2817
|
-
this.setColumnStructureModel();
|
|
2818
|
-
}
|
|
2819
|
-
/**
|
|
2820
|
-
* Watch handler mapped to the host's watchGroupColumns.
|
|
2821
|
-
* Rebuilds the ColumnStructureModel when `groupColumns` changes.
|
|
2822
|
-
*/
|
|
2823
|
-
watchGroupColumns() {
|
|
2824
|
-
this.setColumnStructureModel();
|
|
2825
|
-
}
|
|
2826
|
-
/**
|
|
2827
|
-
* Build and assign the ColumnStructureModel from current `columns` and `groupColumns`.
|
|
2828
|
-
* Uses `ColumnStructureModel.from` which returns a root model representing the column tree.
|
|
2829
|
-
*/
|
|
2830
|
-
setColumnStructureModel() {
|
|
2831
|
-
this.columnStructureModel = ColumnStructureModel.from(this.columns, this.groupColumns);
|
|
2832
|
-
}
|
|
2833
|
-
}
|
|
2834
|
-
__decorate$E([
|
|
2835
|
-
MapToComponentField()
|
|
2836
|
-
], VegaTableColumnStructureModelController.prototype, "host", void 0);
|
|
2837
|
-
__decorate$E([
|
|
2838
|
-
MapToComponentField()
|
|
2839
|
-
], VegaTableColumnStructureModelController.prototype, "columns", void 0);
|
|
2840
|
-
__decorate$E([
|
|
2841
|
-
MapToComponentField()
|
|
2842
|
-
], VegaTableColumnStructureModelController.prototype, "groupColumns", void 0);
|
|
2843
|
-
__decorate$E([
|
|
2844
|
-
MapToComponentField({ writable: true })
|
|
2845
|
-
], VegaTableColumnStructureModelController.prototype, "columnStructureModel", void 0);
|
|
2846
|
-
__decorate$E([
|
|
2847
|
-
MapToComponentMethod('componentWillLoad')
|
|
2848
|
-
], VegaTableColumnStructureModelController.prototype, "componentWillLoad", null);
|
|
2849
|
-
__decorate$E([
|
|
2850
|
-
MapToComponentMethod('watchColumns')
|
|
2851
|
-
], VegaTableColumnStructureModelController.prototype, "watchColumns", null);
|
|
2852
|
-
__decorate$E([
|
|
2853
|
-
MapToComponentMethod('watchGroupColumns')
|
|
2854
|
-
], VegaTableColumnStructureModelController.prototype, "watchGroupColumns", null);
|
|
2855
|
-
|
|
2856
|
-
/**
|
|
2857
|
-
* ColumnRenderInputModel
|
|
2858
|
-
*
|
|
2859
|
-
* Render-time representation of a column or group node used by header/body renderers.
|
|
2860
|
-
* Built from a ColumnStructureModel tree, it carries computed layout metadata required
|
|
2861
|
-
* for rendering and pinned/sticky calculations (colSpan, rowSpan, pinned boundaries, etc).
|
|
2862
|
-
*
|
|
2863
|
-
* Instances form a forest (root-level nodes in an array) that mirrors the structure model
|
|
2864
|
-
* but contains additional render-specific properties and parent/child links for renderers.
|
|
2865
|
-
*/
|
|
2866
|
-
class ColumnRenderInputModel {
|
|
2867
|
-
/**
|
|
2868
|
-
* Create a new render input node.
|
|
2869
|
-
*
|
|
2870
|
-
* @param {string} key - Unique key (matches ColumnStructureModel.key).
|
|
2871
|
-
* @param {string} label - Optional display label (from structure model).
|
|
2872
|
-
* @param {VegaTablePinnedType} pinned - Pinned type for this node ('left' | 'right' | null).
|
|
2873
|
-
* @param {Nullable<number>} colSpan - Number of visual columns spanned by this node's subtree.
|
|
2874
|
-
* @param {Nullable<number>} rowSpan - Number of header rows this node should span.
|
|
2875
|
-
* @param {boolean} isViewStart - True when this node is the start of a visible view range.
|
|
2876
|
-
* @param {boolean} isViewEnd - True when this node is the end of a visible view range.
|
|
2877
|
-
* @param {boolean} isLeftEndPinned - True when node is last left-pinned sibling.
|
|
2878
|
-
* @param {boolean} isRightStartPinned - True when node is first right-pinned sibling.
|
|
2879
|
-
* @param {boolean} isNoPinnedEnd - True when node is last non-pinned sibling.
|
|
2880
|
-
* @param {boolean} headHasGroupColumn - Header contains group columns (affects rowSpan).
|
|
2881
|
-
* @param {boolean} headHasPinnedColumn - Header contains pinned columns.
|
|
2882
|
-
* @param {number} headMaxDepth - Maximum header depth (number of header rows).
|
|
2883
|
-
* @param {number} level - Level/index of this node within header rows (0-based).
|
|
2884
|
-
* @param {number} columnIndex - Sequential leaf index (used for ordering).
|
|
2885
|
-
* @param {Nullable<ColumnRenderInputModel>} parent - Parent render input node (null for root-level).
|
|
2886
|
-
* @param {ColumnRenderInputModel[]} children - Child render input nodes.
|
|
2887
|
-
*/
|
|
2888
|
-
constructor(key, label, pinned, colSpan, rowSpan, isViewStart, isViewEnd, isLeftEndPinned, isRightStartPinned, isNoPinnedEnd, headHasGroupColumn, headHasPinnedColumn, headMaxDepth, level, columnIndex, parent, children = []) {
|
|
2889
|
-
this.key = key;
|
|
2890
|
-
this.label = label;
|
|
2891
|
-
this.pinned = pinned;
|
|
2892
|
-
this.colSpan = colSpan;
|
|
2893
|
-
this.rowSpan = rowSpan;
|
|
2894
|
-
this.isViewStart = isViewStart;
|
|
2895
|
-
this.isViewEnd = isViewEnd;
|
|
2896
|
-
this.isLeftEndPinned = isLeftEndPinned;
|
|
2897
|
-
this.isRightStartPinned = isRightStartPinned;
|
|
2898
|
-
this.isNoPinnedEnd = isNoPinnedEnd;
|
|
2899
|
-
this.headHasGroupColumn = headHasGroupColumn;
|
|
2900
|
-
this.headHasPinnedColumn = headHasPinnedColumn;
|
|
2901
|
-
this.headMaxDepth = headMaxDepth;
|
|
2902
|
-
this.level = level;
|
|
2903
|
-
this.columnIndex = columnIndex;
|
|
2904
|
-
this.parent = parent;
|
|
2905
|
-
this.children = children;
|
|
2906
|
-
this.iteratorCacheMap = new Map();
|
|
2907
|
-
this.leaves = [];
|
|
2908
|
-
}
|
|
2909
|
-
/**
|
|
2910
|
-
* Build a forest of ColumnRenderInputModel nodes from a ColumnStructureModel root.
|
|
2911
|
-
*
|
|
2912
|
-
* @param {ColumnStructureModel} rootModel - Root ColumnStructureModel that supplies tree and level data.
|
|
2913
|
-
* @returns {ColumnRenderInputModel[]} Array of root-level ColumnRenderInputModel nodes (the render forest).
|
|
2914
|
-
*/
|
|
2915
|
-
static from(rootModel) {
|
|
2916
|
-
const renderInputs = [];
|
|
2917
|
-
const parentStack = [];
|
|
2918
|
-
const maxLevel = rootModel.getMaxDepth();
|
|
2919
|
-
const hasGroupColumn = rootModel.hasGroupColumn();
|
|
2920
|
-
const hasPinnedColumn = rootModel.hasLeftPinnedColumn() || rootModel.hasRightPinnedColumn();
|
|
2921
|
-
let columnIndex = 0;
|
|
2922
|
-
// Iterate structure model (DFS by default) and construct render nodes.
|
|
2923
|
-
rootModel.iterator().forEach((model) => {
|
|
2924
|
-
const parent = model.level > 0 ? parentStack[model.level - 1] : null;
|
|
2925
|
-
const isParentStart = hasGroupColumn && this.isParentStart(model);
|
|
2926
|
-
const isParentEnd = hasGroupColumn && this.isParentEnd(model);
|
|
2927
|
-
const renderInput = new ColumnRenderInputModel(model.key, model.label, parent ? parent.pinned : model.pinned, hasGroupColumn ? this.getColSpan(model) : null, hasGroupColumn ? (model.isLeaf() ? maxLevel - model.level : 1) : null, parent ? parent.isViewStart && isParentStart : isParentStart, parent ? parent.isViewEnd && isParentEnd : isParentEnd, parent
|
|
2928
|
-
? parent.isLeftEndPinned && isParentEnd
|
|
2929
|
-
: hasPinnedColumn && this.isLeftEndPinned(model), parent
|
|
2930
|
-
? parent.isRightStartPinned && isParentStart
|
|
2931
|
-
: hasPinnedColumn && this.isRightStartPinned(model), parent ? parent.isNoPinnedEnd && isParentEnd : hasPinnedColumn && this.isNoPinnedEnd(model), hasGroupColumn, hasPinnedColumn, maxLevel, model.level, columnIndex, parent);
|
|
2932
|
-
// Attach to parent if present, otherwise add to root-level array.
|
|
2933
|
-
parent ? parent.children.push(renderInput) : renderInputs.push(renderInput);
|
|
2934
|
-
// Maintain parent stack keyed by level to allow next nodes to find their parent.
|
|
2935
|
-
parentStack[model.level] = renderInput;
|
|
2936
|
-
parentStack.length = model.level + 1;
|
|
2937
|
-
// Increment leaf index when encountering a leaf structure node.
|
|
2938
|
-
if (model.isLeaf())
|
|
2939
|
-
columnIndex++;
|
|
2940
|
-
});
|
|
2941
|
-
return renderInputs;
|
|
2942
|
-
}
|
|
2943
|
-
/**
|
|
2944
|
-
* True when the provided structure model is the last left-pinned sibling in its parent's children.
|
|
2945
|
-
* Used to mark boundary nodes for left-pinned groups.
|
|
2946
|
-
*
|
|
2947
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2948
|
-
* @returns {boolean} True when model is the last left-pinned sibling.
|
|
2949
|
-
*/
|
|
2950
|
-
static isLeftEndPinned(model) {
|
|
2951
|
-
const siblings = model.parent
|
|
2952
|
-
.getOrderedChildren()
|
|
2953
|
-
.filter((child) => child.pinned === 'left');
|
|
2954
|
-
return siblings[siblings.length - 1] === model;
|
|
2955
|
-
}
|
|
2956
|
-
/**
|
|
2957
|
-
* True when the provided structure model is the first right-pinned sibling in its parent's children.
|
|
2958
|
-
* Used to mark boundary nodes for right-pinned groups.
|
|
2959
|
-
*
|
|
2960
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2961
|
-
* @returns {boolean} True when model is the first right-pinned sibling.
|
|
2962
|
-
*/
|
|
2963
|
-
static isRightStartPinned(model) {
|
|
2964
|
-
const siblings = model.parent
|
|
2965
|
-
.getOrderedChildren()
|
|
2966
|
-
.filter((child) => child.pinned === 'right');
|
|
2967
|
-
return siblings[0] === model;
|
|
2968
|
-
}
|
|
2969
|
-
/**
|
|
2970
|
-
* True when the provided structure model is the last non-pinned sibling in its parent's children.
|
|
2971
|
-
* Useful to handle the 'no-pinned-end' condition.
|
|
2972
|
-
*
|
|
2973
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2974
|
-
* @returns {boolean} True when model is the last non-pinned sibling.
|
|
2975
|
-
*/
|
|
2976
|
-
static isNoPinnedEnd(model) {
|
|
2977
|
-
const siblings = model.parent
|
|
2978
|
-
.getOrderedChildren()
|
|
2979
|
-
.filter((child) => !child.pinned);
|
|
2980
|
-
return siblings[siblings.length - 1] === model;
|
|
2981
|
-
}
|
|
2982
|
-
/**
|
|
2983
|
-
* True when the provided model is the first child of its parent.
|
|
2984
|
-
*
|
|
2985
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2986
|
-
* @returns {boolean} True when model is the first child.
|
|
3153
|
+
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2987
3154
|
*/
|
|
2988
|
-
|
|
2989
|
-
return
|
|
3155
|
+
hasRightPinnedColumn() {
|
|
3156
|
+
return !!this.children.find((model) => model.pinned === 'right');
|
|
2990
3157
|
}
|
|
2991
3158
|
/**
|
|
2992
|
-
*
|
|
3159
|
+
* Checks if this node is a leaf (no children).
|
|
2993
3160
|
*
|
|
2994
|
-
* @
|
|
2995
|
-
* @returns {boolean} True when model is the last child.
|
|
3161
|
+
* @returns {boolean} True when this node has no children.
|
|
2996
3162
|
*/
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
return parentChildren[parentChildren.length - 1] === model;
|
|
3163
|
+
isLeaf() {
|
|
3164
|
+
return !this.children || this.children.length === 0;
|
|
3000
3165
|
}
|
|
3001
3166
|
/**
|
|
3002
|
-
*
|
|
3003
|
-
* of nodes present at any single level (visual column span).
|
|
3167
|
+
* Return an array of nodes for this subtree using the specified traversal mode.
|
|
3004
3168
|
*
|
|
3005
|
-
*
|
|
3006
|
-
*
|
|
3169
|
+
* Currently only depth-first search ('dfs') is supported. The returned array is
|
|
3170
|
+
* cached per-mode to avoid repeated traversal costs.
|
|
3171
|
+
*
|
|
3172
|
+
* @param {IteratorMode} mode - Traversal mode to use. Defaults to 'dfs'.
|
|
3173
|
+
* @returns {ColumnStructureModel[]} Array of ColumnStructureModel nodes in traversal order.
|
|
3007
3174
|
*/
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
});
|
|
3014
|
-
return Math.max(...Object.values(rowMap));
|
|
3175
|
+
iterator(mode = 'dfs') {
|
|
3176
|
+
if (mode === 'dfs') {
|
|
3177
|
+
return this.dfsIterator();
|
|
3178
|
+
}
|
|
3179
|
+
return [];
|
|
3015
3180
|
}
|
|
3016
3181
|
/**
|
|
3017
|
-
*
|
|
3018
|
-
* Caches the result on first call and returns cached array on subsequent calls.
|
|
3182
|
+
* Gets all leaf nodes in the subtree, with caching.
|
|
3019
3183
|
*
|
|
3020
|
-
*
|
|
3184
|
+
* Subsequent calls return the cached array until the underlying model is rebuilt.
|
|
3185
|
+
*
|
|
3186
|
+
* @returns {ColumnStructureModel[]} Array of leaf column models.
|
|
3021
3187
|
*/
|
|
3022
3188
|
getLeaves() {
|
|
3023
3189
|
if (this.leaves.length > 0) {
|
|
3024
3190
|
return this.leaves;
|
|
3025
3191
|
}
|
|
3026
|
-
const leaves = this.
|
|
3192
|
+
const leaves = this.dfsIterator().filter((model) => model.isLeaf());
|
|
3027
3193
|
this.leaves = leaves;
|
|
3028
3194
|
return leaves;
|
|
3029
3195
|
}
|
|
3030
3196
|
/**
|
|
3031
|
-
*
|
|
3197
|
+
* For root nodes, returns children ordered by pinned type (left, none, right).
|
|
3198
|
+
* For non-root nodes, returns children in their natural order.
|
|
3032
3199
|
*
|
|
3033
|
-
* @
|
|
3034
|
-
* @returns {ColumnRenderInputModel[]} Traversal-ordered array of nodes.
|
|
3200
|
+
* @returns {ColumnStructureModel[]} Array of child column models.
|
|
3035
3201
|
*/
|
|
3036
|
-
|
|
3037
|
-
if (
|
|
3038
|
-
return this.
|
|
3202
|
+
getOrderedChildren() {
|
|
3203
|
+
if (!this.isRoot())
|
|
3204
|
+
return this.children;
|
|
3205
|
+
return this.orderedChildren;
|
|
3206
|
+
}
|
|
3207
|
+
/**
|
|
3208
|
+
* Orders root children by pinned type (left, none, right) and caches the result.
|
|
3209
|
+
*
|
|
3210
|
+
* For non-root nodes this method returns children in their natural order.
|
|
3211
|
+
*
|
|
3212
|
+
* @returns {ColumnStructureModel[]} Array of ordered child column models.
|
|
3213
|
+
*/
|
|
3214
|
+
orderChildrenByPinned() {
|
|
3215
|
+
if (!this.isRoot())
|
|
3216
|
+
return this.children;
|
|
3217
|
+
if (this.orderedChildren.length > 0) {
|
|
3218
|
+
return this.orderedChildren;
|
|
3039
3219
|
}
|
|
3040
|
-
|
|
3041
|
-
|
|
3220
|
+
const leftPinned = [];
|
|
3221
|
+
const noPinned = [];
|
|
3222
|
+
const rightPinned = [];
|
|
3223
|
+
this.children.forEach((child) => {
|
|
3224
|
+
if (child.pinned === 'left') {
|
|
3225
|
+
leftPinned.push(child);
|
|
3226
|
+
}
|
|
3227
|
+
else if (child.pinned === 'right') {
|
|
3228
|
+
rightPinned.push(child);
|
|
3229
|
+
}
|
|
3230
|
+
else {
|
|
3231
|
+
noPinned.push(child);
|
|
3232
|
+
}
|
|
3233
|
+
});
|
|
3234
|
+
const children = [...leftPinned, ...noPinned, ...rightPinned];
|
|
3235
|
+
this.orderedChildren = children;
|
|
3236
|
+
return children;
|
|
3042
3237
|
}
|
|
3043
3238
|
/**
|
|
3044
|
-
*
|
|
3045
|
-
* Caches the result for the 'dfs' mode to avoid repeated recursion.
|
|
3239
|
+
* Checks if this node is the root node.
|
|
3046
3240
|
*
|
|
3047
|
-
* @returns {
|
|
3241
|
+
* @returns {boolean} True if root node, false otherwise.
|
|
3242
|
+
*/
|
|
3243
|
+
isRoot() {
|
|
3244
|
+
return this.level === ColumnStructureModel.ROOT_LEVEL;
|
|
3245
|
+
}
|
|
3246
|
+
/**
|
|
3247
|
+
* Performs a depth-first traversal of the column structure.
|
|
3248
|
+
*
|
|
3249
|
+
* The traversal respects root-child pinned ordering (left/no/right) for the root node.
|
|
3250
|
+
* Results are cached per-node to avoid repeated recursion costs.
|
|
3251
|
+
*
|
|
3252
|
+
* @returns {ColumnStructureModel[]} Array of all nodes in DFS order.
|
|
3048
3253
|
*/
|
|
3049
3254
|
dfsIterator() {
|
|
3050
3255
|
if (this.iteratorCacheMap.has('dfs')) {
|
|
3051
3256
|
return this.iteratorCacheMap.get('dfs');
|
|
3052
3257
|
}
|
|
3053
3258
|
const localResult = [];
|
|
3054
|
-
|
|
3055
|
-
if (this.
|
|
3056
|
-
|
|
3259
|
+
const children = this.orderChildrenByPinned();
|
|
3260
|
+
if (!this.isRoot()) {
|
|
3261
|
+
localResult.push(this);
|
|
3262
|
+
}
|
|
3263
|
+
if (children && children.length > 0) {
|
|
3264
|
+
children.forEach((child) => {
|
|
3057
3265
|
localResult.push(...child.dfsIterator());
|
|
3058
3266
|
});
|
|
3059
3267
|
}
|
|
3060
3268
|
this.iteratorCacheMap.set('dfs', localResult);
|
|
3061
3269
|
return localResult;
|
|
3062
3270
|
}
|
|
3271
|
+
}
|
|
3272
|
+
ColumnStructureModel.ROOT_LEVEL = -1;
|
|
3273
|
+
ColumnStructureModel.ROOT_KEY = '#root-model#';
|
|
3274
|
+
|
|
3275
|
+
var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
3276
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3277
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
3278
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
3279
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
3280
|
+
};
|
|
3281
|
+
/**
|
|
3282
|
+
* Controller responsible for building and keeping the ColumnStructureModel in sync
|
|
3283
|
+
* with the component's `columns` and `groupColumns` properties.
|
|
3284
|
+
*
|
|
3285
|
+
* This slimmer maps relevant component fields and lifecycle/watch hooks to
|
|
3286
|
+
* automatically rebuild the column structure when inputs change.
|
|
3287
|
+
*/
|
|
3288
|
+
class VegaTableColumnStructureModelController extends VegaSlimmer {
|
|
3289
|
+
/**
|
|
3290
|
+
* Component lifecycle hook mapped to the host's componentWillLoad.
|
|
3291
|
+
* Initializes the ColumnStructureModel prior to initial render.
|
|
3292
|
+
*/
|
|
3293
|
+
componentWillLoad() {
|
|
3294
|
+
this.setColumnStructureModel();
|
|
3295
|
+
}
|
|
3063
3296
|
/**
|
|
3064
|
-
*
|
|
3065
|
-
*
|
|
3066
|
-
* @returns {boolean} True when node is a leaf.
|
|
3297
|
+
* Watch handler mapped to the host's watchColumns.
|
|
3298
|
+
* Rebuilds the ColumnStructureModel when `columns` changes.
|
|
3067
3299
|
*/
|
|
3068
|
-
|
|
3069
|
-
|
|
3300
|
+
watchColumns() {
|
|
3301
|
+
this.setColumnStructureModel();
|
|
3302
|
+
}
|
|
3303
|
+
/**
|
|
3304
|
+
* Watch handler mapped to the host's watchGroupColumns.
|
|
3305
|
+
* Rebuilds the ColumnStructureModel when `groupColumns` changes.
|
|
3306
|
+
*/
|
|
3307
|
+
watchGroupColumns() {
|
|
3308
|
+
this.setColumnStructureModel();
|
|
3309
|
+
}
|
|
3310
|
+
/**
|
|
3311
|
+
* Build and assign the ColumnStructureModel from current `columns` and `groupColumns`.
|
|
3312
|
+
* Uses `ColumnStructureModel.from` which returns a root model representing the column tree.
|
|
3313
|
+
*/
|
|
3314
|
+
setColumnStructureModel() {
|
|
3315
|
+
this.columnStructureModel = ColumnStructureModel.from(this.columns, this.groupColumns);
|
|
3070
3316
|
}
|
|
3071
3317
|
}
|
|
3318
|
+
__decorate$E([
|
|
3319
|
+
MapToComponentField()
|
|
3320
|
+
], VegaTableColumnStructureModelController.prototype, "host", void 0);
|
|
3321
|
+
__decorate$E([
|
|
3322
|
+
MapToComponentField()
|
|
3323
|
+
], VegaTableColumnStructureModelController.prototype, "columns", void 0);
|
|
3324
|
+
__decorate$E([
|
|
3325
|
+
MapToComponentField()
|
|
3326
|
+
], VegaTableColumnStructureModelController.prototype, "groupColumns", void 0);
|
|
3327
|
+
__decorate$E([
|
|
3328
|
+
MapToComponentField({ writable: true })
|
|
3329
|
+
], VegaTableColumnStructureModelController.prototype, "columnStructureModel", void 0);
|
|
3330
|
+
__decorate$E([
|
|
3331
|
+
MapToComponentMethod('componentWillLoad')
|
|
3332
|
+
], VegaTableColumnStructureModelController.prototype, "componentWillLoad", null);
|
|
3333
|
+
__decorate$E([
|
|
3334
|
+
MapToComponentMethod('watchColumns')
|
|
3335
|
+
], VegaTableColumnStructureModelController.prototype, "watchColumns", null);
|
|
3336
|
+
__decorate$E([
|
|
3337
|
+
MapToComponentMethod('watchGroupColumns')
|
|
3338
|
+
], VegaTableColumnStructureModelController.prototype, "watchGroupColumns", null);
|
|
3072
3339
|
|
|
3073
3340
|
var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
3074
3341
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -3283,6 +3550,12 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3283
3550
|
},
|
|
3284
3551
|
});
|
|
3285
3552
|
this.previouslyStyledCells = new Set();
|
|
3553
|
+
// Each set tracks cells where exactly one dynamic class was added — cleared per class so
|
|
3554
|
+
// that static classes from render() on the same cell are never inadvertently stripped
|
|
3555
|
+
// (e.g. a cell that is both isRightStartPinned and the last-visible body cell).
|
|
3556
|
+
this.dynamicRightDividerCells = new Set();
|
|
3557
|
+
this.dynamicLeftDividerCells = new Set();
|
|
3558
|
+
this.dynamicHideRightBorderCells = new Set();
|
|
3286
3559
|
this.clearPinnedPositionsTaskQueue = new SynchronizeTaskQueue(1);
|
|
3287
3560
|
}
|
|
3288
3561
|
componentDidLoad() {
|
|
@@ -3290,7 +3563,17 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3290
3563
|
async componentDidRender() {
|
|
3291
3564
|
await this.clearPinnedPositionsTaskQueue.runTask();
|
|
3292
3565
|
this.updateTableRowPinnedPosition();
|
|
3293
|
-
this.updateTableCellPinnedPosition();
|
|
3566
|
+
const unreadyCells = this.updateTableCellPinnedPosition();
|
|
3567
|
+
if (unreadyCells.length > 0) {
|
|
3568
|
+
// In dev builds, Stencil's HMR flag forces loadModule() to always use a
|
|
3569
|
+
// dynamic import(), so a brand-new cell's first render is deferred. We wait
|
|
3570
|
+
// for each unready cell via componentOnReady() — which resolves exactly when
|
|
3571
|
+
// the cell's shadow <td> is first rendered — then apply sticky positioning.
|
|
3572
|
+
// In production (hotModuleReplacement=false) loadModule() is synchronous, so
|
|
3573
|
+
// cells are always ready by componentDidRender and this branch is never reached.
|
|
3574
|
+
await Promise.all(unreadyCells.map((cell) => cell.componentOnReady()));
|
|
3575
|
+
this.updateTableCellPinnedPosition();
|
|
3576
|
+
}
|
|
3294
3577
|
}
|
|
3295
3578
|
watchColumnStructureModel() {
|
|
3296
3579
|
void this.clearPinnedPositionsTaskQueue.enqueue({
|
|
@@ -3302,24 +3585,165 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3302
3585
|
updateTableCellPinnedPosition() {
|
|
3303
3586
|
if (!this.columnStructureModel.hasLeftPinnedColumn() &&
|
|
3304
3587
|
!this.columnStructureModel.hasRightPinnedColumn())
|
|
3305
|
-
return;
|
|
3588
|
+
return [];
|
|
3589
|
+
// Clear stale dynamic boundary classes before re-evaluating breakpoint visibility.
|
|
3590
|
+
// This ensures the classes are removed when the viewport grows back (e.g. column B
|
|
3591
|
+
// becomes visible again) and not only when the column structure changes.
|
|
3592
|
+
// Each set only removes the single class it tracks, preserving any other static
|
|
3593
|
+
// border classes that render() placed on the same cell (VD-9565).
|
|
3594
|
+
this.dynamicRightDividerCells.forEach((cell) => cell.classList.remove('right-divider'));
|
|
3595
|
+
this.dynamicRightDividerCells.clear();
|
|
3596
|
+
this.dynamicLeftDividerCells.forEach((cell) => cell.classList.remove('left-divider'));
|
|
3597
|
+
this.dynamicLeftDividerCells.clear();
|
|
3598
|
+
this.dynamicHideRightBorderCells.forEach((cell) => cell.classList.remove('hide-right-border'));
|
|
3599
|
+
this.dynamicHideRightBorderCells.clear();
|
|
3306
3600
|
// if not have head row, it means no pinned, so no need to update
|
|
3307
3601
|
const row = this.host.shadowRoot.querySelector('vega-table-head-row');
|
|
3308
3602
|
// to avoid window resize before table rendered.
|
|
3309
3603
|
// @see{module:resize-pinned-position-by-edit-row}
|
|
3310
3604
|
/* istanbul ignore next */
|
|
3311
3605
|
if (!row)
|
|
3312
|
-
return;
|
|
3606
|
+
return [];
|
|
3313
3607
|
const headCellRenderInputMap = this.vegaTableRenderInputController.getHeadCellRenderInputMap();
|
|
3314
3608
|
const pinnedColumnBodyCellRenderInputMap = this.vegaTableRenderInputController.getPinnedColumnBodyCellRenderInputMap();
|
|
3315
3609
|
const [prevShadowThWidth, nextShadowThWidth] = this.getRowShadowThWidths();
|
|
3316
3610
|
const leafWidths = this.getLeafWidths();
|
|
3611
|
+
// Track the last visible left-pinned head cell and first visible right-pinned head cell
|
|
3612
|
+
// to dynamically apply boundary classes when breakpoint-hidden columns shift the boundary.
|
|
3613
|
+
let lastVisibleLeftPinnedHeadCell = null;
|
|
3614
|
+
let firstVisibleRightPinnedHeadCell = null;
|
|
3615
|
+
let lastVisibleRightPinnedHeadCell = null;
|
|
3317
3616
|
headCellRenderInputMap.forEach((renderInput, headCell) => {
|
|
3617
|
+
var _a;
|
|
3618
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3619
|
+
const shadowCell = (_a = headCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('th, td');
|
|
3620
|
+
const isVisible = shadowCell ? shadowCell.getBoundingClientRect().width > 0 : false;
|
|
3318
3621
|
this.updateCellPinnedPosition(renderInput, headCell, prevShadowThWidth, leafWidths, nextShadowThWidth);
|
|
3622
|
+
if (isVisible && renderInput.pinned === 'left') {
|
|
3623
|
+
lastVisibleLeftPinnedHeadCell = shadowCell;
|
|
3624
|
+
}
|
|
3625
|
+
if (isVisible && renderInput.pinned === 'right' && !firstVisibleRightPinnedHeadCell) {
|
|
3626
|
+
firstVisibleRightPinnedHeadCell = shadowCell;
|
|
3627
|
+
}
|
|
3628
|
+
if (isVisible && renderInput.pinned === 'right') {
|
|
3629
|
+
lastVisibleRightPinnedHeadCell = shadowCell;
|
|
3630
|
+
}
|
|
3319
3631
|
});
|
|
3320
|
-
|
|
3321
|
-
|
|
3632
|
+
// Remove stale entries (disconnected cells) left over from prior renders (e.g. after drag reorder).
|
|
3633
|
+
pinnedColumnBodyCellRenderInputMap.forEach((_, bodyCell) => {
|
|
3634
|
+
/* istanbul ignore next -- defensive cleanup for disconnected cells; jsdom always keeps cells connected */
|
|
3635
|
+
if (!(bodyCell === null || bodyCell === void 0 ? void 0 : bodyCell.isConnected)) {
|
|
3636
|
+
pinnedColumnBodyCellRenderInputMap.delete(bodyCell);
|
|
3637
|
+
}
|
|
3638
|
+
});
|
|
3639
|
+
// Track last visible left-pinned body cells per row for boundary class propagation.
|
|
3640
|
+
const lastVisibleLeftPinnedBodyCells = new Map();
|
|
3641
|
+
const firstVisibleRightPinnedBodyCells = new Map();
|
|
3642
|
+
const lastVisibleRightPinnedBodyCells = new Map();
|
|
3643
|
+
// Collect body cells whose shadow DOM is not yet ready (newly created cells).
|
|
3644
|
+
const unreadyCells = [];
|
|
3645
|
+
pinnedColumnBodyCellRenderInputMap.forEach((renderInput, bodyCell) => {
|
|
3646
|
+
var _a;
|
|
3647
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3648
|
+
const shadowCell = (_a = bodyCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('th, td');
|
|
3649
|
+
const isVisible = shadowCell ? shadowCell.getBoundingClientRect().width > 0 : false;
|
|
3650
|
+
// Shadow DOM not ready yet — cell was just created (e.g. colspan collapsed after drag).
|
|
3651
|
+
if (['left', 'right'].includes(renderInput.pinned) && !shadowCell) {
|
|
3652
|
+
unreadyCells.push(bodyCell);
|
|
3653
|
+
return;
|
|
3654
|
+
}
|
|
3655
|
+
this.updateCellPinnedPosition(renderInput, bodyCell, prevShadowThWidth, leafWidths, nextShadowThWidth);
|
|
3656
|
+
if (isVisible && renderInput.pinned === 'left') {
|
|
3657
|
+
// Use the parent row as the grouping key for per-row tracking
|
|
3658
|
+
const parentRow = bodyCell.closest('vega-table-row');
|
|
3659
|
+
if (parentRow) {
|
|
3660
|
+
lastVisibleLeftPinnedBodyCells.set(parentRow, shadowCell);
|
|
3661
|
+
}
|
|
3662
|
+
}
|
|
3663
|
+
if (isVisible && renderInput.pinned === 'right') {
|
|
3664
|
+
const parentRow = bodyCell.closest('vega-table-row');
|
|
3665
|
+
if (parentRow && !firstVisibleRightPinnedBodyCells.has(parentRow)) {
|
|
3666
|
+
firstVisibleRightPinnedBodyCells.set(parentRow, shadowCell);
|
|
3667
|
+
}
|
|
3668
|
+
if (parentRow) {
|
|
3669
|
+
lastVisibleRightPinnedBodyCells.set(parentRow, shadowCell);
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3322
3672
|
});
|
|
3673
|
+
// Apply boundary divider to the last visible left-pinned cell when the static
|
|
3674
|
+
// isLeftEndPinned column is hidden by breakpoint.
|
|
3675
|
+
if (lastVisibleLeftPinnedHeadCell &&
|
|
3676
|
+
!lastVisibleLeftPinnedHeadCell.classList.contains('right-divider')) {
|
|
3677
|
+
// Check if the static boundary column is hidden — if leafWidths shows 0 for the
|
|
3678
|
+
// isLeftEndPinned column, the boundary has shifted.
|
|
3679
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3680
|
+
const staticBoundaryLeaf = leafRenderInputs.find((leaf) => leaf.isLeftEndPinned);
|
|
3681
|
+
if (staticBoundaryLeaf && leafWidths[staticBoundaryLeaf.columnIndex] === 0) {
|
|
3682
|
+
lastVisibleLeftPinnedHeadCell.classList.add('right-divider');
|
|
3683
|
+
this.dynamicRightDividerCells.add(lastVisibleLeftPinnedHeadCell);
|
|
3684
|
+
lastVisibleLeftPinnedBodyCells.forEach((cell) => {
|
|
3685
|
+
// Only track cells that don't already hold `right-divider` from their
|
|
3686
|
+
// static render (effectiveRenderInput.isLeftEndPinned). If we add a
|
|
3687
|
+
// statically-classed cell here, the per-class clear on the next resize
|
|
3688
|
+
// would erroneously remove the static class (VD-9540).
|
|
3689
|
+
if (!cell.classList.contains('right-divider')) {
|
|
3690
|
+
cell.classList.add('right-divider');
|
|
3691
|
+
this.dynamicRightDividerCells.add(cell);
|
|
3692
|
+
}
|
|
3693
|
+
});
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
if (firstVisibleRightPinnedHeadCell &&
|
|
3697
|
+
!firstVisibleRightPinnedHeadCell.classList.contains('left-divider')) {
|
|
3698
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3699
|
+
const staticBoundaryLeaf = leafRenderInputs.find((leaf) => leaf.isRightStartPinned);
|
|
3700
|
+
if (staticBoundaryLeaf && leafWidths[staticBoundaryLeaf.columnIndex] === 0) {
|
|
3701
|
+
firstVisibleRightPinnedHeadCell.classList.add('left-divider');
|
|
3702
|
+
this.dynamicLeftDividerCells.add(firstVisibleRightPinnedHeadCell);
|
|
3703
|
+
firstVisibleRightPinnedBodyCells.forEach((cell) => {
|
|
3704
|
+
// Only track cells that don't already hold `left-divider` from their
|
|
3705
|
+
// static render (effectiveRenderInput.isRightStartPinned). If we add a
|
|
3706
|
+
// statically-classed cell here, the per-class clear on the next resize
|
|
3707
|
+
// would erroneously remove the static class (VD-9540).
|
|
3708
|
+
if (!cell.classList.contains('left-divider')) {
|
|
3709
|
+
cell.classList.add('left-divider');
|
|
3710
|
+
this.dynamicLeftDividerCells.add(cell);
|
|
3711
|
+
}
|
|
3712
|
+
});
|
|
3713
|
+
}
|
|
3714
|
+
}
|
|
3715
|
+
// Apply hide-right-border to the last visible right-pinned cell when the structural
|
|
3716
|
+
// right-most column is hidden by breakpoint. Without this, the new right-most visible
|
|
3717
|
+
// pinned column keeps a right border while the head cell suppresses it (head cells use
|
|
3718
|
+
// isViewEnd), leaving an extra vertical border at the table's right edge (VD-9565).
|
|
3719
|
+
if (lastVisibleRightPinnedHeadCell &&
|
|
3720
|
+
!lastVisibleRightPinnedHeadCell.classList.contains('hide-right-border')) {
|
|
3721
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3722
|
+
// The structural right-most column is the last right-pinned leaf. Leaf render
|
|
3723
|
+
// inputs do not carry `isViewEnd` (unlike head render inputs), so identify the
|
|
3724
|
+
// boundary via `pinned` order instead.
|
|
3725
|
+
const rightPinnedLeaves = leafRenderInputs.filter((leaf) => leaf.pinned === 'right');
|
|
3726
|
+
const structuralEndLeaf = rightPinnedLeaves[rightPinnedLeaves.length - 1];
|
|
3727
|
+
if (structuralEndLeaf && leafWidths[structuralEndLeaf.columnIndex] === 0) {
|
|
3728
|
+
lastVisibleRightPinnedHeadCell.classList.add('hide-right-border');
|
|
3729
|
+
this.dynamicHideRightBorderCells.add(lastVisibleRightPinnedHeadCell);
|
|
3730
|
+
lastVisibleRightPinnedBodyCells.forEach((cell) => {
|
|
3731
|
+
// Only track cells that don't already hold `hide-right-border` from their
|
|
3732
|
+
// static render (isViewEnd/isNoPinnedEnd). Adding a statically-classed cell
|
|
3733
|
+
// here would let the per-class clear erroneously strip the static class on
|
|
3734
|
+
// the next resize (mirrors the VD-9540 divider guard).
|
|
3735
|
+
if (!cell.classList.contains('hide-right-border')) {
|
|
3736
|
+
cell.classList.add('hide-right-border');
|
|
3737
|
+
this.dynamicHideRightBorderCells.add(cell);
|
|
3738
|
+
}
|
|
3739
|
+
});
|
|
3740
|
+
}
|
|
3741
|
+
}
|
|
3742
|
+
// Sync colspan on pinned body cells that span breakpoint-hidden columns.
|
|
3743
|
+
// Chrome does not honour visibility:collapse / display:none on <col> for table layout,
|
|
3744
|
+
// so we directly adjust the shadow <td> colspan attribute to exclude hidden columns (VD-9540).
|
|
3745
|
+
this.syncColspanForHiddenColumns(leafWidths, pinnedColumnBodyCellRenderInputMap);
|
|
3746
|
+
return unreadyCells;
|
|
3323
3747
|
}
|
|
3324
3748
|
getRowShadowThWidths() {
|
|
3325
3749
|
const row = this.host.shadowRoot.querySelector('vega-table-head-row');
|
|
@@ -3356,6 +3780,33 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3356
3780
|
}
|
|
3357
3781
|
});
|
|
3358
3782
|
}
|
|
3783
|
+
syncColspanForHiddenColumns(leafWidths, pinnedColumnBodyCellRenderInputMap) {
|
|
3784
|
+
// NOTE: renderInput.colSpan is null for flat (non-group) tables — it only holds a value for
|
|
3785
|
+
// group-column subtree spans. We read the original colspan from the component prop (bodyCell.colSpan)
|
|
3786
|
+
// which is always the rendered value, unaffected by our shadow-DOM attribute writes.
|
|
3787
|
+
//
|
|
3788
|
+
// Skip when ALL leaf widths are 0 — that means the table is running in jsdom / an off-screen
|
|
3789
|
+
// context where getBoundingClientRect() always returns 0. Adjusting in that state would
|
|
3790
|
+
// incorrectly reduce every colspan to 1 (no visible columns = Math.max(1,0)=1).
|
|
3791
|
+
if (leafWidths.every((w) => w === 0))
|
|
3792
|
+
return;
|
|
3793
|
+
pinnedColumnBodyCellRenderInputMap.forEach((renderInput, bodyCell) => {
|
|
3794
|
+
var _a;
|
|
3795
|
+
const originalColspan = bodyCell.colSpan || 1;
|
|
3796
|
+
if (originalColspan <= 1)
|
|
3797
|
+
return;
|
|
3798
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3799
|
+
const shadowTd = (_a = bodyCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('td');
|
|
3800
|
+
/* istanbul ignore next -- shadowTd is always present in jsdom */
|
|
3801
|
+
if (!shadowTd)
|
|
3802
|
+
return;
|
|
3803
|
+
// Count how many columns in the span are visible (width > 0) — hidden breakpoint
|
|
3804
|
+
// columns have leafWidth === 0 because their <th> has display:none.
|
|
3805
|
+
const spanned = leafWidths.slice(renderInput.columnIndex, renderInput.columnIndex + originalColspan);
|
|
3806
|
+
const effectiveColspan = Math.max(1, spanned.filter((w) => w > 0).length);
|
|
3807
|
+
shadowTd.setAttribute('colspan', String(effectiveColspan));
|
|
3808
|
+
});
|
|
3809
|
+
}
|
|
3359
3810
|
updateCellPinnedPosition(renderInput, headCell, prevShadowThWidth, leafWidths, nextShadowThWidth) {
|
|
3360
3811
|
if (['left', 'right'].includes(renderInput.pinned)) {
|
|
3361
3812
|
const shadowCell = headCell.shadowRoot.querySelector('th, td');
|
|
@@ -3367,10 +3818,17 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3367
3818
|
this.updatePinnedPosition(shadowCell, 'left', position);
|
|
3368
3819
|
}
|
|
3369
3820
|
if (renderInput.pinned === 'right') {
|
|
3370
|
-
|
|
3821
|
+
// renderInput.colSpan is null for flat (non-group) tables — it only carries a value
|
|
3822
|
+
// for group-column subtree spans (multi-level headers). For body cells with an HTML
|
|
3823
|
+
// colspan (e.g. colSpan:2 spanning the last two right-pinned columns), we read the
|
|
3824
|
+
// actual span from the host component prop so the right-edge offset is calculated
|
|
3825
|
+
// over the full spanned width rather than just one column (VD-9565).
|
|
3826
|
+
const colSpan = isNonNullable(renderInput.colSpan)
|
|
3827
|
+
? renderInput.colSpan
|
|
3828
|
+
: headCell.colSpan || 1;
|
|
3371
3829
|
const position = nextShadowThWidth +
|
|
3372
3830
|
leafWidths
|
|
3373
|
-
.slice(renderInput.columnIndex +
|
|
3831
|
+
.slice(renderInput.columnIndex + colSpan)
|
|
3374
3832
|
.reduce((count, colWidth) => count + colWidth, 0);
|
|
3375
3833
|
this.updatePinnedPosition(shadowCell, 'right', position);
|
|
3376
3834
|
}
|
|
@@ -3425,6 +3883,15 @@ class VegaTablePinnedRenderer extends VegaSlimmer {
|
|
|
3425
3883
|
cell.style.width = '';
|
|
3426
3884
|
}
|
|
3427
3885
|
});
|
|
3886
|
+
// Remove boundary classes only from cells where they were dynamically added
|
|
3887
|
+
// (breakpoint-shifted boundaries). Static boundary classes from renderInput are
|
|
3888
|
+
// re-applied by the cell's own render cycle.
|
|
3889
|
+
this.dynamicRightDividerCells.forEach((cell) => cell.classList.remove('right-divider'));
|
|
3890
|
+
this.dynamicRightDividerCells.clear();
|
|
3891
|
+
this.dynamicLeftDividerCells.forEach((cell) => cell.classList.remove('left-divider'));
|
|
3892
|
+
this.dynamicLeftDividerCells.clear();
|
|
3893
|
+
this.dynamicHideRightBorderCells.forEach((cell) => cell.classList.remove('hide-right-border'));
|
|
3894
|
+
this.dynamicHideRightBorderCells.clear();
|
|
3428
3895
|
this.previouslyStyledCells.clear();
|
|
3429
3896
|
}
|
|
3430
3897
|
updatePinnedPosition(cell, type, position) {
|
|
@@ -4095,7 +4562,7 @@ __decorate$A([
|
|
|
4095
4562
|
MapToComponentMethod('watchRowDraggable')
|
|
4096
4563
|
], VegaTableRowDraggableController.prototype, "watchRowDraggable", null);
|
|
4097
4564
|
|
|
4098
|
-
const vegaTableCss = ":host{display:block}table{width:100%;border-spacing:0}.vega-table-empty-description{text-align:center;padding:24px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}table.v-table-fixed{table-layout:fixed}.vega-table-scrollable-container{overflow:auto}.vega-table-scrollable-container vega-table-head{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.vega-table-scrollable-container.scrolled vega-table-head.fixed-header,.vega-table-scrollable-container.scrolled ::slotted(vega-table-head.fixed-header){box-shadow:0px 4px 0px rgba(0, 0, 0, 0.1);}.vega-table-scrollable-container.scrolled vega-table-foot.fixed-footer::after,.vega-table-scrollable-container.scrolled ::slotted(vega-table-foot.fixed-footer)::after{content:\"\";position:absolute;top:0;left:0;width:100%;height:1px;background-color:rgba(var(--v-bg-divider, 171, 198, 216, 1))}vega-form{display:contents}table:not(.show-edit-error) *::part(field-error-message){display:none !important}.vega-table-pagination-container{margin-top:24px}.vega-table-pagination-container.bottom-center{display:flex;justify-content:center}.vega-table-pagination-container.bottom-right{display:flex;justify-content:flex-end}.vega-table-pagination-container.bottom-left{display:flex;justify-content:flex-start}col.v-hidden{display:none}@media (min-width: 320px){col.S\\:v-table-column{display:table-column}}@media (min-width: 768px){col.M\\:v-table-column{display:table-column}}@media (min-width: 1024px){col.L\\:v-table-column{display:table-column}}@media (min-width: 1440px){col.XL\\:v-table-column{display:table-column}}:host(.is-group-table) .vega-table-scrollable-container{border-color:rgba(var(--v-border-color-divider, 171, 198, 216, 1));border-width:1px;border-style:solid}:host(.is-group-table.density-relaxed) .vega-table-scrollable-container{border-radius:12px}:host(.is-group-table.density-default) .vega-table-scrollable-container{border-radius:12px}:host(.is-group-table.density-compact) .vega-table-scrollable-container{border-radius:4px}:host(.is-pinned-table) table{min-width:max-content}.draggable-col{min-width:16px;width:16px}";
|
|
4565
|
+
const vegaTableCss = ":host{display:block}table{width:100%;border-spacing:0}.vega-table-empty-description{text-align:center;padding:24px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-table-empty-description{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}table.v-table-fixed{table-layout:fixed}.vega-table-scrollable-container{overflow:auto}.vega-table-scrollable-container vega-table-head{transition-property:box-shadow;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.vega-table-scrollable-container.scrolled vega-table-head.fixed-header,.vega-table-scrollable-container.scrolled ::slotted(vega-table-head.fixed-header){box-shadow:0px 4px 0px rgba(0, 0, 0, 0.1);}.vega-table-scrollable-container.scrolled vega-table-foot.fixed-footer::after,.vega-table-scrollable-container.scrolled ::slotted(vega-table-foot.fixed-footer)::after{content:\"\";position:absolute;top:0;left:0;width:100%;height:1px;background-color:rgba(var(--v-bg-divider, 171, 198, 216, 1))}vega-form{display:contents}table:not(.show-edit-error) *::part(field-error-message){display:none !important}.vega-table-pagination-container{margin-top:24px}.vega-table-pagination-container.bottom-center{display:flex;justify-content:center}.vega-table-pagination-container.bottom-right{display:flex;justify-content:flex-end}.vega-table-pagination-container.bottom-left{display:flex;justify-content:flex-start}col.v-hidden{display:none;visibility:collapse}@media (min-width: 320px){col.S\\:v-table-column{display:table-column;visibility:visible}}@media (min-width: 768px){col.M\\:v-table-column{display:table-column;visibility:visible}}@media (min-width: 1024px){col.L\\:v-table-column{display:table-column;visibility:visible}}@media (min-width: 1440px){col.XL\\:v-table-column{display:table-column;visibility:visible}}:host(.is-group-table) .vega-table-scrollable-container{border-color:rgba(var(--v-border-color-divider, 171, 198, 216, 1));border-width:1px;border-style:solid}:host(.is-group-table.density-relaxed) .vega-table-scrollable-container{border-radius:12px}:host(.is-group-table.density-default) .vega-table-scrollable-container{border-radius:12px}:host(.is-group-table.density-compact) .vega-table-scrollable-container{border-radius:4px}:host(.is-pinned-table) table{min-width:max-content}.draggable-col{min-width:16px;width:16px}";
|
|
4099
4566
|
|
|
4100
4567
|
var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
4101
4568
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -4137,6 +4604,7 @@ const VegaTable = class {
|
|
|
4137
4604
|
this.vegaTableBodyRenderer = new VegaTableBodyRenderer();
|
|
4138
4605
|
this.vegaTableRowRenderer = new VegaTableRowRenderer$1();
|
|
4139
4606
|
this.vegaTableCellRenderer = new VegaTableCellRenderer();
|
|
4607
|
+
this.vegaTableBodyColSpanController = new VegaTableBodyColSpanController();
|
|
4140
4608
|
this.vegaTablePaginationRenderer = new VegaTablePaginationRenderer();
|
|
4141
4609
|
this.vegaTableScrollContainerRenderer = new VegaTableScrollContainerRenderer();
|
|
4142
4610
|
this.vegaTableRowSelectionController = new VegaTableRowSelectionController$1();
|
|
@@ -4633,6 +5101,9 @@ __decorate$z([
|
|
|
4633
5101
|
__decorate$z([
|
|
4634
5102
|
InjectVegaSlimmer()
|
|
4635
5103
|
], VegaTable.prototype, "vegaTableCellRenderer", void 0);
|
|
5104
|
+
__decorate$z([
|
|
5105
|
+
InjectVegaSlimmer()
|
|
5106
|
+
], VegaTable.prototype, "vegaTableBodyColSpanController", void 0);
|
|
4636
5107
|
__decorate$z([
|
|
4637
5108
|
InjectVegaSlimmer()
|
|
4638
5109
|
], VegaTable.prototype, "vegaTablePaginationRenderer", void 0);
|
|
@@ -5029,6 +5500,14 @@ const VegaTableCell = class {
|
|
|
5029
5500
|
this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
|
|
5030
5501
|
this.vegaTableRenderInputConsumerSlimmer = new VegaTableChildRenderInputConsumerSlimmer(VegaInternalColumnBodyCellRenderInputRIC);
|
|
5031
5502
|
this.currentBreakpoint = getCurrentBreakpoint();
|
|
5503
|
+
this.ellipsisTooltipText = '';
|
|
5504
|
+
this.ellipsisTooltipTrigger = 'none';
|
|
5505
|
+
/**
|
|
5506
|
+
* Whether to show a Vega tooltip (instead of the native title attribute) for truncated ellipsis cell content.
|
|
5507
|
+
*
|
|
5508
|
+
* @vegaVersion 2.94.0
|
|
5509
|
+
*/
|
|
5510
|
+
this.ellipsisShowTooltip = false;
|
|
5032
5511
|
this.getCellOverflowClass = () => {
|
|
5033
5512
|
switch (this.overflow) {
|
|
5034
5513
|
case 'ellipsis':
|
|
@@ -5038,8 +5517,13 @@ const VegaTableCell = class {
|
|
|
5038
5517
|
}
|
|
5039
5518
|
};
|
|
5040
5519
|
}
|
|
5520
|
+
componentDidLoad() {
|
|
5521
|
+
if (this.overflow === 'ellipsis' && this.ellipsisShowTooltip) {
|
|
5522
|
+
requestAnimationFrame(() => this.updateEllipsisState());
|
|
5523
|
+
}
|
|
5524
|
+
}
|
|
5041
5525
|
render() {
|
|
5042
|
-
var _a, _b, _c;
|
|
5526
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5043
5527
|
const responsiveClass = generateResponsiveClass(this.breakpoint, 'v-table-cell');
|
|
5044
5528
|
const columnAlignClass = generateTextAlignClass(this.textAlign);
|
|
5045
5529
|
const overflowClass = this.getCellOverflowClass();
|
|
@@ -5053,7 +5537,7 @@ const VegaTableCell = class {
|
|
|
5053
5537
|
if ((_b = this.renderInput) === null || _b === void 0 ? void 0 : _b.isLeftEndPinned) {
|
|
5054
5538
|
columnClasses.push('right-divider');
|
|
5055
5539
|
}
|
|
5056
|
-
if ((_c = this.renderInput) === null || _c === void 0 ? void 0 : _c.isNoPinnedEnd) {
|
|
5540
|
+
if (((_c = this.renderInput) === null || _c === void 0 ? void 0 : _c.isNoPinnedEnd) || ((_d = this.renderInput) === null || _d === void 0 ? void 0 : _d.isViewEnd)) {
|
|
5057
5541
|
columnClasses.push('hide-right-border');
|
|
5058
5542
|
}
|
|
5059
5543
|
return sanitizeVegaComponent(h(Host, { class: arrayToClassString([
|
|
@@ -5064,19 +5548,64 @@ const VegaTableCell = class {
|
|
|
5064
5548
|
this.checked && 'checked',
|
|
5065
5549
|
this.striped && 'striped',
|
|
5066
5550
|
this.expanded && 'expanded',
|
|
5067
|
-
]) }, h("td", { class: arrayToClassString(columnClasses), part: "cell",
|
|
5551
|
+
]), "aria-colspan": ((_e = this.colSpan) !== null && _e !== void 0 ? _e : 0) > 1 ? String(this.colSpan) : null }, h("td", { class: arrayToClassString(columnClasses), part: "cell", colSpan: ((_f = this.colSpan) !== null && _f !== void 0 ? _f : 0) > 1 ? this.colSpan : null,
|
|
5068
5552
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
5069
5553
|
onMouseEnter: this.onMouseEnter.bind(this),
|
|
5070
5554
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
5071
|
-
onMouseLeave: this.onMouseLeave.bind(this), style: { width: this.width } }, h("
|
|
5555
|
+
onMouseLeave: this.onMouseLeave.bind(this), style: { width: this.width } }, this.overflow === 'ellipsis' && this.ellipsisShowTooltip ? (h("vega-tooltip", { text: this.ellipsisTooltipText, trigger: this.ellipsisTooltipTrigger, maxWidth: 300, style: { display: 'block', width: '100%', minWidth: '0' } }, h("div", { class: overflowClass, ref: (ref) => {
|
|
5556
|
+
this.overflowContentRef = ref;
|
|
5557
|
+
} }, h("slot", { ref: (ref) => {
|
|
5558
|
+
this.slotRef = ref;
|
|
5559
|
+
} })))) : (h("div", { class: overflowClass, ref: (ref) => {
|
|
5560
|
+
this.overflowContentRef = ref;
|
|
5561
|
+
} }, h("slot", { ref: (ref) => {
|
|
5562
|
+
this.slotRef = ref;
|
|
5563
|
+
} }))))), this.host);
|
|
5072
5564
|
}
|
|
5073
5565
|
onMouseEnter() {
|
|
5074
|
-
|
|
5075
|
-
|
|
5566
|
+
this.updateEllipsisState();
|
|
5567
|
+
this.getRowCells().forEach((cell) => cell.classList.add('hovered'));
|
|
5076
5568
|
}
|
|
5077
5569
|
onMouseLeave() {
|
|
5570
|
+
this.getRowCells().forEach((cell) => cell.classList.remove('hovered'));
|
|
5571
|
+
}
|
|
5572
|
+
getRowCells() {
|
|
5078
5573
|
const row = this.host.parentElement;
|
|
5079
|
-
row
|
|
5574
|
+
if (!row) {
|
|
5575
|
+
return [];
|
|
5576
|
+
}
|
|
5577
|
+
return Array.from(row.querySelectorAll('vega-table-cell'));
|
|
5578
|
+
}
|
|
5579
|
+
updateEllipsisState() {
|
|
5580
|
+
if (this.overflow !== 'ellipsis' || !this.overflowContentRef) {
|
|
5581
|
+
return;
|
|
5582
|
+
}
|
|
5583
|
+
const isTruncated = this.overflowContentRef.scrollWidth > this.overflowContentRef.clientWidth;
|
|
5584
|
+
const text = this.getCellText();
|
|
5585
|
+
if (this.ellipsisShowTooltip) {
|
|
5586
|
+
this.overflowContentRef.removeAttribute('title');
|
|
5587
|
+
this.ellipsisTooltipText = text;
|
|
5588
|
+
this.ellipsisTooltipTrigger = isTruncated ? 'hover' : 'none';
|
|
5589
|
+
}
|
|
5590
|
+
else {
|
|
5591
|
+
if (isTruncated && text) {
|
|
5592
|
+
this.overflowContentRef.setAttribute('title', text);
|
|
5593
|
+
}
|
|
5594
|
+
else {
|
|
5595
|
+
this.overflowContentRef.removeAttribute('title');
|
|
5596
|
+
}
|
|
5597
|
+
}
|
|
5598
|
+
}
|
|
5599
|
+
getCellText() {
|
|
5600
|
+
var _a, _b, _c;
|
|
5601
|
+
const assignedNodes = this.slotRef && typeof this.slotRef.assignedNodes === 'function'
|
|
5602
|
+
? this.slotRef.assignedNodes({ flatten: true })
|
|
5603
|
+
: [];
|
|
5604
|
+
const slotText = assignedNodes
|
|
5605
|
+
.map((node) => { var _a; return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || ''; })
|
|
5606
|
+
.filter((text) => text)
|
|
5607
|
+
.join(' ');
|
|
5608
|
+
return (slotText || ((_b = (_a = this.overflowContentRef) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || ((_c = this.host.textContent) === null || _c === void 0 ? void 0 : _c.trim()) || '');
|
|
5080
5609
|
}
|
|
5081
5610
|
get host() { return getElement(this); }
|
|
5082
5611
|
};
|
|
@@ -5375,13 +5904,22 @@ class VegaTableExpandRowColSpanController extends VegaSlimmer {
|
|
|
5375
5904
|
const cells = isTemplateRenderMode
|
|
5376
5905
|
? table.querySelectorAll('vega-table-row:nth-of-type(1) vega-table-cell')
|
|
5377
5906
|
: table.shadowRoot.querySelectorAll('vega-table-row:nth-of-type(1) vega-table-cell');
|
|
5378
|
-
return Array.from(cells)
|
|
5907
|
+
return Array.from(cells)
|
|
5908
|
+
.filter((cell) => {
|
|
5379
5909
|
if (!cell.breakpoint)
|
|
5380
5910
|
return true;
|
|
5381
5911
|
if (currentBreakpoint === 'default')
|
|
5382
5912
|
return false;
|
|
5383
5913
|
return Breakpoints[currentBreakpoint] >= Breakpoints[cell.breakpoint];
|
|
5384
|
-
})
|
|
5914
|
+
})
|
|
5915
|
+
.reduce((total, cell) => {
|
|
5916
|
+
var _a;
|
|
5917
|
+
// A cell with `colSpan >= 2` is a single element that occupies multiple physical
|
|
5918
|
+
// columns, so add its span rather than 1. This keeps the expand-row colspan aligned
|
|
5919
|
+
// with the full table width when body cells merge columns.
|
|
5920
|
+
const span = (_a = cell.colSpan) !== null && _a !== void 0 ? _a : 1;
|
|
5921
|
+
return total + (span > 1 ? span : 1);
|
|
5922
|
+
}, 0);
|
|
5385
5923
|
}
|
|
5386
5924
|
}
|
|
5387
5925
|
__decorate$p([
|
|
@@ -5655,11 +6193,12 @@ var __decorate$k = (undefined && undefined.__decorate) || function (decorators,
|
|
|
5655
6193
|
};
|
|
5656
6194
|
class VegaTableFootCellRenderer extends VegaSlimmer {
|
|
5657
6195
|
render() {
|
|
6196
|
+
var _a;
|
|
5658
6197
|
return (h("td", { class: {
|
|
5659
6198
|
'vega-table-cell': true,
|
|
5660
6199
|
'break-word': !FeatureFlag.isEnabled('VEGA_TABLE.ENABLE_NEW_CELL_BREAK_WORDS_STYLE'),
|
|
5661
6200
|
[generateResponsiveClass(this.breakpoint, 'v-table-cell')]: true,
|
|
5662
|
-
} },
|
|
6201
|
+
}, colSpan: ((_a = this.colSpan) !== null && _a !== void 0 ? _a : 0) > 1 ? this.colSpan : null },
|
|
5663
6202
|
h("div", { class: arrayToClassString(['vega-table-column', this.textAlign]) },
|
|
5664
6203
|
h("span", { class: "vega-table-column-label" },
|
|
5665
6204
|
h("slot", null)))));
|
|
@@ -5674,6 +6213,9 @@ __decorate$k([
|
|
|
5674
6213
|
__decorate$k([
|
|
5675
6214
|
MapToComponentField()
|
|
5676
6215
|
], VegaTableFootCellRenderer.prototype, "textAlign", void 0);
|
|
6216
|
+
__decorate$k([
|
|
6217
|
+
MapToComponentField()
|
|
6218
|
+
], VegaTableFootCellRenderer.prototype, "colSpan", void 0);
|
|
5677
6219
|
|
|
5678
6220
|
const vegaTableFootCellCss = ":host .vega-table-cell.v-hidden{display:none}@media (min-width: 320px){:host .vega-table-cell.S\\:v-table-cell{display:table-cell}}@media (min-width: 768px){:host .vega-table-cell.M\\:v-table-cell{display:table-cell}}@media (min-width: 1024px){:host .vega-table-cell.L\\:v-table-cell{display:table-cell}}@media (min-width: 1440px){:host .vega-table-cell.XL\\:v-table-cell{display:table-cell}}:host{display:contents}td{background-color:rgba(var(--v-bg-table-header, 240, 243, 247, 1));color:rgba(var(--v-text-primary, 32, 54, 69, 1));text-align:left;vertical-align:middle;padding:12px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px;overflow-wrap:break-word}@media screen and (min-width: 768px) and (max-width: 1023px){td{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1024px) and (max-width: 1439px){td{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}@media screen and (min-width: 1440px) and (max-width: 9999px){td{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:700;line-height:18px}}td.break-word{word-break:break-word}.vega-table-column{display:flex;align-items:center}.vega-table-column.center{justify-content:center;text-align:center}.vega-table-column.right{justify-content:flex-end;text-align:right}.vega-table-column.left{justify-content:flex-start;text-align:left}.vega-table-column .vega-table-column-label{min-width:0px}:host(.density-default) .vega-table-cell{padding:12px}:host(.density-compact) .vega-table-cell{padding:4px}:host(.density-relaxed) .vega-table-cell{padding:16px}:host(.column-divider) .vega-table-cell{border-color:rgba(var(--v-border-color-divider, 171, 198, 216, 1));border-right-width:1px;border-right-style:solid}";
|
|
5679
6221
|
|
|
@@ -5698,10 +6240,11 @@ const VegaTableFootCell = class {
|
|
|
5698
6240
|
this.currentBreakpoint = getCurrentBreakpoint();
|
|
5699
6241
|
}
|
|
5700
6242
|
render() {
|
|
6243
|
+
var _a;
|
|
5701
6244
|
return sanitizeVegaComponent(h(Host, { class: {
|
|
5702
6245
|
[`density-${ResponsiveFormatFacade.formatCustom(this.density)}`]: true,
|
|
5703
6246
|
'column-divider': this.columnDivider,
|
|
5704
|
-
}, style: { width: this.width } }, this.vegaTableFootCellRenderer.render()), this.host);
|
|
6247
|
+
}, style: { width: this.width }, "aria-colspan": ((_a = this.colSpan) !== null && _a !== void 0 ? _a : 0) > 1 ? String(this.colSpan) : null }, this.vegaTableFootCellRenderer.render()), this.host);
|
|
5705
6248
|
}
|
|
5706
6249
|
get host() { return getElement(this); }
|
|
5707
6250
|
};
|