@heartlandone/vega 2.82.0 → 2.83.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-3350d580.js → app-globals-40b1b1b2.js} +1 -1
- package/dist/cjs/{dto-renderer-manager-ae5fcbba.js → dto-renderer-manager-7eb5c5ce.js} +42 -2
- package/dist/cjs/{element-appender-slimmer-dedd3a34.js → element-appender-slimmer-52c2b455.js} +84 -8
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{token-extension-9b213b6b.js → token-extension-361273fb.js} +77 -20
- package/dist/cjs/vega-banner.cjs.entry.js +13 -2
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +37 -4
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-dialog_2.cjs.entry.js +27 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +1 -1
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-pagination-page-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 +1 -1
- package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +8 -9
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +1 -1
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +54 -9
- package/dist/cjs/vega-text.cjs.entry.js +10 -0
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +1 -1
- package/dist/cjs/vega.cjs.js +4 -4
- package/dist/collection/components/vega-banner/slimmers/renderers/vega-banner-renderer.js +11 -2
- package/dist/collection/components/vega-banner/vega-banner.js +3 -1
- package/dist/collection/components/vega-checkbox/vega-checkbox.css +19 -14
- package/dist/collection/components/vega-checkbox/vega-checkbox.js +57 -3
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.js +9 -3
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-nested-modal-controller.js +17 -2
- package/dist/collection/components/vega-pagination/internal/vega-pagination-go-to.js +1 -1
- package/dist/collection/components/vega-pagination/vega-pagination-page-selector-mobile/slimmers/renderers/page-selector-mobile-renderer.js +1 -1
- package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +12 -10
- package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +28 -3
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +24 -6
- package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +23 -8
- package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +2 -2
- package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +18 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +5 -3
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +8 -3
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +47 -0
- package/dist/collection/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.js +10 -0
- package/dist/collection/helpers/rte-manager/dto-renderer-manager.js +42 -2
- package/dist/collection/helpers/slimmers/element-appender/body-positioned-wrapper/third-party-dialog-wrapper.js +73 -0
- package/dist/collection/helpers/slimmers/element-appender/element-appender-container-controller.js +6 -0
- package/dist/esm/{app-globals-0b7e8b50.js → app-globals-f67d0eaf.js} +1 -1
- package/dist/esm/{dto-renderer-manager-12bc9121.js → dto-renderer-manager-abc7eb5f.js} +42 -2
- package/dist/esm/{element-appender-slimmer-5aca1bca.js → element-appender-slimmer-29c94a18.js} +84 -8
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +4 -4
- package/dist/esm/{token-extension-9d717a35.js → token-extension-0710dbc5.js} +77 -20
- package/dist/esm/vega-banner.entry.js +13 -2
- package/dist/esm/vega-checkbox_2.entry.js +37 -4
- package/dist/esm/vega-date-picker_2.entry.js +1 -1
- package/dist/esm/vega-dialog_2.entry.js +27 -5
- package/dist/esm/vega-dropdown_5.entry.js +1 -1
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-pagination-page-selector-mobile.entry.js +1 -1
- package/dist/esm/vega-pagination.entry.js +1 -1
- package/dist/esm/vega-popover_2.entry.js +1 -1
- package/dist/esm/vega-progress-tracker_2.entry.js +8 -9
- package/dist/esm/vega-rich-text-content.entry.js +1 -1
- package/dist/esm/vega-rich-text-editor_4.entry.js +54 -9
- package/dist/esm/vega-text.entry.js +10 -0
- package/dist/esm/vega-time-picker_2.entry.js +1 -1
- package/dist/esm/vega-tooltip_2.entry.js +1 -1
- package/dist/esm/vega.js +4 -4
- package/dist/sri/vega-sri-manifest.json +70 -70
- package/dist/types/components/vega-banner/slimmers/renderers/vega-banner-renderer.d.ts +6 -0
- package/dist/types/components/vega-banner/vega-banner.d.ts +2 -0
- package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +22 -1
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.d.ts +1 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-nested-modal-controller.d.ts +3 -2
- package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +8 -9
- package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +20 -2
- package/dist/types/components/vega-rich-text-editor/extensions/languages/language-extension.d.ts +13 -2
- package/dist/types/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.d.ts +15 -4
- package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +1 -1
- package/dist/types/components/vega-rich-text-editor/interface.d.ts +4 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/controllers/extension-controller.d.ts +7 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.d.ts +4 -3
- package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +14 -1
- package/dist/types/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.d.ts +1 -0
- package/dist/types/components.d.ts +29 -5
- package/dist/types/helpers/rte-manager/dto-renderer-manager.d.ts +26 -1
- package/dist/types/helpers/slimmers/element-appender/body-positioned-wrapper/third-party-dialog-wrapper.d.ts +45 -0
- package/dist/types/helpers/slimmers/element-appender/element-appender-container-controller.d.ts +2 -0
- package/dist/types/types/components.type.d.ts +1 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-0bcb2945.entry.js +1 -0
- package/dist/vega/{p-a30ae8a1.js → p-0bf8743f.js} +1 -1
- package/dist/vega/p-142f371b.entry.js +1 -0
- package/dist/vega/p-158c6a9f.entry.js +1 -0
- package/dist/vega/p-1b48e8a5.entry.js +1 -0
- package/dist/vega/p-380abceb.entry.js +1 -0
- package/dist/vega/{p-3505f7cc.entry.js → p-54ba35e3.entry.js} +1 -1
- package/dist/vega/p-5be546c5.js +1 -0
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-246eb001.entry.js → p-608f234f.entry.js} +1 -1
- package/dist/vega/p-81a11dc6.entry.js +1 -0
- package/dist/vega/{p-23c840dc.entry.js → p-8559e36f.entry.js} +1 -1
- package/dist/vega/p-90cb665e.entry.js +1 -0
- package/dist/vega/{p-88b6184c.entry.js → p-a4738b70.entry.js} +1 -1
- package/dist/vega/p-b6c3ce6d.js +1 -0
- package/dist/vega/p-b9728ca8.js +1 -0
- package/dist/vega/{p-7faaa5e1.entry.js → p-cc00135a.entry.js} +1 -1
- package/dist/vega/{p-97f36f4e.entry.js → p-e00fb667.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/vega/p-1dd6ba67.js +0 -1
- package/dist/vega/p-1efb47fe.entry.js +0 -1
- package/dist/vega/p-4f938ee4.entry.js +0 -1
- package/dist/vega/p-6d95390b.entry.js +0 -1
- package/dist/vega/p-a5bd3ecd.entry.js +0 -1
- package/dist/vega/p-c366e7f7.entry.js +0 -1
- package/dist/vega/p-d872beb1.entry.js +0 -1
- package/dist/vega/p-d9d5c693.entry.js +0 -1
- package/dist/vega/p-dd6211cd.js +0 -1
- package/dist/vega/p-fcabf0dc.js +0 -1
package/dist/collection/components/vega-text/slimmers/renderers/vega-text-tooltip-renderer.js
CHANGED
|
@@ -12,10 +12,15 @@ export class VegaTextTooltipRenderer extends PageResizeObserverSlimmer {
|
|
|
12
12
|
/**
|
|
13
13
|
* The below method is e2e-test covered in
|
|
14
14
|
* @see{module:vega-text-with-long-text-change-screen-size}
|
|
15
|
+
* @see{module:vega-text-restore-on-enlarge-screen-size}
|
|
15
16
|
*/
|
|
16
17
|
constructor() {
|
|
17
18
|
/* eslint-disable jsdoc/require-jsdoc*/
|
|
18
19
|
super({
|
|
20
|
+
// Observe both the host (catches show/hide e.g. in vega-tab-group-panel, VD-8769)
|
|
21
|
+
// and document.body (catches viewport resize after truncation collapses host width).
|
|
22
|
+
// eslint-disable-next-line no-restricted-globals
|
|
23
|
+
target: /* istanbul ignore next */ () => [this.host, document.body],
|
|
19
24
|
callback: /* istanbul ignore next */ () => {
|
|
20
25
|
if (this.overflow === 'ellipsis') {
|
|
21
26
|
if (this.tooltipRef) {
|
|
@@ -33,6 +38,11 @@ export class VegaTextTooltipRenderer extends PageResizeObserverSlimmer {
|
|
|
33
38
|
*/
|
|
34
39
|
/* istanbul ignore next */
|
|
35
40
|
this.handleTooltip = async () => {
|
|
41
|
+
// Skip when host has no layout (e.g. hidden inside an inactive vega-tab-group-panel);
|
|
42
|
+
// the observer will re-fire once the host becomes visible.
|
|
43
|
+
if (this.host.clientWidth === 0) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
36
46
|
if (isTextWrapped(this.host)) {
|
|
37
47
|
const tooltip = this.createTooltip();
|
|
38
48
|
void tooltip.componentOnReady().then(() => {
|
|
@@ -7,6 +7,14 @@ class RTEDTORendererManager {
|
|
|
7
7
|
this.RTE_DTO_RENDERER_MAP = new Map();
|
|
8
8
|
// Register RTE Toolbar Button Renderers, mapping type strings to their respective renderer instances.
|
|
9
9
|
this.RTE_TOOLBAR_BUTTON_RENDERER_MAP = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Per-host toolbar button renderer map.
|
|
12
|
+
* Stores a host-specific renderer map so that extensions that register during
|
|
13
|
+
* {@link VegaRTEExtension#prepareBeforeLoad} can provide isolated renderer instances
|
|
14
|
+
* for each {@link HTMLVegaRichTextEditorElement}. At render time this map is checked
|
|
15
|
+
* first; the global singleton map is used as a fallback.
|
|
16
|
+
*/
|
|
17
|
+
this.hostToolbarButtonRendererMap = new WeakMap();
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Registers a new RTE DTO renderer.
|
|
@@ -32,6 +40,24 @@ class RTEDTORendererManager {
|
|
|
32
40
|
registerRTEToolbarButtonRenderer(type, RTEToolbarButtonRenderer) {
|
|
33
41
|
this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.set(type, RTEToolbarButtonRenderer);
|
|
34
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Registers a host-specific toolbar button renderer.
|
|
45
|
+
* The per-host renderer takes precedence over the global singleton when the host
|
|
46
|
+
* element is passed to {@link getRTEToolbarButtonRenderer}.
|
|
47
|
+
*
|
|
48
|
+
* @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
|
|
49
|
+
* @param {HTMLVegaRichTextEditorElement} host - The rich text editor host element.
|
|
50
|
+
* @param {string} type - The type identifier for the toolbar button renderer.
|
|
51
|
+
* @param {VegaRTEToolbarButtonRenderer} renderer - The renderer instance to register for this host.
|
|
52
|
+
*/
|
|
53
|
+
registerRTEToolbarButtonRendererForHost(host, type, renderer) {
|
|
54
|
+
let hostMap = this.hostToolbarButtonRendererMap.get(host);
|
|
55
|
+
if (!hostMap) {
|
|
56
|
+
hostMap = new Map();
|
|
57
|
+
this.hostToolbarButtonRendererMap.set(host, hostMap);
|
|
58
|
+
}
|
|
59
|
+
hostMap.set(type, renderer);
|
|
60
|
+
}
|
|
35
61
|
/**
|
|
36
62
|
* Retrieves the RTE renderer for a given type.
|
|
37
63
|
*
|
|
@@ -43,12 +69,26 @@ class RTEDTORendererManager {
|
|
|
43
69
|
}
|
|
44
70
|
/**
|
|
45
71
|
* Retrieves the RTE Toolbar Button Renderer for a given type.
|
|
72
|
+
* When a host element is provided the per-host map registered via
|
|
73
|
+
* {@link registerRTEToolbarButtonRendererForHost} is checked first; the global
|
|
74
|
+
* singleton map is used as a fallback so that extensions that do not override
|
|
75
|
+
* {@link VegaRTEExtension#prepareBeforeLoad} continue to work unchanged.
|
|
46
76
|
*
|
|
77
|
+
* @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
|
|
47
78
|
* @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
|
|
79
|
+
* @param {HTMLVegaRichTextEditorElement} [host] - Optional host element for per-host lookup.
|
|
48
80
|
* @returns {Nullable<VegaRTEToolbarButtonRenderer>} - The renderer instance for the RTE Toolbar Button, or null if not found.
|
|
49
81
|
*/
|
|
50
|
-
getRTEToolbarButtonRenderer(type) {
|
|
51
|
-
|
|
82
|
+
getRTEToolbarButtonRenderer(type, host) {
|
|
83
|
+
var _a, _b;
|
|
84
|
+
if (host) {
|
|
85
|
+
const hostRenderer = (_a = this.hostToolbarButtonRendererMap
|
|
86
|
+
.get(host)) === null || _a === void 0 ? void 0 : _a.get(type);
|
|
87
|
+
if (hostRenderer) {
|
|
88
|
+
return hostRenderer;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return (_b = this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.get(type)) !== null && _b !== void 0 ? _b : null;
|
|
52
92
|
}
|
|
53
93
|
}
|
|
54
94
|
export default new RTEDTORendererManager();
|
|
@@ -0,0 +1,73 @@
|
|
|
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 { MapToComponentField as MapToSlimmerField } from 'vega-slimmer/core';
|
|
8
|
+
import { findParent } from '../../../../utils/ui';
|
|
9
|
+
import { BodyPositionedWrapper } from './body-positioned-wrapper.abstract';
|
|
10
|
+
/**
|
|
11
|
+
* Appends the popover content box inside the nearest third-party dialog/modal (e.g. Bootstrap,
|
|
12
|
+
* MUI) so that their focus trap does not block focus on vega-popover content.
|
|
13
|
+
*
|
|
14
|
+
* Detection strategy:
|
|
15
|
+
* 1. Walk up from the target to find `dialog` or `[aria-modal="true"]`.
|
|
16
|
+
* 2. Skip Vega-owned elements (tag starts with `VEGA-`).
|
|
17
|
+
* 3. Locate the focus-trap root via `closest('[tabindex="-1"]')`.
|
|
18
|
+
*/
|
|
19
|
+
export class ThirdPartyDialogWrapper extends BodyPositionedWrapper {
|
|
20
|
+
/**
|
|
21
|
+
* Returns true when the target lives inside a third-party dialog.
|
|
22
|
+
*
|
|
23
|
+
* NOTE: Does NOT call super.canRetrieve() — must activate even when isScreenPosition=true
|
|
24
|
+
* (e.g. image editor popover) so the content box stays inside the focus-trap root.
|
|
25
|
+
*
|
|
26
|
+
* @returns {boolean} Whether the target is inside a third-party dialog.
|
|
27
|
+
*/
|
|
28
|
+
canRetrieve() {
|
|
29
|
+
this.focusTrapRoot = this.findFocusTrapRoot(this.showConfig.target);
|
|
30
|
+
return !!this.focusTrapRoot;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Appends the popover content box inside the focus-trap root.
|
|
34
|
+
*
|
|
35
|
+
* @returns {HTMLElement} The focus-trap root element.
|
|
36
|
+
*/
|
|
37
|
+
retrieve() {
|
|
38
|
+
const root = this.focusTrapRoot;
|
|
39
|
+
this.focusTrapRoot = null;
|
|
40
|
+
if (this.showConfig.appendableElement.parentElement !== root) {
|
|
41
|
+
root.append(this.showConfig.appendableElement);
|
|
42
|
+
}
|
|
43
|
+
return root;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Finds the focus-trap root of the nearest third-party dialog ancestor.
|
|
47
|
+
* Returns null if not inside a third-party dialog or if the dialog is Vega-owned.
|
|
48
|
+
*
|
|
49
|
+
* @param {Nullable<HTMLElement>} el - The element to start searching from.
|
|
50
|
+
* @returns {Nullable<HTMLElement>} The focus-trap root, or null.
|
|
51
|
+
*/
|
|
52
|
+
findFocusTrapRoot(el) {
|
|
53
|
+
var _a;
|
|
54
|
+
const dialog = findParent(el, 'dialog, [aria-modal="true"]');
|
|
55
|
+
if (!dialog || this.isVegaOwned(dialog))
|
|
56
|
+
return null;
|
|
57
|
+
// closest() also matches the element itself — needed when [aria-modal] and [tabindex="-1"]
|
|
58
|
+
// are on the same node (e.g. Bootstrap 5 outer .modal div).
|
|
59
|
+
return (_a = dialog.closest('[tabindex="-1"]')) !== null && _a !== void 0 ? _a : dialog;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns true when the element is a Vega custom element (tag starts with `VEGA-`).
|
|
63
|
+
*
|
|
64
|
+
* @param {HTMLElement} el - The element to check.
|
|
65
|
+
* @returns {boolean} True if the element is Vega-owned.
|
|
66
|
+
*/
|
|
67
|
+
isVegaOwned(el) {
|
|
68
|
+
return el.tagName.startsWith('VEGA-');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
__decorate([
|
|
72
|
+
MapToSlimmerField()
|
|
73
|
+
], ThirdPartyDialogWrapper.prototype, "showConfig", void 0);
|
package/dist/collection/helpers/slimmers/element-appender/element-appender-container-controller.js
CHANGED
|
@@ -9,6 +9,7 @@ import { DefaultWrapper } from './body-positioned-wrapper/default-wrapper';
|
|
|
9
9
|
import { PositionRelativeToWrapper } from './body-positioned-wrapper/position-relative-to-wrapper';
|
|
10
10
|
import { VegaModalWrapper } from './body-positioned-wrapper/vega-modal-wrapper';
|
|
11
11
|
import { VegaPopoverWrapper } from './body-positioned-wrapper/vega-popover-wrapper';
|
|
12
|
+
import { ThirdPartyDialogWrapper } from './body-positioned-wrapper/third-party-dialog-wrapper';
|
|
12
13
|
/**
|
|
13
14
|
* This class is responsible for setting the container element for appending an element based on certain conditions.
|
|
14
15
|
*
|
|
@@ -21,6 +22,7 @@ export class ElementAppenderContainerController extends VegaSlimmer {
|
|
|
21
22
|
this.positionRelativeToWrapper = new PositionRelativeToWrapper();
|
|
22
23
|
this.vegaPopoverWrapper = new VegaPopoverWrapper();
|
|
23
24
|
this.vegaModalWrapper = new VegaModalWrapper();
|
|
25
|
+
this.thirdPartyDialogWrapper = new ThirdPartyDialogWrapper();
|
|
24
26
|
this.defaultWrapper = new DefaultWrapper();
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
@@ -43,6 +45,7 @@ export class ElementAppenderContainerController extends VegaSlimmer {
|
|
|
43
45
|
this.positionRelativeToWrapper,
|
|
44
46
|
this.vegaPopoverWrapper,
|
|
45
47
|
this.vegaModalWrapper,
|
|
48
|
+
this.thirdPartyDialogWrapper,
|
|
46
49
|
this.defaultWrapper,
|
|
47
50
|
];
|
|
48
51
|
}
|
|
@@ -62,6 +65,9 @@ __decorate([
|
|
|
62
65
|
__decorate([
|
|
63
66
|
InjectVegaSlimmer()
|
|
64
67
|
], ElementAppenderContainerController.prototype, "vegaModalWrapper", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
InjectVegaSlimmer()
|
|
70
|
+
], ElementAppenderContainerController.prototype, "thirdPartyDialogWrapper", void 0);
|
|
65
71
|
__decorate([
|
|
66
72
|
InjectVegaSlimmer()
|
|
67
73
|
], ElementAppenderContainerController.prototype, "defaultWrapper", void 0);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { F as FeatureFlag } from './feature-flag-controller-30f7b625.js';
|
|
2
|
-
import { V as VegaLoader, a as VegaNotify, b as VegaEventManager, c as VegaZIndexManager, w as waitForVega, d as VegaSkeletonLoader, e as VegaTranslation, f as VegaRTETokenExtension, g as VegaRTELanguageExtension, h as VegaRTEFunctionExtension, i as VegaRTETableExtension } from './token-extension-
|
|
2
|
+
import { V as VegaLoader, a as VegaNotify, b as VegaEventManager, c as VegaZIndexManager, w as waitForVega, d as VegaSkeletonLoader, e as VegaTranslation, f as VegaRTETokenExtension, g as VegaRTELanguageExtension, h as VegaRTEFunctionExtension, i as VegaRTETableExtension } from './token-extension-0710dbc5.js';
|
|
3
3
|
import { V as VegaThemeManager } from './split-cell-operation-5587f594.js';
|
|
4
4
|
import { M as MapToComponentMethod, V as VegaSlimmer, s as setVegaLogLevel, G as GlobalSlimmersRegistry } from './global-slimmer-registry-17c4efd4.js';
|
|
5
5
|
import { V as VegaDialog } from './vega-dialog-controller-bbb2fc52.js';
|
|
@@ -7,6 +7,14 @@ class RTEDTORendererManager {
|
|
|
7
7
|
this.RTE_DTO_RENDERER_MAP = new Map();
|
|
8
8
|
// Register RTE Toolbar Button Renderers, mapping type strings to their respective renderer instances.
|
|
9
9
|
this.RTE_TOOLBAR_BUTTON_RENDERER_MAP = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Per-host toolbar button renderer map.
|
|
12
|
+
* Stores a host-specific renderer map so that extensions that register during
|
|
13
|
+
* {@link VegaRTEExtension#prepareBeforeLoad} can provide isolated renderer instances
|
|
14
|
+
* for each {@link HTMLVegaRichTextEditorElement}. At render time this map is checked
|
|
15
|
+
* first; the global singleton map is used as a fallback.
|
|
16
|
+
*/
|
|
17
|
+
this.hostToolbarButtonRendererMap = new WeakMap();
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Registers a new RTE DTO renderer.
|
|
@@ -32,6 +40,24 @@ class RTEDTORendererManager {
|
|
|
32
40
|
registerRTEToolbarButtonRenderer(type, RTEToolbarButtonRenderer) {
|
|
33
41
|
this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.set(type, RTEToolbarButtonRenderer);
|
|
34
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Registers a host-specific toolbar button renderer.
|
|
45
|
+
* The per-host renderer takes precedence over the global singleton when the host
|
|
46
|
+
* element is passed to {@link getRTEToolbarButtonRenderer}.
|
|
47
|
+
*
|
|
48
|
+
* @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
|
|
49
|
+
* @param {HTMLVegaRichTextEditorElement} host - The rich text editor host element.
|
|
50
|
+
* @param {string} type - The type identifier for the toolbar button renderer.
|
|
51
|
+
* @param {VegaRTEToolbarButtonRenderer} renderer - The renderer instance to register for this host.
|
|
52
|
+
*/
|
|
53
|
+
registerRTEToolbarButtonRendererForHost(host, type, renderer) {
|
|
54
|
+
let hostMap = this.hostToolbarButtonRendererMap.get(host);
|
|
55
|
+
if (!hostMap) {
|
|
56
|
+
hostMap = new Map();
|
|
57
|
+
this.hostToolbarButtonRendererMap.set(host, hostMap);
|
|
58
|
+
}
|
|
59
|
+
hostMap.set(type, renderer);
|
|
60
|
+
}
|
|
35
61
|
/**
|
|
36
62
|
* Retrieves the RTE renderer for a given type.
|
|
37
63
|
*
|
|
@@ -43,12 +69,26 @@ class RTEDTORendererManager {
|
|
|
43
69
|
}
|
|
44
70
|
/**
|
|
45
71
|
* Retrieves the RTE Toolbar Button Renderer for a given type.
|
|
72
|
+
* When a host element is provided the per-host map registered via
|
|
73
|
+
* {@link registerRTEToolbarButtonRendererForHost} is checked first; the global
|
|
74
|
+
* singleton map is used as a fallback so that extensions that do not override
|
|
75
|
+
* {@link VegaRTEExtension#prepareBeforeLoad} continue to work unchanged.
|
|
46
76
|
*
|
|
77
|
+
* @typedef HTMLVegaRichTextEditorElement - The rich text editor host element type.
|
|
47
78
|
* @param {string} type - The type identifier for the RTE Toolbar Button Renderer.
|
|
79
|
+
* @param {HTMLVegaRichTextEditorElement} [host] - Optional host element for per-host lookup.
|
|
48
80
|
* @returns {Nullable<VegaRTEToolbarButtonRenderer>} - The renderer instance for the RTE Toolbar Button, or null if not found.
|
|
49
81
|
*/
|
|
50
|
-
getRTEToolbarButtonRenderer(type) {
|
|
51
|
-
|
|
82
|
+
getRTEToolbarButtonRenderer(type, host) {
|
|
83
|
+
var _a, _b;
|
|
84
|
+
if (host) {
|
|
85
|
+
const hostRenderer = (_a = this.hostToolbarButtonRendererMap
|
|
86
|
+
.get(host)) === null || _a === void 0 ? void 0 : _a.get(type);
|
|
87
|
+
if (hostRenderer) {
|
|
88
|
+
return hostRenderer;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return (_b = this.RTE_TOOLBAR_BUTTON_RENDERER_MAP.get(type)) !== null && _b !== void 0 ? _b : null;
|
|
52
92
|
}
|
|
53
93
|
}
|
|
54
94
|
const RTEDTORendererManager$1 = new RTEDTORendererManager();
|
package/dist/esm/{element-appender-slimmer-5aca1bca.js → element-appender-slimmer-29c94a18.js}
RENAMED
|
@@ -14,7 +14,7 @@ import { O as Observer } from './observer-3959f9dd.js';
|
|
|
14
14
|
import { d as domNodeSubjectFactory, D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-aca0116e.js';
|
|
15
15
|
import { B as VegaInternalNestEAHierarchyTreeChange } from './vega-internal-event-id-194bac82.js';
|
|
16
16
|
|
|
17
|
-
var __decorate$
|
|
17
|
+
var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
18
18
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
19
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
20
|
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;
|
|
@@ -46,7 +46,7 @@ class DefaultWrapper {
|
|
|
46
46
|
return container;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
__decorate$
|
|
49
|
+
__decorate$b([
|
|
50
50
|
MapToComponentField()
|
|
51
51
|
], DefaultWrapper.prototype, "showConfig", void 0);
|
|
52
52
|
|
|
@@ -64,7 +64,7 @@ class BodyPositionedWrapper {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
var __decorate$
|
|
67
|
+
var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
68
68
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
69
69
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
70
70
|
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;
|
|
@@ -101,11 +101,11 @@ class PositionRelativeToWrapper extends BodyPositionedWrapper {
|
|
|
101
101
|
return container;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
__decorate$
|
|
104
|
+
__decorate$a([
|
|
105
105
|
MapToComponentField()
|
|
106
106
|
], PositionRelativeToWrapper.prototype, "showConfig", void 0);
|
|
107
107
|
|
|
108
|
-
var __decorate$
|
|
108
|
+
var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
109
109
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
110
110
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
111
111
|
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;
|
|
@@ -164,11 +164,11 @@ class VegaModalWrapper extends BodyPositionedWrapper {
|
|
|
164
164
|
return modalContentScrollable ? modalContentScrollable : modalDialog;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
__decorate$
|
|
167
|
+
__decorate$9([
|
|
168
168
|
MapToComponentField({ writable: true })
|
|
169
169
|
], VegaModalWrapper.prototype, "showConfig", void 0);
|
|
170
170
|
|
|
171
|
-
var __decorate$
|
|
171
|
+
var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
172
172
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
173
173
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
174
174
|
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;
|
|
@@ -199,10 +199,81 @@ class VegaPopoverWrapper extends BodyPositionedWrapper {
|
|
|
199
199
|
return container;
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
__decorate$
|
|
202
|
+
__decorate$8([
|
|
203
203
|
MapToComponentField()
|
|
204
204
|
], VegaPopoverWrapper.prototype, "showConfig", void 0);
|
|
205
205
|
|
|
206
|
+
var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
207
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
208
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
209
|
+
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;
|
|
210
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Appends the popover content box inside the nearest third-party dialog/modal (e.g. Bootstrap,
|
|
214
|
+
* MUI) so that their focus trap does not block focus on vega-popover content.
|
|
215
|
+
*
|
|
216
|
+
* Detection strategy:
|
|
217
|
+
* 1. Walk up from the target to find `dialog` or `[aria-modal="true"]`.
|
|
218
|
+
* 2. Skip Vega-owned elements (tag starts with `VEGA-`).
|
|
219
|
+
* 3. Locate the focus-trap root via `closest('[tabindex="-1"]')`.
|
|
220
|
+
*/
|
|
221
|
+
class ThirdPartyDialogWrapper extends BodyPositionedWrapper {
|
|
222
|
+
/**
|
|
223
|
+
* Returns true when the target lives inside a third-party dialog.
|
|
224
|
+
*
|
|
225
|
+
* NOTE: Does NOT call super.canRetrieve() — must activate even when isScreenPosition=true
|
|
226
|
+
* (e.g. image editor popover) so the content box stays inside the focus-trap root.
|
|
227
|
+
*
|
|
228
|
+
* @returns {boolean} Whether the target is inside a third-party dialog.
|
|
229
|
+
*/
|
|
230
|
+
canRetrieve() {
|
|
231
|
+
this.focusTrapRoot = this.findFocusTrapRoot(this.showConfig.target);
|
|
232
|
+
return !!this.focusTrapRoot;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Appends the popover content box inside the focus-trap root.
|
|
236
|
+
*
|
|
237
|
+
* @returns {HTMLElement} The focus-trap root element.
|
|
238
|
+
*/
|
|
239
|
+
retrieve() {
|
|
240
|
+
const root = this.focusTrapRoot;
|
|
241
|
+
this.focusTrapRoot = null;
|
|
242
|
+
if (this.showConfig.appendableElement.parentElement !== root) {
|
|
243
|
+
root.append(this.showConfig.appendableElement);
|
|
244
|
+
}
|
|
245
|
+
return root;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Finds the focus-trap root of the nearest third-party dialog ancestor.
|
|
249
|
+
* Returns null if not inside a third-party dialog or if the dialog is Vega-owned.
|
|
250
|
+
*
|
|
251
|
+
* @param {Nullable<HTMLElement>} el - The element to start searching from.
|
|
252
|
+
* @returns {Nullable<HTMLElement>} The focus-trap root, or null.
|
|
253
|
+
*/
|
|
254
|
+
findFocusTrapRoot(el) {
|
|
255
|
+
var _a;
|
|
256
|
+
const dialog = findParent(el, 'dialog, [aria-modal="true"]');
|
|
257
|
+
if (!dialog || this.isVegaOwned(dialog))
|
|
258
|
+
return null;
|
|
259
|
+
// closest() also matches the element itself — needed when [aria-modal] and [tabindex="-1"]
|
|
260
|
+
// are on the same node (e.g. Bootstrap 5 outer .modal div).
|
|
261
|
+
return (_a = dialog.closest('[tabindex="-1"]')) !== null && _a !== void 0 ? _a : dialog;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Returns true when the element is a Vega custom element (tag starts with `VEGA-`).
|
|
265
|
+
*
|
|
266
|
+
* @param {HTMLElement} el - The element to check.
|
|
267
|
+
* @returns {boolean} True if the element is Vega-owned.
|
|
268
|
+
*/
|
|
269
|
+
isVegaOwned(el) {
|
|
270
|
+
return el.tagName.startsWith('VEGA-');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
__decorate$7([
|
|
274
|
+
MapToComponentField()
|
|
275
|
+
], ThirdPartyDialogWrapper.prototype, "showConfig", void 0);
|
|
276
|
+
|
|
206
277
|
var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
207
278
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
208
279
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -221,6 +292,7 @@ class ElementAppenderContainerController extends VegaSlimmer {
|
|
|
221
292
|
this.positionRelativeToWrapper = new PositionRelativeToWrapper();
|
|
222
293
|
this.vegaPopoverWrapper = new VegaPopoverWrapper();
|
|
223
294
|
this.vegaModalWrapper = new VegaModalWrapper();
|
|
295
|
+
this.thirdPartyDialogWrapper = new ThirdPartyDialogWrapper();
|
|
224
296
|
this.defaultWrapper = new DefaultWrapper();
|
|
225
297
|
}
|
|
226
298
|
/**
|
|
@@ -243,6 +315,7 @@ class ElementAppenderContainerController extends VegaSlimmer {
|
|
|
243
315
|
this.positionRelativeToWrapper,
|
|
244
316
|
this.vegaPopoverWrapper,
|
|
245
317
|
this.vegaModalWrapper,
|
|
318
|
+
this.thirdPartyDialogWrapper,
|
|
246
319
|
this.defaultWrapper,
|
|
247
320
|
];
|
|
248
321
|
}
|
|
@@ -262,6 +335,9 @@ __decorate$6([
|
|
|
262
335
|
__decorate$6([
|
|
263
336
|
InjectVegaSlimmer()
|
|
264
337
|
], ElementAppenderContainerController.prototype, "vegaModalWrapper", void 0);
|
|
338
|
+
__decorate$6([
|
|
339
|
+
InjectVegaSlimmer()
|
|
340
|
+
], ElementAppenderContainerController.prototype, "thirdPartyDialogWrapper", void 0);
|
|
265
341
|
__decorate$6([
|
|
266
342
|
InjectVegaSlimmer()
|
|
267
343
|
], ElementAppenderContainerController.prototype, "defaultWrapper", void 0);
|
package/dist/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { I as Icons, g as getIconFromToken } from './icons-8627925e.js';
|
|
|
8
8
|
export { b as Typography, a as TypographyKeys, T as TypographyUrls } from './typography-396de03f.js';
|
|
9
9
|
export { d as BoxDisplay, e as BreakpointKeys, C as CssStates, F as FlexDirections } from './ui-93922c59.js';
|
|
10
10
|
export { F as FrameworkEnum, v as VegaEnvManager } from './vega-env-manager-8f8dc473.js';
|
|
11
|
-
export { A as ActionHandlerInterceptor, I as InsertNodeToNearestRootAction, o as RTELanguageToolbarButtonRenderer, m as RTETokenNode, n as RTETokenNodeRenderer, R as RTETokenToolbarButtonRenderer, b as VegaEventManager, V as VegaLoader, a as VegaNotify, j as VegaRTEExtension, k as VegaRTEExtensionRenderer, h as VegaRTEFunctionExtension, g as VegaRTELanguageExtension, i as VegaRTETableExtension, f as VegaRTETokenExtension, l as VegaRTEToolbarButtonRenderer, d as VegaSkeletonLoader, e as VegaTranslation, c as VegaZIndexManager, w as waitForVega } from './token-extension-
|
|
11
|
+
export { A as ActionHandlerInterceptor, I as InsertNodeToNearestRootAction, o as RTELanguageToolbarButtonRenderer, m as RTETokenNode, n as RTETokenNodeRenderer, R as RTETokenToolbarButtonRenderer, b as VegaEventManager, V as VegaLoader, a as VegaNotify, j as VegaRTEExtension, k as VegaRTEExtensionRenderer, h as VegaRTEFunctionExtension, g as VegaRTELanguageExtension, i as VegaRTETableExtension, f as VegaRTETokenExtension, l as VegaRTEToolbarButtonRenderer, d as VegaSkeletonLoader, e as VegaTranslation, c as VegaZIndexManager, w as waitForVega } from './token-extension-0710dbc5.js';
|
|
12
12
|
export { F as FeatureFlag } from './feature-flag-controller-30f7b625.js';
|
|
13
13
|
export { V as VegaThemeManager } from './split-cell-operation-5587f594.js';
|
|
14
14
|
export { V as VegaDialog } from './vega-dialog-controller-bbb2fc52.js';
|
|
@@ -39,7 +39,7 @@ import './internal-vega-z-index-manager-7d2b54c3.js';
|
|
|
39
39
|
import './number-4398f2e1.js';
|
|
40
40
|
import './page-resize-observer-slimmer-e24d36c5.js';
|
|
41
41
|
import './try-get-document-bef0f526.js';
|
|
42
|
-
import './dto-renderer-manager-
|
|
42
|
+
import './dto-renderer-manager-abc7eb5f.js';
|
|
43
43
|
import './base-renderer-101f6d04.js';
|
|
44
44
|
import './internal-icon-manager-bd80b3bb.js';
|
|
45
45
|
import './dom-node-subject-observer-factory-aca0116e.js';
|