@globalpayments/vega 2.97.0 → 2.98.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-3f57f7b9.js → app-globals-b3f05631.js} +7 -7
- package/dist/cjs/{aria-dialog-focusable-trap-slimmer-73b4c0cb.js → aria-dialog-focusable-trap-slimmer-62147489.js} +1 -1
- package/dist/cjs/{code-block-28a7732e.js → code-block-d78c2b2c.js} +15 -8
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-50cdba6e.js → component-value-history-controller-slimmer.abstract-beb00fea.js} +3 -3
- package/dist/cjs/constants-907d7d89.js +16 -0
- package/dist/cjs/{content-state-e2ab0f06.js → content-state-78a620a9.js} +2 -2
- package/dist/cjs/{element-appender-slimmer-ccb2e3c2.js → element-appender-slimmer-597e9e48.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-58621b5e.js → form-field-controller-slimmer-a743be34.js} +2 -2
- package/dist/cjs/{image-annotation-action-b54dc669.js → image-annotation-action-85c4bd83.js} +2 -2
- package/dist/cjs/{image-extension-1e3eeaa3.js → image-extension-260fa69c.js} +2 -2
- package/dist/cjs/index.cjs.js +9 -9
- package/dist/cjs/{link-extension-71c27ff3.js → link-extension-220ff6a9.js} +2 -2
- package/dist/cjs/loader.cjs.js +9 -9
- package/dist/cjs/{public-rules-55e34d2e.js → public-rules-5657bce4.js} +4 -4
- package/dist/cjs/{range-eebe0e3c.js → range-c5afd53a.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-4fdee376.js → rich-text-editor-required-rule-385c1b61.js} +1 -1
- package/dist/cjs/{split-cell-operation-51097409.js → split-cell-operation-873d5db7.js} +2 -2
- package/dist/cjs/{string-input-formatter-slimmer-18d45942.js → string-input-formatter-slimmer-ef65cca7.js} +2 -2
- package/dist/cjs/{sub-state-notify-slimmer-18891389.js → sub-state-notify-slimmer-e264a120.js} +1 -1
- package/dist/cjs/{sub-state-observer-slimmer-eee2f0ae.js → sub-state-observer-slimmer-6033b824.js} +1 -1
- package/dist/cjs/{token-extension-608bbf7b.js → token-extension-78b5a026.js} +6 -6
- package/dist/cjs/vega-button-circle.cjs.entry.js +1 -1
- package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-button.cjs.entry.js +1 -1
- package/dist/cjs/vega-calendar_5.cjs.entry.js +3 -3
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-code-block.cjs.entry.js +8 -21
- package/dist/cjs/vega-color-picker.cjs.entry.js +3 -3
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +3 -3
- package/dist/cjs/vega-combo-box.cjs.entry.js +3 -3
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-dialog_2.cjs.entry.js +2 -2
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +24 -18
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +38 -5
- package/dist/cjs/vega-form.cjs.entry.js +3 -3
- package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-numeric.cjs.entry.js +4 -4
- package/dist/cjs/vega-input-passcode.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
- package/dist/cjs/vega-input-select.cjs.entry.js +3 -3
- package/dist/cjs/vega-input.cjs.entry.js +12 -7
- package/dist/cjs/{vega-internal-event-id-ecc5b87a.js → vega-internal-event-id-f4d33037.js} +2 -0
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +3 -3
- package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination.cjs.entry.js +1 -1
- package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +13 -13
- package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +4 -4
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
- package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
- package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
- package/dist/cjs/vega-table_11.cjs.entry.js +1140 -446
- package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +4 -4
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +2 -2
- package/dist/cjs/vega.cjs.js +9 -9
- package/dist/cjs/{wait-for-component-did-render-02ca4bee.js → wait-for-component-did-render-44d006ee.js} +1 -1
- package/dist/collection/components/vega-accordion/vega-accordion.js +2 -0
- package/dist/collection/components/vega-app-footer/vega-app-footer.js +2 -0
- package/dist/collection/components/vega-app-header-button/vega-app-header-button.js +2 -0
- package/dist/collection/components/vega-banner/vega-banner.js +2 -0
- package/dist/collection/components/vega-box/vega-box.js +2 -0
- package/dist/collection/components/vega-brand-logo/vega-brand-logo.js +2 -0
- package/dist/collection/components/vega-breadcrumb/vega-breadcrumb.js +2 -0
- package/dist/collection/components/vega-button/vega-button.js +2 -0
- package/dist/collection/components/vega-button-circle/vega-button-circle.js +2 -0
- package/dist/collection/components/vega-button-group/vega-button-group.js +2 -0
- package/dist/collection/components/vega-button-link/vega-button-link.js +2 -0
- package/dist/collection/components/vega-calendar/vega-calendar.js +2 -0
- package/dist/collection/components/vega-card/vega-card.js +2 -0
- package/dist/collection/components/vega-carousel/vega-carousel.js +2 -0
- package/dist/collection/components/vega-checkbox/vega-checkbox.js +2 -0
- package/dist/collection/components/vega-chip/vega-chip.js +2 -0
- package/dist/collection/components/vega-code-block/slimmers/controllers/code-highlight-parser.abstract.js +4 -17
- package/dist/collection/components/vega-color-picker/vega-color-picker.js +2 -0
- package/dist/collection/components/vega-combo-box/vega-combo-box.js +2 -0
- package/dist/collection/components/vega-counter-badge/vega-counter-badge.js +2 -0
- package/dist/collection/components/vega-date-picker/vega-date-picker.js +2 -0
- package/dist/collection/components/vega-divider/vega-divider.js +2 -0
- package/dist/collection/components/vega-dropdown/constants.js +10 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +45 -14
- package/dist/collection/components/vega-field-error/vega-field-error.js +2 -0
- package/dist/collection/components/vega-file-uploader/slimmers/renderers/vega-file-uploader-file-list-renderer.js +22 -2
- package/dist/collection/components/vega-file-uploader/vega-file-uploader.js +63 -6
- package/dist/collection/components/vega-flag-icon/vega-flag-icon.js +2 -0
- package/dist/collection/components/vega-flex/vega-flex.js +2 -0
- package/dist/collection/components/vega-font/vega-font.js +2 -0
- package/dist/collection/components/vega-form/vega-form.js +2 -0
- package/dist/collection/components/vega-grid/vega-grid.js +2 -0
- package/dist/collection/components/vega-icon/vega-icon.js +2 -0
- package/dist/collection/components/vega-image-uploader/vega-image-uploader.js +2 -0
- package/dist/collection/components/vega-input/slimmers/renderers/vega-input-input-suggestions-renderer.js +7 -2
- package/dist/collection/components/vega-input/vega-input.js +2 -0
- package/dist/collection/components/vega-input-credit-card/vega-input-credit-card.js +2 -0
- package/dist/collection/components/vega-input-numeric/vega-input-numeric.js +2 -0
- package/dist/collection/components/vega-input-passcode/vega-input-passcode.js +2 -0
- package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +2 -0
- package/dist/collection/components/vega-input-range/vega-input-range.js +2 -0
- package/dist/collection/components/vega-input-select/vega-input-select.js +2 -0
- package/dist/collection/components/vega-item-toggle/vega-item-toggle.js +2 -0
- package/dist/collection/components/vega-loading-indicator/vega-loading-indicator.js +2 -0
- package/dist/collection/components/vega-modal/vega-modal.js +2 -0
- package/dist/collection/components/vega-page-notification/vega-page-notification.js +2 -0
- package/dist/collection/components/vega-pagination/vega-pagination.js +2 -0
- package/dist/collection/components/vega-popover/vega-popover.js +2 -0
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +2 -0
- package/dist/collection/components/vega-radio/vega-radio.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +10 -6
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +2 -0
- package/dist/collection/components/vega-section-title/vega-section-title.js +2 -0
- package/dist/collection/components/vega-segment-control/vega-segment-control.js +2 -0
- package/dist/collection/components/vega-selection-chip/vega-selection-chip.js +2 -0
- package/dist/collection/components/vega-selection-tile/vega-selection-tile.js +2 -0
- package/dist/collection/components/vega-sidenav/vega-sidenav.js +2 -0
- package/dist/collection/components/vega-signature-capture/vega-signature-capture.js +2 -0
- package/dist/collection/components/vega-skeleton/vega-skeleton.js +2 -0
- package/dist/collection/components/vega-stepper/vega-stepper.js +2 -0
- package/dist/collection/components/vega-tab-group/vega-tab-group.js +2 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-column-structure-model-controller.js +17 -7
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-head-template-structure-controller.js +440 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-render-input-controller.js +11 -3
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +207 -17
- package/dist/collection/components/vega-table/vega-table-foot/vega-table-foot.css +1 -0
- package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +4 -1
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.css +15 -0
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +1 -1
- package/dist/collection/components/vega-table/vega-table-head-cell/slimmers/controllers/vega-table-head-cell-template-structure-controller.js +28 -0
- package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.css +1 -0
- package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.js +68 -4
- package/dist/collection/components/vega-table/vega-table.js +15 -0
- package/dist/collection/components/vega-textarea/vega-textarea.js +2 -0
- package/dist/collection/components/vega-time-picker/vega-time-picker.js +2 -0
- package/dist/collection/components/vega-toggle-switch/vega-toggle-switch.js +2 -0
- package/dist/collection/components/vega-tooltip/vega-tooltip.js +2 -0
- package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +1 -0
- package/dist/esm/{app-globals-d3991e53.js → app-globals-95c7110a.js} +7 -7
- package/dist/esm/{aria-dialog-focusable-trap-slimmer-9eae86c6.js → aria-dialog-focusable-trap-slimmer-f069f54d.js} +1 -1
- package/dist/esm/{code-block-8df86434.js → code-block-9c513169.js} +15 -8
- package/dist/esm/{component-value-history-controller-slimmer.abstract-e4b95997.js → component-value-history-controller-slimmer.abstract-9cef2a2a.js} +3 -3
- package/dist/esm/constants-4725f97f.js +13 -0
- package/dist/esm/{content-state-c63fbeda.js → content-state-25c81c08.js} +2 -2
- package/dist/esm/{element-appender-slimmer-24be8e94.js → element-appender-slimmer-8a06ecdd.js} +1 -1
- package/dist/esm/{form-field-controller-slimmer-d8628837.js → form-field-controller-slimmer-68fc5380.js} +2 -2
- package/dist/esm/{image-annotation-action-fcceff95.js → image-annotation-action-d7f2aecc.js} +2 -2
- package/dist/esm/{image-extension-3280bdb0.js → image-extension-fbd1ed6e.js} +2 -2
- package/dist/esm/index.js +9 -9
- package/dist/esm/{link-extension-f92c06ef.js → link-extension-e8ee103e.js} +2 -2
- package/dist/esm/loader.js +9 -9
- package/dist/esm/{public-rules-3695aaf7.js → public-rules-49de79c7.js} +4 -4
- package/dist/esm/{range-717d552d.js → range-b678c693.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-2e39264a.js → rich-text-editor-required-rule-578e0958.js} +1 -1
- package/dist/esm/{split-cell-operation-6c26af91.js → split-cell-operation-1c8e7585.js} +2 -2
- package/dist/esm/{string-input-formatter-slimmer-68b2af39.js → string-input-formatter-slimmer-0006a107.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-0f72ce74.js → sub-state-notify-slimmer-23b7d0e8.js} +1 -1
- package/dist/esm/{sub-state-observer-slimmer-64532d94.js → sub-state-observer-slimmer-722f6b92.js} +1 -1
- package/dist/esm/{token-extension-5082a4d2.js → token-extension-f2d009e3.js} +6 -6
- package/dist/esm/vega-button-circle.entry.js +1 -1
- package/dist/esm/vega-button-group_2.entry.js +3 -3
- package/dist/esm/vega-button.entry.js +1 -1
- package/dist/esm/vega-calendar_5.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +3 -3
- package/dist/esm/vega-code-block.entry.js +8 -21
- package/dist/esm/vega-color-picker.entry.js +3 -3
- package/dist/esm/vega-color-swatch-picker.entry.js +3 -3
- package/dist/esm/vega-combo-box.entry.js +3 -3
- package/dist/esm/vega-date-picker_2.entry.js +7 -7
- package/dist/esm/vega-dialog_2.entry.js +2 -2
- package/dist/esm/vega-dropdown_5.entry.js +20 -14
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +38 -5
- package/dist/esm/vega-form.entry.js +3 -3
- package/dist/esm/vega-image-uploader.entry.js +3 -3
- package/dist/esm/vega-input-credit-card.entry.js +3 -3
- package/dist/esm/vega-input-numeric.entry.js +4 -4
- package/dist/esm/vega-input-passcode.entry.js +3 -3
- package/dist/esm/vega-input-phone-number.entry.js +3 -3
- package/dist/esm/vega-input-range.entry.js +3 -3
- package/dist/esm/vega-input-select.entry.js +3 -3
- package/dist/esm/vega-input.entry.js +12 -7
- package/dist/esm/{vega-internal-event-id-827eb1ce.js → vega-internal-event-id-86fce049.js} +2 -1
- package/dist/esm/vega-left-nav_5.entry.js +3 -3
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +1 -1
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +1 -1
- package/dist/esm/vega-pagination.entry.js +1 -1
- package/dist/esm/vega-popover_2.entry.js +3 -3
- package/dist/esm/vega-progress-tracker_2.entry.js +3 -3
- package/dist/esm/vega-radio_2.entry.js +3 -3
- package/dist/esm/vega-rich-text-content.entry.js +7 -7
- package/dist/esm/vega-rich-text-editor_4.entry.js +13 -13
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +4 -4
- package/dist/esm/vega-selection-chip_2.entry.js +4 -4
- package/dist/esm/vega-selection-tile_2.entry.js +4 -4
- package/dist/esm/vega-sidenav_3.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +3 -3
- package/dist/esm/vega-stepper.entry.js +3 -3
- package/dist/esm/vega-table_11.entry.js +1141 -447
- package/dist/esm/vega-textarea.entry.js +3 -3
- package/dist/esm/vega-time-picker_2.entry.js +4 -4
- package/dist/esm/vega-toggle-switch.entry.js +3 -3
- package/dist/esm/vega-tooltip_2.entry.js +2 -2
- package/dist/esm/vega.js +9 -9
- package/dist/esm/{wait-for-component-did-render-0c237cb8.js → wait-for-component-did-render-ff7062aa.js} +1 -1
- package/dist/sri/vega-sri-manifest.json +228 -224
- package/dist/types/components/vega-accordion/vega-accordion.d.ts +2 -0
- package/dist/types/components/vega-app-footer/vega-app-footer.d.ts +2 -0
- package/dist/types/components/vega-app-header-button/vega-app-header-button.d.ts +2 -0
- package/dist/types/components/vega-banner/vega-banner.d.ts +2 -0
- package/dist/types/components/vega-box/vega-box.d.ts +2 -0
- package/dist/types/components/vega-brand-logo/vega-brand-logo.d.ts +2 -0
- package/dist/types/components/vega-breadcrumb/vega-breadcrumb.d.ts +2 -0
- package/dist/types/components/vega-button/vega-button.d.ts +2 -0
- package/dist/types/components/vega-button-circle/vega-button-circle.d.ts +2 -0
- package/dist/types/components/vega-button-group/vega-button-group.d.ts +2 -0
- package/dist/types/components/vega-button-link/vega-button-link.d.ts +2 -0
- package/dist/types/components/vega-calendar/vega-calendar.d.ts +2 -0
- package/dist/types/components/vega-card/vega-card.d.ts +2 -0
- package/dist/types/components/vega-carousel/vega-carousel.d.ts +2 -0
- package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +2 -0
- package/dist/types/components/vega-chip/vega-chip.d.ts +2 -0
- package/dist/types/components/vega-code-block/slimmers/controllers/code-highlight-parser.abstract.d.ts +2 -1
- package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +2 -0
- package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +2 -0
- package/dist/types/components/vega-counter-badge/vega-counter-badge.d.ts +2 -0
- package/dist/types/components/vega-date-picker/vega-date-picker.d.ts +2 -0
- package/dist/types/components/vega-divider/vega-divider.d.ts +2 -0
- package/dist/types/components/vega-dropdown/constants.d.ts +12 -0
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +9 -0
- package/dist/types/components/vega-field-error/vega-field-error.d.ts +2 -0
- package/dist/types/components/vega-file-uploader/slimmers/renderers/vega-file-uploader-file-list-renderer.d.ts +10 -0
- package/dist/types/components/vega-file-uploader/types.d.ts +4 -0
- package/dist/types/components/vega-file-uploader/vega-file-uploader.d.ts +15 -0
- package/dist/types/components/vega-flag-icon/vega-flag-icon.d.ts +2 -0
- package/dist/types/components/vega-flex/vega-flex.d.ts +2 -0
- package/dist/types/components/vega-font/vega-font.d.ts +2 -0
- package/dist/types/components/vega-form/vega-form.d.ts +2 -0
- package/dist/types/components/vega-grid/vega-grid.d.ts +2 -0
- package/dist/types/components/vega-icon/vega-icon.d.ts +2 -0
- package/dist/types/components/vega-image-uploader/vega-image-uploader.d.ts +2 -0
- package/dist/types/components/vega-input/types.d.ts +11 -1
- package/dist/types/components/vega-input/vega-input.d.ts +2 -0
- package/dist/types/components/vega-input-credit-card/vega-input-credit-card.d.ts +2 -0
- package/dist/types/components/vega-input-numeric/vega-input-numeric.d.ts +2 -0
- package/dist/types/components/vega-input-passcode/vega-input-passcode.d.ts +2 -0
- package/dist/types/components/vega-input-phone-number/vega-input-phone-number.d.ts +2 -0
- package/dist/types/components/vega-input-range/vega-input-range.d.ts +2 -0
- package/dist/types/components/vega-input-select/vega-input-select.d.ts +2 -0
- package/dist/types/components/vega-item-toggle/vega-item-toggle.d.ts +2 -0
- package/dist/types/components/vega-loading-indicator/vega-loading-indicator.d.ts +2 -0
- package/dist/types/components/vega-modal/vega-modal.d.ts +2 -0
- package/dist/types/components/vega-page-notification/vega-page-notification.d.ts +2 -0
- package/dist/types/components/vega-pagination/vega-pagination.d.ts +2 -0
- package/dist/types/components/vega-popover/vega-popover.d.ts +2 -0
- package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +2 -0
- package/dist/types/components/vega-radio/vega-radio.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +2 -0
- package/dist/types/components/vega-section-title/vega-section-title.d.ts +2 -0
- package/dist/types/components/vega-segment-control/vega-segment-control.d.ts +2 -0
- package/dist/types/components/vega-selection-chip/vega-selection-chip.d.ts +2 -0
- package/dist/types/components/vega-selection-tile/vega-selection-tile.d.ts +2 -0
- package/dist/types/components/vega-sidenav/vega-sidenav.d.ts +2 -0
- package/dist/types/components/vega-signature-capture/vega-signature-capture.d.ts +2 -0
- package/dist/types/components/vega-skeleton/vega-skeleton.d.ts +2 -0
- package/dist/types/components/vega-stepper/vega-stepper.d.ts +2 -0
- package/dist/types/components/vega-tab-group/vega-tab-group.d.ts +2 -0
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-column-structure-model-controller.d.ts +8 -4
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-head-template-structure-controller.d.ts +168 -0
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-render-input-controller.d.ts +8 -1
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +76 -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-head-cell/slimmers/controllers/vega-table-head-cell-template-structure-controller.d.ts +12 -0
- package/dist/types/components/vega-table/vega-table-head-cell/vega-table-head-cell.d.ts +19 -0
- package/dist/types/components/vega-table/vega-table.d.ts +6 -0
- package/dist/types/components/vega-textarea/vega-textarea.d.ts +2 -0
- package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +2 -0
- package/dist/types/components/vega-toggle-switch/vega-toggle-switch.d.ts +2 -0
- package/dist/types/components/vega-tooltip/vega-tooltip.d.ts +2 -0
- package/dist/types/components.d.ts +54 -0
- package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +1 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-2eb8e167.entry.js → p-02d3ce79.entry.js} +1 -1
- package/dist/vega/{p-3488a3f1.entry.js → p-035e2f05.entry.js} +1 -1
- package/dist/vega/p-03eeadc1.entry.js +1 -0
- package/dist/vega/{p-d2cbcf5e.entry.js → p-085d1647.entry.js} +1 -1
- package/dist/vega/{p-36c89520.entry.js → p-0cbf09f7.entry.js} +1 -1
- package/dist/vega/{p-1d5e05d9.js → p-0eb29065.js} +1 -1
- package/dist/vega/{p-2ff4ae1c.js → p-10d30c03.js} +1 -1
- package/dist/vega/{p-4c3a08be.entry.js → p-17c69503.entry.js} +1 -1
- package/dist/vega/{p-9be02fa5.js → p-1abd3c17.js} +1 -1
- package/dist/vega/{p-98fc5821.entry.js → p-1aedbfd2.entry.js} +1 -1
- package/dist/vega/{p-c3646101.entry.js → p-1cff027b.entry.js} +1 -1
- package/dist/vega/{p-deaf037a.entry.js → p-2a245138.entry.js} +1 -1
- package/dist/vega/{p-a034dfc0.entry.js → p-2f07d719.entry.js} +1 -1
- package/dist/vega/{p-0499e65a.entry.js → p-36d9e782.entry.js} +1 -1
- package/dist/vega/{p-e9d09211.js → p-373541fa.js} +1 -1
- package/dist/vega/{p-703ac992.entry.js → p-3737b9e2.entry.js} +1 -1
- package/dist/vega/{p-e9b005df.js → p-3d0b4074.js} +1 -1
- package/dist/vega/p-4a2fe3a4.js +1 -0
- package/dist/vega/{p-040ea356.entry.js → p-4bfe3258.entry.js} +1 -1
- package/dist/vega/{p-21f608e8.entry.js → p-4cbfc01e.entry.js} +1 -1
- package/dist/vega/{p-21626b93.entry.js → p-4e065ef7.entry.js} +1 -1
- package/dist/vega/{p-c29934ef.js → p-4fd0cf01.js} +1 -1
- package/dist/vega/{p-3af5e87b.entry.js → p-52c69f9e.entry.js} +1 -1
- package/dist/vega/{p-e7e963ba.entry.js → p-544ce391.entry.js} +1 -1
- package/dist/vega/{p-8e7932bc.js → p-56493601.js} +1 -1
- package/dist/vega/{p-8611465f.entry.js → p-56598858.entry.js} +1 -1
- package/dist/vega/{p-e1029acc.js → p-56db3323.js} +1 -1
- package/dist/vega/p-571ec00b.js +1 -0
- package/dist/vega/{p-abbceebf.entry.js → p-585e4f1c.entry.js} +1 -1
- package/dist/vega/p-5b1f5e4a.entry.js +1 -0
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-10d43a80.entry.js → p-6234852e.entry.js} +1 -1
- package/dist/vega/p-67eaf77e.js +1 -0
- package/dist/vega/{p-2540fd1c.entry.js → p-6d4518d7.entry.js} +1 -1
- package/dist/vega/p-6db1b9ac.js +1 -0
- package/dist/vega/{p-363ee8a5.entry.js → p-6f537797.entry.js} +1 -1
- package/dist/vega/{p-0809c651.js → p-6fd4f2c6.js} +1 -1
- package/dist/vega/p-72fd17a1.entry.js +1 -0
- package/dist/vega/{p-b594a11c.entry.js → p-7dcd2850.entry.js} +1 -1
- package/dist/vega/{p-5e37b041.js → p-7e8fdac4.js} +1 -1
- package/dist/vega/{p-d25c1a48.js → p-810c9c29.js} +1 -1
- package/dist/vega/{p-a2bd621e.js → p-83ad8988.js} +1 -1
- package/dist/vega/{p-26760c66.entry.js → p-8c56d74d.entry.js} +1 -1
- package/dist/vega/{p-09524fec.js → p-8d2501b2.js} +1 -1
- package/dist/vega/{p-1132a74e.entry.js → p-94975537.entry.js} +1 -1
- package/dist/vega/{p-9c4c474e.entry.js → p-95c18f79.entry.js} +1 -1
- package/dist/vega/p-9834d5d4.entry.js +1 -0
- package/dist/vega/{p-dad7d2ac.js → p-a090b2be.js} +1 -1
- package/dist/vega/{p-f1078e63.js → p-a81ad3bd.js} +1 -1
- package/dist/vega/{p-29e3eb12.js → p-c41a2d4a.js} +1 -1
- package/dist/vega/{p-8ed3b2b6.entry.js → p-c5fb8a69.entry.js} +1 -1
- package/dist/vega/{p-d3413a78.entry.js → p-c6d775b8.entry.js} +1 -1
- package/dist/vega/{p-046203cb.entry.js → p-c70748f7.entry.js} +1 -1
- package/dist/vega/{p-53fd3c41.entry.js → p-c98c2f5f.entry.js} +1 -1
- package/dist/vega/{p-aeb50cad.entry.js → p-ca3c1317.entry.js} +1 -1
- package/dist/vega/{p-f5095035.entry.js → p-cb81126a.entry.js} +1 -1
- package/dist/vega/{p-775ecfad.entry.js → p-cf4b3d40.entry.js} +1 -1
- package/dist/vega/{p-3980dfa8.entry.js → p-cfe268a8.entry.js} +1 -1
- package/dist/vega/{p-e3fdb65c.entry.js → p-d470fce2.entry.js} +1 -1
- package/dist/vega/{p-8ff92914.entry.js → p-da867019.entry.js} +1 -1
- package/dist/vega/{p-3f183b52.js → p-daba4af1.js} +1 -1
- package/dist/vega/{p-9664e914.entry.js → p-f62c5a20.entry.js} +1 -1
- package/dist/vega/{p-6b76b572.entry.js → p-f6c0e9e7.entry.js} +1 -1
- package/dist/vega/{p-56d19601.entry.js → p-fb9475ab.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/vega/p-2bb60f89.js +0 -1
- package/dist/vega/p-2d7388c9.entry.js +0 -1
- package/dist/vega/p-3a68b729.js +0 -1
- package/dist/vega/p-81d4dfcb.entry.js +0 -1
- package/dist/vega/p-88a6c89a.js +0 -1
- package/dist/vega/p-ca270da3.entry.js +0 -1
- package/dist/vega/p-f95d8d10.entry.js +0 -1
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { InjectVegaSlimmer, MapToComponentField, MapToComponentMethod, methodPlaceholder, VegaSlimmer, } from 'vega-slimmer/core';
|
|
8
|
+
import { TagNameAndAttributeMutationFilter } from '../../../../helpers/slimmers/mutation-observer/mutation-observer-filters';
|
|
9
|
+
import { MutationObserverSlimmer } from '../../../../helpers/slimmers/mutation-observer/mutation-observer-slimmer';
|
|
10
|
+
import { Observer } from '../../../../helpers/change-manager/observer/observer';
|
|
11
|
+
import changeManager from '../../../../helpers/change-manager/change-manager';
|
|
12
|
+
import domNodeSubjectFactory from '../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-factory';
|
|
13
|
+
import { VegaInternalTableHeadTemplateStructureChange, VegaInternalVegaTableRenderInputChange, } from '../../../../helpers/event-manager/event-id/vega-internal-event-id';
|
|
14
|
+
/**
|
|
15
|
+
* Derives column configuration from the authored `<vega-table-head>` markup.
|
|
16
|
+
*
|
|
17
|
+
* Currently produces grouped-column configuration; header-declared column concerns
|
|
18
|
+
* (e.g. pinning) are intended to live here as well.
|
|
19
|
+
*/
|
|
20
|
+
export class VegaTableHeadTemplateStructureController extends VegaSlimmer {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.templateHeadObserver = new MutationObserverSlimmer({
|
|
24
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
25
|
+
target: () => this.host,
|
|
26
|
+
options: {
|
|
27
|
+
childList: true,
|
|
28
|
+
subtree: true,
|
|
29
|
+
attributes: true,
|
|
30
|
+
attributeFilter: ['group-key', 'parent-group-key', 'pinned', 'col-span'],
|
|
31
|
+
},
|
|
32
|
+
mutationFilter: TagNameAndAttributeMutationFilter('VEGA-TABLE-HEAD', 'VEGA-TABLE-HEAD-ROW', 'VEGA-TABLE-HEAD-CELL'),
|
|
33
|
+
callback:
|
|
34
|
+
/* istanbul ignore next */
|
|
35
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
36
|
+
() => this.handleTemplateHeadStructureChange(),
|
|
37
|
+
});
|
|
38
|
+
// Head node the explicit observer is currently bound to, so it can be rebound when replaced.
|
|
39
|
+
this.observedTemplateHead = null;
|
|
40
|
+
this.lastTemplateHeadStructureSnapshot = null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Refresh template grouping before the mutation observer resumes after reconnecting.
|
|
44
|
+
*/
|
|
45
|
+
connectedCallback() {
|
|
46
|
+
this.setTemplateGroupColumns();
|
|
47
|
+
this.lastTemplateHeadStructureSnapshot = this.getTemplateHeadStructureSnapshot();
|
|
48
|
+
this.registerTemplateHeadStructureObserver();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Used by {@link templateHeadObserver} to stop observing while the table is disconnected.
|
|
52
|
+
*/
|
|
53
|
+
disconnectedCallback() {
|
|
54
|
+
this.unRegisterTemplateHeadStructureObserver();
|
|
55
|
+
methodPlaceholder();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Initialize template grouping before the column structure is built.
|
|
59
|
+
*/
|
|
60
|
+
componentWillLoad() {
|
|
61
|
+
this.setTemplateGroupColumns();
|
|
62
|
+
this.lastTemplateHeadStructureSnapshot = this.getTemplateHeadStructureSnapshot();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Used by {@link templateHeadObserver}.
|
|
66
|
+
*/
|
|
67
|
+
componentDidLoad() {
|
|
68
|
+
this.registerTemplateHeadMaps();
|
|
69
|
+
// Runtime changes are notified by the render-input watcher; initial load has no
|
|
70
|
+
// following componentDidRender, so it needs one synchronous notification here.
|
|
71
|
+
changeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalVegaTableRenderInputChange), {});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Rebuild template grouping when render mode changes.
|
|
75
|
+
*/
|
|
76
|
+
watchTemplateRenderMode() {
|
|
77
|
+
this.setTemplateGroupColumns();
|
|
78
|
+
this.lastTemplateHeadStructureSnapshot = this.getTemplateHeadStructureSnapshot();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Update the internal template grouping configuration.
|
|
82
|
+
*/
|
|
83
|
+
setTemplateGroupColumns() {
|
|
84
|
+
this.templateGroupColumns = this.getTemplateGroupColumns();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Recompute template grouping and row/cell render-input mappings after template head changes.
|
|
88
|
+
*
|
|
89
|
+
* Map registration is done here directly instead of via watchColumnStructureModel because
|
|
90
|
+
* this controller is registered before the render-input controller. If map registration
|
|
91
|
+
* were deferred to the columnStructureModel watcher, render inputs would still be stale
|
|
92
|
+
* (render-input controller's watcher hasn't fired yet due to slimmer registration order).
|
|
93
|
+
*/
|
|
94
|
+
handleTemplateHeadStructureChange() {
|
|
95
|
+
const nextSnapshot = this.getTemplateHeadStructureSnapshot();
|
|
96
|
+
if (this.isSameTemplateHeadStructure(nextSnapshot, this.lastTemplateHeadStructureSnapshot))
|
|
97
|
+
return;
|
|
98
|
+
this.lastTemplateHeadStructureSnapshot = nextSnapshot;
|
|
99
|
+
this.setTemplateGroupColumns();
|
|
100
|
+
this.registerTemplateHeadStructureObserver();
|
|
101
|
+
this.registerTemplateHeadMaps();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Collect a normalized snapshot for template-head hierarchy keys.
|
|
105
|
+
*
|
|
106
|
+
* This lets us ignore duplicated observer notifications that represent the same logical
|
|
107
|
+
* structure (e.g. reflected-attribute path and explicit watcher path firing for one update).
|
|
108
|
+
*
|
|
109
|
+
* @returns {Nullable<TemplateHeadStructureCell[]>} Snapshot of current template head structure.
|
|
110
|
+
*/
|
|
111
|
+
getTemplateHeadStructureSnapshot() {
|
|
112
|
+
if (!this.isTemplateRenderMode)
|
|
113
|
+
return null;
|
|
114
|
+
const templateHead = this.getTemplateHead();
|
|
115
|
+
if (!templateHead)
|
|
116
|
+
return null;
|
|
117
|
+
const rows = Array.from(templateHead.children).filter((child) => child.tagName === 'VEGA-TABLE-HEAD-ROW');
|
|
118
|
+
return rows.flatMap((row, rowIndex) => {
|
|
119
|
+
const cells = Array.from(row.children).filter((child) => child.tagName === 'VEGA-TABLE-HEAD-CELL');
|
|
120
|
+
return cells.map((cell, cellIndex) => ({
|
|
121
|
+
rowIndex,
|
|
122
|
+
cellIndex,
|
|
123
|
+
key: this.getCellProperty(cell, 'groupKey', 'group-key'),
|
|
124
|
+
parentKey: this.getCellProperty(cell, 'parentGroupKey', 'parent-group-key'),
|
|
125
|
+
pinned: this.getCellProperty(cell, 'pinned', 'pinned'),
|
|
126
|
+
}));
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Compare two structure snapshots by authored order and key values.
|
|
131
|
+
*
|
|
132
|
+
* @param {Nullable<TemplateHeadStructureCell[]>} nextSnapshot - Latest snapshot.
|
|
133
|
+
* @param {Nullable<TemplateHeadStructureCell[]>} prevSnapshot - Previous snapshot.
|
|
134
|
+
* @returns {boolean} True when snapshots represent the same logical structure.
|
|
135
|
+
*/
|
|
136
|
+
isSameTemplateHeadStructure(nextSnapshot, prevSnapshot) {
|
|
137
|
+
if (nextSnapshot === prevSnapshot)
|
|
138
|
+
return true;
|
|
139
|
+
if (!nextSnapshot || !prevSnapshot)
|
|
140
|
+
return false;
|
|
141
|
+
if (nextSnapshot.length !== prevSnapshot.length)
|
|
142
|
+
return false;
|
|
143
|
+
return nextSnapshot.every((nextCell, index) => {
|
|
144
|
+
const prevCell = prevSnapshot[index];
|
|
145
|
+
return (nextCell.rowIndex === prevCell.rowIndex &&
|
|
146
|
+
nextCell.cellIndex === prevCell.cellIndex &&
|
|
147
|
+
nextCell.key === prevCell.key &&
|
|
148
|
+
nextCell.parentKey === prevCell.parentKey &&
|
|
149
|
+
nextCell.pinned === prevCell.pinned);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Register explicit head-cell structure-change observer for property-assignment updates.
|
|
154
|
+
*/
|
|
155
|
+
registerTemplateHeadStructureObserver() {
|
|
156
|
+
const templateHead = this.getTemplateHead();
|
|
157
|
+
if (!templateHead || templateHead === this.observedTemplateHead)
|
|
158
|
+
return;
|
|
159
|
+
// Rebind when the authored head node was replaced so property-update notifications from the
|
|
160
|
+
// new head's subject are still observed.
|
|
161
|
+
this.unRegisterTemplateHeadStructureObserver();
|
|
162
|
+
if (!this.templateHeadStructureObserver) {
|
|
163
|
+
this.templateHeadStructureObserver = new Observer((input) => {
|
|
164
|
+
return Boolean(input && input.host);
|
|
165
|
+
}, () => this.handleTemplateHeadStructureChange());
|
|
166
|
+
}
|
|
167
|
+
changeManager.register(domNodeSubjectFactory.getSubject(templateHead, VegaInternalTableHeadTemplateStructureChange), this.templateHeadStructureObserver);
|
|
168
|
+
this.observedTemplateHead = templateHead;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Unregister explicit head-cell structure-change observer.
|
|
172
|
+
*/
|
|
173
|
+
unRegisterTemplateHeadStructureObserver() {
|
|
174
|
+
const templateHead = this.observedTemplateHead;
|
|
175
|
+
if (!templateHead || !this.templateHeadStructureObserver)
|
|
176
|
+
return;
|
|
177
|
+
changeManager.unregister(domNodeSubjectFactory.getSubject(templateHead, VegaInternalTableHeadTemplateStructureChange), this.templateHeadStructureObserver);
|
|
178
|
+
this.observedTemplateHead = null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Find authored template head element under table host.
|
|
182
|
+
*
|
|
183
|
+
* @typedef {import('../../../../types/components').HTMLVegaTableHeadElement} HTMLVegaTableHeadElement
|
|
184
|
+
* @returns {Nullable<HTMLVegaTableHeadElement>} Template head element if present.
|
|
185
|
+
*/
|
|
186
|
+
getTemplateHead() {
|
|
187
|
+
return Array.from(this.host.children).find((child) => child.tagName === 'VEGA-TABLE-HEAD');
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Register template head rows/cells with render-input maps using authored position.
|
|
191
|
+
*
|
|
192
|
+
* This mirrors data-source mode, where header renderer registers maps during JSX ref callbacks.
|
|
193
|
+
* Runtime changes are notified after the column model rebuilds, keeping maps ready without a
|
|
194
|
+
* second notification for the same template mutation.
|
|
195
|
+
*/
|
|
196
|
+
registerTemplateHeadMaps() {
|
|
197
|
+
if (!this.isTemplateRenderMode)
|
|
198
|
+
return;
|
|
199
|
+
const templateHead = this.getTemplateHead();
|
|
200
|
+
if (!templateHead)
|
|
201
|
+
return;
|
|
202
|
+
// Clear all head mappings before rebuilding to prevent stale entries
|
|
203
|
+
// from persisting when template transitions from valid to invalid/unresolved.
|
|
204
|
+
this.vegaTableRenderInputController.clearHeadRenderInputMaps();
|
|
205
|
+
const renderInputs = this.vegaTableRenderInputController.getHeadRenderInputs() || [];
|
|
206
|
+
const renderInputByKey = new Map(renderInputs
|
|
207
|
+
.flatMap((model) => model.iterator())
|
|
208
|
+
.map((model) => [model.key, model]));
|
|
209
|
+
const templateRows = Array.from(templateHead.children).filter((child) => child.tagName === 'VEGA-TABLE-HEAD-ROW');
|
|
210
|
+
// Leaf render inputs in authored order, used to map headers without group keys by position.
|
|
211
|
+
const leafRenderInputs = this.vegaTableRenderInputController.getLeafRenderInputs() || [];
|
|
212
|
+
templateRows.forEach((templateRow) => {
|
|
213
|
+
const templateCells = Array.from(templateRow.children).filter((child) => child.tagName === 'VEGA-TABLE-HEAD-CELL');
|
|
214
|
+
// A header without group keys carries no grouping identity, so pinning is resolved by position:
|
|
215
|
+
// the authored cell index maps directly onto the leaf render input at the same index.
|
|
216
|
+
const rowHasKey = templateCells.some((templateCell) => Boolean(this.getCellProperty(templateCell, 'groupKey', 'group-key')));
|
|
217
|
+
const rowRenderInputs = templateCells.map((templateCell, cellIndex) => {
|
|
218
|
+
if (!rowHasKey)
|
|
219
|
+
return leafRenderInputs[cellIndex] || null;
|
|
220
|
+
const key = this.getCellProperty(templateCell, 'groupKey', 'group-key');
|
|
221
|
+
return renderInputByKey.get(key) || null;
|
|
222
|
+
});
|
|
223
|
+
// Register only when every authored cell has a matching render input.
|
|
224
|
+
// Partial mappings can corrupt row-level edge/span calculations.
|
|
225
|
+
if (rowRenderInputs.some((renderInput) => !renderInput))
|
|
226
|
+
return;
|
|
227
|
+
const resolvedRowRenderInputs = rowRenderInputs;
|
|
228
|
+
this.vegaTableRenderInputController.addHeadRowRenderInputMap(templateRow, resolvedRowRenderInputs);
|
|
229
|
+
templateCells.forEach((templateCell, cellIndex) => {
|
|
230
|
+
this.vegaTableRenderInputController.addHeadCellRenderInputMap(templateCell, resolvedRowRenderInputs[cellIndex]);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Convert a hand-authored template head into the public grouped-column model.
|
|
236
|
+
*
|
|
237
|
+
* Grouping needs authored keys: every cell must have a unique `groupKey`, and cells below the
|
|
238
|
+
* first row must declare `parentGroupKey` pointing to a cell in the immediately preceding row.
|
|
239
|
+
* Pinning, in contrast, is purely positional, so a header without group keys that only declares edge
|
|
240
|
+
* `pinned` is handled by {@link getFlatPinnedColumns} instead of being treated as unkeyed.
|
|
241
|
+
* Group labels are derived from cell text and default to an empty string because template
|
|
242
|
+
* markup remains responsible for the visible content.
|
|
243
|
+
*
|
|
244
|
+
* @returns {Nullable<VegaTableGroupColumnConfig[]>} Derived grouping configuration; null for a
|
|
245
|
+
* header without group keys with no edge pinning, or an empty array for malformed structured markup.
|
|
246
|
+
*/
|
|
247
|
+
getTemplateGroupColumns() {
|
|
248
|
+
if (!this.isTemplateRenderMode)
|
|
249
|
+
return null;
|
|
250
|
+
const templateHead = this.getTemplateHead();
|
|
251
|
+
if (!templateHead)
|
|
252
|
+
return null;
|
|
253
|
+
const nodes = this.collectTemplateNodes(templateHead);
|
|
254
|
+
if (nodes.length === 0)
|
|
255
|
+
return null;
|
|
256
|
+
if (nodes.every((node) => !node.key))
|
|
257
|
+
return this.getFlatPinnedColumns(nodes);
|
|
258
|
+
if (nodes.some((node) => !node.key))
|
|
259
|
+
return [];
|
|
260
|
+
const nodesByKey = new Map(nodes.map((node) => [node.key, node]));
|
|
261
|
+
if (nodesByKey.size !== nodes.length)
|
|
262
|
+
return [];
|
|
263
|
+
if (!this.linkTemplateNodes(nodes, nodesByKey))
|
|
264
|
+
return [];
|
|
265
|
+
const topLevelNodes = nodes.filter((node) => node.rowIndex === 0);
|
|
266
|
+
this.dropNonEdgePinned(topLevelNodes);
|
|
267
|
+
return topLevelNodes.map((node) => this.toGroupColumnConfig(node));
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Derive flat, position-keyed leaf columns for a header without group keys whose only column concern is
|
|
271
|
+
* edge pinning. Grouping requires authored keys, but pinning is positional, so a single-row
|
|
272
|
+
* header that declares `pinned` without any `group-key` still yields pinned leaf columns.
|
|
273
|
+
*
|
|
274
|
+
* Returns null when the header spans multiple rows (grouping cannot be inferred without keys) or
|
|
275
|
+
* declares no honorable edge pin, preserving the legacy behavior where a plain header without group keys
|
|
276
|
+
* derives no column model and simply renders its authored cells.
|
|
277
|
+
*
|
|
278
|
+
* @param {TemplateColumnNode[]} nodes - Template nodes in authored order (all row 0 when valid).
|
|
279
|
+
* @returns {Nullable<VegaTableGroupColumnConfig[]>} Position-keyed leaf configs, or null.
|
|
280
|
+
*/
|
|
281
|
+
getFlatPinnedColumns(nodes) {
|
|
282
|
+
if (nodes.some((node) => node.rowIndex !== 0))
|
|
283
|
+
return null;
|
|
284
|
+
this.dropNonEdgePinned(nodes);
|
|
285
|
+
if (nodes.every((node) => !node.pinned))
|
|
286
|
+
return null;
|
|
287
|
+
// The authored index is the identity here; these keys are never used for head-cell lookup
|
|
288
|
+
// (registerTemplateHeadMaps maps headers without group keys by position, matching the positional body zip).
|
|
289
|
+
return nodes.map((node, index) => {
|
|
290
|
+
node.key = String(index);
|
|
291
|
+
return this.toGroupColumnConfig(node);
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Drop `pinned` from top-level cells that are not at the physical edge.
|
|
296
|
+
*
|
|
297
|
+
* Data-source mode reorders columns to `[left, none, right]` via `orderChildrenByPinned`, so any
|
|
298
|
+
* pinned column ends up at an edge. Template mode renders authored cells in place and never
|
|
299
|
+
* reorders them, and sticky pinning only works when the pinned column already sits at the edge.
|
|
300
|
+
* So we honor `pinned` only for a contiguous leading run (left) and trailing run (right) of the
|
|
301
|
+
* authored top-level cells; a pinned cell anywhere in between would freeze mid-table and let the
|
|
302
|
+
* columns authored before it scroll underneath, so its pin is ignored.
|
|
303
|
+
*
|
|
304
|
+
* @param {TemplateColumnNode[]} topLevelNodes - Row-0 nodes in authored (physical) order.
|
|
305
|
+
*/
|
|
306
|
+
dropNonEdgePinned(topLevelNodes) {
|
|
307
|
+
// End of the leading run of left-pinned cells (exclusive).
|
|
308
|
+
let leadingLeftEnd = 0;
|
|
309
|
+
while (leadingLeftEnd < topLevelNodes.length && topLevelNodes[leadingLeftEnd].pinned === 'left') {
|
|
310
|
+
leadingLeftEnd++;
|
|
311
|
+
}
|
|
312
|
+
// Start of the trailing run of right-pinned cells (exclusive lower bound).
|
|
313
|
+
let trailingRightStart = topLevelNodes.length - 1;
|
|
314
|
+
while (trailingRightStart >= 0 && topLevelNodes[trailingRightStart].pinned === 'right') {
|
|
315
|
+
trailingRightStart--;
|
|
316
|
+
}
|
|
317
|
+
topLevelNodes.forEach((node, index) => {
|
|
318
|
+
const isEdgeLeft = node.pinned === 'left' && index < leadingLeftEnd;
|
|
319
|
+
const isEdgeRight = node.pinned === 'right' && index > trailingRightStart;
|
|
320
|
+
if (!isEdgeLeft && !isEdgeRight)
|
|
321
|
+
node.pinned = undefined;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Flatten the authored template head rows into row-major template nodes.
|
|
326
|
+
*
|
|
327
|
+
* @param {HTMLElement} templateHead - Authored `<vega-table-head>` element.
|
|
328
|
+
* @returns {TemplateColumnNode[]} Template nodes in authored order.
|
|
329
|
+
*/
|
|
330
|
+
collectTemplateNodes(templateHead) {
|
|
331
|
+
const rows = Array.from(templateHead.children).filter((child) => child.tagName === 'VEGA-TABLE-HEAD-ROW');
|
|
332
|
+
return rows.flatMap((row, rowIndex) => Array.from(row.children)
|
|
333
|
+
.filter((child) => child.tagName === 'VEGA-TABLE-HEAD-CELL')
|
|
334
|
+
.map((cell, cellIndex) => ({
|
|
335
|
+
cell,
|
|
336
|
+
key: this.getCellProperty(cell, 'groupKey', 'group-key'),
|
|
337
|
+
rowIndex,
|
|
338
|
+
cellIndex,
|
|
339
|
+
children: [],
|
|
340
|
+
pinned: this.getCellProperty(cell, 'pinned', 'pinned'),
|
|
341
|
+
})));
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Validate parent references and link each node to its parent in place.
|
|
345
|
+
*
|
|
346
|
+
* Children must reference a cell in the immediately preceding row, be grouped by parent, and
|
|
347
|
+
* list parents left-to-right; first-row cells must not declare a parent.
|
|
348
|
+
*
|
|
349
|
+
* @param {TemplateColumnNode[]} nodes - Template nodes in authored order.
|
|
350
|
+
* @param {Map<string, TemplateColumnNode>} nodesByKey - Node lookup by group key.
|
|
351
|
+
* @returns {boolean} True when the hierarchy is well-formed.
|
|
352
|
+
*/
|
|
353
|
+
linkTemplateNodes(nodes, nodesByKey) {
|
|
354
|
+
var _a;
|
|
355
|
+
const lastParentIndexByRow = new Map();
|
|
356
|
+
for (const node of nodes) {
|
|
357
|
+
const parentKey = this.getCellProperty(node.cell, 'parentGroupKey', 'parent-group-key');
|
|
358
|
+
if (node.rowIndex === 0) {
|
|
359
|
+
if (parentKey)
|
|
360
|
+
return false;
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
const parent = nodesByKey.get(parentKey);
|
|
364
|
+
if (!parent || parent.rowIndex !== node.rowIndex - 1)
|
|
365
|
+
return false;
|
|
366
|
+
// Children must be listed grouped by parent and parents left-to-right, so a parent's
|
|
367
|
+
// cell index can never move backwards within a row. This single check rejects both
|
|
368
|
+
// non-contiguous children and out-of-order parent groups.
|
|
369
|
+
if (parent.cellIndex < ((_a = lastParentIndexByRow.get(node.rowIndex)) !== null && _a !== void 0 ? _a : -1))
|
|
370
|
+
return false;
|
|
371
|
+
lastParentIndexByRow.set(node.rowIndex, parent.cellIndex);
|
|
372
|
+
parent.children.push(node);
|
|
373
|
+
}
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Convert a template node tree into a grouped-column configuration.
|
|
378
|
+
*
|
|
379
|
+
* @param {TemplateColumnNode} node - Template node to convert.
|
|
380
|
+
* @returns {VegaTableGroupColumnConfig} Group or leaf configuration.
|
|
381
|
+
*/
|
|
382
|
+
toGroupColumnConfig(node) {
|
|
383
|
+
// A childless top-level node carries its pinning through the group-model `pinned` field
|
|
384
|
+
// (which applies to top-level nodes), so `VegaTableColumnGroupingLeafModel` stays a plain
|
|
385
|
+
// `{ key }` reference and does not need a variant-only pinned property.
|
|
386
|
+
if (node.children.length === 0) {
|
|
387
|
+
return node.pinned
|
|
388
|
+
? { key: node.key, label: (node.cell.textContent || '').trim(), pinned: node.pinned }
|
|
389
|
+
: { key: node.key };
|
|
390
|
+
}
|
|
391
|
+
return Object.assign(Object.assign({ key: node.key, label: (node.cell.textContent || '').trim() }, (node.pinned ? { pinned: node.pinned } : {})), { children: node.children.map((child) => this.toGroupColumnConfig(child)) });
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Read a reflected template-cell property with an attribute fallback.
|
|
395
|
+
*
|
|
396
|
+
* The `pinned` variant returns only valid pinning values; invalid values return undefined.
|
|
397
|
+
*
|
|
398
|
+
* @param {HTMLElement} cell - Template head cell.
|
|
399
|
+
* @param {'groupKey' | 'parentGroupKey' | 'pinned'} property - Component property name.
|
|
400
|
+
* @param {'group-key' | 'parent-group-key' | 'pinned'} attribute - Reflected attribute name.
|
|
401
|
+
* @returns {string | undefined} Normalized property value.
|
|
402
|
+
*/
|
|
403
|
+
getCellProperty(cell, property, attribute) {
|
|
404
|
+
const value = (cell[property] || cell.getAttribute(attribute) || '').trim();
|
|
405
|
+
if (property === 'pinned') {
|
|
406
|
+
return value === 'left' || value === 'right' ? value : undefined;
|
|
407
|
+
}
|
|
408
|
+
return value;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
__decorate([
|
|
412
|
+
MapToComponentField()
|
|
413
|
+
], VegaTableHeadTemplateStructureController.prototype, "host", void 0);
|
|
414
|
+
__decorate([
|
|
415
|
+
MapToComponentField()
|
|
416
|
+
], VegaTableHeadTemplateStructureController.prototype, "isTemplateRenderMode", void 0);
|
|
417
|
+
__decorate([
|
|
418
|
+
MapToComponentField({ writable: true })
|
|
419
|
+
], VegaTableHeadTemplateStructureController.prototype, "templateGroupColumns", void 0);
|
|
420
|
+
__decorate([
|
|
421
|
+
MapToComponentField()
|
|
422
|
+
], VegaTableHeadTemplateStructureController.prototype, "vegaTableRenderInputController", void 0);
|
|
423
|
+
__decorate([
|
|
424
|
+
InjectVegaSlimmer()
|
|
425
|
+
], VegaTableHeadTemplateStructureController.prototype, "templateHeadObserver", void 0);
|
|
426
|
+
__decorate([
|
|
427
|
+
MapToComponentMethod('connectedCallback')
|
|
428
|
+
], VegaTableHeadTemplateStructureController.prototype, "connectedCallback", null);
|
|
429
|
+
__decorate([
|
|
430
|
+
MapToComponentMethod('disconnectedCallback')
|
|
431
|
+
], VegaTableHeadTemplateStructureController.prototype, "disconnectedCallback", null);
|
|
432
|
+
__decorate([
|
|
433
|
+
MapToComponentMethod('componentWillLoad')
|
|
434
|
+
], VegaTableHeadTemplateStructureController.prototype, "componentWillLoad", null);
|
|
435
|
+
__decorate([
|
|
436
|
+
MapToComponentMethod('componentDidLoad')
|
|
437
|
+
], VegaTableHeadTemplateStructureController.prototype, "componentDidLoad", null);
|
|
438
|
+
__decorate([
|
|
439
|
+
MapToComponentMethod('watchTemplateRenderMode')
|
|
440
|
+
], VegaTableHeadTemplateStructureController.prototype, "watchTemplateRenderMode", null);
|
|
@@ -107,6 +107,17 @@ export class VegaTableRenderInputController extends VegaSlimmer {
|
|
|
107
107
|
addHeadCellRenderInputMap(headCell, renderInput) {
|
|
108
108
|
this.headCellRenderInputMap.set(headCell, renderInput);
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Clear all head row and head cell render-input mappings.
|
|
112
|
+
*
|
|
113
|
+
* Used by template-mode lifecycle to invalidate stale grouped-header metadata
|
|
114
|
+
* before re-registering current mappings. In data-source mode the header renderer
|
|
115
|
+
* re-registers via ref callbacks each render, so stale entries are overwritten naturally.
|
|
116
|
+
*/
|
|
117
|
+
clearHeadRenderInputMaps() {
|
|
118
|
+
this.headRowRenderInputMap.clear();
|
|
119
|
+
this.headCellRenderInputMap.clear();
|
|
120
|
+
}
|
|
110
121
|
/**
|
|
111
122
|
* Store body cell render input mapping for pinned cells (used to update sticky positions).
|
|
112
123
|
*
|
|
@@ -174,9 +185,6 @@ __decorate([
|
|
|
174
185
|
__decorate([
|
|
175
186
|
MapToComponentField()
|
|
176
187
|
], VegaTableRenderInputController.prototype, "columnStructureModel", void 0);
|
|
177
|
-
__decorate([
|
|
178
|
-
MapToComponentField()
|
|
179
|
-
], VegaTableRenderInputController.prototype, "vegaTableColGroupRenderer", void 0);
|
|
180
188
|
__decorate([
|
|
181
189
|
MapToComponentMethod('connectedCallback')
|
|
182
190
|
], VegaTableRenderInputController.prototype, "connectedCallback", null);
|