@globalpayments/vega 2.99.0 → 2.101.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/{accessibility-88f8af84.js → accessibility-6ca2a237.js} +21 -0
- package/dist/cjs/{action-color-accessibility-validator-b8a9ef0f.js → action-color-accessibility-validator-61af71ae.js} +1 -1
- package/dist/cjs/{app-globals-a306dce6.js → app-globals-275ea7c7.js} +19 -10
- package/dist/cjs/{aria-attributes-value-mapper-9a41b9cf.js → aria-attributes-value-mapper-e8c6b0e0.js} +1 -1
- package/dist/cjs/{aria-dialog-focusable-trap-slimmer-62147489.js → aria-dialog-focusable-trap-slimmer-c79cc3f8.js} +1 -1
- package/dist/cjs/{child-nodes-event-prevent-slimmer-e0ac8467.js → child-nodes-event-prevent-slimmer-d720d7e9.js} +1 -1
- package/dist/cjs/{code-block-ea1f5eb3.js → code-block-c598832d.js} +815 -751
- package/dist/cjs/{component-value-history-controller-slimmer.abstract-7071b064.js → component-value-history-controller-slimmer.abstract-4bd47aa1.js} +4 -4
- package/dist/cjs/{content-state-8d07d530.js → content-state-da23e822.js} +47 -3
- package/dist/cjs/countries-a8e3812a.js +251 -0
- package/dist/cjs/{dark-mode-style-controller-f3da3342.js → dark-mode-style-controller-ec04ece9.js} +45 -45
- package/dist/cjs/{date-required-rule-c0c498ad.js → date-required-rule-45c802d3.js} +1 -1
- package/dist/cjs/{design-token-58bf7fe8.js → design-token-9d762da0.js} +3 -3
- package/dist/cjs/{element-appender-slimmer-a0269315.js → element-appender-slimmer-2aaf8e24.js} +22 -3
- package/dist/cjs/{event-emit-slimmer-34aa195e.js → event-emit-slimmer-67b5c186.js} +1 -1
- package/dist/cjs/{form-field-controller-slimmer-f73f200e.js → form-field-controller-slimmer-ac9337f4.js} +3 -3
- package/dist/cjs/{image-annotation-action-2a28038e.js → image-annotation-action-378838c2.js} +8 -7
- package/dist/cjs/{image-extension-9659708b.js → image-extension-673ebe7f.js} +2 -2
- package/dist/cjs/index.cjs.js +24 -21
- package/dist/cjs/{inject-keyboard-manager-4fa45f9c.js → inject-keyboard-manager-540f0876.js} +1 -1
- package/dist/cjs/{internal-calendar-period-factory-6196bc80.js → internal-calendar-period-factory-b11918ee.js} +1 -1
- package/dist/cjs/{internal-translation-controller-51f7f865.js → internal-translation-controller-27bfc8c7.js} +15 -0
- package/dist/cjs/{internal-vega-event-manager-7003c84a.js → internal-vega-event-manager-976b9526.js} +10 -2
- package/dist/cjs/{keyboard-manager-482fe257.js → keyboard-manager-16e96b62.js} +12 -5
- package/dist/cjs/{keyboard-manager-slimmer-a19430dd.js → keyboard-manager-slimmer-0a4e556d.js} +1 -1
- package/dist/cjs/{link-extension-11340e1c.js → link-extension-f493e432.js} +3 -3
- package/dist/cjs/loader.cjs.js +17 -16
- package/dist/cjs/{month-view-generator-1a534451.js → month-view-generator-0a3e04de.js} +1 -1
- package/dist/cjs/overlay-escape-coordination-901d8942.js +38 -0
- package/dist/cjs/{public-rules-6c77b545.js → public-rules-bae12c47.js} +9 -9
- package/dist/cjs/{range-22ddd452.js → range-9f42fb40.js} +1 -1
- package/dist/cjs/{responsive-format-facade-74e6d791.js → responsive-format-facade-c6d7f0a1.js} +1 -1
- package/dist/cjs/{rich-text-editor-required-rule-09d1093a.js → rich-text-editor-required-rule-bb232741.js} +1 -1
- package/dist/cjs/{split-cell-operation-11bfb305.js → split-cell-operation-0d33123e.js} +4 -4
- package/dist/cjs/{state-border-formatter-bf4f9f1c.js → state-border-formatter-dda9109a.js} +1 -1
- package/dist/cjs/{string-format-strategy.abstract-bf37b14c.js → string-format-strategy.abstract-3a968a59.js} +1 -1
- package/dist/cjs/{string-input-formatter-slimmer-ffeb18a6.js → string-input-formatter-slimmer-2e0a838e.js} +3 -3
- package/dist/cjs/{string-mask-strategy-7f394726.js → string-mask-strategy-d9f85c21.js} +2 -2
- package/dist/cjs/{style-formatter-4ac63910.js → style-formatter-d21a9784.js} +2 -2
- package/dist/cjs/{sub-state-notify-slimmer-e264a120.js → sub-state-notify-slimmer-3b33e31c.js} +1 -1
- package/dist/cjs/{sub-state-observer-slimmer-6033b824.js → sub-state-observer-slimmer-5b68ba3f.js} +1 -1
- package/dist/cjs/{time-required-rule-e2a50003.js → time-required-rule-580cbd3d.js} +1 -1
- package/dist/cjs/{token-extension-4686cb3b.js → token-extension-4badb962.js} +811 -53
- package/dist/cjs/{translation-slimmer-e4997f8f.js → translation-slimmer-31cd5a57.js} +1 -1
- package/dist/cjs/{type-guard-b8d7bb3f.js → type-guard-00b8efc0.js} +1 -1
- package/dist/cjs/{valid-credit-card-number-rule-f5a6f009.js → valid-credit-card-number-rule-70885128.js} +1 -1
- package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
- package/dist/cjs/vega-app-footer.cjs.entry.js +4 -4
- package/dist/cjs/vega-app-header-button.cjs.entry.js +10 -10
- package/dist/cjs/vega-banner.cjs.entry.js +4 -4
- package/dist/cjs/vega-box.cjs.entry.js +6 -6
- package/dist/cjs/vega-brand-logo.cjs.entry.js +1 -1
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/vega-button-circle.cjs.entry.js +12 -12
- package/dist/cjs/vega-button-group_2.cjs.entry.js +20 -13
- package/dist/cjs/vega-button-link.cjs.entry.js +8 -8
- package/dist/cjs/vega-button.cjs.entry.js +27 -11
- package/dist/cjs/vega-calendar_5.cjs.entry.js +130 -24
- package/dist/cjs/vega-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +7 -7
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-chip.cjs.entry.js +10 -10
- package/dist/cjs/vega-code-block.cjs.entry.js +15 -15
- package/dist/cjs/vega-color-picker.cjs.entry.js +8 -8
- package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +9 -9
- package/dist/cjs/vega-color-swatch.cjs.entry.js +6 -6
- package/dist/cjs/vega-combo-box.cjs.entry.js +15 -15
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +22 -22
- package/dist/cjs/vega-dialog_2.cjs.entry.js +76 -10
- package/dist/cjs/vega-divider.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +108 -25
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/{vega-event-id-58afed7a.js → vega-event-id-987a170c.js} +2 -0
- package/dist/cjs/vega-field-label.cjs.entry.js +29 -36
- package/dist/cjs/vega-file-uploader.cjs.entry.js +9 -9
- package/dist/cjs/vega-flag-icon.cjs.entry.js +11 -11
- package/dist/cjs/vega-flex.cjs.entry.js +6 -6
- package/dist/cjs/vega-font.cjs.entry.js +5 -5
- package/dist/cjs/vega-form.cjs.entry.js +9 -9
- package/dist/cjs/vega-grid.cjs.entry.js +5 -5
- package/dist/cjs/vega-icon.cjs.entry.js +5 -5
- package/dist/cjs/vega-image-uploader.cjs.entry.js +13 -13
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +12 -12
- package/dist/cjs/vega-input-numeric.cjs.entry.js +12 -12
- package/dist/cjs/vega-input-passcode.cjs.entry.js +11 -11
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +56 -275
- package/dist/cjs/vega-input-range.cjs.entry.js +10 -10
- package/dist/cjs/vega-input-select.cjs.entry.js +39 -39
- package/dist/cjs/vega-input.cjs.entry.js +14 -14
- package/dist/cjs/{vega-internal-event-id-f4d33037.js → vega-internal-event-id-98d499d7.js} +6 -2
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +14 -14
- package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +2 -2
- 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 +4 -4
- package/dist/cjs/vega-pagination.cjs.entry.js +9 -9
- package/dist/cjs/vega-popover_2.cjs.entry.js +63 -14
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +10 -10
- package/dist/cjs/vega-radio_2.cjs.entry.js +12 -12
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +16 -13
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +712 -250
- package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +6 -6
- 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 +161 -108
- package/dist/cjs/vega-segment-control.cjs.entry.js +11 -4
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +12 -12
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +9 -9
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
- package/dist/cjs/vega-signature-capture.cjs.entry.js +12 -12
- package/dist/cjs/vega-stepper.cjs.entry.js +8 -8
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-table_11.cjs.entry.js +625 -666
- package/dist/cjs/vega-textarea.cjs.entry.js +8 -8
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +16 -16
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +8 -8
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -7
- package/dist/cjs/vega.cjs.js +17 -16
- package/dist/cjs/{wait-for-component-did-render-44d006ee.js → wait-for-component-did-render-90edbc1a.js} +1 -1
- package/dist/collection/components/vega-button/vega-button.css +3 -3
- package/dist/collection/components/vega-button/vega-button.js +17 -2
- package/dist/collection/components/vega-button-circle/vega-button-circle.css +3 -3
- package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +13 -6
- package/dist/collection/components/vega-button-link/vega-button-link.css +4 -4
- package/dist/collection/components/vega-button-link/vega-button-link.js +2 -2
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.js +45 -5
- package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +43 -1
- package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.js +23 -4
- package/dist/collection/components/vega-calendar/vega-calendar.js +77 -1
- package/dist/collection/components/vega-code-block/vega-code-block.css +4 -4
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-controller.js +148 -0
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +5 -2
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +17 -0
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +2 -2
- package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.css +2 -1
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +1 -1
- package/dist/collection/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.js +21 -30
- package/dist/collection/components/vega-field-label/vega-field-label.js +7 -5
- package/dist/collection/components/vega-flag-icon/slimmers/controllers/vega-flag-icon-controller.js +6 -6
- package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +4 -8
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +19 -2
- package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-prefix-icon-renderer.js +8 -28
- package/dist/collection/components/vega-input-select/vega-input-select.js +3 -1
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +66 -0
- package/dist/collection/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.js +17 -0
- package/dist/collection/components/vega-popover/vega-popover.js +33 -1
- package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +4 -1
- package/dist/collection/components/vega-rich-text-editor/constants/constant.js +9 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/commit-value-action.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +11 -0
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +11 -2
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +18 -6
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +11 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +8 -0
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +30 -18
- package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +51 -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 +2 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +3 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.js +6 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/renderers/horizontal-line-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/special-characters/special-characters-toolbar-button-renderer.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.js +3 -9
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.js +81 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.js +148 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +151 -5
- package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +144 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +26 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-cell-properties-form-field-renderer.js +11 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +5 -2
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-field-renderer.js +5 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.css +5 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.js +16 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +10 -9
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +9 -8
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +25 -10
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.js +5 -4
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.css +10 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +2 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.js +70 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/type.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/extensions/word-count/word-count-extension.js +62 -0
- package/dist/collection/components/vega-rich-text-editor/public-api.js +1 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +7 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/value-controller.js +52 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.js +79 -0
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +6 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +111 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +17 -6
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.js +3 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +59 -8
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +13 -1
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +124 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +9 -1
- package/dist/collection/components/vega-segment-control/slimmers/renderers/vega-segment-renderer.js +8 -1
- package/dist/collection/components/vega-segment-control/vega-segment-control.js +23 -0
- package/dist/collection/components/vega-table/slimmers/controllers/dto/column-render-input-model.js +25 -8
- package/dist/collection/components/vega-table/slimmers/controllers/dto/row-render-input-model.js +41 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-head-template-structure-controller.js +1 -0
- package/dist/collection/components/vega-table/slimmers/controllers/vega-table-render-input-controller.js +316 -18
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-renderer.js +6 -1
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-header-renderer.js +1 -0
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +33 -530
- package/dist/collection/components/vega-table/slimmers/renderers/vega-table-row-renderer.js +1 -0
- package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.css +10 -0
- package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +25 -8
- package/dist/collection/components/vega-table/vega-table-expand-row/slimmers/renderers/vega-table-expand-row-renderer.js +14 -6
- package/dist/collection/components/vega-table/vega-table-expand-row/vega-table-expand-row.css +20 -0
- package/dist/collection/components/vega-table/vega-table-expand-row/vega-table-expand-row.js +7 -0
- package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +21 -2
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.css +10 -0
- package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +12 -1
- package/dist/collection/components/vega-table/vega-table-foot-row/slimmers/renderers/vega-table-foot-row-renderer.js +20 -13
- package/dist/collection/components/vega-table/vega-table-foot-row/vega-table-foot-row.css +26 -0
- package/dist/collection/components/vega-table/vega-table-foot-row/vega-table-foot-row.js +12 -0
- package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.css +10 -0
- package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.js +19 -6
- package/dist/collection/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.js +21 -46
- package/dist/collection/components/vega-table/vega-table-head-row/vega-table-head-row.css +16 -7
- package/dist/collection/components/vega-table/vega-table-head-row/vega-table-head-row.js +9 -2
- package/dist/collection/components/vega-table/vega-table-row/slimmers/renderers/vega-table-row-renderer.js +28 -13
- package/dist/collection/components/vega-table/vega-table-row/vega-table-row.css +26 -0
- package/dist/collection/components/vega-table/vega-table-row/vega-table-row.js +11 -0
- package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-border-tokens.js +1 -1
- package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-color-tokens.js +20 -20
- package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-ring-tokens.js +1 -1
- package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-shadow-tokens.js +1 -1
- package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-border-tokens.js +1 -1
- package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-color-tokens.js +19 -19
- package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-shadow-tokens.js +1 -1
- package/dist/collection/constants/ui.js +1 -0
- package/dist/collection/global/scripts/before-vega-load.js +10 -0
- package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +10 -2
- package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
- package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +3 -1
- package/dist/collection/helpers/keyboard/keyboard-manager.js +11 -4
- package/dist/collection/helpers/keyboard/overlay-escape-coordination.js +33 -0
- package/dist/collection/helpers/public-api.js +1 -0
- package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +1 -1
- package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +8 -0
- package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +10 -0
- package/dist/collection/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.js +2 -0
- package/dist/collection/helpers/translation/locales/en.js +15 -0
- package/dist/collection/helpers/ui/element-appender.js +1 -0
- package/dist/collection/polyfill/libphonenumber/as-you-type.js +21 -3
- package/dist/collection/polyfill/libphonenumber/metadata.js +16 -0
- package/dist/collection/utils/accessibility.js +20 -0
- package/dist/esm/{accessibility-6af5cf2e.js → accessibility-c899a968.js} +21 -1
- package/dist/esm/{action-color-accessibility-validator-08877515.js → action-color-accessibility-validator-3e824a59.js} +1 -1
- package/dist/esm/{app-globals-c59364c2.js → app-globals-ad3c7cea.js} +19 -10
- package/dist/esm/{aria-attributes-value-mapper-2c632641.js → aria-attributes-value-mapper-a5c7478e.js} +1 -1
- package/dist/esm/{aria-dialog-focusable-trap-slimmer-f069f54d.js → aria-dialog-focusable-trap-slimmer-27a6aa19.js} +3 -3
- package/dist/esm/{child-nodes-event-prevent-slimmer-82626871.js → child-nodes-event-prevent-slimmer-0ebcbf47.js} +1 -1
- package/dist/esm/{child-nodes-notify-observer-slimmer-499a3aa7.js → child-nodes-notify-observer-slimmer-034bc78c.js} +1 -1
- package/dist/esm/{code-block-e6443949.js → code-block-1cdf7a51.js} +816 -754
- package/dist/esm/{component-value-history-controller-slimmer.abstract-ee393213.js → component-value-history-controller-slimmer.abstract-bdeeb43f.js} +6 -6
- package/dist/esm/{content-state-43cdacff.js → content-state-6eb610b8.js} +48 -6
- package/dist/esm/countries-50d3339b.js +249 -0
- package/dist/esm/{dark-mode-style-controller-352f15ff.js → dark-mode-style-controller-4e04a2d3.js} +45 -45
- package/dist/esm/{date-required-rule-b5b67498.js → date-required-rule-2ea3aec8.js} +1 -1
- package/dist/esm/{design-token-8319bb59.js → design-token-82a4e107.js} +3 -3
- package/dist/esm/{dom-node-subject-observer-factory-ddff8662.js → dom-node-subject-observer-factory-bb7e68a0.js} +1 -1
- package/dist/esm/{element-appender-slimmer-c81d1fe3.js → element-appender-slimmer-dd4e2908.js} +24 -5
- package/dist/esm/{event-emit-slimmer-2452278f.js → event-emit-slimmer-12ee1593.js} +2 -2
- package/dist/esm/{form-field-controller-slimmer-511b7ac5.js → form-field-controller-slimmer-5c794b4d.js} +5 -5
- package/dist/esm/{image-annotation-action-d7cb80aa.js → image-annotation-action-cdd50dcc.js} +9 -8
- package/dist/esm/{image-extension-9b8abd0d.js → image-extension-f6dbd70c.js} +2 -2
- package/dist/esm/index.js +24 -23
- package/dist/esm/{inject-keyboard-manager-dd368d56.js → inject-keyboard-manager-6a10c9b7.js} +1 -1
- package/dist/esm/{internal-calendar-period-factory-d58f35c6.js → internal-calendar-period-factory-d1a60f81.js} +1 -1
- package/dist/esm/{internal-translation-controller-b33430c6.js → internal-translation-controller-fff376d2.js} +15 -0
- package/dist/esm/{internal-vega-event-manager-2ecc9186.js → internal-vega-event-manager-0c381f3b.js} +10 -2
- package/dist/esm/{keyboard-manager-b4a0d97d.js → keyboard-manager-a58288df.js} +13 -6
- package/dist/esm/{keyboard-manager-slimmer-0517fc70.js → keyboard-manager-slimmer-133b86cd.js} +1 -1
- package/dist/esm/{link-extension-230bae8d.js → link-extension-bc234cf7.js} +3 -3
- package/dist/esm/loader.js +19 -18
- package/dist/esm/{month-view-generator-f470caac.js → month-view-generator-20e32b22.js} +1 -1
- package/dist/esm/overlay-escape-coordination-439f7d6f.js +35 -0
- package/dist/esm/{public-rules-28ef32d3.js → public-rules-8dc3fb00.js} +11 -11
- package/dist/esm/{range-efad2578.js → range-d2439ba7.js} +2 -2
- package/dist/esm/{responsive-format-facade-dec87e46.js → responsive-format-facade-07843ec3.js} +1 -1
- package/dist/esm/{rich-text-editor-required-rule-a697e5bd.js → rich-text-editor-required-rule-a0663a84.js} +1 -1
- package/dist/esm/{split-cell-operation-89b91a38.js → split-cell-operation-1a889fa0.js} +5 -5
- package/dist/esm/{state-border-formatter-1e900a2f.js → state-border-formatter-3b3dcfe8.js} +1 -1
- package/dist/esm/{string-format-strategy.abstract-d0ce3f65.js → string-format-strategy.abstract-44381dcb.js} +1 -1
- package/dist/esm/{string-input-formatter-slimmer-6546cfc7.js → string-input-formatter-slimmer-69887c40.js} +4 -4
- package/dist/esm/{string-mask-strategy-dd13ae21.js → string-mask-strategy-999fba4b.js} +2 -2
- package/dist/esm/{style-formatter-057d7120.js → style-formatter-c4192c99.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-23b7d0e8.js → sub-state-notify-slimmer-ba72f30b.js} +2 -2
- package/dist/esm/{sub-state-observer-slimmer-722f6b92.js → sub-state-observer-slimmer-bee1c7fa.js} +3 -3
- package/dist/esm/{time-required-rule-73753a54.js → time-required-rule-0554b114.js} +1 -1
- package/dist/esm/{token-extension-74a0eeb1.js → token-extension-530d9bde.js} +813 -56
- package/dist/esm/{translation-slimmer-ef970ffc.js → translation-slimmer-77022f2e.js} +1 -1
- package/dist/esm/{type-guard-6fc96870.js → type-guard-26d83e7e.js} +1 -1
- package/dist/esm/{ui-d73f756a.js → ui-80e610f4.js} +1 -1
- package/dist/esm/{valid-credit-card-number-rule-b54a31e7.js → valid-credit-card-number-rule-f60b6904.js} +1 -1
- package/dist/esm/vega-accordion.entry.js +11 -11
- package/dist/esm/vega-app-footer.entry.js +6 -6
- package/dist/esm/vega-app-header-button.entry.js +12 -12
- package/dist/esm/vega-backdrop.entry.js +1 -1
- package/dist/esm/vega-banner.entry.js +6 -6
- package/dist/esm/vega-box.entry.js +7 -7
- package/dist/esm/vega-brand-logo.entry.js +1 -1
- package/dist/esm/vega-breadcrumb.entry.js +6 -6
- package/dist/esm/vega-button-circle.entry.js +14 -14
- package/dist/esm/vega-button-group_2.entry.js +22 -15
- package/dist/esm/vega-button-link.entry.js +10 -10
- package/dist/esm/vega-button.entry.js +29 -13
- package/dist/esm/vega-calendar_5.entry.js +132 -26
- package/dist/esm/vega-card.entry.js +6 -6
- package/dist/esm/vega-carousel.entry.js +9 -9
- package/dist/esm/vega-checkbox_2.entry.js +12 -12
- package/dist/esm/vega-chip.entry.js +12 -12
- package/dist/esm/vega-code-block.entry.js +17 -17
- package/dist/esm/vega-color-picker.entry.js +10 -10
- package/dist/esm/vega-color-swatch-picker.entry.js +11 -11
- package/dist/esm/vega-color-swatch.entry.js +8 -8
- package/dist/esm/vega-combo-box.entry.js +17 -17
- package/dist/esm/vega-date-picker_2.entry.js +24 -24
- package/dist/esm/vega-dialog_2.entry.js +78 -12
- package/dist/esm/vega-divider.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +111 -28
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-f55f6977.js → vega-event-id-59cd9297.js} +2 -1
- package/dist/esm/vega-field-label.entry.js +31 -38
- package/dist/esm/vega-file-uploader.entry.js +11 -11
- package/dist/esm/vega-flag-icon.entry.js +11 -11
- 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 +12 -12
- 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 +15 -15
- 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 +55 -274
- package/dist/esm/vega-input-range.entry.js +12 -12
- package/dist/esm/vega-input-select.entry.js +41 -41
- package/dist/esm/vega-input.entry.js +16 -16
- package/dist/esm/{vega-internal-event-id-86fce049.js → vega-internal-event-id-02093067.js} +4 -2
- package/dist/esm/vega-item-toggle.entry.js +5 -5
- package/dist/esm/vega-left-nav_5.entry.js +16 -16
- package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
- package/dist/esm/vega-page-notification_2.entry.js +4 -4
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +6 -6
- package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +6 -6
- package/dist/esm/vega-pagination.entry.js +11 -11
- package/dist/esm/vega-popover_2.entry.js +65 -16
- package/dist/esm/vega-progress-tracker_2.entry.js +12 -12
- package/dist/esm/vega-radio_2.entry.js +15 -15
- package/dist/esm/vega-rich-text-content.entry.js +18 -15
- package/dist/esm/vega-rich-text-editor_4.entry.js +715 -253
- package/dist/esm/vega-rich-text-find-replace-panel.entry.js +8 -8
- package/dist/esm/vega-rich-text-special-characters-panel.entry.js +10 -10
- package/dist/esm/vega-rich-text-table-properties_3.entry.js +163 -110
- package/dist/esm/vega-segment-control.entry.js +13 -6
- package/dist/esm/vega-selection-chip_2.entry.js +14 -14
- package/dist/esm/vega-selection-tile_2.entry.js +12 -12
- package/dist/esm/vega-sidenav_3.entry.js +12 -12
- package/dist/esm/vega-signature-capture.entry.js +14 -14
- package/dist/esm/vega-stepper.entry.js +10 -10
- package/dist/esm/vega-tab-group_2.entry.js +9 -9
- package/dist/esm/vega-table_11.entry.js +627 -668
- package/dist/esm/vega-textarea.entry.js +10 -10
- package/dist/esm/vega-time-picker_2.entry.js +18 -18
- package/dist/esm/vega-toggle-switch.entry.js +10 -10
- package/dist/esm/vega-tooltip_2.entry.js +9 -9
- package/dist/esm/vega.js +19 -18
- package/dist/esm/{wait-for-component-did-render-ff7062aa.js → wait-for-component-did-render-9e84d92d.js} +2 -2
- package/dist/sri/vega-sri-manifest.json +415 -407
- package/dist/types/components/vega-button/vega-button.d.ts +2 -0
- package/dist/types/components/vega-button-group/types.d.ts +12 -6
- package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.d.ts +18 -0
- package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.d.ts +9 -0
- package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.d.ts +9 -1
- package/dist/types/components/vega-calendar/types.d.ts +22 -0
- package/dist/types/components/vega-calendar/vega-calendar.d.ts +23 -1
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +1 -1
- package/dist/types/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.d.ts +3 -10
- package/dist/types/components/vega-flag-icon/slimmers/controllers/vega-flag-icon-controller.d.ts +2 -2
- package/dist/types/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.d.ts +0 -1
- package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +8 -0
- package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-prefix-icon-renderer.d.ts +2 -14
- package/dist/types/components/vega-input-select/vega-input-select.d.ts +1 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +33 -0
- package/dist/types/components/vega-modal/types.d.ts +2 -1
- package/dist/types/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.d.ts +9 -0
- package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/commit-value-action.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +11 -1
- package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +6 -0
- package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +5 -0
- package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.d.ts +14 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +31 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.d.ts +91 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +46 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.d.ts +58 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +8 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.d.ts +2 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.d.ts +3 -0
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.d.ts +3 -1
- package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.d.ts +38 -0
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/type.d.ts +46 -0
- package/dist/types/components/vega-rich-text-editor/extensions/word-count/word-count-extension.d.ts +38 -0
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/public-api.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/value-controller.d.ts +11 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.d.ts +40 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.d.ts +14 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +3 -1
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.d.ts +3 -2
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +2 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +68 -0
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.d.ts +3 -0
- package/dist/types/components/vega-segment-control/slimmers/renderers/vega-segment-renderer.d.ts +1 -0
- package/dist/types/components/vega-segment-control/types.d.ts +2 -0
- package/dist/types/components/vega-segment-control/vega-segment-control.d.ts +7 -1
- package/dist/types/components/vega-table/slimmers/controllers/dto/column-render-input-model.d.ts +17 -0
- package/dist/types/components/vega-table/slimmers/controllers/dto/row-render-input-model.d.ts +39 -0
- package/dist/types/components/vega-table/slimmers/controllers/vega-table-render-input-controller.d.ts +71 -7
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-renderer.d.ts +1 -0
- package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +3 -88
- package/dist/types/components/vega-table/vega-table-expand-row/slimmers/renderers/vega-table-expand-row-renderer.d.ts +1 -1
- package/dist/types/components/vega-table/vega-table-expand-row/vega-table-expand-row.d.ts +5 -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 +5 -0
- package/dist/types/components/vega-table/vega-table-foot-row/slimmers/renderers/vega-table-foot-row-renderer.d.ts +1 -3
- package/dist/types/components/vega-table/vega-table-foot-row/vega-table-foot-row.d.ts +5 -0
- package/dist/types/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.d.ts +0 -4
- package/dist/types/components/vega-table/vega-table-head-row/vega-table-head-row.d.ts +2 -2
- package/dist/types/components/vega-table/vega-table-row/slimmers/renderers/vega-table-row-renderer.d.ts +2 -3
- package/dist/types/components/vega-table/vega-table-row/vega-table-row.d.ts +4 -0
- package/dist/types/components.d.ts +33 -2
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
- package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +3 -1
- package/dist/types/helpers/keyboard/keyboard-manager.d.ts +9 -0
- package/dist/types/helpers/keyboard/overlay-escape-coordination.d.ts +28 -0
- package/dist/types/helpers/public-api.d.ts +1 -0
- package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +1 -1
- package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +6 -0
- package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +6 -0
- package/dist/types/helpers/slimmers/position-calculation/screen-scroll-position-update.d.ts +2 -1
- package/dist/types/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.d.ts +2 -1
- package/dist/types/helpers/translation/interface.d.ts +16 -1
- package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +1 -0
- package/dist/types/polyfill/libphonenumber/metadata.d.ts +10 -0
- package/dist/types/types/components.type.d.ts +7 -1
- package/dist/types/types/public-api.d.ts +2 -0
- package/dist/types/utils/accessibility.d.ts +9 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-022cbf8a.js +1 -0
- package/dist/vega/{p-c8ad7207.entry.js → p-02c1284e.entry.js} +1 -1
- package/dist/vega/{p-22edd3cc.js → p-069bbb4a.js} +1 -1
- package/dist/vega/p-08fd229c.js +1 -0
- package/dist/vega/{p-fcb6b499.js → p-0eea1ca8.js} +1 -1
- package/dist/vega/{p-ba6881da.entry.js → p-131ce9df.entry.js} +1 -1
- package/dist/vega/{p-024db952.entry.js → p-143ee395.entry.js} +1 -1
- package/dist/vega/p-178634f3.js +1 -0
- package/dist/vega/{p-9e9f49f4.js → p-1836a6a5.js} +1 -1
- package/dist/vega/p-1dbf8d1f.js +1 -0
- package/dist/vega/{p-d4d90ce2.entry.js → p-2b26e182.entry.js} +1 -1
- package/dist/vega/p-2dda5c65.entry.js +1 -0
- package/dist/vega/{p-df63c2fb.entry.js → p-30010c41.entry.js} +1 -1
- package/dist/vega/p-32f5a6dd.entry.js +1 -0
- package/dist/vega/{p-3c8421d5.entry.js → p-3460a1c5.entry.js} +1 -1
- package/dist/vega/p-34b523da.entry.js +1 -0
- package/dist/vega/p-357c0226.entry.js +1 -0
- package/dist/vega/p-361f8996.js +1 -0
- package/dist/vega/{p-526e3634.js → p-36a57431.js} +1 -1
- package/dist/vega/p-36ee9d54.js +1 -0
- package/dist/vega/{p-6659c910.entry.js → p-37d5c37e.entry.js} +1 -1
- package/dist/vega/{p-47a48329.entry.js → p-3d6a43df.entry.js} +1 -1
- package/dist/vega/{p-0ca3b4bf.entry.js → p-45ad2d90.entry.js} +1 -1
- package/dist/vega/{p-fb9475ab.entry.js → p-4b117bfd.entry.js} +1 -1
- package/dist/vega/p-4b35c748.js +1 -0
- package/dist/vega/{p-55dc3053.entry.js → p-4e23e56c.entry.js} +1 -1
- package/dist/vega/p-4e70836a.entry.js +1 -0
- package/dist/vega/{p-66647244.js → p-4ea477d5.js} +1 -1
- package/dist/vega/{p-5147c30d.entry.js → p-50e8e24f.entry.js} +1 -1
- package/dist/vega/{p-9c5289dc.entry.js → p-522a6eec.entry.js} +1 -1
- package/dist/vega/p-53e3f259.js +1 -0
- package/dist/vega/{p-2c737fc8.js → p-5536146c.js} +1 -1
- package/dist/vega/{p-944e284d.entry.js → p-55c2c0df.entry.js} +1 -1
- package/dist/vega/p-587130f6.entry.js +1 -0
- package/dist/vega/{p-9c9b0629.js → p-58c8a4ac.js} +1 -1
- package/dist/vega/{p-4f6aaac5.entry.js → p-594cb986.entry.js} +1 -1
- package/dist/vega/{p-b12de1bf.entry.js → p-5c17ddda.entry.js} +1 -1
- package/dist/vega/{p-7977352b.entry.js → p-5c9c0c0d.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-60010f14.entry.js +1 -0
- package/dist/vega/p-6098c4bb.js +1 -0
- package/dist/vega/{p-2044eba9.js → p-60a74fb7.js} +1 -1
- package/dist/vega/p-61e63c0e.entry.js +1 -0
- package/dist/vega/{p-49d7cfed.entry.js → p-62254dc7.entry.js} +1 -1
- package/dist/vega/{p-2af1d8b8.entry.js → p-62ae9327.entry.js} +1 -1
- package/dist/vega/{p-b3c4943b.js → p-638b6a7d.js} +1 -1
- package/dist/vega/p-66245bc0.entry.js +1 -0
- package/dist/vega/{p-bdb5180c.js → p-68744e7e.js} +1 -1
- package/dist/vega/{p-f0a0fc77.entry.js → p-68ca8d3c.entry.js} +1 -1
- package/dist/vega/p-6a6c1279.js +1 -0
- package/dist/vega/{p-5e9e04f3.entry.js → p-6ae93679.entry.js} +1 -1
- package/dist/vega/{p-433b1395.entry.js → p-6d90d28d.entry.js} +1 -1
- package/dist/vega/p-6e9e7131.js +1 -0
- package/dist/vega/{p-014cd411.js → p-6eedbc4f.js} +1 -1
- package/dist/vega/{p-c348eaf5.js → p-6fae6768.js} +1 -1
- package/dist/vega/p-71813a9e.entry.js +1 -0
- package/dist/vega/{p-860e76f5.entry.js → p-729529d6.entry.js} +1 -1
- package/dist/vega/{p-aa433430.entry.js → p-75bfbffe.entry.js} +1 -1
- package/dist/vega/{p-d6023dc0.entry.js → p-764b4e51.entry.js} +1 -1
- package/dist/vega/p-77bcdd35.js +1 -0
- package/dist/vega/{p-c41a2d4a.js → p-7d3419c7.js} +1 -1
- package/dist/vega/p-8387896e.js +1 -0
- package/dist/vega/p-853a05eb.js +1 -0
- package/dist/vega/{p-db11134b.entry.js → p-8e8b5790.entry.js} +1 -1
- package/dist/vega/{p-444e24c6.js → p-8ebe30a8.js} +1 -1
- package/dist/vega/p-8f00dfe6.js +1 -0
- package/dist/vega/{p-4022412e.entry.js → p-9236b8d9.entry.js} +1 -1
- package/dist/vega/p-9402f32f.js +1 -0
- package/dist/vega/{p-691bdc20.js → p-941a83db.js} +1 -1
- package/dist/vega/{p-840444c9.entry.js → p-942f9ea6.entry.js} +1 -1
- package/dist/vega/{p-5110c84f.js → p-96c090c4.js} +1 -1
- package/dist/vega/{p-328ebbdb.entry.js → p-9fdf66a8.entry.js} +1 -1
- package/dist/vega/{p-867cc602.entry.js → p-a2c45173.entry.js} +1 -1
- package/dist/vega/{p-66fe8b4e.entry.js → p-a54ed341.entry.js} +1 -1
- package/dist/vega/{p-44999c88.entry.js → p-a6a89f09.entry.js} +1 -1
- package/dist/vega/{p-ccbed811.entry.js → p-a8a246e8.entry.js} +1 -1
- package/dist/vega/p-a93b3aed.js +1 -0
- package/dist/vega/{p-528748fa.js → p-aa135628.js} +1 -1
- package/dist/vega/{p-a1f220ca.js → p-ab9d53e9.js} +1 -1
- package/dist/vega/{p-e18c0656.entry.js → p-af0cfea0.entry.js} +1 -1
- package/dist/vega/p-af0e9bd5.entry.js +1 -0
- package/dist/vega/{p-daba4af1.js → p-b1557bbe.js} +1 -1
- package/dist/vega/{p-f13b39d8.js → p-b2a4314a.js} +1 -1
- package/dist/vega/p-b94f164a.entry.js +1 -0
- package/dist/vega/{p-23c1f378.entry.js → p-b97ed9f7.entry.js} +1 -1
- package/dist/vega/{p-1a37d63c.entry.js → p-bbfffe6b.entry.js} +1 -1
- package/dist/vega/{p-aa914dbd.entry.js → p-beccc38c.entry.js} +1 -1
- package/dist/vega/{p-dd0bd78b.js → p-c34f4cbc.js} +1 -1
- package/dist/vega/p-c51de680.js +3 -0
- package/dist/vega/{p-e1c82ca9.js → p-c576e846.js} +1 -1
- package/dist/vega/p-c601eea6.js +1 -0
- package/dist/vega/{p-200c8914.entry.js → p-c6d2513c.entry.js} +1 -1
- package/dist/vega/{p-d62e618a.entry.js → p-ca6bd3a0.entry.js} +1 -1
- package/dist/vega/{p-ce82d6bb.entry.js → p-cab890be.entry.js} +1 -1
- package/dist/vega/p-cb1cd15f.entry.js +1 -0
- package/dist/vega/p-d1f47512.js +1 -0
- package/dist/vega/{p-66a785d0.entry.js → p-d37d2ea4.entry.js} +1 -1
- package/dist/vega/{p-2f89ee14.entry.js → p-d3e99d4a.entry.js} +1 -1
- package/dist/vega/{p-f9bfee81.entry.js → p-d6bd3ce4.entry.js} +1 -1
- package/dist/vega/{p-f2384411.entry.js → p-d7838f6e.entry.js} +1 -1
- package/dist/vega/{p-a4360b7e.entry.js → p-d8c9ea46.entry.js} +1 -1
- package/dist/vega/p-d9588b3f.entry.js +1 -0
- package/dist/vega/p-db69a5c9.entry.js +1 -0
- package/dist/vega/{p-50eda925.js → p-de1d0284.js} +1 -1
- package/dist/vega/{p-3c559c8b.js → p-de6fc52c.js} +1 -1
- package/dist/vega/{p-fa5cd8b1.js → p-e14323f3.js} +1 -1
- package/dist/vega/{p-bd7725f7.entry.js → p-e48b7a8a.entry.js} +1 -1
- package/dist/vega/p-e6f67a44.js +1 -0
- package/dist/vega/{p-7754b10f.entry.js → p-e8e3bf74.entry.js} +1 -1
- package/dist/vega/p-eadc10bc.entry.js +1 -0
- package/dist/vega/p-ee329596.entry.js +1 -0
- package/dist/vega/p-f01bc6a2.js +1 -0
- package/dist/vega/{p-94b54a95.js → p-f324e90e.js} +1 -1
- package/dist/vega/{p-f9a3805d.js → p-f48519d2.js} +1 -1
- package/dist/vega/{p-52878ea9.js → p-f485448a.js} +1 -1
- package/dist/vega/{p-4afd6715.entry.js → p-f8b2dbb9.entry.js} +1 -1
- package/dist/vega/{p-35d37477.entry.js → p-f8d13d01.entry.js} +1 -1
- package/dist/vega/{p-4370b954.entry.js → p-f902305d.entry.js} +1 -1
- package/dist/vega/{p-3c152bad.entry.js → p-f99f054c.entry.js} +1 -1
- package/dist/vega/{p-77fb3971.entry.js → p-fe41e3b6.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-conttroller.js +0 -85
- package/dist/vega/p-0b2c4c0b.js +0 -1
- package/dist/vega/p-1fa22fda.js +0 -1
- package/dist/vega/p-2529820e.js +0 -1
- package/dist/vega/p-35628af4.js +0 -1
- package/dist/vega/p-3a230d4b.entry.js +0 -1
- package/dist/vega/p-3a620268.js +0 -1
- package/dist/vega/p-4473d8b1.js +0 -3
- package/dist/vega/p-4a2fe3a4.js +0 -1
- package/dist/vega/p-5447a8e8.js +0 -1
- package/dist/vega/p-5af312f8.js +0 -1
- package/dist/vega/p-5b3c8a56.js +0 -1
- package/dist/vega/p-6493f13a.entry.js +0 -1
- package/dist/vega/p-66728dd4.entry.js +0 -1
- package/dist/vega/p-67e88cd7.entry.js +0 -1
- package/dist/vega/p-67eaf77e.js +0 -1
- package/dist/vega/p-6d6b4495.entry.js +0 -1
- package/dist/vega/p-7b133734.entry.js +0 -1
- package/dist/vega/p-7b84a943.entry.js +0 -1
- package/dist/vega/p-83ad8988.js +0 -1
- package/dist/vega/p-8c30a60d.js +0 -1
- package/dist/vega/p-8d2a9012.js +0 -1
- package/dist/vega/p-8d4be607.js +0 -1
- package/dist/vega/p-8d77c7cf.js +0 -1
- package/dist/vega/p-8f3b93db.js +0 -1
- package/dist/vega/p-9c2b3279.js +0 -1
- package/dist/vega/p-9c9ff871.entry.js +0 -1
- package/dist/vega/p-9d90e271.entry.js +0 -1
- package/dist/vega/p-a7517760.entry.js +0 -1
- package/dist/vega/p-c8fb3aac.entry.js +0 -1
- package/dist/vega/p-cede3535.js +0 -1
- package/dist/vega/p-cf4b3d40.entry.js +0 -1
- package/dist/vega/p-d35a31a5.entry.js +0 -1
- package/dist/vega/p-ded1ecc1.entry.js +0 -1
- package/dist/vega/p-e1a65e06.entry.js +0 -1
- package/dist/vega/p-e469ba27.entry.js +0 -1
- package/dist/vega/p-e4c5cb4f.js +0 -1
- package/dist/vega/p-fd23c365.entry.js +0 -1
- /package/dist/types/components/vega-dropdown/slimmers/controllers/{vega-dropdown-keyboard-conttroller.d.ts → vega-dropdown-keyboard-controller.d.ts} +0 -0
|
@@ -1,9 +1,42 @@
|
|
|
1
1
|
import RTEExtensionContextManager from '../../../helpers/extension-context-manager';
|
|
2
2
|
/**
|
|
3
3
|
* Base renderer for table-related popovers, providing common functionalities such as accessing the table extension context.
|
|
4
|
+
*
|
|
5
|
+
* Popovers that move keyboard/VoiceOver focus into themselves (the setting toolbar and the
|
|
6
|
+
* properties dialog) share the same focus-restoration machinery: they make the editor content
|
|
7
|
+
* `inert` while open, track Escape presses at the document level, and return focus (and the caret)
|
|
8
|
+
* to the originating cell when an Escape dismisses the popover. That behavior lives here so the two
|
|
9
|
+
* renderers do not each carry a copy; subclasses only supply the two pieces that differ — how to
|
|
10
|
+
* resolve the editor content root ({@link getInertContentTarget}) and how to tell whether an event
|
|
11
|
+
* originated inside their own popover subtree ({@link isEventWithinPopover}).
|
|
4
12
|
*/
|
|
5
13
|
export class TablePopoverBaseRenderer {
|
|
6
14
|
constructor(renderContext) {
|
|
15
|
+
/** The editor content element made inert while the popover holds focus, cached so it can be restored. */
|
|
16
|
+
this.inertedContentEl = null;
|
|
17
|
+
/** The table cell to return focus to when the popover is dismissed via Escape. */
|
|
18
|
+
this.returnFocusCell = null;
|
|
19
|
+
/** Tracks whether Escape was pressed while the popover was open. */
|
|
20
|
+
this.escapePressed = false;
|
|
21
|
+
/** Document the Escape tracker keydown listener is bound to, for later removal. */
|
|
22
|
+
this.keydownListenerDocument = null;
|
|
23
|
+
/**
|
|
24
|
+
* Tracks Escape key presses that originate inside the popover so focus can be returned to the
|
|
25
|
+
* originating cell when that Escape dismisses the popover. vega-popover's own Escape handler hides
|
|
26
|
+
* the popover without restoring focus, so the restore is coordinated here.
|
|
27
|
+
*
|
|
28
|
+
* The listener is bound at the document level (the popover renders in a portal, so its Escape does
|
|
29
|
+
* not bubble back to the table), so scope it to the popover subtree via {@link isEventWithinPopover}:
|
|
30
|
+
* a stray Escape elsewhere must not arm the restore and hijack focus on a later non-Escape dismissal
|
|
31
|
+
* (e.g. click-outside).
|
|
32
|
+
*
|
|
33
|
+
* @param {KeyboardEvent} event - The keydown event.
|
|
34
|
+
*/
|
|
35
|
+
this.handleDocumentKeydown = (event) => {
|
|
36
|
+
if (event.code === 'Escape' && this.isEventWithinPopover(event)) {
|
|
37
|
+
this.escapePressed = true;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
7
40
|
this.renderContext = renderContext;
|
|
8
41
|
}
|
|
9
42
|
/**
|
|
@@ -16,4 +49,119 @@ export class TablePopoverBaseRenderer {
|
|
|
16
49
|
? RTEExtensionContextManager.getExtensionContext(this.renderContext.host)
|
|
17
50
|
: null;
|
|
18
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Begins tracking so a later Escape can return focus to `returnCell`. Records the cell and clears
|
|
54
|
+
* any stale Escape observed before the popover was opened.
|
|
55
|
+
*
|
|
56
|
+
* @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the popover is dismissed with Escape.
|
|
57
|
+
*/
|
|
58
|
+
beginReturnFocusTracking(returnCell) {
|
|
59
|
+
this.returnFocusCell = returnCell !== null && returnCell !== void 0 ? returnCell : null;
|
|
60
|
+
this.escapePressed = false;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Registers the document-level (capture phase) Escape tracker. The popover renders in a portal, so
|
|
64
|
+
* its Escape does not bubble back to the table; observing on the document lets us know when to
|
|
65
|
+
* return focus to the cell.
|
|
66
|
+
*
|
|
67
|
+
* @param {Document} doc - The document to bind the keydown listener to.
|
|
68
|
+
*/
|
|
69
|
+
attachEscapeTracker(doc) {
|
|
70
|
+
doc.addEventListener('keydown', this.handleDocumentKeydown, { capture: true });
|
|
71
|
+
this.keydownListenerDocument = doc;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Removes the document-level Escape tracker if one was registered.
|
|
75
|
+
*/
|
|
76
|
+
detachEscapeTracker() {
|
|
77
|
+
if (this.keydownListenerDocument) {
|
|
78
|
+
this.keydownListenerDocument.removeEventListener('keydown', this.handleDocumentKeydown, {
|
|
79
|
+
capture: true,
|
|
80
|
+
});
|
|
81
|
+
this.keydownListenerDocument = null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether the given event originated inside this popover's subtree. Subclasses override this to
|
|
86
|
+
* match their own portal-rendered content; the base returns `false` so renderers that do not move
|
|
87
|
+
* focus never arm the restore.
|
|
88
|
+
*
|
|
89
|
+
* @param {Event} _event - The event to test.
|
|
90
|
+
* @returns {boolean} `true` when the event originated inside the popover subtree.
|
|
91
|
+
*/
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
93
|
+
isEventWithinPopover(_event) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* When the popover hides after an Escape press, returns focus (and the caret) to the table cell
|
|
98
|
+
* that had focus before the popover was opened.
|
|
99
|
+
*
|
|
100
|
+
* vegaPopoverHide fires synchronously from the popover's own Escape handler, before the
|
|
101
|
+
* document-capture keydown observes the key and before the popover settles focus on `<body>`.
|
|
102
|
+
* Defer past that so the flag is set and this focus restore wins.
|
|
103
|
+
*/
|
|
104
|
+
restoreFocusOnEscapeHide() {
|
|
105
|
+
// eslint-disable-next-line no-restricted-globals
|
|
106
|
+
setTimeout(() => {
|
|
107
|
+
const shouldRestore = this.escapePressed;
|
|
108
|
+
const cell = this.returnFocusCell;
|
|
109
|
+
this.escapePressed = false;
|
|
110
|
+
this.returnFocusCell = null;
|
|
111
|
+
if (shouldRestore && cell && cell.isConnected) {
|
|
112
|
+
this.restoreFocusToCell(cell);
|
|
113
|
+
}
|
|
114
|
+
}, 0);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Focuses the given table cell and collapses the caret at its start.
|
|
118
|
+
*
|
|
119
|
+
* @param {HTMLElement} cell - The table cell to focus.
|
|
120
|
+
*/
|
|
121
|
+
restoreFocusToCell(cell) {
|
|
122
|
+
var _a, _b, _c;
|
|
123
|
+
cell.focus();
|
|
124
|
+
const extensionContext = this.getTableExtensionContext();
|
|
125
|
+
const selection = (_c = (_a = extensionContext === null || extensionContext === void 0 ? void 0 : extensionContext.getSelection()) !== null && _a !== void 0 ? _a : (_b = cell.ownerDocument) === null || _b === void 0 ? void 0 : _b.getSelection()) !== null && _c !== void 0 ? _c : null;
|
|
126
|
+
if (selection) {
|
|
127
|
+
const range = new Range();
|
|
128
|
+
range.setStart(cell, 0);
|
|
129
|
+
range.setEnd(cell, 0);
|
|
130
|
+
selection.removeAllRanges();
|
|
131
|
+
selection.addRange(range);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Resolves the `.rich-text-content` editor root to toggle `inert` on while the popover holds focus.
|
|
136
|
+
* Subclasses override this because they reach the content from different anchors (the toolbar's
|
|
137
|
+
* target vs. the current table ref); the base returns `null` so renderers that do not use inert are
|
|
138
|
+
* unaffected.
|
|
139
|
+
*
|
|
140
|
+
* @returns {Nullable<HTMLElement>} The editor content element, or `null` when it cannot be resolved.
|
|
141
|
+
*/
|
|
142
|
+
getInertContentTarget() {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Toggles `inert` on the editor content region while the popover holds keyboard/VoiceOver focus.
|
|
147
|
+
* Safari VoiceOver keeps its reading cursor anchored to the cell caret and does not follow the
|
|
148
|
+
* programmatic focus moved into the popover; making the editor content inert removes that text
|
|
149
|
+
* context so the VoiceOver cursor lands inside the popover. The popover is a body-level portal, so it
|
|
150
|
+
* is not a descendant of the inert content and stays interactive.
|
|
151
|
+
*
|
|
152
|
+
* @param {boolean} inert - Whether the editor content should be inert.
|
|
153
|
+
*/
|
|
154
|
+
setEditorContentInert(inert) {
|
|
155
|
+
if (inert) {
|
|
156
|
+
const content = this.getInertContentTarget();
|
|
157
|
+
if (content) {
|
|
158
|
+
content.setAttribute('inert', '');
|
|
159
|
+
this.inertedContentEl = content;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else if (this.inertedContentEl) {
|
|
163
|
+
this.inertedContentEl.removeAttribute('inert');
|
|
164
|
+
this.inertedContentEl = null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
19
167
|
}
|
|
@@ -15,7 +15,7 @@ export class RTETableBlockRenderer extends VegaRTEExtensionRenderer {
|
|
|
15
15
|
*/
|
|
16
16
|
doRender(h, renderData, rteContext) {
|
|
17
17
|
let tableRef;
|
|
18
|
-
const table = this.renderTable(h, renderData, (ref) => (tableRef = ref));
|
|
18
|
+
const table = this.renderTable(h, renderData, (ref) => (tableRef = ref), rteContext);
|
|
19
19
|
this.renderTableToolbar(rteContext);
|
|
20
20
|
const tableAnnotation = renderData.getAnnotationByType(RTETableExtensionAnnotationTypeEnum.TABLE);
|
|
21
21
|
const children = rteContext.editable
|
|
@@ -39,9 +39,16 @@ export class RTETableBlockRenderer extends VegaRTEExtensionRenderer {
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
}, [
|
|
42
|
-
//
|
|
42
|
+
// The table is a fully non-editable "widget" wrapped by a
|
|
43
|
+
// `<div contenteditable="false">`: there is NO editable element wrapping the
|
|
44
|
+
// table, so Chrome/VoiceOver exposes it as a real table ("table, N columns, M
|
|
45
|
+
// rows") instead of flattening it into the surrounding text entry area. The
|
|
46
|
+
// <table> stays a plain, semantically clean table and each cell re-enables editing
|
|
47
|
+
// via contentEditable=true. The cursor moves to before/after the table via the
|
|
48
|
+
// adjacent paragraphs in the editor content, treating the table as an atomic widget.
|
|
43
49
|
h('div', {
|
|
44
|
-
|
|
50
|
+
class: 'v-rte--extension-table-widget',
|
|
51
|
+
contentEditable: false,
|
|
45
52
|
ref: this.useRef(renderData),
|
|
46
53
|
}, [table]),
|
|
47
54
|
]),
|
|
@@ -55,6 +62,11 @@ export class RTETableBlockRenderer extends VegaRTEExtensionRenderer {
|
|
|
55
62
|
}
|
|
56
63
|
const result = h('div', {
|
|
57
64
|
class: 'v-rte--extension-table-container',
|
|
65
|
+
// The container is `display: table` (for shrink-to-fit centering), which WebKit maps to an
|
|
66
|
+
// AXTable. Without this, Safari VoiceOver lands its cursor on the container (or groups up to
|
|
67
|
+
// the widget host) instead of the real `<table>`. `role="presentation"` strips the container's
|
|
68
|
+
// implicit table semantics so VO descends to `table.v-rte--extension-table` like Chrome does.
|
|
69
|
+
role: 'presentation',
|
|
58
70
|
style: Object.assign({}, containerStyle),
|
|
59
71
|
}, children);
|
|
60
72
|
/**
|
|
@@ -83,17 +95,151 @@ export class RTETableBlockRenderer extends VegaRTEExtensionRenderer {
|
|
|
83
95
|
* @param {VegaRTECreateElementFunction} h - The create element function.
|
|
84
96
|
* @param {RTETableBlock} renderData - The table block to render.
|
|
85
97
|
* @param {(ref: HTMLElement) => HTMLElement} setTableRef - Set table ref to tableRef
|
|
98
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
86
99
|
* @returns {VegaRTERenderResult} - The rendered table element.
|
|
87
100
|
*/
|
|
88
|
-
renderTable(h, renderData, setTableRef) {
|
|
101
|
+
renderTable(h, renderData, setTableRef, rteContext) {
|
|
89
102
|
var _a;
|
|
90
|
-
|
|
103
|
+
const editable = !!rteContext.editable;
|
|
104
|
+
return h('table', Object.assign(Object.assign(Object.assign(Object.assign({ key: renderData.id }, (_a = renderData.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render()), { style: renderData.getStyles(), class: renderData.getClasses() }), (editable
|
|
105
|
+
? {
|
|
106
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
107
|
+
onClick: (event) => this.handleTableActivate(event, rteContext),
|
|
108
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
109
|
+
onKeyDown: (event) => this.handleTableKeyDown(event, rteContext, renderData),
|
|
110
|
+
}
|
|
111
|
+
: undefined)), {
|
|
91
112
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
92
113
|
ref: (ref) => {
|
|
93
114
|
this.useRef(renderData)(ref);
|
|
94
115
|
setTableRef(ref);
|
|
95
116
|
} }));
|
|
96
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Handles activation of the table itself (e.g. VoiceOver Ctrl+Option+Space, which dispatches a
|
|
120
|
+
* click on the focused table) by moving focus into the first cell so the user can start editing.
|
|
121
|
+
*
|
|
122
|
+
* @param {MouseEvent} event - The click event dispatched on the table.
|
|
123
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
124
|
+
*/
|
|
125
|
+
handleTableActivate(event, rteContext) {
|
|
126
|
+
const tableRef = event.currentTarget;
|
|
127
|
+
// Only treat this as "activate the table" when the click truly targets the table element
|
|
128
|
+
// itself — i.e. VoiceOver Ctrl+Option+Space (which dispatches a click on the focused table)
|
|
129
|
+
// or a click on the table's own padding/border. Clicks that bubble up from editable
|
|
130
|
+
// descendants (cells, or the supported <caption>) keep their native contentEditable caret
|
|
131
|
+
// placement, so we must not force focus into the first cell and break that interaction.
|
|
132
|
+
if (event.target !== event.currentTarget) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.focusFirstCell(tableRef, rteContext);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handles table-scoped keyboard shortcuts while focus is inside the table:
|
|
139
|
+
* - Alt+F10 opens the table setting toolbar (re-targeting and showing it when needed) and moves
|
|
140
|
+
* focus to it (the common "focus the contextual toolbar" shortcut), so keyboard/screen-reader
|
|
141
|
+
* users can reach the toolbar buttons even when it is currently closed.
|
|
142
|
+
* - Escape moves focus back onto the table, so the caret leaves the cell (its focus highlight
|
|
143
|
+
* is cleared), the contextual setting toolbar is dismissed, and screen readers announce the
|
|
144
|
+
* table again.
|
|
145
|
+
*
|
|
146
|
+
* @param {KeyboardEvent} event - The keydown event.
|
|
147
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
148
|
+
* @param {RTETableBlock} renderData - The table block being rendered.
|
|
149
|
+
*/
|
|
150
|
+
handleTableKeyDown(event, rteContext, renderData) {
|
|
151
|
+
var _a, _b;
|
|
152
|
+
if (event.altKey && event.key === 'F10') {
|
|
153
|
+
event.preventDefault();
|
|
154
|
+
event.stopPropagation();
|
|
155
|
+
const tableRef = event.currentTarget;
|
|
156
|
+
const f10Target = event.target;
|
|
157
|
+
const f10Cell = f10Target
|
|
158
|
+
? f10Target.closest('td, th')
|
|
159
|
+
: null;
|
|
160
|
+
(_a = this.tableToolbar) === null || _a === void 0 ? void 0 : _a.openSettingToolbarForKeyboard(renderData, () => tableRef, f10Cell);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (event.key !== 'Escape') {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const tableRef = event.currentTarget;
|
|
167
|
+
const target = event.target;
|
|
168
|
+
const cell = target
|
|
169
|
+
? target.closest('td, th')
|
|
170
|
+
: null;
|
|
171
|
+
if (!cell || !tableRef.contains(cell)) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
event.preventDefault();
|
|
175
|
+
event.stopPropagation();
|
|
176
|
+
this.focusTable(tableRef, rteContext);
|
|
177
|
+
// Focus moved from the cell back onto the table, so dismiss the contextual setting toolbar
|
|
178
|
+
// that may have been opened (e.g. by activating the table) — otherwise it lingers with no
|
|
179
|
+
// focused cell to act on.
|
|
180
|
+
(_b = this.tableToolbar) === null || _b === void 0 ? void 0 : _b.hide();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Moves focus (and the caret) into the first cell of the table.
|
|
184
|
+
*
|
|
185
|
+
* @param {HTMLElement} tableRef - The table element.
|
|
186
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
187
|
+
*/
|
|
188
|
+
focusFirstCell(tableRef, rteContext) {
|
|
189
|
+
const firstCell = tableRef.querySelector('td, th');
|
|
190
|
+
if (!firstCell) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
firstCell.focus();
|
|
194
|
+
const selection = this.getSelection(rteContext, tableRef);
|
|
195
|
+
if (selection) {
|
|
196
|
+
// Collapse the caret at the start of the cell content so the user can start typing.
|
|
197
|
+
const range = new Range();
|
|
198
|
+
range.setStart(firstCell, 0);
|
|
199
|
+
range.setEnd(firstCell, 0);
|
|
200
|
+
selection.removeAllRanges();
|
|
201
|
+
selection.addRange(range);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Moves focus onto the table element and clears any cell caret and selection highlight.
|
|
206
|
+
*
|
|
207
|
+
* @param {HTMLElement} tableRef - The table element.
|
|
208
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
209
|
+
*/
|
|
210
|
+
focusTable(tableRef, rteContext) {
|
|
211
|
+
var _a;
|
|
212
|
+
const selection = this.getSelection(rteContext, tableRef);
|
|
213
|
+
selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
|
|
214
|
+
const extensionContext = this.getExtensionContext(rteContext.host);
|
|
215
|
+
(_a = extensionContext === null || extensionContext === void 0 ? void 0 : extensionContext.tableSelection) === null || _a === void 0 ? void 0 : _a.setSelectedCells([]);
|
|
216
|
+
// The table is contentEditable=false, so it is not focusable by default. Add tabindex ONLY
|
|
217
|
+
// while moving focus onto it, and remove it again on blur, so that during normal navigation
|
|
218
|
+
// VoiceOver still announces it as "table, N columns, M rows" rather than a focusable widget.
|
|
219
|
+
tableRef.setAttribute('tabindex', '-1');
|
|
220
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
221
|
+
const removeTabindex = () => {
|
|
222
|
+
tableRef.removeAttribute('tabindex');
|
|
223
|
+
tableRef.removeEventListener('blur', removeTabindex);
|
|
224
|
+
};
|
|
225
|
+
tableRef.addEventListener('blur', removeTabindex);
|
|
226
|
+
tableRef.focus();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Resolves the editor selection, preferring the shadow-aware selection from the extension
|
|
230
|
+
* context and falling back to the table's owning document.
|
|
231
|
+
*
|
|
232
|
+
* @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
|
|
233
|
+
* @param {HTMLElement} tableRef - The table element.
|
|
234
|
+
* @returns {Nullable<Selection>} - The resolved selection, or null when unavailable.
|
|
235
|
+
*/
|
|
236
|
+
getSelection(rteContext, tableRef) {
|
|
237
|
+
const extensionContext = this.getExtensionContext(rteContext.host);
|
|
238
|
+
if (extensionContext) {
|
|
239
|
+
return extensionContext.getSelection();
|
|
240
|
+
}
|
|
241
|
+
return tableRef.ownerDocument ? tableRef.ownerDocument.getSelection() : null;
|
|
242
|
+
}
|
|
97
243
|
/**
|
|
98
244
|
* Handles the removal of the table block.
|
|
99
245
|
*
|
|
@@ -6,7 +6,7 @@ import { RowOperationEventHandler } from '../setting-event-handlers/row-operatio
|
|
|
6
6
|
import { CaptionOperationEventHandler } from '../setting-event-handlers/caption-operation';
|
|
7
7
|
import { ColumnOperationEventHandler } from '../setting-event-handlers/column-operation';
|
|
8
8
|
import { DomNodeSubjectObserverFactory } from '../../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
|
|
9
|
-
import { VegaPopoverShow } from '../../../../../helpers/event-manager/event-id/vega-event-id';
|
|
9
|
+
import { VegaPopoverShow, VegaPopoverHide, } from '../../../../../helpers/event-manager/event-id/vega-event-id';
|
|
10
10
|
import { TableDynamicPopoverRenderer } from './table-dynamic-popover-renderer';
|
|
11
11
|
import { MergeCellsOperationEventHandler } from '../setting-event-handlers/merge-cells-operation';
|
|
12
12
|
import { SplitCellOperationEventHandler } from '../setting-event-handlers/split-cell-operation';
|
|
@@ -57,6 +57,62 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
57
57
|
this.tableSettingRef.selectedCells = this.getTableSelectedCells();
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Hides the table setting toolbar and its dynamic popover. Used when focus leaves the table (e.g.
|
|
62
|
+
* Escape moves focus from a cell back onto the table) so the contextual toolbar does not linger.
|
|
63
|
+
*/
|
|
64
|
+
this.hide = () => {
|
|
65
|
+
var _a;
|
|
66
|
+
void this.tableDynamicPopover.hide();
|
|
67
|
+
void ((_a = this.popoverRef) === null || _a === void 0 ? void 0 : _a.hide());
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Opens the table setting toolbar for keyboard/screen-reader users and moves focus to its first
|
|
71
|
+
* enabled button. Used by the Alt+F10 shortcut so the toolbar can be reached from inside a cell
|
|
72
|
+
* even when it is currently closed: it re-targets and shows the popover (the same path as a table
|
|
73
|
+
* click) before deferring focus to the first enabled button.
|
|
74
|
+
*
|
|
75
|
+
* @param {RTETableBlock} tableBlock - The table's block data.
|
|
76
|
+
* @param {() => HTMLElement} getTableRef - Getter for the table's DOM element.
|
|
77
|
+
* @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the toolbar is dismissed with Escape.
|
|
78
|
+
*/
|
|
79
|
+
this.openSettingToolbarForKeyboard = (tableBlock, getTableRef, returnCell) => {
|
|
80
|
+
// Re-target and show the popover through the same path as a table click so the toolbar is
|
|
81
|
+
// actually visible before focus lands on it — otherwise focus would be pushed onto a hidden
|
|
82
|
+
// or stale toolbar that isn't shown.
|
|
83
|
+
this.reTarget(tableBlock, getTableRef);
|
|
84
|
+
void this.tableDynamicPopover.hide();
|
|
85
|
+
remoteInvocationRegistry.call(domNodeSubjectFactory.getSubject(this.popoverRef, VegaInternalPopoverUpdateTarget), getTableRef());
|
|
86
|
+
void this.popoverRef.show(true);
|
|
87
|
+
this.focusFirstSettingButton(returnCell);
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Moves focus to the first enabled button in the table setting toolbar. Used by the Alt+F10
|
|
91
|
+
* shortcut so keyboard and screen-reader users can reach the toolbar from inside the table.
|
|
92
|
+
*
|
|
93
|
+
* @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the toolbar is dismissed with Escape.
|
|
94
|
+
*/
|
|
95
|
+
this.focusFirstSettingButton = (returnCell) => {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
// Remember the cell to return focus to if the toolbar is dismissed with Escape, and clear any
|
|
98
|
+
// stale Escape recorded before the toolbar was focused.
|
|
99
|
+
this.beginReturnFocusTracking(returnCell);
|
|
100
|
+
// Safari VoiceOver ignores the toolbar's aria-modal and keeps driving a caret through the still
|
|
101
|
+
// editable content, so on Ctrl+Opt+Right it walks the DOM caret out of the table into the editor
|
|
102
|
+
// instead of staying on the toolbar. Clear the caret AND make the editor content inert so there is
|
|
103
|
+
// no text context for VoiceOver to advance; the inert flag is lifted again when the toolbar hides.
|
|
104
|
+
(_b = (_a = this.getTableExtensionContext()) === null || _a === void 0 ? void 0 : _a.getSelection()) === null || _b === void 0 ? void 0 : _b.removeAllRanges();
|
|
105
|
+
this.setEditorContentInert(true);
|
|
106
|
+
// The popover reveals its content asynchronously, so defer to the next tick to make sure
|
|
107
|
+
// the setting buttons are present and focusable.
|
|
108
|
+
// eslint-disable-next-line no-restricted-globals
|
|
109
|
+
setTimeout(() => {
|
|
110
|
+
var _a, _b, _c;
|
|
111
|
+
const buttons = Array.from((_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.rte-table-setting-item')) !== null && _c !== void 0 ? _c : []);
|
|
112
|
+
const firstEnabled = buttons.find((button) => !button.hasAttribute('disabled'));
|
|
113
|
+
firstEnabled === null || firstEnabled === void 0 ? void 0 : firstEnabled.focus();
|
|
114
|
+
}, 0);
|
|
115
|
+
};
|
|
60
116
|
/**
|
|
61
117
|
* Handles setting menu click events.
|
|
62
118
|
*
|
|
@@ -69,11 +125,16 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
69
125
|
extensionContext && handler.execute(event.detail, extensionContext, this.tableBlock);
|
|
70
126
|
if (event.detail[0] === TableSettingType.CAPTION) {
|
|
71
127
|
this.updateTableSettingCaption();
|
|
128
|
+
this.moveFocusToCaption();
|
|
72
129
|
}
|
|
73
130
|
}
|
|
74
131
|
if (event.detail[0] === TableSettingType.TABLE || event.detail[0] === TableSettingType.CELL) {
|
|
132
|
+
// Capture the return cell before hiding the setting popover, whose own hide handler clears
|
|
133
|
+
// it, so the properties dialog can move focus into itself and restore it to the cell on
|
|
134
|
+
// Escape for keyboard/screen-reader users.
|
|
135
|
+
const returnCell = this.returnFocusCell;
|
|
75
136
|
void this.popoverRef.hide();
|
|
76
|
-
void this.tableDynamicPopover.show(event.detail[0]);
|
|
137
|
+
void this.tableDynamicPopover.show(event.detail[0], returnCell);
|
|
77
138
|
}
|
|
78
139
|
};
|
|
79
140
|
/**
|
|
@@ -81,6 +142,17 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
81
142
|
*/
|
|
82
143
|
this.handleTableSettingPopoverShow = () => {
|
|
83
144
|
this.syncSelectedCells();
|
|
145
|
+
this.labelSettingDialog();
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* When the setting popover hides after an Escape press, returns focus (and the caret) to the
|
|
149
|
+
* table cell that had focus before the toolbar was reached via Alt+F10.
|
|
150
|
+
*/
|
|
151
|
+
this.handleTableSettingPopoverHide = () => {
|
|
152
|
+
// Lift the inert guard on the editor content synchronously, before any focus restore runs, so the
|
|
153
|
+
// cell (or the properties dialog) can receive focus and the editor is interactive again.
|
|
154
|
+
this.setEditorContentInert(false);
|
|
155
|
+
this.restoreFocusOnEscapeHide();
|
|
84
156
|
};
|
|
85
157
|
this.tableDynamicPopover = new TableDynamicPopoverRenderer(RTETableColorManager.getTableColors(), renderContext);
|
|
86
158
|
}
|
|
@@ -89,6 +161,8 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
89
161
|
*/
|
|
90
162
|
destroy() {
|
|
91
163
|
this.tableDynamicPopover.destroy();
|
|
164
|
+
this.setEditorContentInert(false);
|
|
165
|
+
this.detachEscapeTracker();
|
|
92
166
|
if (this.popoverContainer) {
|
|
93
167
|
this.popoverContainer.remove();
|
|
94
168
|
}
|
|
@@ -109,6 +183,10 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
109
183
|
popover.isScreenPosition = true;
|
|
110
184
|
popover.className = 'rte-table-setting-popover';
|
|
111
185
|
DomNodeSubjectObserverFactory.addUniqueObserverToNode(popover, VegaPopoverShow, this.handleTableSettingPopoverShow);
|
|
186
|
+
DomNodeSubjectObserverFactory.addUniqueObserverToNode(popover, VegaPopoverHide, this.handleTableSettingPopoverHide);
|
|
187
|
+
// Escape inside the popover (rendered in a portal) does not bubble back to the table, so
|
|
188
|
+
// observe it on the document (capture phase) to know when to return focus to the cell.
|
|
189
|
+
this.attachEscapeTracker(safeDocument);
|
|
112
190
|
const slotDiv = safeDocument.createElement('div');
|
|
113
191
|
slotDiv.setAttribute('slot', 'popover');
|
|
114
192
|
const tableSetting = safeDocument.createElement('vega-rich-text-table-setting');
|
|
@@ -121,6 +199,25 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
121
199
|
this.tableSettingRef = tableSetting;
|
|
122
200
|
}
|
|
123
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Whether the given event originated inside the setting toolbar subtree.
|
|
204
|
+
*
|
|
205
|
+
* @param {Event} event - The event to test.
|
|
206
|
+
* @returns {boolean} `true` when the toolbar is rendered and the event's composed path includes it.
|
|
207
|
+
*/
|
|
208
|
+
isEventWithinPopover(event) {
|
|
209
|
+
return !!this.tableSettingRef && event.composedPath().includes(this.tableSettingRef);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Resolves the `.rich-text-content` editor root from the setting toolbar's target so the content
|
|
213
|
+
* can be made inert while the toolbar holds keyboard/VoiceOver focus.
|
|
214
|
+
*
|
|
215
|
+
* @returns {Nullable<HTMLElement>} The editor content element, or `null` when it cannot be resolved.
|
|
216
|
+
*/
|
|
217
|
+
getInertContentTarget() {
|
|
218
|
+
var _a, _b, _c;
|
|
219
|
+
return (_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.closest('.rich-text-content')) !== null && _c !== void 0 ? _c : null;
|
|
220
|
+
}
|
|
124
221
|
/**
|
|
125
222
|
* Updates the table setting component caption state to match the current table data.
|
|
126
223
|
*/
|
|
@@ -130,6 +227,35 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
130
227
|
this.tableSettingRef.hasCaption = hasCaption;
|
|
131
228
|
}
|
|
132
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* When the caption is toggled on, moves keyboard/VoiceOver focus and the caret into the caption so
|
|
232
|
+
* the user lands in it to start typing. The setting toolbar is opened as inert-guarded for
|
|
233
|
+
* keyboard/screen-reader users, so lift that guard first; the caption is re-rendered by the toggle,
|
|
234
|
+
* so defer the focus to the next tick when the `<caption>` element exists.
|
|
235
|
+
*/
|
|
236
|
+
moveFocusToCaption() {
|
|
237
|
+
if (!this.tableBlock.hasCaption()) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
this.setEditorContentInert(false);
|
|
241
|
+
// eslint-disable-next-line no-restricted-globals
|
|
242
|
+
setTimeout(() => {
|
|
243
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
244
|
+
const caption = (_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.querySelector('caption')) !== null && _c !== void 0 ? _c : null;
|
|
245
|
+
if (!caption) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
caption.focus();
|
|
249
|
+
const selection = (_g = (_e = (_d = this.getTableExtensionContext()) === null || _d === void 0 ? void 0 : _d.getSelection()) !== null && _e !== void 0 ? _e : (_f = caption.ownerDocument) === null || _f === void 0 ? void 0 : _f.getSelection()) !== null && _g !== void 0 ? _g : null;
|
|
250
|
+
if (selection) {
|
|
251
|
+
const range = new Range();
|
|
252
|
+
range.selectNodeContents(caption);
|
|
253
|
+
range.collapse(false);
|
|
254
|
+
selection.removeAllRanges();
|
|
255
|
+
selection.addRange(range);
|
|
256
|
+
}
|
|
257
|
+
}, 0);
|
|
258
|
+
}
|
|
133
259
|
/**
|
|
134
260
|
* Re-targets the shared popovers to the given table.
|
|
135
261
|
*
|
|
@@ -144,6 +270,22 @@ export class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
|
|
|
144
270
|
this.tableDynamicPopover.reTarget(tableBlock, getTableRef);
|
|
145
271
|
}
|
|
146
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* `vega-popover-content-box` renders `role="dialog"` + `aria-modal="true"`, which on WebKit
|
|
275
|
+
* VoiceOver confines the reading cursor to the popover. Keep those semantics so Ctrl+Opt+Arrow
|
|
276
|
+
* cannot walk the VoiceOver cursor out of the toolbar past the last button (VoiceOver swallows
|
|
277
|
+
* those keys, so this cannot be trapped in JS), and give the dialog an accessible name so it
|
|
278
|
+
* announces "Table tools" on entry.
|
|
279
|
+
*/
|
|
280
|
+
labelSettingDialog() {
|
|
281
|
+
var _a, _b;
|
|
282
|
+
const dialog = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.closest('vega-popover-content-box')) !== null && _b !== void 0 ? _b : null;
|
|
283
|
+
if (dialog) {
|
|
284
|
+
dialog.setAttribute('role', 'dialog');
|
|
285
|
+
dialog.setAttribute('aria-modal', 'true');
|
|
286
|
+
dialog.setAttribute('aria-label', 'Table tools');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
147
289
|
/**
|
|
148
290
|
* Collects and returns the currently selected table cells.
|
|
149
291
|
*
|
package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js
CHANGED
|
@@ -366,11 +366,36 @@ export class RTETableSelection {
|
|
|
366
366
|
const commonAncestorContainer = range.commonAncestorContainer;
|
|
367
367
|
const rangeInTable = !!findParent(commonAncestorContainer, `table`);
|
|
368
368
|
if (rangeInTable) {
|
|
369
|
-
|
|
369
|
+
let selectedCells = this.filterSelectedCell(range, commonAncestorContainer);
|
|
370
|
+
if (selectedCells.length === 0) {
|
|
371
|
+
// A collapsed caret placed at an element boundary (e.g. keyboard/VoiceOver entry via
|
|
372
|
+
// Ctrl+Option+Space) does not intersect a text node, so filterSelectedCell finds nothing
|
|
373
|
+
// on browsers that keep the caret on the element (Firefox) instead of normalizing it into
|
|
374
|
+
// the text node (Chrome). Resolve the containing cell directly so the setting toolbar is
|
|
375
|
+
// still enabled.
|
|
376
|
+
selectedCells = this.resolveCaretCell(commonAncestorContainer);
|
|
377
|
+
}
|
|
370
378
|
this.setSelectedCells(selectedCells);
|
|
371
379
|
}
|
|
372
380
|
}
|
|
373
381
|
}
|
|
382
|
+
/**
|
|
383
|
+
* Resolve the single table cell that contains the given selection node. Used as a fallback when a
|
|
384
|
+
* collapsed caret does not intersect any text node (see handleSelectionChange).
|
|
385
|
+
*
|
|
386
|
+
* @param {Node} node - The selection's common ancestor container.
|
|
387
|
+
* @returns {RTETableCellBlock[]} The containing cell block, or an empty list when none is found.
|
|
388
|
+
*/
|
|
389
|
+
resolveCaretCell(node) {
|
|
390
|
+
var _a;
|
|
391
|
+
const startElement = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
|
|
392
|
+
const cellRef = (_a = startElement === null || startElement === void 0 ? void 0 : startElement.closest('td, th')) !== null && _a !== void 0 ? _a : null;
|
|
393
|
+
if (!cellRef) {
|
|
394
|
+
return [];
|
|
395
|
+
}
|
|
396
|
+
const cellBlock = stateEntityRenderingRegistry.getEntityByDOM(cellRef);
|
|
397
|
+
return cellBlock ? [cellBlock] : [];
|
|
398
|
+
}
|
|
374
399
|
/**
|
|
375
400
|
* Mark the beginning of a drag operation.
|
|
376
401
|
*/
|
|
@@ -18,6 +18,7 @@ export class RTETableToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer
|
|
|
18
18
|
return createTablePopoverRenderer.render(h, super.renderButton(h, editorContext, {
|
|
19
19
|
showArrowIcon: true,
|
|
20
20
|
icon: 'rte-table',
|
|
21
|
+
ariaLabel: 'Table',
|
|
21
22
|
tooltip: { text: 'Insert table' },
|
|
22
23
|
}));
|
|
23
24
|
}
|
|
@@ -76,8 +76,17 @@ export class VegaRichTextCellPropertiesFormFieldRenderer extends VegaRichTextTab
|
|
|
76
76
|
return (h("div", { class: "text-alignment-container" },
|
|
77
77
|
h("vega-font", { variant: "font-field-label", color: "text-primary" }, "Text Alignment"),
|
|
78
78
|
h("vega-flex", { direction: "row", gap: "size-16" },
|
|
79
|
-
this.renderAlignmentField(['left', 'center', 'right', 'justify'], 'align-', 'textAlign'
|
|
80
|
-
|
|
79
|
+
this.renderAlignmentField(['left', 'center', 'right', 'justify'], 'align-', 'textAlign', {
|
|
80
|
+
left: this.translationSlimmer.t('Align text left'),
|
|
81
|
+
center: this.translationSlimmer.t('Align text center'),
|
|
82
|
+
right: this.translationSlimmer.t('Align text right'),
|
|
83
|
+
justify: this.translationSlimmer.t('Justify text'),
|
|
84
|
+
}),
|
|
85
|
+
this.renderAlignmentField(['top', 'middle', 'bottom'], 'align-', 'verticalAlign', {
|
|
86
|
+
top: this.translationSlimmer.t('Align vertically top'),
|
|
87
|
+
middle: this.translationSlimmer.t('Align vertically middle'),
|
|
88
|
+
bottom: this.translationSlimmer.t('Align vertically bottom'),
|
|
89
|
+
}))));
|
|
81
90
|
}
|
|
82
91
|
/**
|
|
83
92
|
* Merge form data with style map for all selected cell blocks.
|
|
@@ -182,11 +182,11 @@ export class VegaRichTextTablePropertiesBaseFormFieldRenderer extends VegaSlimme
|
|
|
182
182
|
h("vega-input", { ref: this.handleFormChange, "data-vega-form": "height", label: "Height", validationRules: this.dimensionFieldValidationRule }),
|
|
183
183
|
withPadding && (h("vega-input", { ref: this.handleFormChange, "data-vega-form": "padding", label: "Padding", validationRules: this.dimensionFieldValidationRule }))));
|
|
184
184
|
}
|
|
185
|
-
renderAlignmentField(alignmentList, iconPrefix, formFieldName) {
|
|
185
|
+
renderAlignmentField(alignmentList, iconPrefix, formFieldName, ariaLabelMap) {
|
|
186
186
|
return (h("vega-flex", { direction: "row", gap: "0", class: "text-alignment-button-group" },
|
|
187
187
|
h("vega-input", { ref: this.handleFormChange, "data-vega-form": formFieldName, type: "hidden" }),
|
|
188
188
|
alignmentList.map((key) => {
|
|
189
|
-
return (h("button", { "data-id": key, "data-form-field-name": formFieldName, class: `text-alignment-${key}`, onClick: this.handleAlignmentButtonClick },
|
|
189
|
+
return (h("button", { "data-id": key, "data-form-field-name": formFieldName, class: `text-alignment-${key}`, "aria-label": ariaLabelMap[key], onClick: this.handleAlignmentButtonClick },
|
|
190
190
|
h("vega-icon", { icon: VegaInternalIconManager.getIconKey(`${iconPrefix}${key}`) })));
|
|
191
191
|
})));
|
|
192
192
|
}
|
|
@@ -274,6 +274,9 @@ __decorate([
|
|
|
274
274
|
__decorate([
|
|
275
275
|
MapToComponentField()
|
|
276
276
|
], VegaRichTextTablePropertiesBaseFormFieldRenderer.prototype, "defaultValue", void 0);
|
|
277
|
+
__decorate([
|
|
278
|
+
MapToComponentField()
|
|
279
|
+
], VegaRichTextTablePropertiesBaseFormFieldRenderer.prototype, "translationSlimmer", void 0);
|
|
277
280
|
__decorate([
|
|
278
281
|
MapToComponentField()
|
|
279
282
|
], VegaRichTextTablePropertiesBaseFormFieldRenderer.prototype, "renderer", void 0);
|