@cqa-lib/cqa-ui 1.0.69 → 1.0.71
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/esm2020/lib/utils/tw-overlay-container.mjs +38 -42
- package/fesm2015/cqa-lib-cqa-ui.mjs +37 -41
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +37 -41
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/utils/tw-overlay-container.d.ts +6 -7
- package/package.json +1 -1
|
@@ -2,12 +2,11 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { OverlayContainer } from '@angular/cdk/overlay';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* configured with important: '.cqa-ui-root' are applied inside overlays.
|
|
5
|
+
* Custom overlay container that adds 'cqa-ui-root' class to individual overlay panes
|
|
6
|
+
* containing library components, rather than to the entire container.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* This ensures library CSS (scoped with .cqa-ui-root) only affects library overlays,
|
|
9
|
+
* not portal overlays that may be open simultaneously.
|
|
11
10
|
*/
|
|
12
11
|
export class TailwindOverlayContainer extends OverlayContainer {
|
|
13
12
|
constructor() {
|
|
@@ -17,13 +16,13 @@ export class TailwindOverlayContainer extends OverlayContainer {
|
|
|
17
16
|
_createContainer() {
|
|
18
17
|
super._createContainer();
|
|
19
18
|
if (this._containerElement) {
|
|
20
|
-
//
|
|
19
|
+
// Never add cqa-ui-root to the container itself
|
|
21
20
|
this._containerElement.classList.remove('cqa-ui-root');
|
|
22
|
-
// Use MutationObserver to detect when
|
|
23
|
-
this.
|
|
21
|
+
// Use MutationObserver to detect when overlay panes are created/destroyed
|
|
22
|
+
this.observeOverlayPanes();
|
|
24
23
|
}
|
|
25
24
|
}
|
|
26
|
-
|
|
25
|
+
observeOverlayPanes() {
|
|
27
26
|
if (!this._containerElement)
|
|
28
27
|
return;
|
|
29
28
|
const observer = new MutationObserver(() => {
|
|
@@ -32,49 +31,46 @@ export class TailwindOverlayContainer extends OverlayContainer {
|
|
|
32
31
|
cancelAnimationFrame(this.updateTimeout);
|
|
33
32
|
}
|
|
34
33
|
this.updateTimeout = requestAnimationFrame(() => {
|
|
35
|
-
this.
|
|
34
|
+
this.updateOverlayPaneClasses();
|
|
36
35
|
this.updateTimeout = null;
|
|
37
36
|
});
|
|
38
37
|
});
|
|
39
38
|
observer.observe(this._containerElement, {
|
|
40
39
|
childList: true,
|
|
41
40
|
subtree: true,
|
|
41
|
+
attributes: true,
|
|
42
|
+
attributeFilter: ['class']
|
|
42
43
|
});
|
|
43
44
|
// Also check immediately in case overlays already exist
|
|
44
|
-
requestAnimationFrame(() => this.
|
|
45
|
+
requestAnimationFrame(() => this.updateOverlayPaneClasses());
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
+
updateOverlayPaneClasses() {
|
|
47
48
|
if (!this._containerElement)
|
|
48
49
|
return;
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
// Note: If both library overlays and portal dialogs exist simultaneously,
|
|
74
|
-
// the class will be present because library overlays need it. In this case,
|
|
75
|
-
// portal dialogs may be affected by library CSS. To avoid this, ensure library
|
|
76
|
-
// overlays are closed before opening portal dialogs, or use CSS specificity
|
|
77
|
-
// to override library styles within portal dialogs.
|
|
50
|
+
// Find all overlay panes in the container
|
|
51
|
+
const allPanes = this._containerElement.querySelectorAll('.cdk-overlay-pane');
|
|
52
|
+
allPanes.forEach((pane) => {
|
|
53
|
+
// Check if this pane itself has library component classes (e.g., backdrop)
|
|
54
|
+
const paneHasLibraryClass = pane.classList.contains('cqa-dialog-panel') ||
|
|
55
|
+
pane.classList.contains('cqa-dialog-backdrop') ||
|
|
56
|
+
pane.classList.contains('ctc-select-panel') ||
|
|
57
|
+
pane.classList.contains('ctc-date-range-panel');
|
|
58
|
+
// Also check for library components inside the pane
|
|
59
|
+
// These classes may be on child elements rather than the pane itself
|
|
60
|
+
const hasLibraryDialogInside = pane.querySelector('.cqa-dialog-panel') !== null;
|
|
61
|
+
const hasLibrarySelectInside = pane.querySelector('.ctc-select-panel') !== null;
|
|
62
|
+
const hasLibraryDatePickerInside = pane.querySelector('.ctc-date-range-panel') !== null;
|
|
63
|
+
const isLibraryOverlay = paneHasLibraryClass || hasLibraryDialogInside ||
|
|
64
|
+
hasLibrarySelectInside || hasLibraryDatePickerInside;
|
|
65
|
+
if (isLibraryOverlay) {
|
|
66
|
+
// This is a library overlay - add the class
|
|
67
|
+
pane.classList.add('cqa-ui-root');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// This is NOT a library overlay (e.g., portal dialog) - ensure class is removed
|
|
71
|
+
pane.classList.remove('cqa-ui-root');
|
|
72
|
+
}
|
|
73
|
+
});
|
|
78
74
|
}
|
|
79
75
|
}
|
|
80
76
|
TailwindOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TailwindOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -82,4 +78,4 @@ TailwindOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
|
|
|
82
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TailwindOverlayContainer, decorators: [{
|
|
83
79
|
type: Injectable
|
|
84
80
|
}] });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHctb3ZlcmxheS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFEOUQ7O1FBRVUsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO0tBcUU3QztJQW5Fb0IsZ0JBQWdCO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUV2RCwwRUFBMEU7WUFDMUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsT0FBTztRQUVwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtZQUN6QyxzRUFBc0U7WUFDdEUsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtnQkFDL0Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDdkMsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUMzQixDQUFDLENBQUM7UUFFSCx3REFBd0Q7UUFDeEQscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsT0FBTztRQUVwQywwQ0FBMEM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFOUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLDJFQUEyRTtZQUMzRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFFNUUsb0RBQW9EO1lBQ3BELHFFQUFxRTtZQUNyRSxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDaEYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssSUFBSSxDQUFDO1lBQ2hGLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUV4RixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixJQUFJLHNCQUFzQjtnQkFDN0Msc0JBQXNCLElBQUksMEJBQTBCLENBQUM7WUFFOUUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDcEIsNENBQTRDO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQztpQkFBTTtnQkFDTCxnRkFBZ0Y7Z0JBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEFyRVUsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbi8qKlxuICogQ3VzdG9tIG92ZXJsYXkgY29udGFpbmVyIHRoYXQgYWRkcyAnY3FhLXVpLXJvb3QnIGNsYXNzIHRvIGluZGl2aWR1YWwgb3ZlcmxheSBwYW5lc1xuICogY29udGFpbmluZyBsaWJyYXJ5IGNvbXBvbmVudHMsIHJhdGhlciB0aGFuIHRvIHRoZSBlbnRpcmUgY29udGFpbmVyLlxuICogXG4gKiBUaGlzIGVuc3VyZXMgbGlicmFyeSBDU1MgKHNjb3BlZCB3aXRoIC5jcWEtdWktcm9vdCkgb25seSBhZmZlY3RzIGxpYnJhcnkgb3ZlcmxheXMsXG4gKiBub3QgcG9ydGFsIG92ZXJsYXlzIHRoYXQgbWF5IGJlIG9wZW4gc2ltdWx0YW5lb3VzbHkuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgZXh0ZW5kcyBPdmVybGF5Q29udGFpbmVyIHtcbiAgcHJpdmF0ZSB1cGRhdGVUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NyZWF0ZUNvbnRhaW5lcigpOiB2b2lkIHtcbiAgICBzdXBlci5fY3JlYXRlQ29udGFpbmVyKCk7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIC8vIE5ldmVyIGFkZCBjcWEtdWktcm9vdCB0byB0aGUgY29udGFpbmVyIGl0c2VsZlxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgICAgXG4gICAgICAvLyBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBkZXRlY3Qgd2hlbiBvdmVybGF5IHBhbmVzIGFyZSBjcmVhdGVkL2Rlc3Ryb3llZFxuICAgICAgdGhpcy5vYnNlcnZlT3ZlcmxheVBhbmVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlT3ZlcmxheVBhbmVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjaGVja3MgZHVyaW5nIHJhcGlkIERPTSBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU92ZXJsYXlQYW5lQ2xhc3NlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJ11cbiAgICB9KTtcblxuICAgIC8vIEFsc28gY2hlY2sgaW1tZWRpYXRlbHkgaW4gY2FzZSBvdmVybGF5cyBhbHJlYWR5IGV4aXN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMudXBkYXRlT3ZlcmxheVBhbmVDbGFzc2VzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPdmVybGF5UGFuZUNsYXNzZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb250YWluZXJFbGVtZW50KSByZXR1cm47XG5cbiAgICAvLyBGaW5kIGFsbCBvdmVybGF5IHBhbmVzIGluIHRoZSBjb250YWluZXJcbiAgICBjb25zdCBhbGxQYW5lcyA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNkay1vdmVybGF5LXBhbmUnKTtcbiAgICBcbiAgICBhbGxQYW5lcy5mb3JFYWNoKChwYW5lKSA9PiB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIHBhbmUgaXRzZWxmIGhhcyBsaWJyYXJ5IGNvbXBvbmVudCBjbGFzc2VzIChlLmcuLCBiYWNrZHJvcClcbiAgICAgIGNvbnN0IHBhbmVIYXNMaWJyYXJ5Q2xhc3MgPSBwYW5lLmNsYXNzTGlzdC5jb250YWlucygnY3FhLWRpYWxvZy1wYW5lbCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZS5jbGFzc0xpc3QuY29udGFpbnMoJ2NxYS1kaWFsb2ctYmFja2Ryb3AnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmUuY2xhc3NMaXN0LmNvbnRhaW5zKCdjdGMtc2VsZWN0LXBhbmVsJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lLmNsYXNzTGlzdC5jb250YWlucygnY3RjLWRhdGUtcmFuZ2UtcGFuZWwnKTtcbiAgICAgIFxuICAgICAgLy8gQWxzbyBjaGVjayBmb3IgbGlicmFyeSBjb21wb25lbnRzIGluc2lkZSB0aGUgcGFuZVxuICAgICAgLy8gVGhlc2UgY2xhc3NlcyBtYXkgYmUgb24gY2hpbGQgZWxlbWVudHMgcmF0aGVyIHRoYW4gdGhlIHBhbmUgaXRzZWxmXG4gICAgICBjb25zdCBoYXNMaWJyYXJ5RGlhbG9nSW5zaWRlID0gcGFuZS5xdWVyeVNlbGVjdG9yKCcuY3FhLWRpYWxvZy1wYW5lbCcpICE9PSBudWxsO1xuICAgICAgY29uc3QgaGFzTGlicmFyeVNlbGVjdEluc2lkZSA9IHBhbmUucXVlcnlTZWxlY3RvcignLmN0Yy1zZWxlY3QtcGFuZWwnKSAhPT0gbnVsbDtcbiAgICAgIGNvbnN0IGhhc0xpYnJhcnlEYXRlUGlja2VySW5zaWRlID0gcGFuZS5xdWVyeVNlbGVjdG9yKCcuY3RjLWRhdGUtcmFuZ2UtcGFuZWwnKSAhPT0gbnVsbDtcbiAgICAgIFxuICAgICAgY29uc3QgaXNMaWJyYXJ5T3ZlcmxheSA9IHBhbmVIYXNMaWJyYXJ5Q2xhc3MgfHwgaGFzTGlicmFyeURpYWxvZ0luc2lkZSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNMaWJyYXJ5U2VsZWN0SW5zaWRlIHx8IGhhc0xpYnJhcnlEYXRlUGlja2VySW5zaWRlO1xuICAgICAgXG4gICAgICBpZiAoaXNMaWJyYXJ5T3ZlcmxheSkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgbGlicmFyeSBvdmVybGF5IC0gYWRkIHRoZSBjbGFzc1xuICAgICAgICBwYW5lLmNsYXNzTGlzdC5hZGQoJ2NxYS11aS1yb290Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUaGlzIGlzIE5PVCBhIGxpYnJhcnkgb3ZlcmxheSAoZS5nLiwgcG9ydGFsIGRpYWxvZykgLSBlbnN1cmUgY2xhc3MgaXMgcmVtb3ZlZFxuICAgICAgICBwYW5lLmNsYXNzTGlzdC5yZW1vdmUoJ2NxYS11aS1yb290Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuXG4iXX0=
|
|
@@ -4324,12 +4324,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
4324
4324
|
}] } });
|
|
4325
4325
|
|
|
4326
4326
|
/**
|
|
4327
|
-
*
|
|
4328
|
-
*
|
|
4329
|
-
* configured with important: '.cqa-ui-root' are applied inside overlays.
|
|
4327
|
+
* Custom overlay container that adds 'cqa-ui-root' class to individual overlay panes
|
|
4328
|
+
* containing library components, rather than to the entire container.
|
|
4330
4329
|
*
|
|
4331
|
-
*
|
|
4332
|
-
*
|
|
4330
|
+
* This ensures library CSS (scoped with .cqa-ui-root) only affects library overlays,
|
|
4331
|
+
* not portal overlays that may be open simultaneously.
|
|
4333
4332
|
*/
|
|
4334
4333
|
class TailwindOverlayContainer extends OverlayContainer {
|
|
4335
4334
|
constructor() {
|
|
@@ -4339,13 +4338,13 @@ class TailwindOverlayContainer extends OverlayContainer {
|
|
|
4339
4338
|
_createContainer() {
|
|
4340
4339
|
super._createContainer();
|
|
4341
4340
|
if (this._containerElement) {
|
|
4342
|
-
//
|
|
4341
|
+
// Never add cqa-ui-root to the container itself
|
|
4343
4342
|
this._containerElement.classList.remove('cqa-ui-root');
|
|
4344
|
-
// Use MutationObserver to detect when
|
|
4345
|
-
this.
|
|
4343
|
+
// Use MutationObserver to detect when overlay panes are created/destroyed
|
|
4344
|
+
this.observeOverlayPanes();
|
|
4346
4345
|
}
|
|
4347
4346
|
}
|
|
4348
|
-
|
|
4347
|
+
observeOverlayPanes() {
|
|
4349
4348
|
if (!this._containerElement)
|
|
4350
4349
|
return;
|
|
4351
4350
|
const observer = new MutationObserver(() => {
|
|
@@ -4354,49 +4353,46 @@ class TailwindOverlayContainer extends OverlayContainer {
|
|
|
4354
4353
|
cancelAnimationFrame(this.updateTimeout);
|
|
4355
4354
|
}
|
|
4356
4355
|
this.updateTimeout = requestAnimationFrame(() => {
|
|
4357
|
-
this.
|
|
4356
|
+
this.updateOverlayPaneClasses();
|
|
4358
4357
|
this.updateTimeout = null;
|
|
4359
4358
|
});
|
|
4360
4359
|
});
|
|
4361
4360
|
observer.observe(this._containerElement, {
|
|
4362
4361
|
childList: true,
|
|
4363
4362
|
subtree: true,
|
|
4363
|
+
attributes: true,
|
|
4364
|
+
attributeFilter: ['class']
|
|
4364
4365
|
});
|
|
4365
4366
|
// Also check immediately in case overlays already exist
|
|
4366
|
-
requestAnimationFrame(() => this.
|
|
4367
|
+
requestAnimationFrame(() => this.updateOverlayPaneClasses());
|
|
4367
4368
|
}
|
|
4368
|
-
|
|
4369
|
+
updateOverlayPaneClasses() {
|
|
4369
4370
|
if (!this._containerElement)
|
|
4370
4371
|
return;
|
|
4371
|
-
//
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
}
|
|
4395
|
-
// Note: If both library overlays and portal dialogs exist simultaneously,
|
|
4396
|
-
// the class will be present because library overlays need it. In this case,
|
|
4397
|
-
// portal dialogs may be affected by library CSS. To avoid this, ensure library
|
|
4398
|
-
// overlays are closed before opening portal dialogs, or use CSS specificity
|
|
4399
|
-
// to override library styles within portal dialogs.
|
|
4372
|
+
// Find all overlay panes in the container
|
|
4373
|
+
const allPanes = this._containerElement.querySelectorAll('.cdk-overlay-pane');
|
|
4374
|
+
allPanes.forEach((pane) => {
|
|
4375
|
+
// Check if this pane itself has library component classes (e.g., backdrop)
|
|
4376
|
+
const paneHasLibraryClass = pane.classList.contains('cqa-dialog-panel') ||
|
|
4377
|
+
pane.classList.contains('cqa-dialog-backdrop') ||
|
|
4378
|
+
pane.classList.contains('ctc-select-panel') ||
|
|
4379
|
+
pane.classList.contains('ctc-date-range-panel');
|
|
4380
|
+
// Also check for library components inside the pane
|
|
4381
|
+
// These classes may be on child elements rather than the pane itself
|
|
4382
|
+
const hasLibraryDialogInside = pane.querySelector('.cqa-dialog-panel') !== null;
|
|
4383
|
+
const hasLibrarySelectInside = pane.querySelector('.ctc-select-panel') !== null;
|
|
4384
|
+
const hasLibraryDatePickerInside = pane.querySelector('.ctc-date-range-panel') !== null;
|
|
4385
|
+
const isLibraryOverlay = paneHasLibraryClass || hasLibraryDialogInside ||
|
|
4386
|
+
hasLibrarySelectInside || hasLibraryDatePickerInside;
|
|
4387
|
+
if (isLibraryOverlay) {
|
|
4388
|
+
// This is a library overlay - add the class
|
|
4389
|
+
pane.classList.add('cqa-ui-root');
|
|
4390
|
+
}
|
|
4391
|
+
else {
|
|
4392
|
+
// This is NOT a library overlay (e.g., portal dialog) - ensure class is removed
|
|
4393
|
+
pane.classList.remove('cqa-ui-root');
|
|
4394
|
+
}
|
|
4395
|
+
});
|
|
4400
4396
|
}
|
|
4401
4397
|
}
|
|
4402
4398
|
TailwindOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TailwindOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|