@cqa-lib/cqa-ui 1.0.52 → 1.0.54

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.
@@ -43,31 +43,72 @@ export class TailwindOverlayContainer extends OverlayContainer {
43
43
  // Also check immediately in case overlays already exist
44
44
  requestAnimationFrame(() => this.updateContainerClass());
45
45
  }
46
+ isElementClosing(element) {
47
+ // Check if element is closing (very low opacity AND shrinking dimensions)
48
+ const style = window.getComputedStyle(element);
49
+ const opacity = parseFloat(style.opacity);
50
+ const rect = element.getBoundingClientRect();
51
+ // If opacity is very low (< 0.1) AND dimensions are very small, it's likely closing
52
+ // This helps filter out closing animations while allowing opening animations
53
+ return opacity < 0.1 && (rect.width < 10 || rect.height < 10);
54
+ }
46
55
  updateContainerClass() {
47
56
  if (!this._containerElement)
48
57
  return;
49
58
  // Count library overlays (dialogs, select panels, datepicker panels)
50
- // These are library-specific classes that indicate library components
51
- // Only count overlays that are actually in the DOM (CDK removes them when closed)
52
- const libraryDialogs = this._containerElement.querySelectorAll('.cqa-dialog-panel').length;
53
- const libraryBackdrops = this._containerElement.querySelectorAll('.cqa-dialog-backdrop').length;
54
- const librarySelectPanels = this._containerElement.querySelectorAll('.ctc-select-panel').length;
55
- const libraryDatePanels = this._containerElement.querySelectorAll('.ctc-date-range-panel').length;
56
- const totalLibraryOverlays = libraryDialogs + libraryBackdrops + librarySelectPanels + libraryDatePanels;
59
+ // Count them if they exist in DOM (even during opening animations)
60
+ // But exclude them if they're clearly closing (very low opacity + small size)
61
+ // Library dialogs - count if not closing
62
+ const libraryDialogs = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-panel'));
63
+ const activeLibraryDialogs = libraryDialogs.filter(dialog => {
64
+ const style = window.getComputedStyle(dialog);
65
+ return style.display !== 'none' && !this.isElementClosing(dialog);
66
+ }).length;
67
+ // Library backdrops - check if showing (backdrops can be transparent but still present)
68
+ const libraryBackdrops = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-backdrop'));
69
+ const activeLibraryBackdrops = libraryBackdrops.filter(backdrop => {
70
+ const style = window.getComputedStyle(backdrop);
71
+ // Backdrop is active if it's showing (has the showing class) and not display: none
72
+ return style.display !== 'none' && backdrop.classList.contains('cdk-overlay-backdrop-showing');
73
+ }).length;
74
+ // Select panels - count if not closing
75
+ const selectPanels = Array.from(this._containerElement.querySelectorAll('.ctc-select-panel'));
76
+ const activeSelectPanels = selectPanels.filter(panel => {
77
+ const style = window.getComputedStyle(panel);
78
+ return style.display !== 'none' && !this.isElementClosing(panel);
79
+ }).length;
80
+ // Date panels - count if not closing
81
+ const datePanels = Array.from(this._containerElement.querySelectorAll('.ctc-date-range-panel'));
82
+ const activeDatePanels = datePanels.filter(panel => {
83
+ const style = window.getComputedStyle(panel);
84
+ return style.display !== 'none' && !this.isElementClosing(panel);
85
+ }).length;
86
+ const totalLibraryOverlays = activeLibraryDialogs + activeLibraryBackdrops + activeSelectPanels + activeDatePanels;
57
87
  // Check for portal Material dialogs (those without .cqa-dialog-panel class)
58
88
  // Portal dialogs use .mat-dialog-container but NOT .cqa-dialog-panel
59
- const portalDialogs = this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)').length;
60
- // Decision logic: Only add cqa-ui-root when library overlays are present
61
- // This ensures portal Material dialogs don't get affected by library CSS
89
+ // Only count visible portal dialogs to avoid false positives
90
+ const portalDialogs = Array.from(this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)'));
91
+ const visiblePortalDialogs = portalDialogs.filter(dialog => {
92
+ const style = window.getComputedStyle(dialog);
93
+ const rect = dialog.getBoundingClientRect();
94
+ return style.display !== 'none' &&
95
+ parseFloat(style.opacity) > 0.1 &&
96
+ rect.width > 0 &&
97
+ rect.height > 0;
98
+ }).length;
99
+ // Decision logic: Add cqa-ui-root when library overlays are present (even during opening animations)
100
+ // Remove it only when library overlays are clearly gone or closing
101
+ // This ensures library overlays get styles immediately, while portal dialogs don't get affected
62
102
  if (totalLibraryOverlays > 0) {
63
103
  // Library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
64
104
  this._containerElement.classList.add('cqa-ui-root');
65
105
  }
