@globalpayments/vega 2.91.0 → 2.93.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-7bb10088.js → app-globals-f7ad9275.js} +17 -10
- package/dist/cjs/{child-nodes-event-prevent-slimmer-76d19d56.js → child-nodes-event-prevent-slimmer-e67ee84c.js} +2 -2
- package/dist/cjs/{code-block-c1039791.js → code-block-2f3d0f38.js} +64 -11
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-1d36641d.js → component-value-history-controller-slimmer.abstract-31d2c7aa.js} +72 -39
- package/dist/cjs/{content-state-a6105949.js → content-state-13daf87a.js} +91 -8
- package/dist/cjs/copy-d021c780.js +7 -0
- package/dist/cjs/{date-required-rule-c4997459.js → date-required-rule-e65ddd7d.js} +1 -1
- package/dist/cjs/{design-token-f65eab4a.js → design-token-47393cbb.js} +3 -3
- package/dist/cjs/{element-appender-slimmer-316668d0.js → element-appender-slimmer-29c4ac60.js} +18 -9
- package/dist/cjs/{event-emit-slimmer-5bab10c2.js → event-emit-slimmer-d234a619.js} +1 -1
- package/dist/cjs/{file-uploader-required-rule-cc51d4ab.js → file-uploader-required-rule-5520bbec.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-b0c35330.js → form-field-controller-slimmer-3bfcf88c.js} +1 -1
- package/dist/cjs/{image-annotation-action-e4596726.js → image-annotation-action-c2b163bb.js} +3 -3
- package/dist/cjs/image-extension-4e99b620.js +39 -0
- package/dist/cjs/index-58ea899e.js +4 -0
- package/dist/cjs/index.cjs.js +30 -22
- package/dist/cjs/{inject-keyboard-manager-1f5bbb19.js → inject-keyboard-manager-4b2ebbe4.js} +1 -1
- package/dist/cjs/{internal-calendar-period-factory-9c66cf36.js → internal-calendar-period-factory-7a0ecdb1.js} +1 -1
- package/dist/cjs/{internal-translation-controller-5905469e.js → internal-translation-controller-31f2b057.js} +18 -0
- package/dist/cjs/{internal-vega-event-manager-7196a847.js → internal-vega-event-manager-13c4012b.js} +2 -1
- package/dist/cjs/{keyboard-manager-61e8ce38.js → keyboard-manager-c78b46bd.js} +1 -1
- package/dist/cjs/{keyboard-manager-slimmer-079a7e87.js → keyboard-manager-slimmer-d350c931.js} +1 -1
- package/dist/cjs/{link-extension-a7ac28f3.js → link-extension-455c02b3.js} +3 -3
- package/dist/cjs/loader.cjs.js +17 -15
- package/dist/cjs/{month-view-generator-48215a05.js → month-view-generator-006562dc.js} +1 -1
- package/dist/cjs/{public-rules-66540638.js → public-rules-c59eba88.js} +10 -10
- package/dist/cjs/{range-dea19a90.js → range-bf80fa40.js} +25 -3
- package/dist/cjs/{replace-selected-text-action-6d1ebbf9.js → replace-selected-text-action-a80f5a6a.js} +1 -1
- package/dist/cjs/{required-field-rule-b12a29e1.js → required-field-rule-400690c3.js} +1 -1
- package/dist/cjs/{responsive-format-facade-10ff730e.js → responsive-format-facade-1af54330.js} +2 -2
- package/dist/cjs/{rich-text-editor-required-rule-63492ca3.js → rich-text-editor-required-rule-1085c71a.js} +1 -1
- package/dist/cjs/{split-cell-operation-30e5dd4a.js → split-cell-operation-2fa5c9e4.js} +3 -3
- package/dist/cjs/{state-border-formatter-e7779964.js → state-border-formatter-501f6645.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-a22f0cb1.js → string-format-strategy.abstract-a02bf002.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-8179eb40.js → string-input-formatter-slimmer-9cca6151.js} +1 -1
- package/dist/cjs/{string-mask-strategy-8b9bb0c1.js → string-mask-strategy-4c174ebf.js} +2 -2
- package/dist/cjs/{style-formatter-380b9a86.js → style-formatter-2c749500.js} +2 -2
- package/dist/cjs/{time-required-rule-080d975b.js → time-required-rule-04994a5e.js} +1 -1
- package/dist/cjs/{token-extension-619379a3.js → token-extension-d217914d.js} +3622 -742
- package/dist/cjs/{translation-slimmer-2af6f141.js → translation-slimmer-7fb6e94c.js} +1 -1
- package/dist/cjs/{type-guard-0171e779.js → type-guard-1c3770d4.js} +1 -1
- package/dist/cjs/{valid-credit-card-number-rule-fdfca83e.js → valid-credit-card-number-rule-f719a8c6.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +21 -13
- package/dist/cjs/vega-app-footer.cjs.entry.js +3 -3
- package/dist/cjs/vega-app-header-button.cjs.entry.js +10 -10
- package/dist/cjs/vega-banner.cjs.entry.js +6 -9
- package/dist/cjs/vega-box.cjs.entry.js +7 -7
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-circle.cjs.entry.js +10 -10
- package/dist/cjs/vega-button-group_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-link.cjs.entry.js +5 -5
- package/dist/cjs/vega-button.cjs.entry.js +8 -8
- package/dist/cjs/vega-calendar_5.cjs.entry.js +12 -12
- package/dist/cjs/vega-card.cjs.entry.js +6 -6
- package/dist/cjs/vega-carousel.cjs.entry.js +7 -7
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-chip.cjs.entry.js +10 -10
- package/dist/cjs/vega-code-block.cjs.entry.js +15 -18
- package/dist/cjs/vega-color-picker.cjs.entry.js +7 -7
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +9 -9
- package/dist/cjs/vega-color-swatch.cjs.entry.js +5 -5
- package/dist/cjs/vega-combo-box.cjs.entry.js +21 -15
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +18 -18
- package/dist/cjs/vega-dialog_2.cjs.entry.js +21 -10
- package/dist/cjs/vega-divider.cjs.entry.js +6 -6
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +694 -196
- 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 +16 -12
- package/dist/cjs/vega-file-uploader.cjs.entry.js +9 -9
- package/dist/cjs/vega-flag-icon.cjs.entry.js +6 -6
- package/dist/cjs/vega-flex.cjs.entry.js +7 -7
- package/dist/cjs/vega-font.cjs.entry.js +6 -6
- package/dist/cjs/vega-form.cjs.entry.js +8 -8
- package/dist/cjs/vega-grid.cjs.entry.js +6 -6
- package/dist/cjs/vega-icon.cjs.entry.js +6 -6
- package/dist/cjs/vega-image-uploader.cjs.entry.js +11 -11
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +12 -12
- package/dist/cjs/vega-input-numeric.cjs.entry.js +11 -11
- package/dist/cjs/vega-input-passcode.cjs.entry.js +11 -11
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +9 -9
- package/dist/cjs/vega-input-range.cjs.entry.js +8 -8
- package/dist/cjs/vega-input-select.cjs.entry.js +11 -11
- package/dist/cjs/vega-input.cjs.entry.js +12 -12
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +11 -11
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +4 -4
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination.cjs.entry.js +9 -9
- package/dist/cjs/vega-popover_2.cjs.entry.js +12 -12
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-radio_2.cjs.entry.js +11 -11
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +677 -95
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +233 -0
- 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 +13 -13
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +10 -10
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +7 -7
- package/dist/cjs/vega-signature-capture.cjs.entry.js +12 -12
- package/dist/cjs/vega-stepper.cjs.entry.js +7 -7
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-table_11.cjs.entry.js +912 -429
- package/dist/cjs/vega-textarea.cjs.entry.js +9 -11
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +35 -15
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -7
- package/dist/cjs/vega.cjs.js +17 -15
- package/dist/cjs/xmark-large-faae5a80.js +7 -0
- package/dist/collection/collection-manifest.json +6 -0
- package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +11 -3
- package/dist/collection/components/vega-box/vega-box.js +3 -3
- package/dist/collection/components/vega-code-block/slimmers/renderers/vega-code-block-copy-button-renderer.js +1 -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/slimmers/renderers/vega-field-label-suffix-element-renderer.js +5 -4
- package/dist/collection/components/vega-field-label/vega-field-label.css +20 -0
- package/dist/collection/components/vega-field-label/vega-field-label.js +7 -4
- package/dist/collection/components/vega-hint/vega-hint.js +1 -1
- package/dist/collection/components/vega-input/vega-input.css +1 -0
- package/dist/collection/components/vega-input/vega-input.js +1 -1
- package/dist/collection/components/vega-input-select/vega-input-select.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-rich-text-editor/assets/cut.js +3 -0
- 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-delete-text-or-decorator-node-strategy.js +16 -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-merge-nodes-strategy.js +25 -0
- 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/delete-selected-content-strategy.js +16 -0
- 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/delete-selected-content-action.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +1 -0
- 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/content-state.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -1
- package/dist/collection/components/vega-rich-text-editor/dto/range.js +24 -2
- 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/copy/action-handler-strategies/copy-selected-content-strategy.js +226 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/copy/actions/copy-selected-content-action.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-extension.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +58 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-extension.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +44 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/assets/find-and-replace.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/find-replace-extension.js +18 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-controller.js +105 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-replace-controller.abstract.js +68 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/block-search-strategy.abstract.js +8 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/code-block-search-strategy.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/container-block-search-strategy.js +23 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/list-item-block-search-strategy.js +30 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/text-block-search-strategy.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.js +266 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-state.js +346 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/replace-controller.js +113 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +194 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.js +153 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.css +50 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.js +156 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/horizontal-line-extension.js +2 -1
- 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/languages/language-extension.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-extension.js +2 -1
- 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 +144 -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/special-characters/special-characters-extension.js +2 -1
- 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/table-extension.js +6 -4
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/controllers/selection-widget-keyboard-controller.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/public-api.js +7 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.js +133 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/backward-delete-content-handler.js +35 -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/forward-delete-content-handler.js +93 -0
- 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/controllers/user-input-controller.js +9 -3
- 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/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/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 +39 -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 +24 -4
- 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 +2 -4
- 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 +12 -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 +18 -0
- package/dist/collection/helpers/ui/element-appender.js +5 -2
- package/dist/esm/{app-globals-6041f52f.js → app-globals-9950d055.js} +17 -10
- package/dist/esm/{aria-dialog-focusable-trap-slimmer-1332c071.js → aria-dialog-focusable-trap-slimmer-9eae86c6.js} +1 -1
- package/dist/esm/{child-nodes-event-prevent-slimmer-50022584.js → child-nodes-event-prevent-slimmer-96c14f5a.js} +2 -2
- package/dist/esm/{code-block-37294847.js → code-block-ae2337c2.js} +65 -13
- package/dist/esm/{component-value-history-controller-slimmer.abstract-45ccddc9.js → component-value-history-controller-slimmer.abstract-b1ee1b8e.js} +73 -40
- package/dist/esm/{content-state-67950b80.js → content-state-c3b85ae6.js} +92 -9
- package/dist/esm/copy-54e45e2d.js +5 -0
- package/dist/esm/{date-required-rule-958cf380.js → date-required-rule-e06115f8.js} +1 -1
- package/dist/esm/{design-token-e7e78f18.js → design-token-4e682056.js} +3 -3
- package/dist/esm/{element-appender-slimmer-ebda526d.js → element-appender-slimmer-a4485ef6.js} +19 -10
- package/dist/esm/{event-emit-slimmer-b94cec83.js → event-emit-slimmer-db4a82e0.js} +1 -1
- package/dist/esm/{file-uploader-required-rule-82188a61.js → file-uploader-required-rule-96952e1a.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-0a2ba886.js → form-field-controller-slimmer-a1c7b28c.js} +3 -3
- package/dist/esm/{image-annotation-action-7f7a5678.js → image-annotation-action-4c77d314.js} +3 -3
- package/dist/esm/image-extension-7108c27d.js +37 -0
- package/dist/esm/index-090d31ca.js +4 -0
- package/dist/esm/index.js +24 -23
- package/dist/esm/{inject-keyboard-manager-2b19c121.js → inject-keyboard-manager-e8ddb78d.js} +1 -1
- package/dist/esm/{internal-calendar-period-factory-fff8aaee.js → internal-calendar-period-factory-6f19d767.js} +1 -1
- package/dist/esm/{internal-translation-controller-aa09ca87.js → internal-translation-controller-09b8bd13.js} +18 -0
- package/dist/esm/{internal-vega-event-manager-956cf128.js → internal-vega-event-manager-48690e5b.js} +2 -1
- package/dist/esm/{keyboard-manager-3e5b157f.js → keyboard-manager-ec18721b.js} +1 -1
- package/dist/esm/{keyboard-manager-slimmer-ba5cc767.js → keyboard-manager-slimmer-531ddb0e.js} +1 -1
- package/dist/esm/{link-extension-afb404fb.js → link-extension-74eaa826.js} +3 -3
- package/dist/esm/loader.js +18 -16
- package/dist/esm/{month-view-generator-7a0c869c.js → month-view-generator-afd78ff8.js} +1 -1
- package/dist/esm/{public-rules-f64b0b78.js → public-rules-5fce32a5.js} +11 -11
- package/dist/esm/{range-4d09a305.js → range-8f877dbf.js} +25 -3
- package/dist/esm/{replace-selected-text-action-12bc8b82.js → replace-selected-text-action-c9278a0f.js} +1 -1
- package/dist/esm/{required-field-rule-a4634842.js → required-field-rule-897fe8d1.js} +1 -1
- package/dist/esm/{responsive-format-facade-844c5e09.js → responsive-format-facade-299e6304.js} +2 -2
- package/dist/esm/{rich-text-editor-required-rule-d62d418e.js → rich-text-editor-required-rule-3047bab0.js} +1 -1
- package/dist/esm/{split-cell-operation-c515669e.js → split-cell-operation-98d58410.js} +3 -3
- package/dist/esm/{state-border-formatter-f53847a5.js → state-border-formatter-da52b626.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-a0327405.js → string-format-strategy.abstract-a45b5ff7.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-12de4a25.js → string-input-formatter-slimmer-4a032fed.js} +3 -3
- package/dist/esm/{string-mask-strategy-3bb03155.js → string-mask-strategy-37e53e48.js} +2 -2
- package/dist/esm/{style-formatter-df7bf8ec.js → style-formatter-3d5ddfb1.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-7ef94141.js → sub-state-notify-slimmer-0f72ce74.js} +1 -1
- package/dist/esm/{sub-state-observer-slimmer-d9ad2bdd.js → sub-state-observer-slimmer-64532d94.js} +1 -1
- package/dist/esm/{time-required-rule-db0dee53.js → time-required-rule-355b73d2.js} +1 -1
- package/dist/esm/{token-extension-8ff92d14.js → token-extension-ecfafe94.js} +3618 -745
- package/dist/esm/{translation-slimmer-4904e7fe.js → translation-slimmer-3ea56354.js} +1 -1
- package/dist/esm/{type-guard-a2cbaae9.js → type-guard-2bfb2c7b.js} +1 -1
- package/dist/esm/{valid-credit-card-number-rule-a3f9858d.js → valid-credit-card-number-rule-52c6b029.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +21 -13
- package/dist/esm/vega-app-footer.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +10 -10
- package/dist/esm/vega-banner.entry.js +5 -8
- package/dist/esm/vega-box.entry.js +7 -7
- package/dist/esm/vega-breadcrumb.entry.js +5 -5
- package/dist/esm/vega-button-circle.entry.js +11 -11
- package/dist/esm/vega-button-group_2.entry.js +8 -8
- package/dist/esm/vega-button-link.entry.js +5 -5
- package/dist/esm/vega-button.entry.js +9 -9
- package/dist/esm/vega-calendar_5.entry.js +15 -15
- package/dist/esm/vega-card.entry.js +6 -6
- package/dist/esm/vega-carousel.entry.js +7 -7
- package/dist/esm/vega-checkbox_2.entry.js +10 -10
- package/dist/esm/vega-chip.entry.js +10 -10
- package/dist/esm/vega-code-block.entry.js +15 -18
- package/dist/esm/vega-color-picker.entry.js +9 -9
- package/dist/esm/vega-color-swatch-picker.entry.js +11 -11
- package/dist/esm/vega-color-swatch.entry.js +5 -5
- package/dist/esm/vega-combo-box.entry.js +23 -17
- package/dist/esm/vega-date-picker_2.entry.js +22 -22
- package/dist/esm/vega-dialog_2.entry.js +23 -12
- package/dist/esm/vega-divider.entry.js +6 -6
- package/dist/esm/vega-dropdown_5.entry.js +700 -202
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-268f8def.js → vega-event-id-270fe47e.js} +2 -1
- package/dist/esm/vega-field-label.entry.js +16 -12
- package/dist/esm/vega-file-uploader.entry.js +11 -11
- package/dist/esm/vega-flag-icon.entry.js +6 -6
- package/dist/esm/vega-flex.entry.js +7 -7
- package/dist/esm/vega-font.entry.js +6 -6
- package/dist/esm/vega-form.entry.js +11 -11
- package/dist/esm/vega-grid.entry.js +6 -6
- package/dist/esm/vega-icon.entry.js +6 -6
- package/dist/esm/vega-image-uploader.entry.js +13 -13
- package/dist/esm/vega-input-credit-card.entry.js +14 -14
- package/dist/esm/vega-input-numeric.entry.js +14 -14
- package/dist/esm/vega-input-passcode.entry.js +13 -13
- package/dist/esm/vega-input-phone-number.entry.js +11 -11
- package/dist/esm/vega-input-range.entry.js +10 -10
- package/dist/esm/vega-input-select.entry.js +13 -13
- package/dist/esm/vega-input.entry.js +15 -15
- package/dist/esm/{vega-internal-event-id-22151a4d.js → vega-internal-event-id-827eb1ce.js} +1 -1
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +14 -14
- package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
- package/dist/esm/vega-page-notification_2.entry.js +1 -1
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +5 -5
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +4 -4
- package/dist/esm/vega-pagination.entry.js +10 -10
- package/dist/esm/vega-popover_2.entry.js +14 -14
- package/dist/esm/vega-progress-tracker_2.entry.js +10 -10
- package/dist/esm/vega-radio_2.entry.js +13 -13
- package/dist/esm/vega-rich-text-content.entry.js +10 -10
- package/dist/esm/vega-rich-text-editor_4.entry.js +681 -99
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +229 -0
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +14 -14
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +13 -13
- package/dist/esm/vega-selection-tile_2.entry.js +11 -11
- package/dist/esm/vega-sidenav_3.entry.js +10 -10
- package/dist/esm/vega-signature-capture.entry.js +14 -14
- package/dist/esm/vega-stepper.entry.js +9 -9
- package/dist/esm/vega-tab-group_2.entry.js +5 -5
- package/dist/esm/vega-table_11.entry.js +915 -432
- package/dist/esm/vega-textarea.entry.js +11 -13
- package/dist/esm/vega-time-picker_2.entry.js +37 -17
- package/dist/esm/vega-toggle-switch.entry.js +7 -7
- package/dist/esm/vega-tooltip_2.entry.js +8 -8
- package/dist/esm/vega.js +18 -16
- package/dist/esm/{wait-for-component-did-render-0488922a.js → wait-for-component-did-render-0c237cb8.js} +1 -1
- package/dist/esm/xmark-large-c5ae7944.js +5 -0
- package/dist/sri/vega-sri-manifest.json +392 -376
- package/dist/types/components/vega-accordion/slimmers/vega-accordion-renderer.d.ts +2 -0
- 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-field-label/slimmers/renderers/vega-field-label-suffix-element-renderer.d.ts +1 -0
- package/dist/types/components/vega-field-label/types.d.ts +12 -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-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.d.ts +9 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/delete-selected-content-strategy.d.ts +13 -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/delete-selected-content-action.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -1
- 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/dto/range.d.ts +16 -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/copy/action-handler-strategies/copy-selected-content-strategy.d.ts +79 -0
- package/dist/types/components/vega-rich-text-editor/extensions/copy/actions/copy-selected-content-action.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/copy/copy-extension.d.ts +10 -0
- package/dist/types/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.d.ts +36 -0
- package/dist/types/components/vega-rich-text-editor/extensions/cut/cut-extension.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.d.ts +24 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/assets/find-and-replace.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/find-replace-extension.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-controller.d.ts +65 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-replace-controller.abstract.d.ts +65 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/block-search-strategy.abstract.d.ts +29 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/code-block-search-strategy.d.ts +17 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/container-block-search-strategy.d.ts +21 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/list-item-block-search-strategy.d.ts +21 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/text-block-search-strategy.d.ts +18 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.d.ts +88 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-state.d.ts +200 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/replace-controller.d.ts +73 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +64 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.d.ts +28 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.d.ts +56 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/horizontal-line/horizontal-line-extension.d.ts +1 -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/languages/language-extension.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-extension.d.ts +1 -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/extensions/special-characters/special-characters-extension.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/public-api.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.d.ts +60 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/backward-delete-content-handler.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/forward-delete-content-handler.d.ts +8 -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/controllers/user-input-controller.d.ts +2 -1
- 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/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 +18 -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 +9 -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 +114 -3
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/global/icons/copy.d.ts +3 -0
- package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
- package/dist/types/helpers/translation/interface.d.ts +20 -1
- package/dist/types/helpers/ui/element-appender.d.ts +4 -1
- package/dist/types/types/components.type.d.ts +5 -1
- package/dist/types/types/ui.type.d.ts +1 -1
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-94845302.entry.js → p-05f937c5.entry.js} +1 -1
- package/dist/vega/p-07562b9c.js +1 -0
- package/dist/vega/p-09d50f59.entry.js +1 -0
- package/dist/vega/{p-cc8bf6e7.entry.js → p-0cb78838.entry.js} +1 -1
- package/dist/vega/p-0e607b44.js +1 -0
- package/dist/vega/{p-1acd5f04.entry.js → p-0f1d6ceb.entry.js} +1 -1
- package/dist/vega/{p-ef44d516.js → p-140616fe.js} +1 -1
- package/dist/vega/{p-e75e75c9.entry.js → p-1818f399.entry.js} +1 -1
- package/dist/vega/{p-4037126d.js → p-18a5e8bc.js} +1 -1
- package/dist/vega/{p-2b22091e.js → p-19c42e30.js} +1 -1
- package/dist/vega/{p-c87c7ef4.js → p-1efab41b.js} +1 -1
- package/dist/vega/{p-cd2a1ffb.js → p-21e21f51.js} +1 -1
- package/dist/vega/{p-4644ccf9.entry.js → p-26c7fe8b.entry.js} +1 -1
- package/dist/vega/p-282b37cb.js +1 -0
- package/dist/vega/p-29e3eb12.js +1 -0
- package/dist/vega/{p-6ecb3c7d.entry.js → p-2dc5edd0.entry.js} +1 -1
- package/dist/vega/{p-014e2cf9.js → p-2de61f1b.js} +1 -1
- package/dist/vega/{p-b77e85e0.entry.js → p-2de88b4a.entry.js} +1 -1
- package/dist/vega/{p-12b5c5e3.entry.js → p-2fcc604c.entry.js} +1 -1
- package/dist/vega/{p-73b9868f.js → p-32a67ba1.js} +1 -1
- package/dist/vega/p-392e049c.entry.js +1 -0
- package/dist/vega/{p-70352240.entry.js → p-3932f964.entry.js} +1 -1
- package/dist/vega/{p-5ffc7cb8.js → p-3a68b729.js} +1 -1
- package/dist/vega/{p-9e327397.entry.js → p-3c9da3cd.entry.js} +1 -1
- package/dist/vega/{p-4cef4812.js → p-3f183b52.js} +1 -1
- package/dist/vega/{p-216ef41e.entry.js → p-3f7b10b9.entry.js} +1 -1
- package/dist/vega/{p-64b5fe2a.entry.js → p-422d88ae.entry.js} +1 -1
- package/dist/vega/p-4256252c.js +3 -0
- package/dist/vega/{p-329c808e.entry.js → p-44439ecc.entry.js} +1 -1
- package/dist/vega/p-45e8424a.entry.js +1 -0
- package/dist/vega/p-4c49b2e3.js +1 -0
- package/dist/vega/{p-a14d8767.js → p-4d9562bc.js} +1 -1
- package/dist/vega/p-4e1aa86f.js +1 -0
- package/dist/vega/p-4ef5c4a7.entry.js +1 -0
- package/dist/vega/{p-7f086e54.entry.js → p-4f327808.entry.js} +1 -1
- package/dist/vega/{p-8019c156.js → p-5139e516.js} +1 -1
- package/dist/vega/{p-5bed3fd2.entry.js → p-56c4e349.entry.js} +1 -1
- package/dist/vega/{p-fea33425.js → p-5dbfffcd.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-615a2b8c.entry.js +1 -0
- package/dist/vega/{p-aaa6e976.entry.js → p-63101cb4.entry.js} +1 -1
- package/dist/vega/{p-a4826f3f.entry.js → p-653a6dd8.entry.js} +1 -1
- package/dist/vega/{p-044496e0.entry.js → p-66b7d1c7.entry.js} +1 -1
- package/dist/vega/{p-42a1d300.entry.js → p-6712a9c7.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-6e7c1b19.entry.js → p-6b1893f6.entry.js} +1 -1
- package/dist/vega/{p-cec8ffdc.js → p-6d40635e.js} +1 -1
- package/dist/vega/{p-81591449.entry.js → p-73fd18d9.entry.js} +1 -1
- package/dist/vega/p-751a5cd6.entry.js +1 -0
- package/dist/vega/{p-42f3c0b1.entry.js → p-7b93a756.entry.js} +1 -1
- package/dist/vega/p-7c8e579e.entry.js +1 -0
- package/dist/vega/{p-0707aa21.js → p-7d54e9c1.js} +1 -1
- package/dist/vega/p-832d1a72.entry.js +1 -0
- package/dist/vega/p-846b1ab9.entry.js +1 -0
- package/dist/vega/p-88863658.js +1 -0
- package/dist/vega/p-88a6c89a.js +1 -0
- package/dist/vega/p-890a5254.js +1 -0
- package/dist/vega/{p-14bfc113.js → p-8bc15ed0.js} +1 -1
- package/dist/vega/{p-50d7a1c4.entry.js → p-8c1a5fa4.entry.js} +1 -1
- package/dist/vega/p-8d27b9cc.js +1 -0
- package/dist/vega/{p-3863187f.entry.js → p-944b43ce.entry.js} +1 -1
- package/dist/vega/{p-aea912ac.js → p-95d6c85f.js} +1 -1
- package/dist/vega/{p-da067259.entry.js → p-99b699be.entry.js} +1 -1
- package/dist/vega/{p-d00b3910.js → p-9a01be93.js} +1 -1
- package/dist/vega/p-9a472a04.entry.js +1 -0
- package/dist/vega/{p-e9a82603.entry.js → p-9cafbc26.entry.js} +1 -1
- package/dist/vega/{p-cd21adb8.js → p-a2bd621e.js} +1 -1
- package/dist/vega/{p-5a4e598f.js → p-a359e53c.js} +1 -1
- package/dist/vega/p-a9a87b9a.js +1 -0
- package/dist/vega/p-acbba6da.entry.js +1 -0
- package/dist/vega/{p-c75872a4.entry.js → p-ad35dea4.entry.js} +1 -1
- package/dist/vega/{p-8bc23bcf.entry.js → p-af98539f.entry.js} +1 -1
- package/dist/vega/{p-141f74ff.js → p-afb96938.js} +1 -1
- package/dist/vega/{p-6820b488.entry.js → p-b042e3b4.entry.js} +1 -1
- package/dist/vega/{p-822f70b0.js → p-b1ff70bf.js} +1 -1
- package/dist/vega/{p-c65a5778.entry.js → p-b39d4a88.entry.js} +1 -1
- package/dist/vega/{p-5df53125.entry.js → p-b5bee669.entry.js} +1 -1
- package/dist/vega/p-b5f308ee.entry.js +1 -0
- package/dist/vega/p-b6225d01.js +1 -0
- package/dist/vega/{p-8982796b.entry.js → p-bbabb1c8.entry.js} +1 -1
- package/dist/vega/p-bbf1f988.entry.js +1 -0
- package/dist/vega/{p-5fcb825c.entry.js → p-c2d28797.entry.js} +1 -1
- package/dist/vega/{p-42ed76ee.entry.js → p-c3c0e415.entry.js} +1 -1
- package/dist/vega/{p-5e282e41.js → p-c553d37e.js} +1 -1
- package/dist/vega/{p-2f48162f.entry.js → p-c5ecbc53.entry.js} +1 -1
- package/dist/vega/p-c9c6daa6.entry.js +1 -0
- package/dist/vega/p-cb81fc2a.entry.js +1 -0
- package/dist/vega/p-ccb9bf86.js +1 -0
- package/dist/vega/{p-49b4ab2b.js → p-ccf7518b.js} +1 -1
- package/dist/vega/{p-da2b1fd0.entry.js → p-cf8d5b3f.entry.js} +1 -1
- package/dist/vega/{p-bb0040d4.entry.js → p-d3a36d19.entry.js} +1 -1
- package/dist/vega/{p-ce27c273.entry.js → p-d44943e2.entry.js} +1 -1
- package/dist/vega/{p-ae728041.entry.js → p-d4bb6f93.entry.js} +1 -1
- package/dist/vega/p-d62b85ff.entry.js +1 -0
- package/dist/vega/p-d7f32ccf.entry.js +1 -0
- package/dist/vega/{p-d0060bdb.js → p-dca3278f.js} +1 -1
- package/dist/vega/{p-15da9d58.entry.js → p-ddd28a8e.entry.js} +1 -1
- package/dist/vega/p-ddf03de1.entry.js +1 -0
- package/dist/vega/{p-21775cc7.js → p-e0ecafca.js} +1 -1
- package/dist/vega/p-e33e1e90.js +1 -0
- package/dist/vega/{p-316a1e5c.entry.js → p-e410c4ad.entry.js} +1 -1
- package/dist/vega/p-e4309574.js +1 -0
- package/dist/vega/p-e5187a86.entry.js +1 -0
- package/dist/vega/{p-335e3237.entry.js → p-e86c6802.entry.js} +1 -1
- package/dist/vega/{p-4979fd7d.js → p-ef605271.js} +1 -1
- package/dist/vega/{p-0e03daa6.js → p-f0d4c78c.js} +1 -1
- package/dist/vega/p-f2f22b5d.entry.js +1 -0
- package/dist/vega/{p-58a00869.entry.js → p-f8a29127.entry.js} +1 -1
- package/dist/vega/{p-a04b95aa.entry.js → p-fbd3be00.entry.js} +1 -1
- package/dist/vega/p-fd70418f.js +1 -0
- package/dist/vega/{p-9756c6b9.entry.js → p-fda6e2cc.entry.js} +1 -1
- package/dist/vega/p-ff8dd200.js +1 -0
- package/dist/vega/{p-522dd15f.entry.js → p-ffdacaf9.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +2 -16
- package/readme.md +0 -5
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.js +0 -92
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.d.ts +0 -26
- package/dist/vega/p-0605c656.entry.js +0 -1
- package/dist/vega/p-144d4b30.js +0 -1
- package/dist/vega/p-2944c76e.entry.js +0 -1
- package/dist/vega/p-3372f34a.entry.js +0 -1
- package/dist/vega/p-3cf298a4.entry.js +0 -1
- package/dist/vega/p-3fe43f7a.entry.js +0 -1
- package/dist/vega/p-507612f6.entry.js +0 -1
- package/dist/vega/p-53ed3b1f.js +0 -1
- package/dist/vega/p-57f7c257.js +0 -1
- package/dist/vega/p-5e1cd1cc.js +0 -1
- package/dist/vega/p-5e1ec2b8.entry.js +0 -1
- package/dist/vega/p-61d42e9b.entry.js +0 -1
- package/dist/vega/p-63ae5ada.entry.js +0 -1
- package/dist/vega/p-66905cbf.js +0 -1
- package/dist/vega/p-689070f9.entry.js +0 -1
- package/dist/vega/p-74fa0f5b.entry.js +0 -1
- package/dist/vega/p-7bb39b97.js +0 -1
- package/dist/vega/p-7f139b74.js +0 -1
- package/dist/vega/p-85d78ac1.js +0 -1
- package/dist/vega/p-92a144bc.js +0 -1
- package/dist/vega/p-9f608b97.js +0 -1
- package/dist/vega/p-aca134a3.entry.js +0 -1
- package/dist/vega/p-b2f89dbd.js +0 -1
- package/dist/vega/p-b2f9698a.entry.js +0 -1
- package/dist/vega/p-b504a8b4.entry.js +0 -1
- package/dist/vega/p-b7b0930a.entry.js +0 -1
- package/dist/vega/p-bd94b904.entry.js +0 -1
- package/dist/vega/p-c0c2a917.js +0 -3
- package/dist/vega/p-c40555c4.entry.js +0 -1
- package/dist/vega/p-cb4033ef.js +0 -1
- package/dist/vega/p-d14ddf80.js +0 -1
- package/dist/vega/p-dc78e8d6.js +0 -1
- package/dist/vega/p-ddc2d219.js +0 -1
- package/dist/vega/p-f362c07b.entry.js +0 -1
- package/dist/vega/p-fb1ef3e6.entry.js +0 -1
- package/dist/vega/p-fc103347.entry.js +0 -1
- /package/dist/cjs/{feature-flag-controller-438a1510.js → feature-flag-controller-c19d0b58.js} +0 -0
- /package/dist/collection/{components/vega-code-block/assets → global/icons}/copy.js +0 -0
- /package/dist/esm/{feature-flag-controller-2a89f20c.js → feature-flag-controller-3fd04ea9.js} +0 -0
- /package/dist/types/components/{vega-code-block/assets/copy.d.ts → vega-rich-text-editor/assets/cut.d.ts} +0 -0
- /package/dist/vega/{p-bc73ce30.js → p-87a4d75f.js} +0 -0
|
@@ -14,9 +14,9 @@ const ui = require('./ui-c91c37a7.js');
|
|
|
14
14
|
const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-c82df135.js');
|
|
15
15
|
const remoteInvocationRegistry = require('./remote-invocation-registry-fc22fdd0.js');
|
|
16
16
|
const vegaInternalEventId = require('./vega-internal-event-id-ecc5b87a.js');
|
|
17
|
-
const vegaEventId = require('./vega-event-id-
|
|
18
|
-
const responsiveFormatFacade = require('./responsive-format-facade-
|
|
19
|
-
const typeGuard = require('./type-guard-
|
|
17
|
+
const vegaEventId = require('./vega-event-id-58afed7a.js');
|
|
18
|
+
const responsiveFormatFacade = require('./responsive-format-facade-1af54330.js');
|
|
19
|
+
const typeGuard = require('./type-guard-1c3770d4.js');
|
|
20
20
|
const component = require('./component-1e352960.js');
|
|
21
21
|
const misc = require('./misc-3d30df91.js');
|
|
22
22
|
const breakpoints = require('./breakpoints-1cc2c4c6.js');
|
|
@@ -24,15 +24,15 @@ const mutationObserverSlimmer = require('./mutation-observer-slimmer-749d5020.js
|
|
|
24
24
|
const mutationObserverFilters = require('./mutation-observer-filters-38cebc6d.js');
|
|
25
25
|
const pageResizeObserverSlimmer = require('./page-resize-observer-slimmer-273d62ef.js');
|
|
26
26
|
const subStateNotifySlimmer = require('./sub-state-notify-slimmer-18891389.js');
|
|
27
|
-
const childNodesEventPreventSlimmer = require('./child-nodes-event-prevent-slimmer-
|
|
28
|
-
const eventEmitSlimmer = require('./event-emit-slimmer-
|
|
27
|
+
const childNodesEventPreventSlimmer = require('./child-nodes-event-prevent-slimmer-e67ee84c.js');
|
|
28
|
+
const eventEmitSlimmer = require('./event-emit-slimmer-d234a619.js');
|
|
29
29
|
const immutableMap = require('./immutable-map-d711339d.js');
|
|
30
|
-
const translationSlimmer = require('./translation-slimmer-
|
|
30
|
+
const translationSlimmer = require('./translation-slimmer-7fb6e94c.js');
|
|
31
31
|
const synchronizeTaskQueue = require('./synchronize-task-queue-1ee80e94.js');
|
|
32
32
|
const dynamicSlimmer = require('./dynamic-slimmer-f31fdfd7.js');
|
|
33
33
|
const internalVegaZIndexManager = require('./internal-vega-z-index-manager-f03ddb37.js');
|
|
34
34
|
const subStateObserverSlimmer = require('./sub-state-observer-slimmer-eee2f0ae.js');
|
|
35
|
-
const featureFlagController = require('./feature-flag-controller-
|
|
35
|
+
const featureFlagController = require('./feature-flag-controller-c19d0b58.js');
|
|
36
36
|
const breakpoints$1 = require('./breakpoints-ebde4837.js');
|
|
37
37
|
const accessibility = require('./accessibility-88f8af84.js');
|
|
38
38
|
const internalIconManager = require('./internal-icon-manager-40bcac72.js');
|
|
@@ -43,9 +43,9 @@ require('./number-4816603d.js');
|
|
|
43
43
|
require('./pixel-98f2a10c.js');
|
|
44
44
|
require('./array-249289f2.js');
|
|
45
45
|
require('./typography-3ea4fe41.js');
|
|
46
|
-
require('./internal-translation-controller-
|
|
46
|
+
require('./internal-translation-controller-31f2b057.js');
|
|
47
47
|
require('./try-get-document-c0ebd39a.js');
|
|
48
|
-
require('./internal-vega-event-manager-
|
|
48
|
+
require('./internal-vega-event-manager-13c4012b.js');
|
|
49
49
|
require('./vega-env-manager-23b8b23c.js');
|
|
50
50
|
require('./index-3ca118c4.js');
|
|
51
51
|
require('./icon-manager-be358b32.js');
|
|
@@ -161,7 +161,256 @@ const VegaTableEditableFieldTypes = [
|
|
|
161
161
|
'time-picker',
|
|
162
162
|
];
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
/**
|
|
165
|
+
* ColumnRenderInputModel
|
|
166
|
+
*
|
|
167
|
+
* Render-time representation of a column or group node used by header/body renderers.
|
|
168
|
+
* Built from a ColumnStructureModel tree, it carries computed layout metadata required
|
|
169
|
+
* for rendering and pinned/sticky calculations (colSpan, rowSpan, pinned boundaries, etc).
|
|
170
|
+
*
|
|
171
|
+
* Instances form a forest (root-level nodes in an array) that mirrors the structure model
|
|
172
|
+
* but contains additional render-specific properties and parent/child links for renderers.
|
|
173
|
+
*/
|
|
174
|
+
class ColumnRenderInputModel {
|
|
175
|
+
/**
|
|
176
|
+
* Create a new render input node.
|
|
177
|
+
*
|
|
178
|
+
* @param {string} key - Unique key (matches ColumnStructureModel.key).
|
|
179
|
+
* @param {string} label - Optional display label (from structure model).
|
|
180
|
+
* @param {VegaTablePinnedType} pinned - Pinned type for this node ('left' | 'right' | null).
|
|
181
|
+
* @param {Nullable<number>} colSpan - Number of visual columns spanned by this node's subtree.
|
|
182
|
+
* @param {Nullable<number>} rowSpan - Number of header rows this node should span.
|
|
183
|
+
* @param {boolean} isViewStart - True when this node is the start of a visible view range.
|
|
184
|
+
* @param {boolean} isViewEnd - True when this node is the end of a visible view range.
|
|
185
|
+
* @param {boolean} isLeftEndPinned - True when node is last left-pinned sibling.
|
|
186
|
+
* @param {boolean} isRightStartPinned - True when node is first right-pinned sibling.
|
|
187
|
+
* @param {boolean} isNoPinnedEnd - True when node is last non-pinned sibling.
|
|
188
|
+
* @param {boolean} headHasGroupColumn - Header contains group columns (affects rowSpan).
|
|
189
|
+
* @param {boolean} headHasPinnedColumn - Header contains pinned columns.
|
|
190
|
+
* @param {number} headMaxDepth - Maximum header depth (number of header rows).
|
|
191
|
+
* @param {number} level - Level/index of this node within header rows (0-based).
|
|
192
|
+
* @param {number} columnIndex - Sequential leaf index (used for ordering).
|
|
193
|
+
* @param {Nullable<ColumnRenderInputModel>} parent - Parent render input node (null for root-level).
|
|
194
|
+
* @param {ColumnRenderInputModel[]} children - Child render input nodes.
|
|
195
|
+
*/
|
|
196
|
+
constructor(key, label, pinned, colSpan, rowSpan, isViewStart, isViewEnd, isLeftEndPinned, isRightStartPinned, isNoPinnedEnd, headHasGroupColumn, headHasPinnedColumn, headMaxDepth, level, columnIndex, parent, children = []) {
|
|
197
|
+
this.key = key;
|
|
198
|
+
this.label = label;
|
|
199
|
+
this.pinned = pinned;
|
|
200
|
+
this.colSpan = colSpan;
|
|
201
|
+
this.rowSpan = rowSpan;
|
|
202
|
+
this.isViewStart = isViewStart;
|
|
203
|
+
this.isViewEnd = isViewEnd;
|
|
204
|
+
this.isLeftEndPinned = isLeftEndPinned;
|
|
205
|
+
this.isRightStartPinned = isRightStartPinned;
|
|
206
|
+
this.isNoPinnedEnd = isNoPinnedEnd;
|
|
207
|
+
this.headHasGroupColumn = headHasGroupColumn;
|
|
208
|
+
this.headHasPinnedColumn = headHasPinnedColumn;
|
|
209
|
+
this.headMaxDepth = headMaxDepth;
|
|
210
|
+
this.level = level;
|
|
211
|
+
this.columnIndex = columnIndex;
|
|
212
|
+
this.parent = parent;
|
|
213
|
+
this.children = children;
|
|
214
|
+
this.iteratorCacheMap = new Map();
|
|
215
|
+
this.leaves = [];
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Build a forest of ColumnRenderInputModel nodes from a ColumnStructureModel root.
|
|
219
|
+
*
|
|
220
|
+
* @param {ColumnStructureModel} rootModel - Root ColumnStructureModel that supplies tree and level data.
|
|
221
|
+
* @returns {ColumnRenderInputModel[]} Array of root-level ColumnRenderInputModel nodes (the render forest).
|
|
222
|
+
*/
|
|
223
|
+
static from(rootModel) {
|
|
224
|
+
const renderInputs = [];
|
|
225
|
+
const parentStack = [];
|
|
226
|
+
const maxLevel = rootModel.getMaxDepth();
|
|
227
|
+
const hasGroupColumn = rootModel.hasGroupColumn();
|
|
228
|
+
const hasPinnedColumn = rootModel.hasLeftPinnedColumn() || rootModel.hasRightPinnedColumn();
|
|
229
|
+
let columnIndex = 0;
|
|
230
|
+
// Iterate structure model (DFS by default) and construct render nodes.
|
|
231
|
+
rootModel.iterator().forEach((model) => {
|
|
232
|
+
const parent = model.level > 0 ? parentStack[model.level - 1] : null;
|
|
233
|
+
const isParentStart = hasGroupColumn && this.isParentStart(model);
|
|
234
|
+
const isParentEnd = hasGroupColumn && this.isParentEnd(model);
|
|
235
|
+
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
|
|
236
|
+
? parent.isLeftEndPinned && isParentEnd
|
|
237
|
+
: hasPinnedColumn && this.isLeftEndPinned(model), parent
|
|
238
|
+
? parent.isRightStartPinned && isParentStart
|
|
239
|
+
: hasPinnedColumn && this.isRightStartPinned(model), parent ? parent.isNoPinnedEnd && isParentEnd : hasPinnedColumn && this.isNoPinnedEnd(model), hasGroupColumn, hasPinnedColumn, maxLevel, model.level, columnIndex, parent);
|
|
240
|
+
// Attach to parent if present, otherwise add to root-level array.
|
|
241
|
+
parent ? parent.children.push(renderInput) : renderInputs.push(renderInput);
|
|
242
|
+
// Maintain parent stack keyed by level to allow next nodes to find their parent.
|
|
243
|
+
parentStack[model.level] = renderInput;
|
|
244
|
+
parentStack.length = model.level + 1;
|
|
245
|
+
// Increment leaf index when encountering a leaf structure node.
|
|
246
|
+
if (model.isLeaf())
|
|
247
|
+
columnIndex++;
|
|
248
|
+
});
|
|
249
|
+
return renderInputs;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Create a new render input that merges pinned-boundary flags from a set of spanned leaves.
|
|
253
|
+
*
|
|
254
|
+
* Used when a body cell with `colSpan > 1` consumes neighboring leaves. The spanning cell
|
|
255
|
+
* must inherit boundary indicators (`isLeftEndPinned`, `isRightStartPinned`, `isNoPinnedEnd`)
|
|
256
|
+
* from any consumed leaf that carries them, so the pinned-boundary visual (divider/shadow)
|
|
257
|
+
* remains visible on the spanning cell.
|
|
258
|
+
*
|
|
259
|
+
* @param {ColumnRenderInputModel} base - The render input of the originating (leftmost) leaf.
|
|
260
|
+
* @param {ColumnRenderInputModel[]} spannedLeaves - All leaves consumed by the span (including base).
|
|
261
|
+
* @returns {ColumnRenderInputModel} A new instance with OR-merged boundary flags.
|
|
262
|
+
*/
|
|
263
|
+
static withMergedBoundaries(base, spannedLeaves) {
|
|
264
|
+
let isLeftEndPinned = base.isLeftEndPinned;
|
|
265
|
+
let isRightStartPinned = base.isRightStartPinned;
|
|
266
|
+
let isNoPinnedEnd = base.isNoPinnedEnd;
|
|
267
|
+
let isViewEnd = base.isViewEnd;
|
|
268
|
+
for (const leaf of spannedLeaves) {
|
|
269
|
+
isLeftEndPinned = isLeftEndPinned || leaf.isLeftEndPinned;
|
|
270
|
+
isRightStartPinned = isRightStartPinned || leaf.isRightStartPinned;
|
|
271
|
+
isNoPinnedEnd = isNoPinnedEnd || leaf.isNoPinnedEnd;
|
|
272
|
+
isViewEnd = isViewEnd || leaf.isViewEnd;
|
|
273
|
+
}
|
|
274
|
+
// Return the base unchanged when no flags were gained (common fast-path).
|
|
275
|
+
if (isLeftEndPinned === base.isLeftEndPinned &&
|
|
276
|
+
isRightStartPinned === base.isRightStartPinned &&
|
|
277
|
+
isNoPinnedEnd === base.isNoPinnedEnd &&
|
|
278
|
+
isViewEnd === base.isViewEnd) {
|
|
279
|
+
return base;
|
|
280
|
+
}
|
|
281
|
+
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);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* True when the provided structure model is the last left-pinned sibling in its parent's children.
|
|
285
|
+
* Used to mark boundary nodes for left-pinned groups.
|
|
286
|
+
*
|
|
287
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
288
|
+
* @returns {boolean} True when model is the last left-pinned sibling.
|
|
289
|
+
*/
|
|
290
|
+
static isLeftEndPinned(model) {
|
|
291
|
+
const siblings = model.parent
|
|
292
|
+
.getOrderedChildren()
|
|
293
|
+
.filter((child) => child.pinned === 'left');
|
|
294
|
+
return siblings[siblings.length - 1] === model;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* True when the provided structure model is the first right-pinned sibling in its parent's children.
|
|
298
|
+
* Used to mark boundary nodes for right-pinned groups.
|
|
299
|
+
*
|
|
300
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
301
|
+
* @returns {boolean} True when model is the first right-pinned sibling.
|
|
302
|
+
*/
|
|
303
|
+
static isRightStartPinned(model) {
|
|
304
|
+
const siblings = model.parent
|
|
305
|
+
.getOrderedChildren()
|
|
306
|
+
.filter((child) => child.pinned === 'right');
|
|
307
|
+
return siblings[0] === model;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* True when the provided structure model is the last non-pinned sibling in its parent's children.
|
|
311
|
+
* Useful to handle the 'no-pinned-end' condition.
|
|
312
|
+
*
|
|
313
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
314
|
+
* @returns {boolean} True when model is the last non-pinned sibling.
|
|
315
|
+
*/
|
|
316
|
+
static isNoPinnedEnd(model) {
|
|
317
|
+
const siblings = model.parent
|
|
318
|
+
.getOrderedChildren()
|
|
319
|
+
.filter((child) => !child.pinned);
|
|
320
|
+
return siblings[siblings.length - 1] === model;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* True when the provided model is the first child of its parent.
|
|
324
|
+
*
|
|
325
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
326
|
+
* @returns {boolean} True when model is the first child.
|
|
327
|
+
*/
|
|
328
|
+
static isParentStart(model) {
|
|
329
|
+
return model.parent.getOrderedChildren()[0] === model;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* True when the provided model is the last child of its parent.
|
|
333
|
+
*
|
|
334
|
+
* @param {ColumnStructureModel} model - Structure model to check.
|
|
335
|
+
* @returns {boolean} True when model is the last child.
|
|
336
|
+
*/
|
|
337
|
+
static isParentEnd(model) {
|
|
338
|
+
const parentChildren = model.parent.getOrderedChildren();
|
|
339
|
+
return parentChildren[parentChildren.length - 1] === model;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Compute a node's colSpan by iterating its subtree and counting the maximum number
|
|
343
|
+
* of nodes present at any single level (visual column span).
|
|
344
|
+
*
|
|
345
|
+
* @param {ColumnStructureModel} mode - ColumnStructureModel node to examine.
|
|
346
|
+
* @returns {number} Number of visual columns spanned by the node.
|
|
347
|
+
*/
|
|
348
|
+
static getColSpan(mode) {
|
|
349
|
+
const children = mode.iterator();
|
|
350
|
+
const rowMap = {};
|
|
351
|
+
children.forEach((node) => {
|
|
352
|
+
rowMap[node.level] = (rowMap[node.level] || 0) + 1;
|
|
353
|
+
});
|
|
354
|
+
return Math.max(...Object.values(rowMap));
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Return cached leaf render nodes for this subtree.
|
|
358
|
+
* Caches the result on first call and returns cached array on subsequent calls.
|
|
359
|
+
*
|
|
360
|
+
* @returns {ColumnRenderInputModel[]} Array of leaf render input nodes.
|
|
361
|
+
*/
|
|
362
|
+
getLeaves() {
|
|
363
|
+
if (this.leaves.length > 0) {
|
|
364
|
+
return this.leaves;
|
|
365
|
+
}
|
|
366
|
+
const leaves = this.iterator().filter((model) => model.isLeaf());
|
|
367
|
+
this.leaves = leaves;
|
|
368
|
+
return leaves;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Generic iterator that supports traversal modes ('dfs' currently implemented).
|
|
372
|
+
*
|
|
373
|
+
* @param {IteratorMode} [mode='dfs'] - Iterator mode ('dfs' | 'bfs').
|
|
374
|
+
* @returns {ColumnRenderInputModel[]} Traversal-ordered array of nodes.
|
|
375
|
+
*/
|
|
376
|
+
iterator(mode = 'dfs') {
|
|
377
|
+
if (mode === 'dfs') {
|
|
378
|
+
return this.dfsIterator();
|
|
379
|
+
}
|
|
380
|
+
// Future: implement BFS mode here.
|
|
381
|
+
return [];
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Depth-first pre-order traversal of this node and its descendants.
|
|
385
|
+
* Caches the result for the 'dfs' mode to avoid repeated recursion.
|
|
386
|
+
*
|
|
387
|
+
* @returns {ColumnRenderInputModel[]} Array of nodes in DFS order (includes this node).
|
|
388
|
+
*/
|
|
389
|
+
dfsIterator() {
|
|
390
|
+
if (this.iteratorCacheMap.has('dfs')) {
|
|
391
|
+
return this.iteratorCacheMap.get('dfs');
|
|
392
|
+
}
|
|
393
|
+
const localResult = [];
|
|
394
|
+
localResult.push(this);
|
|
395
|
+
if (this.children && this.children.length > 0) {
|
|
396
|
+
this.children.forEach((child) => {
|
|
397
|
+
localResult.push(...child.dfsIterator());
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
this.iteratorCacheMap.set('dfs', localResult);
|
|
401
|
+
return localResult;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* True when this render node has no children (visual leaf).
|
|
405
|
+
*
|
|
406
|
+
* @returns {boolean} True when node is a leaf.
|
|
407
|
+
*/
|
|
408
|
+
isLeaf() {
|
|
409
|
+
return !this.children || this.children.length === 0;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
var __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
165
414
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
166
415
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
167
416
|
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;
|
|
@@ -181,7 +430,7 @@ var __rest$1 = (undefined && undefined.__rest) || function (s, e) {
|
|
|
181
430
|
class VegaTableCellRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
182
431
|
constructor() {
|
|
183
432
|
super(...arguments);
|
|
184
|
-
this.renderTableCellContent = (column, record, index$1) => {
|
|
433
|
+
this.renderTableCellContent = (column, record, index$1, isSpanning) => {
|
|
185
434
|
var _a, _b;
|
|
186
435
|
const value = object.getValueByPath(record, column.prop);
|
|
187
436
|
const rowKey = this.vegaTableDataSourceController.getRecordKey(record);
|
|
@@ -190,13 +439,14 @@ class VegaTableCellRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
190
439
|
.find((item) => this.vegaTableDataSourceController.getRecordKey(item) === rowKey);
|
|
191
440
|
const editing = this.vegaTableEditableController.isEditing(rowKey);
|
|
192
441
|
const rowForm = this.vegaTableEditableController.getRowFormRefMap().get(rowKey);
|
|
193
|
-
|
|
442
|
+
// REQ-007: spanning cells are forced read-only — never render editable form items.
|
|
443
|
+
if (!isSpanning && editing && rowForm && column.renderFormItem) {
|
|
194
444
|
return column.renderFormItem(index.h, column.prop ? value : rowKey, record, index$1, {
|
|
195
445
|
rowForm,
|
|
196
446
|
isNewRow,
|
|
197
447
|
});
|
|
198
448
|
}
|
|
199
|
-
if (editing && rowForm && column.editable) {
|
|
449
|
+
if (!isSpanning && editing && rowForm && column.editable) {
|
|
200
450
|
const formItemProps = (_a = column.formItemProps) === null || _a === void 0 ? void 0 : _a.call(column, rowForm, {
|
|
201
451
|
record,
|
|
202
452
|
index: index$1,
|
|
@@ -244,58 +494,277 @@ class VegaTableCellRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
244
494
|
new RegExp(VegaTableEditableFieldTypes.join('|'), 'i').test(tagName));
|
|
245
495
|
};
|
|
246
496
|
}
|
|
247
|
-
render(renderInput, record, index$1) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
497
|
+
render(renderInput, record, index$1, colSpanResult) {
|
|
498
|
+
var _a;
|
|
499
|
+
const column = this.vegaTableBodyColSpanController.findColumn(renderInput);
|
|
500
|
+
/* istanbul ignore next -- defensive: colSpanResult is always provided by the caller */
|
|
501
|
+
const htmlColspan = (_a = colSpanResult === null || colSpanResult === void 0 ? void 0 : colSpanResult.htmlColspan) !== null && _a !== void 0 ? _a : 1;
|
|
502
|
+
const isSpanning = htmlColspan > 1;
|
|
503
|
+
// When a cell spans, merge pinned-boundary flags from all consumed leaves so the spanning
|
|
504
|
+
// cell inherits boundary indicators (e.g. right-divider for pinned-end).
|
|
505
|
+
const effectiveRenderInput = isSpanning && colSpanResult
|
|
506
|
+
? this.getMergedRenderInputForSpan(renderInput, colSpanResult)
|
|
507
|
+
: renderInput;
|
|
251
508
|
if (column) {
|
|
252
509
|
const rowKey = this.vegaTableDataSourceController.getRecordKey(record);
|
|
253
510
|
const columnKey = `${rowKey}_${column.key || column.prop}`;
|
|
254
|
-
return (index.h("vega-table-cell", { key: columnKey, textAlign: column.align, breakpoint: column.breakpoint, overflow: column.overflow, ref: (ref) => {
|
|
255
|
-
this.vegaTableRenderInputController.addCellRenderInputMap(ref,
|
|
256
|
-
} }, this.renderTableCellContent(column, record, index$1)));
|
|
511
|
+
return (index.h("vega-table-cell", { key: columnKey, textAlign: column.align, breakpoint: column.breakpoint, overflow: column.overflow, colSpan: isSpanning ? htmlColspan : undefined, ref: (ref) => {
|
|
512
|
+
this.vegaTableRenderInputController.addCellRenderInputMap(ref, effectiveRenderInput);
|
|
513
|
+
} }, this.renderTableCellContent(column, record, index$1, isSpanning)));
|
|
257
514
|
}
|
|
258
515
|
else {
|
|
259
516
|
return (index.h("vega-table-cell", { key: renderInput.key, ref: (ref) => {
|
|
260
|
-
this.vegaTableRenderInputController.addCellRenderInputMap(ref,
|
|
517
|
+
this.vegaTableRenderInputController.addCellRenderInputMap(ref, effectiveRenderInput);
|
|
261
518
|
} }));
|
|
262
519
|
}
|
|
263
520
|
}
|
|
521
|
+
/**
|
|
522
|
+
* Build a render input with merged boundary flags from all leaves consumed by a body colSpan.
|
|
523
|
+
*
|
|
524
|
+
* @param {ColumnRenderInputModel} baseInput - The starting leaf's render input.
|
|
525
|
+
* @param {BodyColSpanResult} colSpanResult - The resolved span result (provides skipCount).
|
|
526
|
+
* @returns {ColumnRenderInputModel} A render input with OR-merged boundary flags.
|
|
527
|
+
*/
|
|
528
|
+
getMergedRenderInputForSpan(baseInput, colSpanResult) {
|
|
529
|
+
const allLeaves = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
530
|
+
const startIndex = allLeaves.indexOf(baseInput);
|
|
531
|
+
/* istanbul ignore next -- defensive: baseInput should always be in the leaves array */
|
|
532
|
+
if (startIndex < 0)
|
|
533
|
+
return baseInput;
|
|
534
|
+
const spannedLeaves = allLeaves.slice(startIndex + 1, startIndex + 1 + colSpanResult.skipCount);
|
|
535
|
+
return ColumnRenderInputModel.withMergedBoundaries(baseInput, spannedLeaves);
|
|
536
|
+
}
|
|
264
537
|
}
|
|
265
|
-
__decorate$
|
|
538
|
+
__decorate$V([
|
|
266
539
|
globalSlimmerRegistry.MapToComponentField()
|
|
267
540
|
], VegaTableCellRenderer.prototype, "rowKey", void 0);
|
|
268
|
-
__decorate$
|
|
269
|
-
globalSlimmerRegistry.MapToComponentField()
|
|
270
|
-
], VegaTableCellRenderer.prototype, "columns", void 0);
|
|
271
|
-
__decorate$U([
|
|
541
|
+
__decorate$V([
|
|
272
542
|
globalSlimmerRegistry.MapToComponentField()
|
|
273
543
|
], VegaTableCellRenderer.prototype, "vegaTableDataSourceController", void 0);
|
|
274
|
-
__decorate$
|
|
544
|
+
__decorate$V([
|
|
275
545
|
globalSlimmerRegistry.MapToComponentField()
|
|
276
546
|
], VegaTableCellRenderer.prototype, "vegaTableEditableController", void 0);
|
|
277
|
-
__decorate$
|
|
547
|
+
__decorate$V([
|
|
278
548
|
globalSlimmerRegistry.MapToComponentField()
|
|
279
549
|
], VegaTableCellRenderer.prototype, "vegaTableRenderInputController", void 0);
|
|
550
|
+
__decorate$V([
|
|
551
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
552
|
+
], VegaTableCellRenderer.prototype, "vegaTableBodyColSpanController", void 0);
|
|
280
553
|
|
|
281
|
-
|
|
282
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
283
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
284
|
-
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;
|
|
285
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
286
|
-
};
|
|
554
|
+
const NO_SPAN = { htmlColspan: 1, skipCount: 0 };
|
|
287
555
|
/**
|
|
288
|
-
*
|
|
556
|
+
* Read the declared span for a column, resolving the function form against the row value.
|
|
557
|
+
* Returns 1 when the column declares no span (REQ-008: span < 2 means no spanning).
|
|
558
|
+
*
|
|
559
|
+
* @param {VegaTableColumnConfig} column - The column configuration to read the span from.
|
|
560
|
+
* @param {VegaTableDataSourceItem} record - The row data record (passed to the function form).
|
|
561
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
562
|
+
* @returns {number} The declared span (>= 1).
|
|
289
563
|
*/
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
564
|
+
function getDeclaredSpan(column, record, rowIndex) {
|
|
565
|
+
const rawSpan = column === null || column === void 0 ? void 0 : column.colSpan;
|
|
566
|
+
if (rawSpan == null)
|
|
567
|
+
return 1;
|
|
568
|
+
if (typeof rawSpan !== 'function')
|
|
569
|
+
return normalizeSpan(rawSpan);
|
|
570
|
+
const value = column.prop ? object.getValueByPath(record, column.prop) : undefined;
|
|
571
|
+
return normalizeSpan(rawSpan(value, record, rowIndex));
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Normalize a raw span value to a positive integer. Non-finite values (NaN/Infinity) and values
|
|
575
|
+
* below 1 collapse to 1 (no spanning); fractional values are floored so the resulting `colspan`
|
|
576
|
+
* attribute is always a valid integer string.
|
|
577
|
+
*
|
|
578
|
+
* @param {number} rawSpan - The raw span value declared by the column (numeric or function result).
|
|
579
|
+
* @returns {number} A positive integer span (>= 1).
|
|
580
|
+
*/
|
|
581
|
+
function normalizeSpan(rawSpan) {
|
|
582
|
+
if (!Number.isFinite(rawSpan))
|
|
583
|
+
return 1;
|
|
584
|
+
const floored = Math.floor(rawSpan);
|
|
585
|
+
return floored >= 1 ? floored : 1;
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Walk rightward from the starting leaf to find the widest legal span.
|
|
589
|
+
*
|
|
590
|
+
* Stops (and returns a clamp reason) when the span would either run past the end of the
|
|
591
|
+
* row or cross a pinned ↔ unpinned column boundary (which would break sticky positioning).
|
|
592
|
+
* Breakpoint-hidden columns are intentionally **not** a stop condition — the span mirrors
|
|
593
|
+
* across them (matching header group colSpan).
|
|
594
|
+
*
|
|
595
|
+
* @param {number} declared - The declared span requested by the column.
|
|
596
|
+
* @param {number} leafIndex - Index of the starting leaf in the flattened render-input array.
|
|
597
|
+
* @param {ColumnRenderInputModel[]} allLeaves - All leaf render inputs for the table (ordered).
|
|
598
|
+
* @returns {MaxSpan} The widest legal span plus the clamp reason (null when unconstrained).
|
|
599
|
+
*/
|
|
600
|
+
function computeMaxSpan(declared, leafIndex, allLeaves) {
|
|
601
|
+
var _a, _b;
|
|
602
|
+
const startPinned = (_a = allLeaves[leafIndex]) === null || _a === void 0 ? void 0 : _a.pinned;
|
|
603
|
+
let span = 1;
|
|
604
|
+
for (let offset = 1; offset < declared; offset++) {
|
|
605
|
+
const nextLeaf = allLeaves[leafIndex + offset];
|
|
606
|
+
if (!nextLeaf) {
|
|
607
|
+
return {
|
|
608
|
+
span,
|
|
609
|
+
clampReason: `extends past the end of the row (${allLeaves.length} columns total)`,
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
// Reject if the next column is in a different pinned group.
|
|
613
|
+
if (nextLeaf.pinned !== startPinned) {
|
|
614
|
+
return {
|
|
615
|
+
span,
|
|
616
|
+
clampReason: `crosses a pinned-column boundary (pinned="${startPinned !== null && startPinned !== void 0 ? startPinned : 'none'}" → pinned="${(_b = nextLeaf.pinned) !== null && _b !== void 0 ? _b : 'none'}")`,
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
span++;
|
|
620
|
+
}
|
|
621
|
+
return { span, clampReason: null };
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Emit a clamp warning at most once per column key (per-instance, tracked via {@link warnedKeys}).
|
|
625
|
+
*
|
|
626
|
+
* @param {string} colKey - The column key used to dedupe warnings.
|
|
627
|
+
* @param {number} declared - The originally declared span.
|
|
628
|
+
* @param {number} effective - The clamped (effective) span actually applied.
|
|
629
|
+
* @param {string} reason - Human-readable reason the span was clamped.
|
|
630
|
+
* @param {Set<string>} warnedKeys - Per-instance set tracking already-warned column keys.
|
|
631
|
+
*/
|
|
632
|
+
function warnClampOnce(colKey, declared, effective, reason, warnedKeys) {
|
|
633
|
+
if (warnedKeys.has(colKey))
|
|
634
|
+
return;
|
|
635
|
+
warnedKeys.add(colKey);
|
|
636
|
+
globalSlimmerRegistry.LogUtility.warn(`[vega-table] colSpan for column "${colKey}" was clamped from ${declared} to ${effective} because it ${reason}.`);
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* Resolve the effective body-cell colspan for a single source-data row cell.
|
|
640
|
+
*
|
|
641
|
+
* Clamps the declared span so it never runs past the end of the row nor crosses a
|
|
642
|
+
* pinned ↔ unpinned column boundary. Structural clamps (end-of-row / pinned boundary) emit a
|
|
643
|
+
* warning once per column key (tracked via the caller-supplied {@link warnedKeys} set).
|
|
644
|
+
* Breakpoint-hidden columns are **not** clamped — the span mirrors across a `display: none`
|
|
645
|
+
* column (matching header group colSpan) so the body grid stays column-aligned with the header.
|
|
646
|
+
*
|
|
647
|
+
* @param {VegaTableColumnConfig} column - The column configuration for the spanning cell.
|
|
648
|
+
* @param {VegaTableDataSourceItem} record - The row data record.
|
|
649
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
650
|
+
* @param {number} leafIndex - Index of this column in the flattened leaf render-input array.
|
|
651
|
+
* @param {ColumnRenderInputModel[]} allLeaves - All leaf render inputs for the table (ordered).
|
|
652
|
+
* @param {Set<string>} warnedKeys - Per-instance set tracking column keys that have already received a clamping warning.
|
|
653
|
+
* @returns {BodyColSpanResult} Resolved spanning metadata for the cell.
|
|
654
|
+
*/
|
|
655
|
+
function resolveBodyColSpan(column, record, rowIndex, leafIndex, allLeaves, warnedKeys) {
|
|
656
|
+
var _a, _b, _c;
|
|
657
|
+
const declared = getDeclaredSpan(column, record, rowIndex);
|
|
658
|
+
if (!declared || declared <= 1)
|
|
659
|
+
return NO_SPAN;
|
|
660
|
+
const { span, clampReason } = computeMaxSpan(declared, leafIndex, allLeaves);
|
|
661
|
+
const effectiveSpan = Math.min(declared, span);
|
|
662
|
+
if (clampReason && effectiveSpan < declared) {
|
|
663
|
+
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 : '';
|
|
664
|
+
warnClampOnce(colKey, declared, effectiveSpan, clampReason, warnedKeys);
|
|
665
|
+
}
|
|
666
|
+
if (effectiveSpan <= 1)
|
|
667
|
+
return NO_SPAN;
|
|
668
|
+
return {
|
|
669
|
+
htmlColspan: effectiveSpan,
|
|
670
|
+
skipCount: effectiveSpan - 1,
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
var __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
675
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
676
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
677
|
+
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;
|
|
678
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
679
|
+
};
|
|
680
|
+
/**
|
|
681
|
+
* Per-row body colspan controller.
|
|
682
|
+
*
|
|
683
|
+
* Centralizes the source-data body colSpan computation that was previously scattered across the
|
|
684
|
+
* cell renderer (cache + per-cell resolve) and the row renderer (imperative `skipCount`). It owns
|
|
685
|
+
* the once-per-key warning cache and exposes {@link resolveRow}, which computes the colspan result
|
|
686
|
+
* for every leaf in a row in a single pass so renderers can consume the result declaratively.
|
|
687
|
+
*
|
|
688
|
+
* The structural shape (a {@link VegaSlimmer} controller reading component fields) mirrors the
|
|
689
|
+
* main-branch `VegaTableExpandRowController` paradigm.
|
|
690
|
+
*/
|
|
691
|
+
class VegaTableBodyColSpanController extends globalSlimmerRegistry.VegaSlimmer {
|
|
692
|
+
constructor() {
|
|
693
|
+
super(...arguments);
|
|
694
|
+
this.warnedColSpanKeys = new Set();
|
|
695
|
+
this.lastWarnedColumnsRef = null;
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* Resolve the effective colspan for every leaf cell in a single source-data row.
|
|
699
|
+
*
|
|
700
|
+
* Walks the row left-to-right, resolving each non-consumed leaf's span and marking the leaves
|
|
701
|
+
* consumed by a span as `null` so the caller can skip them declaratively (no mutable
|
|
702
|
+
* `skipCount` orchestration). The returned array is index-aligned with `leaves`.
|
|
703
|
+
*
|
|
704
|
+
* @param {VegaTableDataSourceItem} record - The row data record.
|
|
705
|
+
* @param {number} rowIndex - Zero-based index of the row in the current data set.
|
|
706
|
+
* @param {ColumnRenderInputModel[]} leaves - All leaf render inputs for the table (ordered).
|
|
707
|
+
* @returns {Array<Nullable<BodyColSpanResult>>} One entry per leaf: a {@link BodyColSpanResult}
|
|
708
|
+
* for a cell to render, or `null` for a leaf consumed by a preceding spanning cell.
|
|
709
|
+
*/
|
|
710
|
+
resolveRow(record, rowIndex, leaves) {
|
|
711
|
+
// Reset the once-per-key warning cache whenever the column configuration changes,
|
|
712
|
+
// so clamping conditions introduced by a new `columns` value can warn again.
|
|
713
|
+
if (this.columns !== this.lastWarnedColumnsRef) {
|
|
714
|
+
this.warnedColSpanKeys.clear();
|
|
715
|
+
this.lastWarnedColumnsRef = this.columns;
|
|
716
|
+
}
|
|
717
|
+
const results = new Array(leaves.length).fill(null);
|
|
718
|
+
let skipCount = 0;
|
|
719
|
+
leaves.forEach((leaf, leafIndex) => {
|
|
720
|
+
if (skipCount > 0) {
|
|
721
|
+
// This leaf is consumed by a preceding spanning cell — leave it null (skipped).
|
|
722
|
+
skipCount--;
|
|
723
|
+
return;
|
|
724
|
+
}
|
|
725
|
+
const column = this.findColumn(leaf);
|
|
726
|
+
const result = column
|
|
727
|
+
? resolveBodyColSpan(column, record, rowIndex, leafIndex, leaves, this.warnedColSpanKeys)
|
|
728
|
+
: { htmlColspan: 1, skipCount: 0 };
|
|
729
|
+
results[leafIndex] = result;
|
|
730
|
+
skipCount = result.skipCount;
|
|
731
|
+
});
|
|
732
|
+
return results;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Find the column config that backs a leaf render input.
|
|
736
|
+
*
|
|
737
|
+
* @param {ColumnRenderInputModel} renderInput - The leaf render input.
|
|
738
|
+
* @returns {Nullable<VegaTableColumnConfig>} The matching column config, or `undefined`.
|
|
739
|
+
*/
|
|
740
|
+
findColumn(renderInput) {
|
|
741
|
+
return this.columns.find((column) => column.key === renderInput.key ||
|
|
742
|
+
column.prop === renderInput.key ||
|
|
743
|
+
column.label === renderInput.key);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
__decorate$U([
|
|
747
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
748
|
+
], VegaTableBodyColSpanController.prototype, "columns", void 0);
|
|
749
|
+
|
|
750
|
+
var __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
751
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
752
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
753
|
+
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;
|
|
754
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
755
|
+
};
|
|
756
|
+
/**
|
|
757
|
+
* The expand row controller of VegaTable
|
|
758
|
+
*/
|
|
759
|
+
class VegaTableExpandRowController extends globalSlimmerRegistry.VegaSlimmer {
|
|
760
|
+
constructor() {
|
|
761
|
+
super(...arguments);
|
|
762
|
+
/**
|
|
763
|
+
* Toggle expandable row by rowKey
|
|
764
|
+
*
|
|
765
|
+
* @param {string} rowKey - The row key of the row
|
|
766
|
+
*/
|
|
767
|
+
this.toggleExpandRow = (rowKey) => {
|
|
299
768
|
this.isRowExpandable(rowKey) && this.handleToggleExpandRow(rowKey, !this.isExpanded(rowKey));
|
|
300
769
|
};
|
|
301
770
|
/**
|
|
@@ -2412,6 +2881,18 @@ class VegaTableRowRenderer$1 extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
2412
2881
|
this.renderTableRowComponent = (rowProps) => {
|
|
2413
2882
|
const { rowKey, index: index$1, record, isVisibleInCurrentPage } = rowProps;
|
|
2414
2883
|
const renderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
2884
|
+
// Resolve every leaf's colspan in one pass. Entries are index-aligned with renderInputs;
|
|
2885
|
+
// a `null` entry marks a leaf consumed by a preceding spanning cell (skip it).
|
|
2886
|
+
const colSpanResults = this.vegaTableBodyColSpanController.resolveRow(record, index$1, renderInputs);
|
|
2887
|
+
const cells = [];
|
|
2888
|
+
renderInputs.forEach((renderInput, leafIndex) => {
|
|
2889
|
+
const colSpanResult = colSpanResults[leafIndex];
|
|
2890
|
+
if (!colSpanResult) {
|
|
2891
|
+
// Consumed by a preceding spanning cell — nothing to render for this leaf.
|
|
2892
|
+
return;
|
|
2893
|
+
}
|
|
2894
|
+
cells.push(this.vegaTableCellRenderer.render(renderInput, record, index$1, colSpanResult));
|
|
2895
|
+
});
|
|
2415
2896
|
return (index.h("vega-table-row", { class: {
|
|
2416
2897
|
'v-hidden': !isVisibleInCurrentPage,
|
|
2417
2898
|
}, key: `vega-table-row-${rowKey}`, rowKey: rowKey,
|
|
@@ -2420,9 +2901,7 @@ class VegaTableRowRenderer$1 extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
2420
2901
|
domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaClick, () => {
|
|
2421
2902
|
this.rowClickEventEmitter.emit({ record: record, index: index$1 });
|
|
2422
2903
|
});
|
|
2423
|
-
}, striped: this.striped && index$1 % 2 === 1, rowDivider: this.rowDivider && !rowProps.isLastRow },
|
|
2424
|
-
return this.vegaTableCellRenderer.render(renderInput, record, index$1);
|
|
2425
|
-
})));
|
|
2904
|
+
}, striped: this.striped && index$1 % 2 === 1, rowDivider: this.rowDivider && !rowProps.isLastRow }, cells));
|
|
2426
2905
|
};
|
|
2427
2906
|
}
|
|
2428
2907
|
render(rowProps, editable) {
|
|
@@ -2439,6 +2918,9 @@ __decorate$G([
|
|
|
2439
2918
|
__decorate$G([
|
|
2440
2919
|
globalSlimmerRegistry.MapToComponentField()
|
|
2441
2920
|
], VegaTableRowRenderer$1.prototype, "vegaTableCellRenderer", void 0);
|
|
2921
|
+
__decorate$G([
|
|
2922
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
2923
|
+
], VegaTableRowRenderer$1.prototype, "vegaTableBodyColSpanController", void 0);
|
|
2442
2924
|
__decorate$G([
|
|
2443
2925
|
globalSlimmerRegistry.MapToComponentField()
|
|
2444
2926
|
], VegaTableRowRenderer$1.prototype, "striped", void 0);
|
|
@@ -2656,423 +3138,206 @@ class ColumnStructureModel {
|
|
|
2656
3138
|
*
|
|
2657
3139
|
* @returns {boolean} True if any descendant is a group column.
|
|
2658
3140
|
*/
|
|
2659
|
-
hasGroupColumn() {
|
|
2660
|
-
return !!this.children.find((model) => !model.isLeaf());
|
|
2661
|
-
}
|
|
2662
|
-
/**
|
|
2663
|
-
* Checks if this subtree contains any left pinned children.
|
|
2664
|
-
*
|
|
2665
|
-
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2666
|
-
*/
|
|
2667
|
-
hasLeftPinnedColumn() {
|
|
2668
|
-
return !!this.children.find((model) => model.pinned === 'left');
|
|
2669
|
-
}
|
|
2670
|
-
/**
|
|
2671
|
-
* Checks if this subtree contains any right pinned children.
|
|
2672
|
-
*
|
|
2673
|
-
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2674
|
-
*/
|
|
2675
|
-
hasRightPinnedColumn() {
|
|
2676
|
-
return !!this.children.find((model) => model.pinned === 'right');
|
|
2677
|
-
}
|
|
2678
|
-
/**
|
|
2679
|
-
* Checks if this node is a leaf (no children).
|
|
2680
|
-
*
|
|
2681
|
-
* @returns {boolean} True when this node has no children.
|
|
2682
|
-
*/
|
|
2683
|
-
isLeaf() {
|
|
2684
|
-
return !this.children || this.children.length === 0;
|
|
2685
|
-
}
|
|
2686
|
-
/**
|
|
2687
|
-
* Return an array of nodes for this subtree using the specified traversal mode.
|
|
2688
|
-
*
|
|
2689
|
-
* Currently only depth-first search ('dfs') is supported. The returned array is
|
|
2690
|
-
* cached per-mode to avoid repeated traversal costs.
|
|
2691
|
-
*
|
|
2692
|
-
* @param {IteratorMode} mode - Traversal mode to use. Defaults to 'dfs'.
|
|
2693
|
-
* @returns {ColumnStructureModel[]} Array of ColumnStructureModel nodes in traversal order.
|
|
2694
|
-
*/
|
|
2695
|
-
iterator(mode = 'dfs') {
|
|
2696
|
-
if (mode === 'dfs') {
|
|
2697
|
-
return this.dfsIterator();
|
|
2698
|
-
}
|
|
2699
|
-
return [];
|
|
2700
|
-
}
|
|
2701
|
-
/**
|
|
2702
|
-
* Gets all leaf nodes in the subtree, with caching.
|
|
2703
|
-
*
|
|
2704
|
-
* Subsequent calls return the cached array until the underlying model is rebuilt.
|
|
2705
|
-
*
|
|
2706
|
-
* @returns {ColumnStructureModel[]} Array of leaf column models.
|
|
2707
|
-
*/
|
|
2708
|
-
getLeaves() {
|
|
2709
|
-
if (this.leaves.length > 0) {
|
|
2710
|
-
return this.leaves;
|
|
2711
|
-
}
|
|
2712
|
-
const leaves = this.dfsIterator().filter((model) => model.isLeaf());
|
|
2713
|
-
this.leaves = leaves;
|
|
2714
|
-
return leaves;
|
|
2715
|
-
}
|
|
2716
|
-
/**
|
|
2717
|
-
* For root nodes, returns children ordered by pinned type (left, none, right).
|
|
2718
|
-
* For non-root nodes, returns children in their natural order.
|
|
2719
|
-
*
|
|
2720
|
-
* @returns {ColumnStructureModel[]} Array of child column models.
|
|
2721
|
-
*/
|
|
2722
|
-
getOrderedChildren() {
|
|
2723
|
-
if (!this.isRoot())
|
|
2724
|
-
return this.children;
|
|
2725
|
-
return this.orderedChildren;
|
|
2726
|
-
}
|
|
2727
|
-
/**
|
|
2728
|
-
* Orders root children by pinned type (left, none, right) and caches the result.
|
|
2729
|
-
*
|
|
2730
|
-
* For non-root nodes this method returns children in their natural order.
|
|
2731
|
-
*
|
|
2732
|
-
* @returns {ColumnStructureModel[]} Array of ordered child column models.
|
|
2733
|
-
*/
|
|
2734
|
-
orderChildrenByPinned() {
|
|
2735
|
-
if (!this.isRoot())
|
|
2736
|
-
return this.children;
|
|
2737
|
-
if (this.orderedChildren.length > 0) {
|
|
2738
|
-
return this.orderedChildren;
|
|
2739
|
-
}
|
|
2740
|
-
const leftPinned = [];
|
|
2741
|
-
const noPinned = [];
|
|
2742
|
-
const rightPinned = [];
|
|
2743
|
-
this.children.forEach((child) => {
|
|
2744
|
-
if (child.pinned === 'left') {
|
|
2745
|
-
leftPinned.push(child);
|
|
2746
|
-
}
|
|
2747
|
-
else if (child.pinned === 'right') {
|
|
2748
|
-
rightPinned.push(child);
|
|
2749
|
-
}
|
|
2750
|
-
else {
|
|
2751
|
-
noPinned.push(child);
|
|
2752
|
-
}
|
|
2753
|
-
});
|
|
2754
|
-
const children = [...leftPinned, ...noPinned, ...rightPinned];
|
|
2755
|
-
this.orderedChildren = children;
|
|
2756
|
-
return children;
|
|
2757
|
-
}
|
|
2758
|
-
/**
|
|
2759
|
-
* Checks if this node is the root node.
|
|
2760
|
-
*
|
|
2761
|
-
* @returns {boolean} True if root node, false otherwise.
|
|
2762
|
-
*/
|
|
2763
|
-
isRoot() {
|
|
2764
|
-
return this.level === ColumnStructureModel.ROOT_LEVEL;
|
|
2765
|
-
}
|
|
2766
|
-
/**
|
|
2767
|
-
* Performs a depth-first traversal of the column structure.
|
|
2768
|
-
*
|
|
2769
|
-
* The traversal respects root-child pinned ordering (left/no/right) for the root node.
|
|
2770
|
-
* Results are cached per-node to avoid repeated recursion costs.
|
|
2771
|
-
*
|
|
2772
|
-
* @returns {ColumnStructureModel[]} Array of all nodes in DFS order.
|
|
2773
|
-
*/
|
|
2774
|
-
dfsIterator() {
|
|
2775
|
-
if (this.iteratorCacheMap.has('dfs')) {
|
|
2776
|
-
return this.iteratorCacheMap.get('dfs');
|
|
2777
|
-
}
|
|
2778
|
-
const localResult = [];
|
|
2779
|
-
const children = this.orderChildrenByPinned();
|
|
2780
|
-
if (!this.isRoot()) {
|
|
2781
|
-
localResult.push(this);
|
|
2782
|
-
}
|
|
2783
|
-
if (children && children.length > 0) {
|
|
2784
|
-
children.forEach((child) => {
|
|
2785
|
-
localResult.push(...child.dfsIterator());
|
|
2786
|
-
});
|
|
2787
|
-
}
|
|
2788
|
-
this.iteratorCacheMap.set('dfs', localResult);
|
|
2789
|
-
return localResult;
|
|
2790
|
-
}
|
|
2791
|
-
}
|
|
2792
|
-
ColumnStructureModel.ROOT_LEVEL = -1;
|
|
2793
|
-
ColumnStructureModel.ROOT_KEY = '#root-model#';
|
|
2794
|
-
|
|
2795
|
-
var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
2796
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2797
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
2798
|
-
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;
|
|
2799
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2800
|
-
};
|
|
2801
|
-
/**
|
|
2802
|
-
* Controller responsible for building and keeping the ColumnStructureModel in sync
|
|
2803
|
-
* with the component's `columns` and `groupColumns` properties.
|
|
2804
|
-
*
|
|
2805
|
-
* This slimmer maps relevant component fields and lifecycle/watch hooks to
|
|
2806
|
-
* automatically rebuild the column structure when inputs change.
|
|
2807
|
-
*/
|
|
2808
|
-
class VegaTableColumnStructureModelController extends globalSlimmerRegistry.VegaSlimmer {
|
|
2809
|
-
/**
|
|
2810
|
-
* Component lifecycle hook mapped to the host's componentWillLoad.
|
|
2811
|
-
* Initializes the ColumnStructureModel prior to initial render.
|
|
2812
|
-
*/
|
|
2813
|
-
componentWillLoad() {
|
|
2814
|
-
this.setColumnStructureModel();
|
|
2815
|
-
}
|
|
2816
|
-
/**
|
|
2817
|
-
* Watch handler mapped to the host's watchColumns.
|
|
2818
|
-
* Rebuilds the ColumnStructureModel when `columns` changes.
|
|
2819
|
-
*/
|
|
2820
|
-
watchColumns() {
|
|
2821
|
-
this.setColumnStructureModel();
|
|
2822
|
-
}
|
|
2823
|
-
/**
|
|
2824
|
-
* Watch handler mapped to the host's watchGroupColumns.
|
|
2825
|
-
* Rebuilds the ColumnStructureModel when `groupColumns` changes.
|
|
2826
|
-
*/
|
|
2827
|
-
watchGroupColumns() {
|
|
2828
|
-
this.setColumnStructureModel();
|
|
2829
|
-
}
|
|
2830
|
-
/**
|
|
2831
|
-
* Build and assign the ColumnStructureModel from current `columns` and `groupColumns`.
|
|
2832
|
-
* Uses `ColumnStructureModel.from` which returns a root model representing the column tree.
|
|
2833
|
-
*/
|
|
2834
|
-
setColumnStructureModel() {
|
|
2835
|
-
this.columnStructureModel = ColumnStructureModel.from(this.columns, this.groupColumns);
|
|
2836
|
-
}
|
|
2837
|
-
}
|
|
2838
|
-
__decorate$E([
|
|
2839
|
-
globalSlimmerRegistry.MapToComponentField()
|
|
2840
|
-
], VegaTableColumnStructureModelController.prototype, "host", void 0);
|
|
2841
|
-
__decorate$E([
|
|
2842
|
-
globalSlimmerRegistry.MapToComponentField()
|
|
2843
|
-
], VegaTableColumnStructureModelController.prototype, "columns", void 0);
|
|
2844
|
-
__decorate$E([
|
|
2845
|
-
globalSlimmerRegistry.MapToComponentField()
|
|
2846
|
-
], VegaTableColumnStructureModelController.prototype, "groupColumns", void 0);
|
|
2847
|
-
__decorate$E([
|
|
2848
|
-
globalSlimmerRegistry.MapToComponentField({ writable: true })
|
|
2849
|
-
], VegaTableColumnStructureModelController.prototype, "columnStructureModel", void 0);
|
|
2850
|
-
__decorate$E([
|
|
2851
|
-
globalSlimmerRegistry.MapToComponentMethod('componentWillLoad')
|
|
2852
|
-
], VegaTableColumnStructureModelController.prototype, "componentWillLoad", null);
|
|
2853
|
-
__decorate$E([
|
|
2854
|
-
globalSlimmerRegistry.MapToComponentMethod('watchColumns')
|
|
2855
|
-
], VegaTableColumnStructureModelController.prototype, "watchColumns", null);
|
|
2856
|
-
__decorate$E([
|
|
2857
|
-
globalSlimmerRegistry.MapToComponentMethod('watchGroupColumns')
|
|
2858
|
-
], VegaTableColumnStructureModelController.prototype, "watchGroupColumns", null);
|
|
2859
|
-
|
|
2860
|
-
/**
|
|
2861
|
-
* ColumnRenderInputModel
|
|
2862
|
-
*
|
|
2863
|
-
* Render-time representation of a column or group node used by header/body renderers.
|
|
2864
|
-
* Built from a ColumnStructureModel tree, it carries computed layout metadata required
|
|
2865
|
-
* for rendering and pinned/sticky calculations (colSpan, rowSpan, pinned boundaries, etc).
|
|
2866
|
-
*
|
|
2867
|
-
* Instances form a forest (root-level nodes in an array) that mirrors the structure model
|
|
2868
|
-
* but contains additional render-specific properties and parent/child links for renderers.
|
|
2869
|
-
*/
|
|
2870
|
-
class ColumnRenderInputModel {
|
|
2871
|
-
/**
|
|
2872
|
-
* Create a new render input node.
|
|
2873
|
-
*
|
|
2874
|
-
* @param {string} key - Unique key (matches ColumnStructureModel.key).
|
|
2875
|
-
* @param {string} label - Optional display label (from structure model).
|
|
2876
|
-
* @param {VegaTablePinnedType} pinned - Pinned type for this node ('left' | 'right' | null).
|
|
2877
|
-
* @param {Nullable<number>} colSpan - Number of visual columns spanned by this node's subtree.
|
|
2878
|
-
* @param {Nullable<number>} rowSpan - Number of header rows this node should span.
|
|
2879
|
-
* @param {boolean} isViewStart - True when this node is the start of a visible view range.
|
|
2880
|
-
* @param {boolean} isViewEnd - True when this node is the end of a visible view range.
|
|
2881
|
-
* @param {boolean} isLeftEndPinned - True when node is last left-pinned sibling.
|
|
2882
|
-
* @param {boolean} isRightStartPinned - True when node is first right-pinned sibling.
|
|
2883
|
-
* @param {boolean} isNoPinnedEnd - True when node is last non-pinned sibling.
|
|
2884
|
-
* @param {boolean} headHasGroupColumn - Header contains group columns (affects rowSpan).
|
|
2885
|
-
* @param {boolean} headHasPinnedColumn - Header contains pinned columns.
|
|
2886
|
-
* @param {number} headMaxDepth - Maximum header depth (number of header rows).
|
|
2887
|
-
* @param {number} level - Level/index of this node within header rows (0-based).
|
|
2888
|
-
* @param {number} columnIndex - Sequential leaf index (used for ordering).
|
|
2889
|
-
* @param {Nullable<ColumnRenderInputModel>} parent - Parent render input node (null for root-level).
|
|
2890
|
-
* @param {ColumnRenderInputModel[]} children - Child render input nodes.
|
|
2891
|
-
*/
|
|
2892
|
-
constructor(key, label, pinned, colSpan, rowSpan, isViewStart, isViewEnd, isLeftEndPinned, isRightStartPinned, isNoPinnedEnd, headHasGroupColumn, headHasPinnedColumn, headMaxDepth, level, columnIndex, parent, children = []) {
|
|
2893
|
-
this.key = key;
|
|
2894
|
-
this.label = label;
|
|
2895
|
-
this.pinned = pinned;
|
|
2896
|
-
this.colSpan = colSpan;
|
|
2897
|
-
this.rowSpan = rowSpan;
|
|
2898
|
-
this.isViewStart = isViewStart;
|
|
2899
|
-
this.isViewEnd = isViewEnd;
|
|
2900
|
-
this.isLeftEndPinned = isLeftEndPinned;
|
|
2901
|
-
this.isRightStartPinned = isRightStartPinned;
|
|
2902
|
-
this.isNoPinnedEnd = isNoPinnedEnd;
|
|
2903
|
-
this.headHasGroupColumn = headHasGroupColumn;
|
|
2904
|
-
this.headHasPinnedColumn = headHasPinnedColumn;
|
|
2905
|
-
this.headMaxDepth = headMaxDepth;
|
|
2906
|
-
this.level = level;
|
|
2907
|
-
this.columnIndex = columnIndex;
|
|
2908
|
-
this.parent = parent;
|
|
2909
|
-
this.children = children;
|
|
2910
|
-
this.iteratorCacheMap = new Map();
|
|
2911
|
-
this.leaves = [];
|
|
2912
|
-
}
|
|
2913
|
-
/**
|
|
2914
|
-
* Build a forest of ColumnRenderInputModel nodes from a ColumnStructureModel root.
|
|
2915
|
-
*
|
|
2916
|
-
* @param {ColumnStructureModel} rootModel - Root ColumnStructureModel that supplies tree and level data.
|
|
2917
|
-
* @returns {ColumnRenderInputModel[]} Array of root-level ColumnRenderInputModel nodes (the render forest).
|
|
2918
|
-
*/
|
|
2919
|
-
static from(rootModel) {
|
|
2920
|
-
const renderInputs = [];
|
|
2921
|
-
const parentStack = [];
|
|
2922
|
-
const maxLevel = rootModel.getMaxDepth();
|
|
2923
|
-
const hasGroupColumn = rootModel.hasGroupColumn();
|
|
2924
|
-
const hasPinnedColumn = rootModel.hasLeftPinnedColumn() || rootModel.hasRightPinnedColumn();
|
|
2925
|
-
let columnIndex = 0;
|
|
2926
|
-
// Iterate structure model (DFS by default) and construct render nodes.
|
|
2927
|
-
rootModel.iterator().forEach((model) => {
|
|
2928
|
-
const parent = model.level > 0 ? parentStack[model.level - 1] : null;
|
|
2929
|
-
const isParentStart = hasGroupColumn && this.isParentStart(model);
|
|
2930
|
-
const isParentEnd = hasGroupColumn && this.isParentEnd(model);
|
|
2931
|
-
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
|
|
2932
|
-
? parent.isLeftEndPinned && isParentEnd
|
|
2933
|
-
: hasPinnedColumn && this.isLeftEndPinned(model), parent
|
|
2934
|
-
? parent.isRightStartPinned && isParentStart
|
|
2935
|
-
: hasPinnedColumn && this.isRightStartPinned(model), parent ? parent.isNoPinnedEnd && isParentEnd : hasPinnedColumn && this.isNoPinnedEnd(model), hasGroupColumn, hasPinnedColumn, maxLevel, model.level, columnIndex, parent);
|
|
2936
|
-
// Attach to parent if present, otherwise add to root-level array.
|
|
2937
|
-
parent ? parent.children.push(renderInput) : renderInputs.push(renderInput);
|
|
2938
|
-
// Maintain parent stack keyed by level to allow next nodes to find their parent.
|
|
2939
|
-
parentStack[model.level] = renderInput;
|
|
2940
|
-
parentStack.length = model.level + 1;
|
|
2941
|
-
// Increment leaf index when encountering a leaf structure node.
|
|
2942
|
-
if (model.isLeaf())
|
|
2943
|
-
columnIndex++;
|
|
2944
|
-
});
|
|
2945
|
-
return renderInputs;
|
|
2946
|
-
}
|
|
2947
|
-
/**
|
|
2948
|
-
* True when the provided structure model is the last left-pinned sibling in its parent's children.
|
|
2949
|
-
* Used to mark boundary nodes for left-pinned groups.
|
|
2950
|
-
*
|
|
2951
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2952
|
-
* @returns {boolean} True when model is the last left-pinned sibling.
|
|
2953
|
-
*/
|
|
2954
|
-
static isLeftEndPinned(model) {
|
|
2955
|
-
const siblings = model.parent
|
|
2956
|
-
.getOrderedChildren()
|
|
2957
|
-
.filter((child) => child.pinned === 'left');
|
|
2958
|
-
return siblings[siblings.length - 1] === model;
|
|
2959
|
-
}
|
|
2960
|
-
/**
|
|
2961
|
-
* True when the provided structure model is the first right-pinned sibling in its parent's children.
|
|
2962
|
-
* Used to mark boundary nodes for right-pinned groups.
|
|
2963
|
-
*
|
|
2964
|
-
* @param {ColumnStructureModel} model - Structure model to check.
|
|
2965
|
-
* @returns {boolean} True when model is the first right-pinned sibling.
|
|
2966
|
-
*/
|
|
2967
|
-
static isRightStartPinned(model) {
|
|
2968
|
-
const siblings = model.parent
|
|
2969
|
-
.getOrderedChildren()
|
|
2970
|
-
.filter((child) => child.pinned === 'right');
|
|
2971
|
-
return siblings[0] === model;
|
|
3141
|
+
hasGroupColumn() {
|
|
3142
|
+
return !!this.children.find((model) => !model.isLeaf());
|
|
2972
3143
|
}
|
|
2973
3144
|
/**
|
|
2974
|
-
*
|
|
2975
|
-
* Useful to handle the 'no-pinned-end' condition.
|
|
3145
|
+
* Checks if this subtree contains any left pinned children.
|
|
2976
3146
|
*
|
|
2977
|
-
* @
|
|
2978
|
-
* @returns {boolean} True when model is the last non-pinned sibling.
|
|
3147
|
+
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2979
3148
|
*/
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
.getOrderedChildren()
|
|
2983
|
-
.filter((child) => !child.pinned);
|
|
2984
|
-
return siblings[siblings.length - 1] === model;
|
|
3149
|
+
hasLeftPinnedColumn() {
|
|
3150
|
+
return !!this.children.find((model) => model.pinned === 'left');
|
|
2985
3151
|
}
|
|
2986
3152
|
/**
|
|
2987
|
-
*
|
|
3153
|
+
* Checks if this subtree contains any right pinned children.
|
|
2988
3154
|
*
|
|
2989
|
-
* @
|
|
2990
|
-
* @returns {boolean} True when model is the first child.
|
|
3155
|
+
* @returns {boolean} True if any immediate child has a pinned value.
|
|
2991
3156
|
*/
|
|
2992
|
-
|
|
2993
|
-
return
|
|
3157
|
+
hasRightPinnedColumn() {
|
|
3158
|
+
return !!this.children.find((model) => model.pinned === 'right');
|
|
2994
3159
|
}
|
|
2995
3160
|
/**
|
|
2996
|
-
*
|
|
3161
|
+
* Checks if this node is a leaf (no children).
|
|
2997
3162
|
*
|
|
2998
|
-
* @
|
|
2999
|
-
* @returns {boolean} True when model is the last child.
|
|
3163
|
+
* @returns {boolean} True when this node has no children.
|
|
3000
3164
|
*/
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
return parentChildren[parentChildren.length - 1] === model;
|
|
3165
|
+
isLeaf() {
|
|
3166
|
+
return !this.children || this.children.length === 0;
|
|
3004
3167
|
}
|
|
3005
3168
|
/**
|
|
3006
|
-
*
|
|
3007
|
-
* of nodes present at any single level (visual column span).
|
|
3169
|
+
* Return an array of nodes for this subtree using the specified traversal mode.
|
|
3008
3170
|
*
|
|
3009
|
-
*
|
|
3010
|
-
*
|
|
3171
|
+
* Currently only depth-first search ('dfs') is supported. The returned array is
|
|
3172
|
+
* cached per-mode to avoid repeated traversal costs.
|
|
3173
|
+
*
|
|
3174
|
+
* @param {IteratorMode} mode - Traversal mode to use. Defaults to 'dfs'.
|
|
3175
|
+
* @returns {ColumnStructureModel[]} Array of ColumnStructureModel nodes in traversal order.
|
|
3011
3176
|
*/
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
});
|
|
3018
|
-
return Math.max(...Object.values(rowMap));
|
|
3177
|
+
iterator(mode = 'dfs') {
|
|
3178
|
+
if (mode === 'dfs') {
|
|
3179
|
+
return this.dfsIterator();
|
|
3180
|
+
}
|
|
3181
|
+
return [];
|
|
3019
3182
|
}
|
|
3020
3183
|
/**
|
|
3021
|
-
*
|
|
3022
|
-
* Caches the result on first call and returns cached array on subsequent calls.
|
|
3184
|
+
* Gets all leaf nodes in the subtree, with caching.
|
|
3023
3185
|
*
|
|
3024
|
-
*
|
|
3186
|
+
* Subsequent calls return the cached array until the underlying model is rebuilt.
|
|
3187
|
+
*
|
|
3188
|
+
* @returns {ColumnStructureModel[]} Array of leaf column models.
|
|
3025
3189
|
*/
|
|
3026
3190
|
getLeaves() {
|
|
3027
3191
|
if (this.leaves.length > 0) {
|
|
3028
3192
|
return this.leaves;
|
|
3029
3193
|
}
|
|
3030
|
-
const leaves = this.
|
|
3194
|
+
const leaves = this.dfsIterator().filter((model) => model.isLeaf());
|
|
3031
3195
|
this.leaves = leaves;
|
|
3032
3196
|
return leaves;
|
|
3033
3197
|
}
|
|
3034
3198
|
/**
|
|
3035
|
-
*
|
|
3199
|
+
* For root nodes, returns children ordered by pinned type (left, none, right).
|
|
3200
|
+
* For non-root nodes, returns children in their natural order.
|
|
3036
3201
|
*
|
|
3037
|
-
* @
|
|
3038
|
-
* @returns {ColumnRenderInputModel[]} Traversal-ordered array of nodes.
|
|
3202
|
+
* @returns {ColumnStructureModel[]} Array of child column models.
|
|
3039
3203
|
*/
|
|
3040
|
-
|
|
3041
|
-
if (
|
|
3042
|
-
return this.
|
|
3204
|
+
getOrderedChildren() {
|
|
3205
|
+
if (!this.isRoot())
|
|
3206
|
+
return this.children;
|
|
3207
|
+
return this.orderedChildren;
|
|
3208
|
+
}
|
|
3209
|
+
/**
|
|
3210
|
+
* Orders root children by pinned type (left, none, right) and caches the result.
|
|
3211
|
+
*
|
|
3212
|
+
* For non-root nodes this method returns children in their natural order.
|
|
3213
|
+
*
|
|
3214
|
+
* @returns {ColumnStructureModel[]} Array of ordered child column models.
|
|
3215
|
+
*/
|
|
3216
|
+
orderChildrenByPinned() {
|
|
3217
|
+
if (!this.isRoot())
|
|
3218
|
+
return this.children;
|
|
3219
|
+
if (this.orderedChildren.length > 0) {
|
|
3220
|
+
return this.orderedChildren;
|
|
3043
3221
|
}
|
|
3044
|
-
|
|
3045
|
-
|
|
3222
|
+
const leftPinned = [];
|
|
3223
|
+
const noPinned = [];
|
|
3224
|
+
const rightPinned = [];
|
|
3225
|
+
this.children.forEach((child) => {
|
|
3226
|
+
if (child.pinned === 'left') {
|
|
3227
|
+
leftPinned.push(child);
|
|
3228
|
+
}
|
|
3229
|
+
else if (child.pinned === 'right') {
|
|
3230
|
+
rightPinned.push(child);
|
|
3231
|
+
}
|
|
3232
|
+
else {
|
|
3233
|
+
noPinned.push(child);
|
|
3234
|
+
}
|
|
3235
|
+
});
|
|
3236
|
+
const children = [...leftPinned, ...noPinned, ...rightPinned];
|
|
3237
|
+
this.orderedChildren = children;
|
|
3238
|
+
return children;
|
|
3046
3239
|
}
|
|
3047
3240
|
/**
|
|
3048
|
-
*
|
|
3049
|
-
* Caches the result for the 'dfs' mode to avoid repeated recursion.
|
|
3241
|
+
* Checks if this node is the root node.
|
|
3050
3242
|
*
|
|
3051
|
-
* @returns {
|
|
3243
|
+
* @returns {boolean} True if root node, false otherwise.
|
|
3244
|
+
*/
|
|
3245
|
+
isRoot() {
|
|
3246
|
+
return this.level === ColumnStructureModel.ROOT_LEVEL;
|
|
3247
|
+
}
|
|
3248
|
+
/**
|
|
3249
|
+
* Performs a depth-first traversal of the column structure.
|
|
3250
|
+
*
|
|
3251
|
+
* The traversal respects root-child pinned ordering (left/no/right) for the root node.
|
|
3252
|
+
* Results are cached per-node to avoid repeated recursion costs.
|
|
3253
|
+
*
|
|
3254
|
+
* @returns {ColumnStructureModel[]} Array of all nodes in DFS order.
|
|
3052
3255
|
*/
|
|
3053
3256
|
dfsIterator() {
|
|
3054
3257
|
if (this.iteratorCacheMap.has('dfs')) {
|
|
3055
3258
|
return this.iteratorCacheMap.get('dfs');
|
|
3056
3259
|
}
|
|
3057
3260
|
const localResult = [];
|
|
3058
|
-
|
|
3059
|
-
if (this.
|
|
3060
|
-
|
|
3261
|
+
const children = this.orderChildrenByPinned();
|
|
3262
|
+
if (!this.isRoot()) {
|
|
3263
|
+
localResult.push(this);
|
|
3264
|
+
}
|
|
3265
|
+
if (children && children.length > 0) {
|
|
3266
|
+
children.forEach((child) => {
|
|
3061
3267
|
localResult.push(...child.dfsIterator());
|
|
3062
3268
|
});
|
|
3063
3269
|
}
|
|
3064
3270
|
this.iteratorCacheMap.set('dfs', localResult);
|
|
3065
3271
|
return localResult;
|
|
3066
3272
|
}
|
|
3273
|
+
}
|
|
3274
|
+
ColumnStructureModel.ROOT_LEVEL = -1;
|
|
3275
|
+
ColumnStructureModel.ROOT_KEY = '#root-model#';
|
|
3276
|
+
|
|
3277
|
+
var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
3278
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3279
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
3280
|
+
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;
|
|
3281
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
3282
|
+
};
|
|
3283
|
+
/**
|
|
3284
|
+
* Controller responsible for building and keeping the ColumnStructureModel in sync
|
|
3285
|
+
* with the component's `columns` and `groupColumns` properties.
|
|
3286
|
+
*
|
|
3287
|
+
* This slimmer maps relevant component fields and lifecycle/watch hooks to
|
|
3288
|
+
* automatically rebuild the column structure when inputs change.
|
|
3289
|
+
*/
|
|
3290
|
+
class VegaTableColumnStructureModelController extends globalSlimmerRegistry.VegaSlimmer {
|
|
3067
3291
|
/**
|
|
3068
|
-
*
|
|
3069
|
-
*
|
|
3070
|
-
* @returns {boolean} True when node is a leaf.
|
|
3292
|
+
* Component lifecycle hook mapped to the host's componentWillLoad.
|
|
3293
|
+
* Initializes the ColumnStructureModel prior to initial render.
|
|
3071
3294
|
*/
|
|
3072
|
-
|
|
3073
|
-
|
|
3295
|
+
componentWillLoad() {
|
|
3296
|
+
this.setColumnStructureModel();
|
|
3297
|
+
}
|
|
3298
|
+
/**
|
|
3299
|
+
* Watch handler mapped to the host's watchColumns.
|
|
3300
|
+
* Rebuilds the ColumnStructureModel when `columns` changes.
|
|
3301
|
+
*/
|
|
3302
|
+
watchColumns() {
|
|
3303
|
+
this.setColumnStructureModel();
|
|
3304
|
+
}
|
|
3305
|
+
/**
|
|
3306
|
+
* Watch handler mapped to the host's watchGroupColumns.
|
|
3307
|
+
* Rebuilds the ColumnStructureModel when `groupColumns` changes.
|
|
3308
|
+
*/
|
|
3309
|
+
watchGroupColumns() {
|
|
3310
|
+
this.setColumnStructureModel();
|
|
3311
|
+
}
|
|
3312
|
+
/**
|
|
3313
|
+
* Build and assign the ColumnStructureModel from current `columns` and `groupColumns`.
|
|
3314
|
+
* Uses `ColumnStructureModel.from` which returns a root model representing the column tree.
|
|
3315
|
+
*/
|
|
3316
|
+
setColumnStructureModel() {
|
|
3317
|
+
this.columnStructureModel = ColumnStructureModel.from(this.columns, this.groupColumns);
|
|
3074
3318
|
}
|
|
3075
3319
|
}
|
|
3320
|
+
__decorate$E([
|
|
3321
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
3322
|
+
], VegaTableColumnStructureModelController.prototype, "host", void 0);
|
|
3323
|
+
__decorate$E([
|
|
3324
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
3325
|
+
], VegaTableColumnStructureModelController.prototype, "columns", void 0);
|
|
3326
|
+
__decorate$E([
|
|
3327
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
3328
|
+
], VegaTableColumnStructureModelController.prototype, "groupColumns", void 0);
|
|
3329
|
+
__decorate$E([
|
|
3330
|
+
globalSlimmerRegistry.MapToComponentField({ writable: true })
|
|
3331
|
+
], VegaTableColumnStructureModelController.prototype, "columnStructureModel", void 0);
|
|
3332
|
+
__decorate$E([
|
|
3333
|
+
globalSlimmerRegistry.MapToComponentMethod('componentWillLoad')
|
|
3334
|
+
], VegaTableColumnStructureModelController.prototype, "componentWillLoad", null);
|
|
3335
|
+
__decorate$E([
|
|
3336
|
+
globalSlimmerRegistry.MapToComponentMethod('watchColumns')
|
|
3337
|
+
], VegaTableColumnStructureModelController.prototype, "watchColumns", null);
|
|
3338
|
+
__decorate$E([
|
|
3339
|
+
globalSlimmerRegistry.MapToComponentMethod('watchGroupColumns')
|
|
3340
|
+
], VegaTableColumnStructureModelController.prototype, "watchGroupColumns", null);
|
|
3076
3341
|
|
|
3077
3342
|
var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
3078
3343
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -3287,6 +3552,12 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3287
3552
|
},
|
|
3288
3553
|
});
|
|
3289
3554
|
this.previouslyStyledCells = new Set();
|
|
3555
|
+
// Each set tracks cells where exactly one dynamic class was added — cleared per class so
|
|
3556
|
+
// that static classes from render() on the same cell are never inadvertently stripped
|
|
3557
|
+
// (e.g. a cell that is both isRightStartPinned and the last-visible body cell).
|
|
3558
|
+
this.dynamicRightDividerCells = new Set();
|
|
3559
|
+
this.dynamicLeftDividerCells = new Set();
|
|
3560
|
+
this.dynamicHideRightBorderCells = new Set();
|
|
3290
3561
|
this.clearPinnedPositionsTaskQueue = new synchronizeTaskQueue.SynchronizeTaskQueue(1);
|
|
3291
3562
|
}
|
|
3292
3563
|
componentDidLoad() {
|
|
@@ -3294,7 +3565,17 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3294
3565
|
async componentDidRender() {
|
|
3295
3566
|
await this.clearPinnedPositionsTaskQueue.runTask();
|
|
3296
3567
|
this.updateTableRowPinnedPosition();
|
|
3297
|
-
this.updateTableCellPinnedPosition();
|
|
3568
|
+
const unreadyCells = this.updateTableCellPinnedPosition();
|
|
3569
|
+
if (unreadyCells.length > 0) {
|
|
3570
|
+
// In dev builds, Stencil's HMR flag forces loadModule() to always use a
|
|
3571
|
+
// dynamic import(), so a brand-new cell's first render is deferred. We wait
|
|
3572
|
+
// for each unready cell via componentOnReady() — which resolves exactly when
|
|
3573
|
+
// the cell's shadow <td> is first rendered — then apply sticky positioning.
|
|
3574
|
+
// In production (hotModuleReplacement=false) loadModule() is synchronous, so
|
|
3575
|
+
// cells are always ready by componentDidRender and this branch is never reached.
|
|
3576
|
+
await Promise.all(unreadyCells.map((cell) => cell.componentOnReady()));
|
|
3577
|
+
this.updateTableCellPinnedPosition();
|
|
3578
|
+
}
|
|
3298
3579
|
}
|
|
3299
3580
|
watchColumnStructureModel() {
|
|
3300
3581
|
void this.clearPinnedPositionsTaskQueue.enqueue({
|
|
@@ -3306,24 +3587,165 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3306
3587
|
updateTableCellPinnedPosition() {
|
|
3307
3588
|
if (!this.columnStructureModel.hasLeftPinnedColumn() &&
|
|
3308
3589
|
!this.columnStructureModel.hasRightPinnedColumn())
|
|
3309
|
-
return;
|
|
3590
|
+
return [];
|
|
3591
|
+
// Clear stale dynamic boundary classes before re-evaluating breakpoint visibility.
|
|
3592
|
+
// This ensures the classes are removed when the viewport grows back (e.g. column B
|
|
3593
|
+
// becomes visible again) and not only when the column structure changes.
|
|
3594
|
+
// Each set only removes the single class it tracks, preserving any other static
|
|
3595
|
+
// border classes that render() placed on the same cell (VD-9565).
|
|
3596
|
+
this.dynamicRightDividerCells.forEach((cell) => cell.classList.remove('right-divider'));
|
|
3597
|
+
this.dynamicRightDividerCells.clear();
|
|
3598
|
+
this.dynamicLeftDividerCells.forEach((cell) => cell.classList.remove('left-divider'));
|
|
3599
|
+
this.dynamicLeftDividerCells.clear();
|
|
3600
|
+
this.dynamicHideRightBorderCells.forEach((cell) => cell.classList.remove('hide-right-border'));
|
|
3601
|
+
this.dynamicHideRightBorderCells.clear();
|
|
3310
3602
|
// if not have head row, it means no pinned, so no need to update
|
|
3311
3603
|
const row = this.host.shadowRoot.querySelector('vega-table-head-row');
|
|
3312
3604
|
// to avoid window resize before table rendered.
|
|
3313
3605
|
// @see{module:resize-pinned-position-by-edit-row}
|
|
3314
3606
|
/* istanbul ignore next */
|
|
3315
3607
|
if (!row)
|
|
3316
|
-
return;
|
|
3608
|
+
return [];
|
|
3317
3609
|
const headCellRenderInputMap = this.vegaTableRenderInputController.getHeadCellRenderInputMap();
|
|
3318
3610
|
const pinnedColumnBodyCellRenderInputMap = this.vegaTableRenderInputController.getPinnedColumnBodyCellRenderInputMap();
|
|
3319
3611
|
const [prevShadowThWidth, nextShadowThWidth] = this.getRowShadowThWidths();
|
|
3320
3612
|
const leafWidths = this.getLeafWidths();
|
|
3613
|
+
// Track the last visible left-pinned head cell and first visible right-pinned head cell
|
|
3614
|
+
// to dynamically apply boundary classes when breakpoint-hidden columns shift the boundary.
|
|
3615
|
+
let lastVisibleLeftPinnedHeadCell = null;
|
|
3616
|
+
let firstVisibleRightPinnedHeadCell = null;
|
|
3617
|
+
let lastVisibleRightPinnedHeadCell = null;
|
|
3321
3618
|
headCellRenderInputMap.forEach((renderInput, headCell) => {
|
|
3619
|
+
var _a;
|
|
3620
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3621
|
+
const shadowCell = (_a = headCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('th, td');
|
|
3622
|
+
const isVisible = shadowCell ? shadowCell.getBoundingClientRect().width > 0 : false;
|
|
3322
3623
|
this.updateCellPinnedPosition(renderInput, headCell, prevShadowThWidth, leafWidths, nextShadowThWidth);
|
|
3624
|
+
if (isVisible && renderInput.pinned === 'left') {
|
|
3625
|
+
lastVisibleLeftPinnedHeadCell = shadowCell;
|
|
3626
|
+
}
|
|
3627
|
+
if (isVisible && renderInput.pinned === 'right' && !firstVisibleRightPinnedHeadCell) {
|
|
3628
|
+
firstVisibleRightPinnedHeadCell = shadowCell;
|
|
3629
|
+
}
|
|
3630
|
+
if (isVisible && renderInput.pinned === 'right') {
|
|
3631
|
+
lastVisibleRightPinnedHeadCell = shadowCell;
|
|
3632
|
+
}
|
|
3323
3633
|
});
|
|
3324
|
-
|
|
3325
|
-
|
|
3634
|
+
// Remove stale entries (disconnected cells) left over from prior renders (e.g. after drag reorder).
|
|
3635
|
+
pinnedColumnBodyCellRenderInputMap.forEach((_, bodyCell) => {
|
|
3636
|
+
/* istanbul ignore next -- defensive cleanup for disconnected cells; jsdom always keeps cells connected */
|
|
3637
|
+
if (!(bodyCell === null || bodyCell === void 0 ? void 0 : bodyCell.isConnected)) {
|
|
3638
|
+
pinnedColumnBodyCellRenderInputMap.delete(bodyCell);
|
|
3639
|
+
}
|
|
3640
|
+
});
|
|
3641
|
+
// Track last visible left-pinned body cells per row for boundary class propagation.
|
|
3642
|
+
const lastVisibleLeftPinnedBodyCells = new Map();
|
|
3643
|
+
const firstVisibleRightPinnedBodyCells = new Map();
|
|
3644
|
+
const lastVisibleRightPinnedBodyCells = new Map();
|
|
3645
|
+
// Collect body cells whose shadow DOM is not yet ready (newly created cells).
|
|
3646
|
+
const unreadyCells = [];
|
|
3647
|
+
pinnedColumnBodyCellRenderInputMap.forEach((renderInput, bodyCell) => {
|
|
3648
|
+
var _a;
|
|
3649
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3650
|
+
const shadowCell = (_a = bodyCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('th, td');
|
|
3651
|
+
const isVisible = shadowCell ? shadowCell.getBoundingClientRect().width > 0 : false;
|
|
3652
|
+
// Shadow DOM not ready yet — cell was just created (e.g. colspan collapsed after drag).
|
|
3653
|
+
if (['left', 'right'].includes(renderInput.pinned) && !shadowCell) {
|
|
3654
|
+
unreadyCells.push(bodyCell);
|
|
3655
|
+
return;
|
|
3656
|
+
}
|
|
3657
|
+
this.updateCellPinnedPosition(renderInput, bodyCell, prevShadowThWidth, leafWidths, nextShadowThWidth);
|
|
3658
|
+
if (isVisible && renderInput.pinned === 'left') {
|
|
3659
|
+
// Use the parent row as the grouping key for per-row tracking
|
|
3660
|
+
const parentRow = bodyCell.closest('vega-table-row');
|
|
3661
|
+
if (parentRow) {
|
|
3662
|
+
lastVisibleLeftPinnedBodyCells.set(parentRow, shadowCell);
|
|
3663
|
+
}
|
|
3664
|
+
}
|
|
3665
|
+
if (isVisible && renderInput.pinned === 'right') {
|
|
3666
|
+
const parentRow = bodyCell.closest('vega-table-row');
|
|
3667
|
+
if (parentRow && !firstVisibleRightPinnedBodyCells.has(parentRow)) {
|
|
3668
|
+
firstVisibleRightPinnedBodyCells.set(parentRow, shadowCell);
|
|
3669
|
+
}
|
|
3670
|
+
if (parentRow) {
|
|
3671
|
+
lastVisibleRightPinnedBodyCells.set(parentRow, shadowCell);
|
|
3672
|
+
}
|
|
3673
|
+
}
|
|
3326
3674
|
});
|
|
3675
|
+
// Apply boundary divider to the last visible left-pinned cell when the static
|
|
3676
|
+
// isLeftEndPinned column is hidden by breakpoint.
|
|
3677
|
+
if (lastVisibleLeftPinnedHeadCell &&
|
|
3678
|
+
!lastVisibleLeftPinnedHeadCell.classList.contains('right-divider')) {
|
|
3679
|
+
// Check if the static boundary column is hidden — if leafWidths shows 0 for the
|
|
3680
|
+
// isLeftEndPinned column, the boundary has shifted.
|
|
3681
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3682
|
+
const staticBoundaryLeaf = leafRenderInputs.find((leaf) => leaf.isLeftEndPinned);
|
|
3683
|
+
if (staticBoundaryLeaf && leafWidths[staticBoundaryLeaf.columnIndex] === 0) {
|
|
3684
|
+
lastVisibleLeftPinnedHeadCell.classList.add('right-divider');
|
|
3685
|
+
this.dynamicRightDividerCells.add(lastVisibleLeftPinnedHeadCell);
|
|
3686
|
+
lastVisibleLeftPinnedBodyCells.forEach((cell) => {
|
|
3687
|
+
// Only track cells that don't already hold `right-divider` from their
|
|
3688
|
+
// static render (effectiveRenderInput.isLeftEndPinned). If we add a
|
|
3689
|
+
// statically-classed cell here, the per-class clear on the next resize
|
|
3690
|
+
// would erroneously remove the static class (VD-9540).
|
|
3691
|
+
if (!cell.classList.contains('right-divider')) {
|
|
3692
|
+
cell.classList.add('right-divider');
|
|
3693
|
+
this.dynamicRightDividerCells.add(cell);
|
|
3694
|
+
}
|
|
3695
|
+
});
|
|
3696
|
+
}
|
|
3697
|
+
}
|
|
3698
|
+
if (firstVisibleRightPinnedHeadCell &&
|
|
3699
|
+
!firstVisibleRightPinnedHeadCell.classList.contains('left-divider')) {
|
|
3700
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3701
|
+
const staticBoundaryLeaf = leafRenderInputs.find((leaf) => leaf.isRightStartPinned);
|
|
3702
|
+
if (staticBoundaryLeaf && leafWidths[staticBoundaryLeaf.columnIndex] === 0) {
|
|
3703
|
+
firstVisibleRightPinnedHeadCell.classList.add('left-divider');
|
|
3704
|
+
this.dynamicLeftDividerCells.add(firstVisibleRightPinnedHeadCell);
|
|
3705
|
+
firstVisibleRightPinnedBodyCells.forEach((cell) => {
|
|
3706
|
+
// Only track cells that don't already hold `left-divider` from their
|
|
3707
|
+
// static render (effectiveRenderInput.isRightStartPinned). If we add a
|
|
3708
|
+
// statically-classed cell here, the per-class clear on the next resize
|
|
3709
|
+
// would erroneously remove the static class (VD-9540).
|
|
3710
|
+
if (!cell.classList.contains('left-divider')) {
|
|
3711
|
+
cell.classList.add('left-divider');
|
|
3712
|
+
this.dynamicLeftDividerCells.add(cell);
|
|
3713
|
+
}
|
|
3714
|
+
});
|
|
3715
|
+
}
|
|
3716
|
+
}
|
|
3717
|
+
// Apply hide-right-border to the last visible right-pinned cell when the structural
|
|
3718
|
+
// right-most column is hidden by breakpoint. Without this, the new right-most visible
|
|
3719
|
+
// pinned column keeps a right border while the head cell suppresses it (head cells use
|
|
3720
|
+
// isViewEnd), leaving an extra vertical border at the table's right edge (VD-9565).
|
|
3721
|
+
if (lastVisibleRightPinnedHeadCell &&
|
|
3722
|
+
!lastVisibleRightPinnedHeadCell.classList.contains('hide-right-border')) {
|
|
3723
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs();
|
|
3724
|
+
// The structural right-most column is the last right-pinned leaf. Leaf render
|
|
3725
|
+
// inputs do not carry `isViewEnd` (unlike head render inputs), so identify the
|
|
3726
|
+
// boundary via `pinned` order instead.
|
|
3727
|
+
const rightPinnedLeaves = leafRenderInputs.filter((leaf) => leaf.pinned === 'right');
|
|
3728
|
+
const structuralEndLeaf = rightPinnedLeaves[rightPinnedLeaves.length - 1];
|
|
3729
|
+
if (structuralEndLeaf && leafWidths[structuralEndLeaf.columnIndex] === 0) {
|
|
3730
|
+
lastVisibleRightPinnedHeadCell.classList.add('hide-right-border');
|
|
3731
|
+
this.dynamicHideRightBorderCells.add(lastVisibleRightPinnedHeadCell);
|
|
3732
|
+
lastVisibleRightPinnedBodyCells.forEach((cell) => {
|
|
3733
|
+
// Only track cells that don't already hold `hide-right-border` from their
|
|
3734
|
+
// static render (isViewEnd/isNoPinnedEnd). Adding a statically-classed cell
|
|
3735
|
+
// here would let the per-class clear erroneously strip the static class on
|
|
3736
|
+
// the next resize (mirrors the VD-9540 divider guard).
|
|
3737
|
+
if (!cell.classList.contains('hide-right-border')) {
|
|
3738
|
+
cell.classList.add('hide-right-border');
|
|
3739
|
+
this.dynamicHideRightBorderCells.add(cell);
|
|
3740
|
+
}
|
|
3741
|
+
});
|
|
3742
|
+
}
|
|
3743
|
+
}
|
|
3744
|
+
// Sync colspan on pinned body cells that span breakpoint-hidden columns.
|
|
3745
|
+
// Chrome does not honour visibility:collapse / display:none on <col> for table layout,
|
|
3746
|
+
// so we directly adjust the shadow <td> colspan attribute to exclude hidden columns (VD-9540).
|
|
3747
|
+
this.syncColspanForHiddenColumns(leafWidths, pinnedColumnBodyCellRenderInputMap);
|
|
3748
|
+
return unreadyCells;
|
|
3327
3749
|
}
|
|
3328
3750
|
getRowShadowThWidths() {
|
|
3329
3751
|
const row = this.host.shadowRoot.querySelector('vega-table-head-row');
|
|
@@ -3360,6 +3782,33 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3360
3782
|
}
|
|
3361
3783
|
});
|
|
3362
3784
|
}
|
|
3785
|
+
syncColspanForHiddenColumns(leafWidths, pinnedColumnBodyCellRenderInputMap) {
|
|
3786
|
+
// NOTE: renderInput.colSpan is null for flat (non-group) tables — it only holds a value for
|
|
3787
|
+
// group-column subtree spans. We read the original colspan from the component prop (bodyCell.colSpan)
|
|
3788
|
+
// which is always the rendered value, unaffected by our shadow-DOM attribute writes.
|
|
3789
|
+
//
|
|
3790
|
+
// Skip when ALL leaf widths are 0 — that means the table is running in jsdom / an off-screen
|
|
3791
|
+
// context where getBoundingClientRect() always returns 0. Adjusting in that state would
|
|
3792
|
+
// incorrectly reduce every colspan to 1 (no visible columns = Math.max(1,0)=1).
|
|
3793
|
+
if (leafWidths.every((w) => w === 0))
|
|
3794
|
+
return;
|
|
3795
|
+
pinnedColumnBodyCellRenderInputMap.forEach((renderInput, bodyCell) => {
|
|
3796
|
+
var _a;
|
|
3797
|
+
const originalColspan = bodyCell.colSpan || 1;
|
|
3798
|
+
if (originalColspan <= 1)
|
|
3799
|
+
return;
|
|
3800
|
+
/* istanbul ignore next -- defensive null-guard: jsdom always provides shadowRoot */
|
|
3801
|
+
const shadowTd = (_a = bodyCell.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('td');
|
|
3802
|
+
/* istanbul ignore next -- shadowTd is always present in jsdom */
|
|
3803
|
+
if (!shadowTd)
|
|
3804
|
+
return;
|
|
3805
|
+
// Count how many columns in the span are visible (width > 0) — hidden breakpoint
|
|
3806
|
+
// columns have leafWidth === 0 because their <th> has display:none.
|
|
3807
|
+
const spanned = leafWidths.slice(renderInput.columnIndex, renderInput.columnIndex + originalColspan);
|
|
3808
|
+
const effectiveColspan = Math.max(1, spanned.filter((w) => w > 0).length);
|
|
3809
|
+
shadowTd.setAttribute('colspan', String(effectiveColspan));
|
|
3810
|
+
});
|
|
3811
|
+
}
|
|
3363
3812
|
updateCellPinnedPosition(renderInput, headCell, prevShadowThWidth, leafWidths, nextShadowThWidth) {
|
|
3364
3813
|
if (['left', 'right'].includes(renderInput.pinned)) {
|
|
3365
3814
|
const shadowCell = headCell.shadowRoot.querySelector('th, td');
|
|
@@ -3371,10 +3820,17 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3371
3820
|
this.updatePinnedPosition(shadowCell, 'left', position);
|
|
3372
3821
|
}
|
|
3373
3822
|
if (renderInput.pinned === 'right') {
|
|
3374
|
-
|
|
3823
|
+
// renderInput.colSpan is null for flat (non-group) tables — it only carries a value
|
|
3824
|
+
// for group-column subtree spans (multi-level headers). For body cells with an HTML
|
|
3825
|
+
// colspan (e.g. colSpan:2 spanning the last two right-pinned columns), we read the
|
|
3826
|
+
// actual span from the host component prop so the right-edge offset is calculated
|
|
3827
|
+
// over the full spanned width rather than just one column (VD-9565).
|
|
3828
|
+
const colSpan = typeGuard.isNonNullable(renderInput.colSpan)
|
|
3829
|
+
? renderInput.colSpan
|
|
3830
|
+
: headCell.colSpan || 1;
|
|
3375
3831
|
const position = nextShadowThWidth +
|
|
3376
3832
|
leafWidths
|
|
3377
|
-
.slice(renderInput.columnIndex +
|
|
3833
|
+
.slice(renderInput.columnIndex + colSpan)
|
|
3378
3834
|
.reduce((count, colWidth) => count + colWidth, 0);
|
|
3379
3835
|
this.updatePinnedPosition(shadowCell, 'right', position);
|
|
3380
3836
|
}
|
|
@@ -3429,6 +3885,15 @@ class VegaTablePinnedRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
|
3429
3885
|
cell.style.width = '';
|
|
3430
3886
|
}
|
|
3431
3887
|
});
|
|
3888
|
+
// Remove boundary classes only from cells where they were dynamically added
|
|
3889
|
+
// (breakpoint-shifted boundaries). Static boundary classes from renderInput are
|
|
3890
|
+
// re-applied by the cell's own render cycle.
|
|
3891
|
+
this.dynamicRightDividerCells.forEach((cell) => cell.classList.remove('right-divider'));
|
|
3892
|
+
this.dynamicRightDividerCells.clear();
|
|
3893
|
+
this.dynamicLeftDividerCells.forEach((cell) => cell.classList.remove('left-divider'));
|
|
3894
|
+
this.dynamicLeftDividerCells.clear();
|
|
3895
|
+
this.dynamicHideRightBorderCells.forEach((cell) => cell.classList.remove('hide-right-border'));
|
|
3896
|
+
this.dynamicHideRightBorderCells.clear();
|
|
3432
3897
|
this.previouslyStyledCells.clear();
|
|
3433
3898
|
}
|
|
3434
3899
|
updatePinnedPosition(cell, type, position) {
|
|
@@ -4099,7 +4564,7 @@ __decorate$A([
|
|
|
4099
4564
|
globalSlimmerRegistry.MapToComponentMethod('watchRowDraggable')
|
|
4100
4565
|
], VegaTableRowDraggableController.prototype, "watchRowDraggable", null);
|
|
4101
4566
|
|
|
4102
|
-
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}";
|
|
4567
|
+
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}";
|
|
4103
4568
|
|
|
4104
4569
|
var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
4105
4570
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -4141,6 +4606,7 @@ const VegaTable = class {
|
|
|
4141
4606
|
this.vegaTableBodyRenderer = new VegaTableBodyRenderer();
|
|
4142
4607
|
this.vegaTableRowRenderer = new VegaTableRowRenderer$1();
|
|
4143
4608
|
this.vegaTableCellRenderer = new VegaTableCellRenderer();
|
|
4609
|
+
this.vegaTableBodyColSpanController = new VegaTableBodyColSpanController();
|
|
4144
4610
|
this.vegaTablePaginationRenderer = new VegaTablePaginationRenderer();
|
|
4145
4611
|
this.vegaTableScrollContainerRenderer = new VegaTableScrollContainerRenderer();
|
|
4146
4612
|
this.vegaTableRowSelectionController = new VegaTableRowSelectionController$1();
|
|
@@ -4637,6 +5103,9 @@ __decorate$z([
|
|
|
4637
5103
|
__decorate$z([
|
|
4638
5104
|
globalSlimmerRegistry.InjectVegaSlimmer()
|
|
4639
5105
|
], VegaTable.prototype, "vegaTableCellRenderer", void 0);
|
|
5106
|
+
__decorate$z([
|
|
5107
|
+
globalSlimmerRegistry.InjectVegaSlimmer()
|
|
5108
|
+
], VegaTable.prototype, "vegaTableBodyColSpanController", void 0);
|
|
4640
5109
|
__decorate$z([
|
|
4641
5110
|
globalSlimmerRegistry.InjectVegaSlimmer()
|
|
4642
5111
|
], VegaTable.prototype, "vegaTablePaginationRenderer", void 0);
|
|
@@ -5043,7 +5512,7 @@ const VegaTableCell = class {
|
|
|
5043
5512
|
};
|
|
5044
5513
|
}
|
|
5045
5514
|
render() {
|
|
5046
|
-
var _a, _b, _c;
|
|
5515
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5047
5516
|
const responsiveClass = generateResponsiveClass(this.breakpoint, 'v-table-cell');
|
|
5048
5517
|
const columnAlignClass = generateTextAlignClass(this.textAlign);
|
|
5049
5518
|
const overflowClass = this.getCellOverflowClass();
|
|
@@ -5057,7 +5526,7 @@ const VegaTableCell = class {
|
|
|
5057
5526
|
if ((_b = this.renderInput) === null || _b === void 0 ? void 0 : _b.isLeftEndPinned) {
|
|
5058
5527
|
columnClasses.push('right-divider');
|
|
5059
5528
|
}
|
|
5060
|
-
if ((_c = this.renderInput) === null || _c === void 0 ? void 0 : _c.isNoPinnedEnd) {
|
|
5529
|
+
if (((_c = this.renderInput) === null || _c === void 0 ? void 0 : _c.isNoPinnedEnd) || ((_d = this.renderInput) === null || _d === void 0 ? void 0 : _d.isViewEnd)) {
|
|
5061
5530
|
columnClasses.push('hide-right-border');
|
|
5062
5531
|
}
|
|
5063
5532
|
return component.sanitizeVegaComponent(index.h(index.Host, { class: ui.arrayToClassString([
|
|
@@ -5068,7 +5537,7 @@ const VegaTableCell = class {
|
|
|
5068
5537
|
this.checked && 'checked',
|
|
5069
5538
|
this.striped && 'striped',
|
|
5070
5539
|
this.expanded && 'expanded',
|
|
5071
|
-
]) }, index.h("td", { class: ui.arrayToClassString(columnClasses), part: "cell",
|
|
5540
|
+
]), "aria-colspan": ((_e = this.colSpan) !== null && _e !== void 0 ? _e : 0) > 1 ? String(this.colSpan) : null }, index.h("td", { class: ui.arrayToClassString(columnClasses), part: "cell", colSpan: ((_f = this.colSpan) !== null && _f !== void 0 ? _f : 0) > 1 ? this.colSpan : null,
|
|
5072
5541
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
5073
5542
|
onMouseEnter: this.onMouseEnter.bind(this),
|
|
5074
5543
|
/* eslint-disable-next-line react/jsx-no-bind */
|
|
@@ -5379,13 +5848,22 @@ class VegaTableExpandRowColSpanController extends globalSlimmerRegistry.VegaSlim
|
|
|
5379
5848
|
const cells = isTemplateRenderMode
|
|
5380
5849
|
? table.querySelectorAll('vega-table-row:nth-of-type(1) vega-table-cell')
|
|
5381
5850
|
: table.shadowRoot.querySelectorAll('vega-table-row:nth-of-type(1) vega-table-cell');
|
|
5382
|
-
return Array.from(cells)
|
|
5851
|
+
return Array.from(cells)
|
|
5852
|
+
.filter((cell) => {
|
|
5383
5853
|
if (!cell.breakpoint)
|
|
5384
5854
|
return true;
|
|
5385
5855
|
if (currentBreakpoint === 'default')
|
|
5386
5856
|
return false;
|
|
5387
5857
|
return breakpoints$1.Breakpoints[currentBreakpoint] >= breakpoints$1.Breakpoints[cell.breakpoint];
|
|
5388
|
-
})
|
|
5858
|
+
})
|
|
5859
|
+
.reduce((total, cell) => {
|
|
5860
|
+
var _a;
|
|
5861
|
+
// A cell with `colSpan >= 2` is a single element that occupies multiple physical
|
|
5862
|
+
// columns, so add its span rather than 1. This keeps the expand-row colspan aligned
|
|
5863
|
+
// with the full table width when body cells merge columns.
|
|
5864
|
+
const span = (_a = cell.colSpan) !== null && _a !== void 0 ? _a : 1;
|
|
5865
|
+
return total + (span > 1 ? span : 1);
|
|
5866
|
+
}, 0);
|
|
5389
5867
|
}
|
|
5390
5868
|
}
|
|
5391
5869
|
__decorate$p([
|
|
@@ -5659,11 +6137,12 @@ var __decorate$k = (undefined && undefined.__decorate) || function (decorators,
|
|
|
5659
6137
|
};
|
|
5660
6138
|
class VegaTableFootCellRenderer extends globalSlimmerRegistry.VegaSlimmer {
|
|
5661
6139
|
render() {
|
|
6140
|
+
var _a;
|
|
5662
6141
|
return (index.h("td", { class: {
|
|
5663
6142
|
'vega-table-cell': true,
|
|
5664
6143
|
'break-word': !featureFlagController.FeatureFlag.isEnabled('VEGA_TABLE.ENABLE_NEW_CELL_BREAK_WORDS_STYLE'),
|
|
5665
6144
|
[generateResponsiveClass(this.breakpoint, 'v-table-cell')]: true,
|
|
5666
|
-
} },
|
|
6145
|
+
}, colSpan: ((_a = this.colSpan) !== null && _a !== void 0 ? _a : 0) > 1 ? this.colSpan : null },
|
|
5667
6146
|
index.h("div", { class: ui.arrayToClassString(['vega-table-column', this.textAlign]) },
|
|
5668
6147
|
index.h("span", { class: "vega-table-column-label" },
|
|
5669
6148
|
index.h("slot", null)))));
|
|
@@ -5678,6 +6157,9 @@ __decorate$k([
|
|
|
5678
6157
|
__decorate$k([
|
|
5679
6158
|
globalSlimmerRegistry.MapToComponentField()
|
|
5680
6159
|
], VegaTableFootCellRenderer.prototype, "textAlign", void 0);
|
|
6160
|
+
__decorate$k([
|
|
6161
|
+
globalSlimmerRegistry.MapToComponentField()
|
|
6162
|
+
], VegaTableFootCellRenderer.prototype, "colSpan", void 0);
|
|
5681
6163
|
|
|
5682
6164
|
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}";
|
|
5683
6165
|
|
|
@@ -5702,10 +6184,11 @@ const VegaTableFootCell = class {
|
|
|
5702
6184
|
this.currentBreakpoint = breakpoints.getCurrentBreakpoint();
|
|
5703
6185
|
}
|
|
5704
6186
|
render() {
|
|
6187
|
+
var _a;
|
|
5705
6188
|
return component.sanitizeVegaComponent(index.h(index.Host, { class: {
|
|
5706
6189
|
[`density-${responsiveFormatFacade.ResponsiveFormatFacade.formatCustom(this.density)}`]: true,
|
|
5707
6190
|
'column-divider': this.columnDivider,
|
|
5708
|
-
}, style: { width: this.width } }, this.vegaTableFootCellRenderer.render()), this.host);
|
|
6191
|
+
}, 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);
|
|
5709
6192
|
}
|
|
5710
6193
|
get host() { return index.getElement(this); }
|
|
5711
6194
|
};
|