codexly-ui 0.1.17 → 0.1.19

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.
@@ -27,6 +27,12 @@
27
27
  }
28
28
 
29
29
 
30
+ /* ── Suppress transitions during window resize ───────────────────────────── */
31
+ html.clx-resizing *, html.clx-resizing *::before, html.clx-resizing *::after {
32
+ transition: none !important;
33
+ animation: none !important;
34
+ }
35
+
30
36
  /* ── Scrollbar ───────────────────────────────────────────────────────────── */
31
37
  ::-webkit-scrollbar { width: 0.5rem; height: 0.5rem; }
32
38
  ::-webkit-scrollbar-track { background-color: transparent; }
@@ -11819,6 +11819,8 @@ class ClxAppLayoutComponent {
11819
11819
  }, ...(ngDevMode ? [{ debugName: "_sidebarCls" }] : /* istanbul ignore next */ []));
11820
11820
  _mql;
11821
11821
  _mqlListener;
11822
+ _resizeTimer = null;
11823
+ _resizeListener;
11822
11824
  ngOnInit() {
11823
11825
  const win = this._document.defaultView;
11824
11826
  if (!win)
@@ -11841,9 +11843,26 @@ class ClxAppLayoutComponent {
11841
11843
  });
11842
11844
  };
11843
11845
  this._mql.addEventListener('change', this._mqlListener);
11846
+ // Disable CSS transitions during window resize to prevent jank
11847
+ this._resizeListener = () => {
11848
+ this._document.documentElement.classList.add('clx-resizing');
11849
+ if (this._resizeTimer !== null)
11850
+ clearTimeout(this._resizeTimer);
11851
+ this._resizeTimer = setTimeout(() => {
11852
+ this._document.documentElement.classList.remove('clx-resizing');
11853
+ this._resizeTimer = null;
11854
+ }, 150);
11855
+ };
11856
+ this._zone.runOutsideAngular(() => {
11857
+ win.addEventListener('resize', this._resizeListener, { passive: true });
11858
+ });
11844
11859
  }
11845
11860
  ngOnDestroy() {
11846
11861
  this._mql?.removeEventListener('change', this._mqlListener);
11862
+ const win = this._document.defaultView;
11863
+ win?.removeEventListener('resize', this._resizeListener);
11864
+ if (this._resizeTimer !== null)
11865
+ clearTimeout(this._resizeTimer);
11847
11866
  }
11848
11867
  _toggleCollapsed() {
11849
11868
  const next = !this.collapsed();
@@ -11889,7 +11908,7 @@ class ClxAppLayoutComponent {
11889
11908
  <ng-content select="clx-brand"></ng-content>
11890
11909
  </div>
11891
11910
 
11892
- <div class="flex flex-col flex-1 min-h-0">
11911
+ <div class="flex flex-col flex-1 min-h-0" style="contain:strict;overflow-y:auto">
11893
11912
  <ng-content select="[clx-sidebar]"></ng-content>
11894
11913
  </div>
11895
11914
  </aside>
@@ -11916,7 +11935,7 @@ class ClxAppLayoutComponent {
11916
11935
  <ng-content select="[clx-header]"></ng-content>
11917
11936
  </header>
11918
11937
 
11919
- <main cdkScrollable class="flex-1 overflow-y-auto bg-clx-bg">
11938
+ <main cdkScrollable class="flex-1 overflow-y-auto bg-clx-bg" style="contain:strict">
11920
11939
  <ng-content></ng-content>
11921
11940
  </main>
11922
11941
 
@@ -11951,7 +11970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11951
11970
  <ng-content select="clx-brand"></ng-content>
11952
11971
  </div>
11953
11972
 
11954
- <div class="flex flex-col flex-1 min-h-0">
11973
+ <div class="flex flex-col flex-1 min-h-0" style="contain:strict;overflow-y:auto">
11955
11974
  <ng-content select="[clx-sidebar]"></ng-content>
11956
11975
  </div>
11957
11976
  </aside>
@@ -11978,7 +11997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11978
11997
  <ng-content select="[clx-header]"></ng-content>
11979
11998
  </header>
11980
11999
 
11981
- <main cdkScrollable class="flex-1 overflow-y-auto bg-clx-bg">
12000
+ <main cdkScrollable class="flex-1 overflow-y-auto bg-clx-bg" style="contain:strict">
11982
12001
  <ng-content></ng-content>
11983
12002
  </main>
11984
12003