66
106
  else {
67
- // No library overlays exist - remove the class
68
- // This handles both cases:
107
+ // No active library overlays exist - remove the class
108
+ // This handles:
69
109
  // 1. Only portal dialogs exist (should not have cqa-ui-root)
70
- // 2. No overlays exist at all (clean state)
110
+ // 2. Library overlays are closing/closed (should not have cqa-ui-root)
111
+ // 3. No overlays exist at all (clean state)
71
112
  this._containerElement.classList.remove('cqa-ui-root');
72
113
  }
73
114
  // Note: If both library overlays and portal dialogs exist simultaneously,
@@ -82,4 +123,4 @@ TailwindOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
82
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TailwindOverlayContainer, decorators: [{
83
124
  type: Injectable
84
125
  }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHctb3ZlcmxheS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBRDlEOztRQUVVLGtCQUFhLEdBQWtCLElBQUksQ0FBQztLQXlFN0M7SUF2RW9CLGdCQUFnQjtRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQix5RkFBeUY7WUFDekYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFdkQsNkVBQTZFO1lBQzdFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDekMsc0VBQXNFO1lBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFFSCx3REFBd0Q7UUFDeEQscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsT0FBTztRQUVwQyxxRUFBcUU7UUFDckUsc0VBQXNFO1FBQ3RFLGtGQUFrRjtRQUNsRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDaEcsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDaEcsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEcsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLEdBQUcsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUM7UUFFekcsNEVBQTRFO1FBQzVFLHFFQUFxRTtRQUNyRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsOENBQThDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFckgseUVBQXlFO1FBQ3pFLHlFQUF5RTtRQUV6RSxJQUFJLG9CQUFvQixHQUFHLENBQUMsRUFBRTtZQUM1Qiw0RkFBNEY7WUFDNUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLCtDQUErQztZQUMvQywyQkFBMkI7WUFDM0IsNkRBQTZEO1lBQzdELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RDtRQUVELDBFQUEwRTtRQUMxRSw0RUFBNEU7UUFDNUUsK0VBQStFO1FBQy9FLDRFQUE0RTtRQUM1RSxvREFBb0Q7SUFDdEQsQ0FBQzs7cUhBekVVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG4vKipcbiAqIEVuc3VyZXMgQW5ndWxhciBDREsgb3ZlcmxheSBjb250ZW50IChlLmcuLCBNYXRTZWxlY3QsIERhdGVwaWNrZXIgcGFuZWxzLCBsaWJyYXJ5IGRpYWxvZ3MpXG4gKiBpcyBuZXN0ZWQgdW5kZXIgYW4gZWxlbWVudCB3aXRoIGNsYXNzPVwiY3FhLXVpLXJvb3RcIiBzbyBUYWlsd2luZCB1dGlsaXRpZXNcbiAqIGNvbmZpZ3VyZWQgd2l0aCBpbXBvcnRhbnQ6ICcuY3FhLXVpLXJvb3QnIGFyZSBhcHBsaWVkIGluc2lkZSBvdmVybGF5cy5cbiAqIFxuICogSU1QT1JUQU5UOiBPbmx5IHNldHMgY2xhc3M9XCJjcWEtdWktcm9vdFwiIHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgcHJlc2VudC5cbiAqIFBvcnRhbCBNYXRlcmlhbCBkaWFsb2dzIHNob3VsZCBOT1QgaGF2ZSB0aGlzIGNsYXNzIHRvIHByZXZlbnQgbGlicmFyeSBDU1MgZnJvbSBhZmZlY3RpbmcgdGhlbS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhaWx3aW5kT3ZlcmxheUNvbnRhaW5lciBleHRlbmRzIE92ZXJsYXlDb250YWluZXIge1xuICBwcml2YXRlIHVwZGF0ZVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfY3JlYXRlQ29udGFpbmVyKCk6IHZvaWQge1xuICAgIHN1cGVyLl9jcmVhdGVDb250YWluZXIoKTtcbiAgICBpZiAodGhpcy5fY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgLy8gRG9uJ3Qgc2V0IGNsYXNzIGluaXRpYWxseSAtIHdlJ2xsIHNldCBpdCBkeW5hbWljYWxseSB3aGVuIGxpYnJhcnkgb3ZlcmxheXMgYXJlIGNyZWF0ZWRcbiAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY3FhLXVpLXJvb3QnKTtcbiAgICAgIFxuICAgICAgLy8gVXNlIE11dGF0aW9uT2JzZXJ2ZXIgdG8gZGV0ZWN0IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY3JlYXRlZC9kZXN0cm95ZWRcbiAgICAgIHRoaXMub2JzZXJ2ZUxpYnJhcnlPdmVybGF5cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUxpYnJhcnlPdmVybGF5cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRhaW5lckVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgLy8gRGVib3VuY2UgdXBkYXRlcyB0byBhdm9pZCBleGNlc3NpdmUgY2hlY2tzIGR1cmluZyByYXBpZCBET00gY2hhbmdlc1xuICAgICAgaWYgKHRoaXMudXBkYXRlVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVRpbWVvdXQpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVUaW1lb3V0ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250YWluZXJDbGFzcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBbHNvIGNoZWNrIGltbWVkaWF0ZWx5IGluIGNhc2Ugb3ZlcmxheXMgYWxyZWFkeSBleGlzdFxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnVwZGF0ZUNvbnRhaW5lckNsYXNzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250YWluZXJDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRhaW5lckVsZW1lbnQpIHJldHVybjtcblxuICAgIC8vIENvdW50IGxpYnJhcnkgb3ZlcmxheXMgKGRpYWxvZ3MsIHNlbGVjdCBwYW5lbHMsIGRhdGVwaWNrZXIgcGFuZWxzKVxuICAgIC8vIFRoZXNlIGFyZSBsaWJyYXJ5LXNwZWNpZmljIGNsYXNzZXMgdGhhdCBpbmRpY2F0ZSBsaWJyYXJ5IGNvbXBvbmVudHNcbiAgICAvLyBPbmx5IGNvdW50IG92ZXJsYXlzIHRoYXQgYXJlIGFjdHVhbGx5IGluIHRoZSBET00gKENESyByZW1vdmVzIHRoZW0gd2hlbiBjbG9zZWQpXG4gICAgY29uc3QgbGlicmFyeURpYWxvZ3MgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jcWEtZGlhbG9nLXBhbmVsJykubGVuZ3RoO1xuICAgIGNvbnN0IGxpYnJhcnlCYWNrZHJvcHMgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jcWEtZGlhbG9nLWJhY2tkcm9wJykubGVuZ3RoO1xuICAgIGNvbnN0IGxpYnJhcnlTZWxlY3RQYW5lbHMgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGMtc2VsZWN0LXBhbmVsJykubGVuZ3RoO1xuICAgIGNvbnN0IGxpYnJhcnlEYXRlUGFuZWxzID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3RjLWRhdGUtcmFuZ2UtcGFuZWwnKS5sZW5ndGg7XG4gICAgXG4gICAgY29uc3QgdG90YWxMaWJyYXJ5T3ZlcmxheXMgPSBsaWJyYXJ5RGlhbG9ncyArIGxpYnJhcnlCYWNrZHJvcHMgKyBsaWJyYXJ5U2VsZWN0UGFuZWxzICsgbGlicmFyeURhdGVQYW5lbHM7XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIHBvcnRhbCBNYXRlcmlhbCBkaWFsb2dzICh0aG9zZSB3aXRob3V0IC5jcWEtZGlhbG9nLXBhbmVsIGNsYXNzKVxuICAgIC8vIFBvcnRhbCBkaWFsb2dzIHVzZSAubWF0LWRpYWxvZy1jb250YWluZXIgYnV0IE5PVCAuY3FhLWRpYWxvZy1wYW5lbFxuICAgIGNvbnN0IHBvcnRhbERpYWxvZ3MgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtZGlhbG9nLWNvbnRhaW5lcjpub3QoLmNxYS1kaWFsb2ctcGFuZWwpJykubGVuZ3RoO1xuXG4gICAgLy8gRGVjaXNpb24gbG9naWM6IE9ubHkgYWRkIGNxYS11aS1yb290IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgcHJlc2VudFxuICAgIC8vIFRoaXMgZW5zdXJlcyBwb3J0YWwgTWF0ZXJpYWwgZGlhbG9ncyBkb24ndCBnZXQgYWZmZWN0ZWQgYnkgbGlicmFyeSBDU1NcbiAgICBcbiAgICBpZiAodG90YWxMaWJyYXJ5T3ZlcmxheXMgPiAwKSB7XG4gICAgICAvLyBMaWJyYXJ5IG92ZXJsYXlzIGV4aXN0IC0gYWRkIHRoZSBjbGFzcyAodGhleSBuZWVkIFRhaWx3aW5kIHN0eWxlcyBzY29wZWQgdG8gLmNxYS11aS1yb290KVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjcWEtdWktcm9vdCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBsaWJyYXJ5IG92ZXJsYXlzIGV4aXN0IC0gcmVtb3ZlIHRoZSBjbGFzc1xuICAgICAgLy8gVGhpcyBoYW5kbGVzIGJvdGggY2FzZXM6XG4gICAgICAvLyAxLiBPbmx5IHBvcnRhbCBkaWFsb2dzIGV4aXN0IChzaG91bGQgbm90IGhhdmUgY3FhLXVpLXJvb3QpXG4gICAgICAvLyAyLiBObyBvdmVybGF5cyBleGlzdCBhdCBhbGwgKGNsZWFuIHN0YXRlKVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBOb3RlOiBJZiBib3RoIGxpYnJhcnkgb3ZlcmxheXMgYW5kIHBvcnRhbCBkaWFsb2dzIGV4aXN0IHNpbXVsdGFuZW91c2x5LFxuICAgIC8vIHRoZSBjbGFzcyB3aWxsIGJlIHByZXNlbnQgYmVjYXVzZSBsaWJyYXJ5IG92ZXJsYXlzIG5lZWQgaXQuIEluIHRoaXMgY2FzZSxcbiAgICAvLyBwb3J0YWwgZGlhbG9ncyBtYXkgYmUgYWZmZWN0ZWQgYnkgbGlicmFyeSBDU1MuIFRvIGF2b2lkIHRoaXMsIGVuc3VyZSBsaWJyYXJ5XG4gICAgLy8gb3ZlcmxheXMgYXJlIGNsb3NlZCBiZWZvcmUgb3BlbmluZyBwb3J0YWwgZGlhbG9ncywgb3IgdXNlIENTUyBzcGVjaWZpY2l0eVxuICAgIC8vIHRvIG92ZXJyaWRlIGxpYnJhcnkgc3R5bGVzIHdpdGhpbiBwb3J0YWwgZGlhbG9ncy5cbiAgfVxufVxuXG5cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHctb3ZlcmxheS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBRDlEOztRQUVVLGtCQUFhLEdBQWtCLElBQUksQ0FBQztLQXdIN0M7SUF0SG9CLGdCQUFnQjtRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQix5RkFBeUY7WUFDekYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFdkQsNkVBQTZFO1lBQzdFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDekMsc0VBQXNFO1lBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxD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QWEsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxzREFBc0Q7WUFDdEQsZ0JBQWdCO1lBQ2hCLDZEQUE2RDtZQUM3RCx1RUFBdUU7WUFDdkUsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSwrRUFBK0U7UUFDL0UsNEVBQTRFO1FBQzVFLG9EQUFvRDtJQUN0RCxDQUFDOztxSEF4SFUsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbi8qKlxuICogRW5zdXJlcyBBbmd1bGFyIENESyBvdmVybGF5IGNvbnRlbnQgKGUuZy4sIE1hdFNlbGVjdCwgRGF0ZXBpY2tlciBwYW5lbHMsIGxpYnJhcnkgZGlhbG9ncylcbiAqIGlzIG5lc3RlZCB1bmRlciBhbiBlbGVtZW50IHdpdGggY2xhc3M9XCJjcWEtdWktcm9vdFwiIHNvIFRhaWx3aW5kIHV0aWxpdGllc1xuICogY29uZmlndXJlZCB3aXRoIGltcG9ydGFudDogJy5jcWEtdWktcm9vdCcgYXJlIGFwcGxpZWQgaW5zaWRlIG92ZXJsYXlzLlxuICogXG4gKiBJTVBPUlRBTlQ6IE9ubHkgc2V0cyBjbGFzcz1cImNxYS11aS1yb290XCIgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBwcmVzZW50LlxuICogUG9ydGFsIE1hdGVyaWFsIGRpYWxvZ3Mgc2hvdWxkIE5PVCBoYXZlIHRoaXMgY2xhc3MgdG8gcHJldmVudCBsaWJyYXJ5IENTUyBmcm9tIGFmZmVjdGluZyB0aGVtLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRPdmVybGF5Q29udGFpbmVyIGV4dGVuZHMgT3ZlcmxheUNvbnRhaW5lciB7XG4gIHByaXZhdGUgdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jcmVhdGVDb250YWluZXIoKTogdm9pZCB7XG4gICAgc3VwZXIuX2NyZWF0ZUNvbnRhaW5lcigpO1xuICAgIGlmICh0aGlzLl9jb250YWluZXJFbGVtZW50KSB7XG4gICAgICAvLyBEb24ndCBzZXQgY2xhc3MgaW5pdGlhbGx5IC0gd2UnbGwgc2V0IGl0IGR5bmFtaWNhbGx5IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY3JlYXRlZFxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgICAgXG4gICAgICAvLyBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBkZXRlY3Qgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBjcmVhdGVkL2Rlc3Ryb3llZFxuICAgICAgdGhpcy5vYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjaGVja3MgZHVyaW5nIHJhcGlkIERPTSBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lckNsYXNzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fY29udGFpbmVyRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsc28gY2hlY2sgaW1tZWRpYXRlbHkgaW4gY2FzZSBvdmVybGF5cyBhbHJlYWR5IGV4aXN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMudXBkYXRlQ29udGFpbmVyQ2xhc3MoKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudENsb3NpbmcoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGVsZW1lbnQgaXMgY2xvc2luZyAodmVyeSBsb3cgb3BhY2l0eSBBTkQgc2hyaW5raW5nIGRpbWVuc2lvbnMpXG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBjb25zdCBvcGFjaXR5ID0gcGFyc2VGbG9hdChzdHlsZS5vcGFjaXR5KTtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBcbiAgICAvLyBJZiBvcGFjaXR5IGlzIHZlcnkgbG93ICg8IDAuMSkgQU5EIGRpbWVuc2lvbnMgYXJlIHZlcnkgc21hbGwsIGl0J3MgbGlrZWx5IGNsb3NpbmdcbiAgICAvLyBUaGlzIGhlbHBzIGZpbHRlciBvdXQgY2xvc2luZyBhbmltYXRpb25zIHdoaWxlIGFsbG93aW5nIG9wZW5pbmcgYW5pbWF0aW9uc1xuICAgIHJldHVybiBvcGFjaXR5IDwgMC4xICYmIChyZWN0LndpZHRoIDwgMTAgfHwgcmVjdC5oZWlnaHQgPCAxMCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lckNsYXNzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgLy8gQ291bnQgbGlicmFyeSBvdmVybGF5cyAoZGlhbG9ncywgc2VsZWN0IHBhbmVscywgZGF0ZXBpY2tlciBwYW5lbHMpXG4gICAgLy8gQ291bnQgdGhlbSBpZiB0aGV5IGV4aXN0IGluIERPTSAoZXZlbiBkdXJpbmcgb3BlbmluZyBhbmltYXRpb25zKVxuICAgIC8vIEJ1dCBleGNsdWRlIHRoZW0gaWYgdGhleSdyZSBjbGVhcmx5IGNsb3NpbmcgKHZlcnkgbG93IG9wYWNpdHkgKyBzbWFsbCBzaXplKVxuICAgIFxuICAgIC8vIExpYnJhcnkgZGlhbG9ncyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3QgbGlicmFyeURpYWxvZ3MgPSBBcnJheS5mcm9tKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNxYS1kaWFsb2ctcGFuZWwnKSk7XG4gICAgY29uc3QgYWN0aXZlTGlicmFyeURpYWxvZ3MgPSBsaWJyYXJ5RGlhbG9ncy5maWx0ZXIoZGlhbG9nID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlhbG9nKTtcbiAgICAgIHJldHVybiBzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiYgIXRoaXMuaXNFbGVtZW50Q2xvc2luZyhkaWFsb2cpO1xuICAgIH0pLmxlbmd0aDtcbiAgICBcbiAgICAvLyBMaWJyYXJ5IGJhY2tkcm9wcyAtIGNoZWNrIGlmIHNob3dpbmcgKGJhY2tkcm9wcyBjYW4gYmUgdHJhbnNwYXJlbnQgYnV0IHN0aWxsIHByZXNlbnQpXG4gICAgY29uc3QgbGlicmFyeUJhY2tkcm9wcyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3FhLWRpYWxvZy1iYWNrZHJvcCcpKTtcbiAgICBjb25zdCBhY3RpdmVMaWJyYXJ5QmFja2Ryb3BzID0gbGlicmFyeUJhY2tkcm9wcy5maWx0ZXIoYmFja2Ryb3AgPT4ge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShiYWNrZHJvcCk7XG4gICAgICAvLyBCYWNrZHJvcCBpcyBhY3RpdmUgaWYgaXQncyBzaG93aW5nIChoYXMgdGhlIHNob3dpbmcgY2xhc3MpIGFuZCBub3QgZGlzcGxheTogbm9uZVxuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBiYWNrZHJvcC5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcnKTtcbiAgICB9KS5sZW5ndGg7XG4gICAgXG4gICAgLy8gU2VsZWN0IHBhbmVscyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3Qgc2VsZWN0UGFuZWxzID0gQXJyYXkuZnJvbSh0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGMtc2VsZWN0LXBhbmVsJykpO1xuICAgIGNvbnN0IGFjdGl2ZVNlbGVjdFBhbmVscyA9IHNlbGVjdFBhbmVscy5maWx0ZXIocGFuZWwgPT4ge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYW5lbCk7XG4gICAgICByZXR1cm4gc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnICYmICF0aGlzLmlzRWxlbWVudENsb3NpbmcocGFuZWwpO1xuICAgIH0pLmxlbmd0aDtcbiAgICBcbiAgICAvLyBEYXRlIHBhbmVscyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3QgZGF0ZVBhbmVscyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3RjLWRhdGUtcmFuZ2UtcGFuZWwnKSk7XG4gICAgY29uc3QgYWN0aXZlRGF0ZVBhbmVscyA9IGRhdGVQYW5lbHMuZmlsdGVyKHBhbmVsID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFuZWwpO1xuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiAhdGhpcy5pc0VsZW1lbnRDbG9zaW5nKHBhbmVsKTtcbiAgICB9KS5sZW5ndGg7XG4gICAgXG4gICAgY29uc3QgdG90YWxMaWJyYXJ5T3ZlcmxheXMgPSBhY3RpdmVMaWJyYXJ5RGlhbG9ncyArIGFjdGl2ZUxpYnJhcnlCYWNrZHJvcHMgKyBhY3RpdmVTZWxlY3RQYW5lbHMgKyBhY3RpdmVEYXRlUGFuZWxzO1xuICAgIFxuICAgIC8vIENoZWNrIGZvciBwb3J0YWwgTWF0ZXJpYWwgZGlhbG9ncyAodGhvc2Ugd2l0aG91dCAuY3FhLWRpYWxvZy1wYW5lbCBjbGFzcylcbiAgICAvLyBQb3J0YWwgZGlhbG9ncyB1c2UgLm1hdC1kaWFsb2ctY29udGFpbmVyIGJ1dCBOT1QgLmNxYS1kaWFsb2ctcGFuZWxcbiAgICAvLyBPbmx5IGNvdW50IHZpc2libGUgcG9ydGFsIGRpYWxvZ3MgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzXG4gICAgY29uc3QgcG9ydGFsRGlhbG9ncyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWF0LWRpYWxvZy1jb250YWluZXI6bm90KC5jcWEtZGlhbG9nLXBhbmVsKScpKTtcbiAgICBjb25zdCB2aXNpYmxlUG9ydGFsRGlhbG9ncyA9IHBvcnRhbERpYWxvZ3MuZmlsdGVyKGRpYWxvZyA9PiB7XG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpYWxvZyk7XG4gICAgICBjb25zdCByZWN0ID0gZGlhbG9nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBcbiAgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlLm9wYWNpdHkpID4gMC4xICYmIFxuICAgICAgICAgICAgIHJlY3Qud2lkdGggPiAwICYmIFxuICAgICAgICAgICAgIHJlY3QuaGVpZ2h0ID4gMDtcbiAgICB9KS5sZW5ndGg7XG5cbiAgICAvLyBEZWNpc2lvbiBsb2dpYzogQWRkIGNxYS11aS1yb290IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgcHJlc2VudCAoZXZlbiBkdXJpbmcgb3BlbmluZyBhbmltYXRpb25zKVxuICAgIC8vIFJlbW92ZSBpdCBvbmx5IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY2xlYXJseSBnb25lIG9yIGNsb3NpbmdcbiAgICAvLyBUaGlzIGVuc3VyZXMgbGlicmFyeSBvdmVybGF5cyBnZXQgc3R5bGVzIGltbWVkaWF0ZWx5LCB3aGlsZSBwb3J0YWwgZGlhbG9ncyBkb24ndCBnZXQgYWZmZWN0ZWRcbiAgICBcbiAgICBpZiAodG90YWxMaWJyYXJ5T3ZlcmxheXMgPiAwKSB7XG4gICAgICAvLyBMaWJyYXJ5IG92ZXJsYXlzIGV4aXN0IC0gYWRkIHRoZSBjbGFzcyAodGhleSBuZWVkIFRhaWx3aW5kIHN0eWxlcyBzY29wZWQgdG8gLmNxYS11aS1yb290KVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjcWEtdWktcm9vdCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBhY3RpdmUgbGlicmFyeSBvdmVybGF5cyBleGlzdCAtIHJlbW92ZSB0aGUgY2xhc3NcbiAgICAgIC8vIFRoaXMgaGFuZGxlczpcbiAgICAgIC8vIDEuIE9ubHkgcG9ydGFsIGRpYWxvZ3MgZXhpc3QgKHNob3VsZCBub3QgaGF2ZSBjcWEtdWktcm9vdClcbiAgICAgIC8vIDIuIExpYnJhcnkgb3ZlcmxheXMgYXJlIGNsb3NpbmcvY2xvc2VkIChzaG91bGQgbm90IGhhdmUgY3FhLXVpLXJvb3QpXG4gICAgICAvLyAzLiBObyBvdmVybGF5cyBleGlzdCBhdCBhbGwgKGNsZWFuIHN0YXRlKVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBOb3RlOiBJZiBib3RoIGxpYnJhcnkgb3ZlcmxheXMgYW5kIHBvcnRhbCBkaWFsb2dzIGV4aXN0IHNpbXVsdGFuZW91c2x5LFxuICAgIC8vIHRoZSBjbGFzcyB3aWxsIGJlIHByZXNlbnQgYmVjYXVzZSBsaWJyYXJ5IG92ZXJsYXlzIG5lZWQgaXQuIEluIHRoaXMgY2FzZSxcbiAgICAvLyBwb3J0YWwgZGlhbG9ncyBtYXkgYmUgYWZmZWN0ZWQgYnkgbGlicmFyeSBDU1MuIFRvIGF2b2lkIHRoaXMsIGVuc3VyZSBsaWJyYXJ5XG4gICAgLy8gb3ZlcmxheXMgYXJlIGNsb3NlZCBiZWZvcmUgb3BlbmluZyBwb3J0YWwgZGlhbG9ncywgb3IgdXNlIENTUyBzcGVjaWZpY2l0eVxuICAgIC8vIHRvIG92ZXJyaWRlIGxpYnJhcnkgc3R5bGVzIHdpdGhpbiBwb3J0YWwgZGlhbG9ncy5cbiAgfVxufVxuXG5cbiJdfQ==
@@ -4255,31 +4255,72 @@ class TailwindOverlayContainer extends OverlayContainer {
4255
4255
  // Also check immediately in case overlays already exist
4256
4256
  requestAnimationFrame(() => this.updateContainerClass());
4257
4257
  }
4258
+ isElementClosing(element) {
4259
+ // Check if element is closing (very low opacity AND shrinking dimensions)
4260
+ const style = window.getComputedStyle(element);
4261
+ const opacity = parseFloat(style.opacity);
4262
+ const rect = element.getBoundingClientRect();
4263
+ // If opacity is very low (< 0.1) AND dimensions are very small, it's likely closing
4264
+ // This helps filter out closing animations while allowing opening animations
4265
+ return opacity < 0.1 && (rect.width < 10 || rect.height < 10);
4266
+ }
4258
4267
  updateContainerClass() {
4259
4268
  if (!this._containerElement)
4260
4269
  return;
4261
4270
  // Count library overlays (dialogs, select panels, datepicker panels)
4262
- // These are library-specific classes that indicate library components
4263
- // Only count overlays that are actually in the DOM (CDK removes them when closed)
4264
- const libraryDialogs = this._containerElement.querySelectorAll('.cqa-dialog-panel').length;
4265
- const libraryBackdrops = this._containerElement.querySelectorAll('.cqa-dialog-backdrop').length;
4266
- const librarySelectPanels = this._containerElement.querySelectorAll('.ctc-select-panel').length;
4267
- const libraryDatePanels = this._containerElement.querySelectorAll('.ctc-date-range-panel').length;
4268
- const totalLibraryOverlays = libraryDialogs + libraryBackdrops + librarySelectPanels + libraryDatePanels;
4271
+ // Count them if they exist in DOM (even during opening animations)
4272
+ // But exclude them if they're clearly closing (very low opacity + small size)
4273
+ // Library dialogs - count if not closing
4274
+ const libraryDialogs = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-panel'));
4275
+ const activeLibraryDialogs = libraryDialogs.filter(dialog => {
4276
+ const style = window.getComputedStyle(dialog);
4277
+ return style.display !== 'none' && !this.isElementClosing(dialog);
4278
+ }).length;
4279
+ // Library backdrops - check if showing (backdrops can be transparent but still present)
4280
+ const libraryBackdrops = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-backdrop'));
4281
+ const activeLibraryBackdrops = libraryBackdrops.filter(backdrop => {
4282
+ const style = window.getComputedStyle(backdrop);
4283
+ // Backdrop is active if it's showing (has the showing class) and not display: none
4284
+ return style.display !== 'none' && backdrop.classList.contains('cdk-overlay-backdrop-showing');
4285
+ }).length;
4286
+ // Select panels - count if not closing
4287
+ const selectPanels = Array.from(this._containerElement.querySelectorAll('.ctc-select-panel'));
4288
+ const activeSelectPanels = selectPanels.filter(panel => {
4289
+ const style = window.getComputedStyle(panel);
4290
+ return style.display !== 'none' && !this.isElementClosing(panel);
4291
+ }).length;
4292
+ // Date panels - count if not closing
4293
+ const datePanels = Array.from(this._containerElement.querySelectorAll('.ctc-date-range-panel'));
4294
+ const activeDatePanels = datePanels.filter(panel => {
4295
+ const style = window.getComputedStyle(panel);
4296
+ return style.display !== 'none' && !this.isElementClosing(panel);
4297
+ }).length;
4298
+ const totalLibraryOverlays = activeLibraryDialogs + activeLibraryBackdrops + activeSelectPanels + activeDatePanels;
4269
4299
  // Check for portal Material dialogs (those without .cqa-dialog-panel class)
4270
4300
  // Portal dialogs use .mat-dialog-container but NOT .cqa-dialog-panel
4271
- const portalDialogs = this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)').length;
4272
- // Decision logic: Only add cqa-ui-root when library overlays are present
4273
- // This ensures portal Material dialogs don't get affected by library CSS
4301
+ // Only count visible portal dialogs to avoid false positives
4302
+ const portalDialogs = Array.from(this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)'));
4303
+ const visiblePortalDialogs = portalDialogs.filter(dialog => {
4304
+ const style = window.getComputedStyle(dialog);
4305
+ const rect = dialog.getBoundingClientRect();
4306
+ return style.display !== 'none' &&
4307
+ parseFloat(style.opacity) > 0.1 &&
4308
+ rect.width > 0 &&
4309
+ rect.height > 0;
4310
+ }).length;
4311
+ // Decision logic: Add cqa-ui-root when library overlays are present (even during opening animations)
4312
+ // Remove it only when library overlays are clearly gone or closing
4313
+ // This ensures library overlays get styles immediately, while portal dialogs don't get affected
4274
4314
  if (totalLibraryOverlays > 0) {
4275
4315
  // Library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
4276
4316
  this._containerElement.classList.add('cqa-ui-root');
4277
4317
  }
4278
4318
  else {
4279
- // No library overlays exist - remove the class
4280
- // This handles both cases:
4319
+ // No active library overlays exist - remove the class
4320
+ // This handles:
4281
4321
  // 1. Only portal dialogs exist (should not have cqa-ui-root)
4282
- // 2. No overlays exist at all (clean state)
4322
+ // 2. Library overlays are closing/closed (should not have cqa-ui-root)
4323
+ // 3. No overlays exist at all (clean state)
4283
4324
  this._containerElement.classList.remove('cqa-ui-root');
4284
4325
  }
4285
4326
  // Note: If both library overlays and portal dialogs exist simultaneously,