@acorex/components 22.3.6 → 22.3.8

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.
@@ -1,28 +1,74 @@
1
- import { AXComponent, MXBaseComponent, AXClosableComponent, AXComponentClosedPromise, NXComponent, AXCommonModule } from '@acorex/cdk/common';
2
1
  import * as i0 from '@angular/core';
3
- import { ViewEncapsulation, Component, input, Directive, inject, NgZone, viewChild, signal, computed, afterNextRender, TemplateRef, ViewContainerRef, HostListener, ViewChild, ComponentRef, Injectable, NgModule } from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component, computed, Directive, inject, NgZone, viewChild, viewChildren, effect, signal, afterNextRender, TemplateRef, ViewContainerRef, HostListener, ViewChild, ViewEncapsulation, Injector, runInInjectionContext, ComponentRef, Injectable, ElementRef, afterRenderEffect, contentChild, NgModule } from '@angular/core';
3
+ import { MXBaseComponent, AXClosableComponent, AXComponent, AXComponentClosedPromise, NXComponent, AXCommonModule } from '@acorex/cdk/common';
4
+ import { AXDragHandleDirective, AXDragDirective, moveItemInArray, AX_DRAG_PARENT, AXDropListDirective } from '@acorex/cdk/drag-drop';
5
+ import { AXButtonComponent, AXButtonModule } from '@acorex/components/button';
6
+ import { DOCUMENT, NgTemplateOutlet, AsyncPipe, CommonModule } from '@angular/common';
4
7
  import { AXOverlayService } from '@acorex/cdk/overlay';
5
8
  import { Subject } from 'rxjs';
6
9
  import { AXPlatform } from '@acorex/core/platform';
7
- import { AXDragDirective, AXDragHandleDirective } from '@acorex/cdk/drag-drop';
8
10
  import { AXResizableDirective } from '@acorex/cdk/resizable';
9
11
  import { AXFocusTrapDirective } from '@acorex/cdk/focus-trap';
10
- import { AXDecoratorCloseButtonComponent, AXButtonComponent, AXButtonModule } from '@acorex/components/button';
11
- import { AXDecoratorIconComponent, AXDecoratorModule } from '@acorex/components/decorators';
12
12
  import { AXLoadingService } from '@acorex/components/loading';
13
13
  import { AXSkeletonComponent } from '@acorex/components/skeleton';
14
- import { AXComponentService } from '@acorex/core/components';
15
14
  import { AXTranslatorPipe, AXTranslationModule } from '@acorex/core/translation';
16
- import { DOCUMENT, NgTemplateOutlet, AsyncPipe, CommonModule } from '@angular/common';
15
+ import { AXDecoratorModule } from '@acorex/components/decorators';
17
16
 
18
- class AXPopupFooterComponent {
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXPopupFooterComponent, isStandalone: true, selector: "ax-popup-footer", providers: [{ provide: AXComponent, useExisting: AXPopupFooterComponent }], ngImport: i0, template: "<ng-content select=\"ax-prefix\"></ng-content>\n<ng-content select=\"ax-suffix\"></ng-content>\n<ng-content></ng-content>\n", styles: ["@layer components{ax-popup-footer{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
17
+ /**
18
+ * Windows-style window caption glyphs: minimize, maximize, restore, close.
19
+ */
20
+ class AXPopupCaptionIconComponent {
21
+ constructor() {
22
+ this.name = input.required(/* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupCaptionIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXPopupCaptionIconComponent, isStandalone: true, selector: "ax-popup-caption-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "attr.data-name": "name()" }, classAttribute: "ax-popup-caption-icon" }, ngImport: i0, template: `
27
+ <svg viewBox="0 0 10 10" focusable="false">
28
+ @switch (name()) {
29
+ @case ('minimize') {
30
+ <path d="M1.6 5h6.8" />
31
+ }
32
+ @case ('maximize') {
33
+ <rect x="1.4" y="1.4" width="7.2" height="7.2" rx="1" />
34
+ }
35
+ @case ('restore') {
36
+ <path d="M3.15 2.85V1.4h5.45v5.45H7.15" />
37
+ <rect x="1.4" y="3.15" width="5.45" height="5.45" rx="0.7" />
38
+ }
39
+ @case ('close') {
40
+ <path d="M2.05 2.05l5.9 5.9M7.95 2.05l-5.9 5.9" />
41
+ }
42
+ }
43
+ </svg>
44
+ `, isInline: true, styles: [":host{display:inline-flex;width:12px;height:12px}svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:square;stroke-linejoin:miter}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
45
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupFooterComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupCaptionIconComponent, decorators: [{
23
47
  type: Component,
24
- args: [{ selector: 'ax-popup-footer', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXPopupFooterComponent }], template: "<ng-content select=\"ax-prefix\"></ng-content>\n<ng-content select=\"ax-suffix\"></ng-content>\n<ng-content></ng-content>\n", styles: ["@layer components{ax-popup-footer{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
25
- }] });
48
+ args: [{ selector: 'ax-popup-caption-icon', changeDetection: ChangeDetectionStrategy.OnPush, host: {
49
+ class: 'ax-popup-caption-icon',
50
+ '[attr.data-name]': 'name()',
51
+ 'aria-hidden': 'true',
52
+ }, template: `
53
+ <svg viewBox="0 0 10 10" focusable="false">
54
+ @switch (name()) {
55
+ @case ('minimize') {
56
+ <path d="M1.6 5h6.8" />
57
+ }
58
+ @case ('maximize') {
59
+ <rect x="1.4" y="1.4" width="7.2" height="7.2" rx="1" />
60
+ }
61
+ @case ('restore') {
62
+ <path d="M3.15 2.85V1.4h5.45v5.45H7.15" />
63
+ <rect x="1.4" y="3.15" width="5.45" height="5.45" rx="0.7" />
64
+ }
65
+ @case ('close') {
66
+ <path d="M2.05 2.05l5.9 5.9M7.95 2.05l-5.9 5.9" />
67
+ }
68
+ }
69
+ </svg>
70
+ `, styles: [":host{display:inline-flex;width:12px;height:12px}svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:square;stroke-linejoin:miter}\n"] }]
71
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } });
26
72
 
27
73
  const AX_POPUP_DEFAULT_RESIZE_HANDLES = [
28
74
  'top',
@@ -38,6 +84,14 @@ class AXPopupComponentBase {
38
84
  constructor() {
39
85
  this.__popup__ = input(/* @ts-ignore */
40
86
  ...(ngDevMode ? [undefined, { debugName: "__popup__" }] : /* istanbul ignore next */ []));
87
+ this.popupState = computed(() => this.__popup__()?.state() ?? 'normal', /* @ts-ignore */
88
+ ...(ngDevMode ? [{ debugName: "popupState" }] : /* istanbul ignore next */ []));
89
+ this.isMinimized = computed(() => this.__popup__()?.isMinimized() ?? false, /* @ts-ignore */
90
+ ...(ngDevMode ? [{ debugName: "isMinimized" }] : /* istanbul ignore next */ []));
91
+ this.isMaximized = computed(() => this.__popup__()?.isMaximized() ?? false, /* @ts-ignore */
92
+ ...(ngDevMode ? [{ debugName: "isMaximized" }] : /* istanbul ignore next */ []));
93
+ this.popupTitle = computed(() => this.__popup__()?.title() ?? '', /* @ts-ignore */
94
+ ...(ngDevMode ? [{ debugName: "popupTitle" }] : /* istanbul ignore next */ []));
41
95
  }
42
96
  close(data = null) {
43
97
  this.__popup__()?.close(data);
@@ -82,6 +136,7 @@ function resolvePopupMinimize(config) {
82
136
  return {
83
137
  enable: config?.buttons?.minimize?.enable ?? false,
84
138
  position: config?.buttons?.minimize?.position ?? 'bottom-right',
139
+ dock: config?.buttons?.minimize?.dock ?? 'default',
85
140
  };
86
141
  }
87
142
  /** Resolves resize config. Disabled for `size: 'full'` and when `resizable` is false/omitted. */
@@ -122,15 +177,28 @@ function resolvePopupResizable(config) {
122
177
  * @category Components
123
178
  */
124
179
  class AXPopupComponent extends MXBaseComponent {
180
+ #syncDragHandles;
125
181
  constructor() {
126
182
  super();
127
183
  this._zone = inject(NgZone);
128
184
  this.loadingService = inject(AXLoadingService);
129
185
  this._platform = inject(AXPlatform);
130
- this.componentService = inject(AXComponentService);
131
186
  this.document = inject(DOCUMENT);
132
187
  this.popupEl = viewChild('popupEl', /* @ts-ignore */
133
188
  ...(ngDevMode ? [{ debugName: "popupEl" }] : /* istanbul ignore next */ []));
189
+ this.projectedHandles = viewChildren(AXDragHandleDirective, /* @ts-ignore */
190
+ ...(ngDevMode ? [{ debugName: "projectedHandles" }] : /* istanbul ignore next */ []));
191
+ this.#syncDragHandles = effect(() => {
192
+ const handles = this.projectedHandles();
193
+ const drag = this.dragDir;
194
+ if (!drag) {
195
+ return;
196
+ }
197
+ for (const handle of handles) {
198
+ drag.registerHandle(handle);
199
+ }
200
+ }, /* @ts-ignore */
201
+ ...(ngDevMode ? [{ debugName: "#syncDragHandles" }] : /* istanbul ignore next */ []));
134
202
  // Inputs from overlay service
135
203
  this.__content__ = input(/* @ts-ignore */
136
204
  ...(ngDevMode ? [undefined, { debugName: "__content__" }] : /* istanbul ignore next */ []));
@@ -201,11 +269,15 @@ class AXPopupComponent extends MXBaseComponent {
201
269
  ...(ngDevMode ? [{ debugName: "minimizeLeft" }] : /* istanbul ignore next */ []));
202
270
  this.minimizeRight = signal(null, /* @ts-ignore */
203
271
  ...(ngDevMode ? [{ debugName: "minimizeRight" }] : /* istanbul ignore next */ []));
272
+ this.minimizeSide = computed(() => resolvePopupMinimize(this.__config__()).position, /* @ts-ignore */
273
+ ...(ngDevMode ? [{ debugName: "minimizeSide" }] : /* istanbul ignore next */ []));
204
274
  this.fullscreenChangeHandler = () => {
205
- if (!document.fullscreenElement) {
206
- this.fullScreenState.set(false);
207
- this.cdr.markForCheck();
275
+ const isFullscreen = !!document.fullscreenElement;
276
+ this.fullScreenState.set(isFullscreen);
277
+ if (this.__popupRef__()?.state() !== 'minimized') {
278
+ this.__popupRef__()?._setState?.(isFullscreen ? 'maximized' : 'normal');
208
279
  }
280
+ this.cdr.markForCheck();
209
281
  };
210
282
  this.closeEnabled = () => resolvePopupCloseButton(this.__config__());
211
283
  this.maximizeEnabled = () => resolvePopupMaximizable(this.__config__());
@@ -215,6 +287,7 @@ class AXPopupComponent extends MXBaseComponent {
215
287
  this.viewportResizeHandler();
216
288
  const win = this.document.defaultView;
217
289
  win?.addEventListener('resize', this.viewportResizeHandler);
290
+ this.bindContentDragHandles();
218
291
  });
219
292
  }
220
293
  /** @ignore */
@@ -272,7 +345,7 @@ class AXPopupComponent extends MXBaseComponent {
272
345
  this.handleContentRendered();
273
346
  }
274
347
  else if (typeof content === 'function') {
275
- const componentRef = this.componentService.createFromComponent(content);
348
+ const componentRef = this.contentContainerRef.createComponent(content);
276
349
  this._componentRef = componentRef;
277
350
  const popupRef = this.__popupRef__();
278
351
  if (popupRef) {
@@ -295,8 +368,6 @@ class AXPopupComponent extends MXBaseComponent {
295
368
  if (inputDefs && '__popup__' in inputDefs) {
296
369
  componentRef.setInput('__popup__', this.__popupRef__());
297
370
  }
298
- const hostElement = componentRef.location.nativeElement;
299
- this.contentContainerEl.nativeElement.appendChild(hostElement);
300
371
  const instance = componentRef.instance;
301
372
  if (instance.onClosed) {
302
373
  instance.onClosed.subscribe((e) => {
@@ -314,6 +385,7 @@ class AXPopupComponent extends MXBaseComponent {
314
385
  const content = body?.children[0];
315
386
  if (!content || !body) {
316
387
  this.focus();
388
+ this.bindContentDragHandles();
317
389
  return;
318
390
  }
319
391
  const popHeader = this.getHostElement().querySelector('.ax-popup-header-container');
@@ -330,6 +402,7 @@ class AXPopupComponent extends MXBaseComponent {
330
402
  popHeader.append(header);
331
403
  }
332
404
  this.focus();
405
+ this.bindContentDragHandles();
333
406
  });
334
407
  });
335
408
  if (this._loadingId !== undefined) {
@@ -337,6 +410,18 @@ class AXPopupComponent extends MXBaseComponent {
337
410
  }
338
411
  this.cdr.markForCheck();
339
412
  }
413
+ bindContentDragHandles() {
414
+ const drag = this.dragDir;
415
+ const root = this.getHostElement();
416
+ if (!drag || !root) {
417
+ return;
418
+ }
419
+ this._zone.run(() => {
420
+ root.querySelectorAll('[axDragHandle]').forEach((element) => {
421
+ drag.registerHandle(element);
422
+ });
423
+ });
424
+ }
340
425
  /** @ignore */
341
426
  onKeydownHandler() {
342
427
  const config = this.__config__();
@@ -410,70 +495,114 @@ class AXPopupComponent extends MXBaseComponent {
410
495
  }
411
496
  }
412
497
  /**
413
- * Minimizes the popup to the bottom bar.
498
+ * Minimizes the popup. Routes through the popup ref so a registered dock can host the tab.
414
499
  */
415
500
  minimize() {
501
+ this.__popupRef__()?.minimize();
502
+ }
503
+ /**
504
+ * Maximizes the popup using the Fullscreen API.
505
+ */
506
+ maximize() {
507
+ this.__popupRef__()?.maximize();
508
+ }
509
+ /**
510
+ * Restores the popup from minimized or fullscreen state.
511
+ */
512
+ restore() {
513
+ this.__popupRef__()?.restore();
514
+ }
515
+ /**
516
+ * Applies the minimized visual. When `docked` is true the overlay is hidden by the service
517
+ * and the window stays at normal size for the next restore.
518
+ * @internal
519
+ */
520
+ enterMinimized(docked) {
416
521
  if (this.fullScreenState() && document.fullscreenElement) {
417
522
  document.exitFullscreen().catch(() => undefined);
418
523
  }
524
+ if (docked) {
525
+ this.minimizeLeft.set(null);
526
+ this.minimizeRight.set(null);
527
+ this.popupSizeState.set('normal');
528
+ this.cdr.markForCheck();
529
+ return;
530
+ }
419
531
  const el = this.popupEl()?.nativeElement;
420
532
  if (!el)
421
533
  return;
422
- this.minimizeLeft.set(null);
423
- this.minimizeRight.set(null);
534
+ const position = resolvePopupMinimize(this.__config__()).position;
424
535
  this.popupSizeState.set('minimize');
536
+ if (position === 'bottom-right') {
537
+ this.minimizeLeft.set(null);
538
+ this.minimizeRight.set('0px');
539
+ }
540
+ else {
541
+ this.minimizeRight.set(null);
542
+ this.minimizeLeft.set('0px');
543
+ }
425
544
  this.cdr.markForCheck();
426
545
  requestAnimationFrame(() => {
546
+ if (this.popupSizeState() !== 'minimize') {
547
+ return;
548
+ }
427
549
  if (this.resizeActive()) {
428
550
  el.style.height = '';
429
551
  el.style.width = '';
430
552
  }
431
553
  const width = el.offsetWidth;
432
554
  const index = this.__popupRef__()?._getStackIndex?.() ?? 0;
433
- const position = resolvePopupMinimize(this.__config__()).position;
555
+ const offset = `${index * (width + 10)}px`;
434
556
  if (position === 'bottom-right') {
435
557
  this.minimizeLeft.set(null);
436
- this.minimizeRight.set(`${index * (width + 10)}px`);
558
+ this.minimizeRight.set(offset);
437
559
  }
438
560
  else {
439
561
  this.minimizeRight.set(null);
440
- this.minimizeLeft.set(`${index * (width + 10)}px`);
562
+ this.minimizeLeft.set(offset);
441
563
  }
442
564
  this.cdr.markForCheck();
443
565
  });
444
566
  }
445
567
  /**
446
- * Maximizes the popup using the Fullscreen API.
568
+ * Restores the window from the legacy bottom bar.
569
+ * @internal
447
570
  */
448
- maximize() {
571
+ exitMinimized() {
572
+ this.minimizeLeft.set(null);
573
+ this.minimizeRight.set(null);
574
+ this.popupSizeState.set('normal');
575
+ this.cdr.markForCheck();
576
+ }
577
+ /**
578
+ * Enters or toggles the Fullscreen API on the popup element.
579
+ * @internal
580
+ */
581
+ enterMaximized() {
449
582
  const el = this.popupEl()?.nativeElement;
450
583
  if (!el)
451
584
  return;
452
- if (this.popupSizeState() === 'minimize') {
453
- this.restore();
454
- }
455
585
  if (!document.fullscreenElement) {
456
- el.requestFullscreen().then(() => {
586
+ el.requestFullscreen()
587
+ .then(() => {
457
588
  this.fullScreenState.set(true);
589
+ this.__popupRef__()?._setState?.('maximized');
458
590
  this.cdr.markForCheck();
459
- });
591
+ })
592
+ .catch(() => undefined);
460
593
  }
461
594
  else {
462
595
  document.exitFullscreen().catch(() => undefined);
463
596
  }
464
597
  }
465
598
  /**
466
- * Restores the popup from minimized or fullscreen state.
599
+ * Leaves fullscreen.
600
+ * @internal
467
601
  */
468
- restore() {
602
+ exitMaximized() {
469
603
  if (this.fullScreenState() && document.fullscreenElement) {
470
604
  document.exitFullscreen().catch(() => undefined);
471
- return;
472
605
  }
473
- this.minimizeLeft.set(null);
474
- this.minimizeRight.set(null);
475
- this.popupSizeState.set('normal');
476
- this.cdr.markForCheck();
477
606
  }
478
607
  /**
479
608
  * Sets inputs on the content component.
@@ -497,7 +626,7 @@ class AXPopupComponent extends MXBaseComponent {
497
626
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXPopupComponent, isStandalone: true, selector: "ax-popup", inputs: { __content__: { classPropertyName: "__content__", publicName: "__content__", isSignal: true, isRequired: false, transformFunction: null }, __config__: { classPropertyName: "__config__", publicName: "__config__", isSignal: true, isRequired: false, transformFunction: null }, __popupRef__: { classPropertyName: "__popupRef__", publicName: "__popupRef__", isSignal: true, isRequired: false, transformFunction: null }, __id__: { classPropertyName: "__id__", publicName: "__id__", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown.escape": "onKeydownHandler()" }, styleAttribute: "display: block; max-width: 100%;", classAttribute: "ax-popup-host" }, providers: [
498
627
  { provide: AXClosableComponent, useExisting: AXPopupComponent },
499
628
  { provide: AXComponent, useExisting: AXPopupComponent },
500
- ], viewQueries: [{ propertyName: "popupEl", first: true, predicate: ["popupEl"], descendants: true, isSignal: true }, { propertyName: "contentContainerRef", first: true, predicate: ["contentOutlet"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "contentContainerEl", first: true, predicate: ["contentContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-popup-wrapper\"\n aria-modal=\"true\"\n axFocusTrap\n [class.ax-popup-minimized-host]=\"popupSizeState() === 'minimize'\"\n>\n <div\n #popupEl\n axDrag\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [dragDisabled]=\"dragDisabled()\"\n [dragBoundary]=\"dragBoundary()\"\n [dragResetOnDblClick]=\"false\"\n [axResizable]=\"resizeEnabled()\"\n [handles]=\"resizeConfig().handles\"\n [minWidth]=\"resizeConfig().minWidth\"\n [minHeight]=\"resizeConfig().minHeight\"\n [maxWidth]=\"resizeMaxWidth()\"\n [maxHeight]=\"resizeMaxHeight()\"\n [lockAspectRatio]=\"resizeConfig().lockAspectRatio\"\n [dblClickAction]=\"resizeConfig().dblClickAction\"\n [class.ax-popup-resizable]=\"resizeActive()\"\n [class.ax-popup-minimized]=\"popupSizeState() === 'minimize'\"\n [class.ax-popup-fullscreen]=\"fullScreenState()\"\n [style.position]=\"popupSizeState() === 'minimize' ? 'fixed' : null\"\n [style.left]=\"popupSizeState() === 'minimize' ? minimizeLeft() : null\"\n [style.right]=\"popupSizeState() === 'minimize' ? minimizeRight() : null\"\n [style.bottom]=\"popupSizeState() === 'minimize' ? '0' : null\"\n >\n <div class=\"ax-popup-header-container\">\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\" axDragHandle>\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n\n <div class=\"ax-popup-header-actions\" (pointerdown)=\"$event.stopPropagation()\">\n @if (minimizeEnabled() && popupSizeState() !== 'minimize') {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"minimize()\">\n <ax-icon class=\"ax-icon ax-icon-minimize text-xl\"></ax-icon>\n </ax-button>\n }\n\n @if (popupSizeState() !== 'normal' || fullScreenState()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"restore()\">\n <ax-icon class=\"ax-icon ax-icon-maximize text-lg\"></ax-icon>\n </ax-button>\n }\n\n @if (maximizeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"maximize()\">\n <ax-icon class=\"ax-icon ax-icon-full-screen text-xl\"></ax-icon>\n </ax-button>\n }\n\n @if (closeEnabled()) {\n <ax-close-button class=\"ax-sm text-xl\" tabindex=\"1\" (click)=\"_handleCloseClick()\"></ax-close-button>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer>\n @if (showSkeleton()) {\n <div class=\"ax-popup-skeleton-container\" #skeletonEl>\n @if (skeletonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"skeletonTemplate()\"></ng-container>\n } @else {\n <div class=\"ax-popup-skeleton-default\">\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-title\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line ax-popup-skeleton-bar-line-short\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <ng-container #contentOutlet />\n </div>\n\n <div class=\"ax-popup-footer-container\" [class.ax-popup-footer-visible]=\"__config__()?.footer\"></div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-overlay.ax-overlay-centered{pointer-events:none}.ax-popup-overlay.ax-overlay-centered .ax-overlay-content{display:flex;max-height:100%;min-height:calc(var(--spacing, .25rem) * 0);flex-direction:column;align-items:center;justify-content:center;width:100%!important;height:100%!important;max-width:none!important;overflow:visible!important;pointer-events:none}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host{width:fit-content;flex-shrink:0;align-self:center;pointer-events:auto}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-full){width:100%;max-width:100vw}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-minimized){width:fit-content!important}.ax-popup-wrapper{display:block;width:fit-content;max-width:100%}.ax-popup-wrapper.ax-popup-minimized-host{width:fit-content!important}.ax-popup.ax-dragging{-webkit-user-select:none;user-select:none}.ax-popup.ax-popup-minimized,.ax-popup.ax-popup-fullscreen{translate:none!important}.ax-popup.ax-popup-fullscreen{max-height:100vh!important;width:100vw!important;border-radius:0!important}.ax-popup-header-actions{display:flex;flex-shrink:0;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}.ax-popup{--ax-comp-popup-shadow-rest: var(--ax-sys-effect-modal);--ax-comp-popup-highlight-rest: var(--ax-sys-highlight-surface);--ax-comp-popup-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-popup-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-popup-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-popup-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-popup-background-image-rest: var(--ax-sys-gradient-surface);--ax-comp-popup-surface-overlay-rest: var(--ax-sys-surface-overlay-modal);position:relative;box-sizing:border-box;display:flex;min-height:calc(var(--spacing, .25rem) * 0);min-width:calc(var(--spacing, .25rem) * 0);flex-direction:column;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;padding:calc(var(--spacing, .25rem) * 0);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius);border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));box-shadow:var(--ax-comp-popup-contrast-inner-border-rest),var(--ax-comp-popup-inner-border-rest),var(--ax-comp-popup-highlight-rest),var(--ax-comp-popup-shadow-rest);background-image:linear-gradient(var(--ax-comp-popup-contrast-surface-overlay-rest),var(--ax-comp-popup-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-popup-surface-overlay-rest),var(--ax-comp-popup-surface-overlay-rest)),var(--ax-comp-popup-background-image-rest);backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{flex-shrink:0}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-header-border-color))}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 7);line-height:calc(var(--spacing, .25rem) * 7)}}.ax-popup ax-footer{display:flex;align-items:center;justify-content:space-between;border-top-style:var(--tw-border-style);border-top-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup:focus{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;min-height:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-skeleton-container{overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar{display:block;border-radius:var(--radius-md, .375rem)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-title{height:calc(var(--spacing, .25rem) * 5);width:40%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line{height:calc(var(--spacing, .25rem) * 3.5);width:100%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line-short{width:80%}.ax-popup .ax-popup-main-container .ax-popup-footer-container{flex-shrink:0;background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{height:calc(100 * var(--ax-vh));max-height:calc(100 * var(--ax-vh));width:100vw;border-radius:0!important}.ax-popup.ax-popup-fit{width:fit-content!important}.ax-popup.ax-popup-fit .ax-popup-body-container{max-height:calc(100 * var(--ax-vh))}.ax-popup.ax-popup-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}.ax-popup.ax-popup-xs:not(.ax-popup-resizable){width:18vw!important;max-width:100vw}.ax-popup.ax-popup-sm:not(.ax-popup-resizable){width:25vw!important;max-width:100vw}.ax-popup.ax-popup-md:not(.ax-popup-resizable){width:40vw!important;max-width:100vw}.ax-popup.ax-popup-lg:not(.ax-popup-resizable){width:65vw!important;max-width:100vw}.ax-popup.ax-popup-xl:not(.ax-popup-resizable){width:75vw!important;max-width:100vw}.ax-popup.ax-popup-2xl:not(.ax-popup-resizable){width:85vw!important;max-width:100vw}.ax-popup.ax-popup-resizable{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));--ax-comp-resizable-corner-size: 12px}.ax-popup.ax-popup-resizable.ax-popup-xs{width:18vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-sm{width:25vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-md{width:40vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-lg{width:65vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-xl{width:75vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-2xl{width:85vw;max-width:100vw}.ax-popup.ax-popup-minimized{z-index:55;width:fit-content!important;max-width:min(90vw,24rem)!important;border-top-left-radius:var(--radius-2xl, 1rem);border-top-right-radius:var(--radius-2xl, 1rem);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;min-width:0;max-height:none;height:auto!important;min-height:0}.ax-popup.ax-popup-minimized .ax-popup-main-container{display:none}.ax-popup.ax-popup-minimized .ax-popup-header{max-width:100%;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}}@media screen and (max-width:768px){.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable){width:93vw!important;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important;border-radius:var(--ax-comp-popup-border-radius)}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable):not(.ax-popup-full) .ax-popup-body-container>ng-component>div{width:100%}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable).ax-popup-full{height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius)!important}}.ax-dark .ax-popup{--ax-comp-popup-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-dark-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-dark-surface)}}:root{--ax-comp-popup-border-radius: var(--ax-sys-border-radius);--ax-comp-popup-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-lighter-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-lighter-surface)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-outline-style: solid;--tw-font-weight: initial;--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXFocusTrapDirective, selector: "[axFocusTrap]", inputs: ["axFocusTrapArrowNavigation"] }, { kind: "component", type: AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDragHandleDirective, selector: "[axDragHandle]" }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "handles", "minWidth", "maxWidth", "minHeight", "maxHeight", "dblClickAction", "width", "defaultWidth", "height", "defaultHeight", "lockAspectRatio"], outputs: ["axResizableChange", "handlesChange", "minWidthChange", "maxWidthChange", "minHeightChange", "maxHeightChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "heightChange", "defaultHeightChange", "lockAspectRatioChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
629
+ ], viewQueries: [{ propertyName: "popupEl", first: true, predicate: ["popupEl"], descendants: true, isSignal: true }, { propertyName: "projectedHandles", predicate: AXDragHandleDirective, descendants: true, isSignal: true }, { propertyName: "contentContainerRef", first: true, predicate: ["contentOutlet"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "contentContainerEl", first: true, predicate: ["contentContainer"], descendants: true, static: true }, { propertyName: "dragDir", first: true, predicate: ["popupEl"], descendants: true, read: AXDragDirective, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-popup-wrapper\"\n aria-modal=\"true\"\n axFocusTrap\n [class.ax-popup-minimized-host]=\"popupSizeState() === 'minimize'\"\n>\n <div\n #popupEl\n axDrag\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [dragDisabled]=\"dragDisabled()\"\n [dragBoundary]=\"dragBoundary()\"\n [dragResetOnDblClick]=\"false\"\n [axResizable]=\"resizeEnabled()\"\n [handles]=\"resizeConfig().handles\"\n [minWidth]=\"resizeConfig().minWidth\"\n [minHeight]=\"resizeConfig().minHeight\"\n [maxWidth]=\"resizeMaxWidth()\"\n [maxHeight]=\"resizeMaxHeight()\"\n [lockAspectRatio]=\"resizeConfig().lockAspectRatio\"\n [dblClickAction]=\"resizeConfig().dblClickAction\"\n [class.ax-popup-resizable]=\"resizeActive()\"\n [class.ax-popup-minimized]=\"popupSizeState() === 'minimize'\"\n [class.ax-popup-minimized-end]=\"popupSizeState() === 'minimize' && minimizeSide() === 'bottom-right'\"\n [class.ax-popup-minimized-start]=\"popupSizeState() === 'minimize' && minimizeSide() === 'bottom-left'\"\n [class.ax-popup-fullscreen]=\"fullScreenState()\"\n [style.left]=\"popupSizeState() === 'minimize' ? minimizeLeft() : null\"\n [style.right]=\"popupSizeState() === 'minimize' ? minimizeRight() : null\"\n >\n <div class=\"ax-popup-header-container\">\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\" axDragHandle>\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n\n <div class=\"ax-popup-header-actions\" (pointerdown)=\"$event.stopPropagation()\">\n @if (minimizeEnabled() && popupSizeState() !== 'minimize') {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Minimize\" (onClick)=\"minimize()\">\n <ax-popup-caption-icon name=\"minimize\" />\n </ax-button>\n }\n\n @if (popupSizeState() === 'minimize' || fullScreenState()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Restore\" (onClick)=\"restore()\">\n <ax-popup-caption-icon name=\"restore\" />\n </ax-button>\n } @else if (maximizeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Maximize\" (onClick)=\"maximize()\">\n <ax-popup-caption-icon name=\"maximize\" />\n </ax-button>\n }\n\n @if (closeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Close\" tabindex=\"1\" (onClick)=\"_handleCloseClick()\">\n <ax-popup-caption-icon name=\"close\" />\n </ax-button>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer>\n @if (showSkeleton()) {\n <div class=\"ax-popup-skeleton-container\" #skeletonEl>\n @if (skeletonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"skeletonTemplate()\"></ng-container>\n } @else {\n <div class=\"ax-popup-skeleton-default\">\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-title\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line ax-popup-skeleton-bar-line-short\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <ng-container #contentOutlet />\n </div>\n\n <div class=\"ax-popup-footer-container\" [class.ax-popup-footer-visible]=\"__config__()?.footer\"></div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-overlay-hidden,.ax-overlay-backdrop.ax-popup-overlay-hidden{display:none!important;pointer-events:none!important}.ax-popup-overlay.ax-overlay-centered{pointer-events:none}.ax-popup-overlay.ax-overlay-centered .ax-overlay-content{display:flex;max-height:100%;min-height:calc(var(--spacing, .25rem) * 0);flex-direction:column;align-items:center;justify-content:center;width:100%!important;height:100%!important;max-width:none!important;overflow:visible!important;pointer-events:none}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host{width:fit-content;flex-shrink:0;align-self:center;pointer-events:auto}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-full){width:100%;max-width:100vw}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-minimized){width:fit-content!important}.ax-popup-wrapper{display:block;width:fit-content;max-width:100%}.ax-popup-wrapper.ax-popup-minimized-host{width:fit-content!important}.ax-popup.ax-dragging{-webkit-user-select:none;user-select:none}.ax-popup.ax-popup-minimized,.ax-popup.ax-popup-fullscreen{translate:none!important}.ax-popup.ax-popup-fullscreen{max-height:100vh!important;width:100vw!important;border-radius:0!important}.ax-popup-header-actions{display:flex;flex-shrink:0;align-items:center;gap:0}.ax-popup{--ax-comp-popup-shadow-rest: var(--ax-sys-effect-modal);--ax-comp-popup-highlight-rest: var(--ax-sys-highlight-surface);--ax-comp-popup-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-popup-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-popup-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-popup-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-popup-background-image-rest: var(--ax-sys-gradient-surface);--ax-comp-popup-surface-overlay-rest: var(--ax-sys-surface-overlay-modal);position:relative;box-sizing:border-box;display:flex;min-height:calc(var(--spacing, .25rem) * 0);min-width:calc(var(--spacing, .25rem) * 0);flex-direction:column;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;padding:calc(var(--spacing, .25rem) * 0);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius);border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));box-shadow:var(--ax-comp-popup-contrast-inner-border-rest),var(--ax-comp-popup-inner-border-rest),var(--ax-comp-popup-highlight-rest),var(--ax-comp-popup-shadow-rest);background-image:linear-gradient(var(--ax-comp-popup-contrast-surface-overlay-rest),var(--ax-comp-popup-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-popup-surface-overlay-rest),var(--ax-comp-popup-surface-overlay-rest)),var(--ax-comp-popup-background-image-rest);backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{flex-shrink:0}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-header-border-color))}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 7);line-height:calc(var(--spacing, .25rem) * 7)}}.ax-popup ax-footer{display:flex;align-items:center;justify-content:space-between;border-top-style:var(--tw-border-style);border-top-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup:focus{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;min-height:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-skeleton-container{overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar{display:block;border-radius:var(--radius-md, .375rem)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-title{height:calc(var(--spacing, .25rem) * 5);width:40%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line{height:calc(var(--spacing, .25rem) * 3.5);width:100%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line-short{width:80%}.ax-popup .ax-popup-main-container .ax-popup-footer-container{flex-shrink:0;background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{height:calc(100 * var(--ax-vh));max-height:calc(100 * var(--ax-vh));width:100vw;border-radius:0!important}.ax-popup.ax-popup-fit{width:fit-content!important}.ax-popup.ax-popup-fit .ax-popup-body-container{max-height:calc(100 * var(--ax-vh))}.ax-popup.ax-popup-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}.ax-popup.ax-popup-xs:not(.ax-popup-resizable){width:18vw!important;max-width:100vw}.ax-popup.ax-popup-sm:not(.ax-popup-resizable){width:25vw!important;max-width:100vw}.ax-popup.ax-popup-md:not(.ax-popup-resizable){width:40vw!important;max-width:100vw}.ax-popup.ax-popup-lg:not(.ax-popup-resizable){width:65vw!important;max-width:100vw}.ax-popup.ax-popup-xl:not(.ax-popup-resizable){width:75vw!important;max-width:100vw}.ax-popup.ax-popup-2xl:not(.ax-popup-resizable){width:85vw!important;max-width:100vw}.ax-popup.ax-popup-resizable{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));--ax-comp-resizable-corner-size: 12px}.ax-popup.ax-popup-resizable.ax-popup-xs{width:18vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-sm{width:25vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-md{width:40vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-lg{width:65vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-xl{width:75vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-2xl{width:85vw;max-width:100vw}.ax-popup.ax-popup-minimized{z-index:55;width:fit-content!important;max-width:min(90vw,24rem)!important;border-top-left-radius:var(--radius-2xl, 1rem);border-top-right-radius:var(--radius-2xl, 1rem);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;position:fixed!important;bottom:0!important;min-width:0;max-height:none;height:auto!important;min-height:0}.ax-popup.ax-popup-minimized .ax-popup-main-container{display:none}.ax-popup.ax-popup-minimized .ax-popup-header{max-width:100%;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}}.ax-popup.ax-popup-minimized-end{right:0}.ax-popup.ax-popup-minimized-start{left:0}@media screen and (max-width:768px){.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable){width:93vw!important;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important;border-radius:var(--ax-comp-popup-border-radius)}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable):not(.ax-popup-full) .ax-popup-body-container>ng-component>div{width:100%}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable).ax-popup-full{height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius)!important}}.ax-dark .ax-popup{--ax-comp-popup-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-dark-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-dark-surface)}}:root{--ax-comp-popup-border-radius: var(--ax-sys-border-radius);--ax-comp-popup-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-lighter-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-lighter-surface)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-outline-style: solid;--tw-font-weight: initial;--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXPopupCaptionIconComponent, selector: "ax-popup-caption-icon", inputs: ["name"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXFocusTrapDirective, selector: "[axFocusTrap]", inputs: ["axFocusTrapArrowNavigation"] }, { kind: "component", type: AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDragHandleDirective, selector: "[axDragHandle]" }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "handles", "minWidth", "maxWidth", "minHeight", "maxHeight", "dblClickAction", "width", "defaultWidth", "height", "defaultHeight", "lockAspectRatio"], outputs: ["axResizableChange", "handlesChange", "minWidthChange", "maxWidthChange", "minHeightChange", "maxHeightChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "heightChange", "defaultHeightChange", "lockAspectRatioChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
501
630
  }
502
631
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupComponent, decorators: [{
503
632
  type: Component,
@@ -508,8 +637,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
508
637
  { provide: AXClosableComponent, useExisting: AXPopupComponent },
509
638
  { provide: AXComponent, useExisting: AXPopupComponent },
510
639
  ], imports: [
511
- AXDecoratorCloseButtonComponent,
512
- AXDecoratorIconComponent,
640
+ AXPopupCaptionIconComponent,
513
641
  AXButtonComponent,
514
642
  AsyncPipe,
515
643
  NgTemplateOutlet,
@@ -519,18 +647,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
519
647
  AXDragDirective,
520
648
  AXDragHandleDirective,
521
649
  AXResizableDirective,
522
- ], template: "<div\n class=\"ax-popup-wrapper\"\n aria-modal=\"true\"\n axFocusTrap\n [class.ax-popup-minimized-host]=\"popupSizeState() === 'minimize'\"\n>\n <div\n #popupEl\n axDrag\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [dragDisabled]=\"dragDisabled()\"\n [dragBoundary]=\"dragBoundary()\"\n [dragResetOnDblClick]=\"false\"\n [axResizable]=\"resizeEnabled()\"\n [handles]=\"resizeConfig().handles\"\n [minWidth]=\"resizeConfig().minWidth\"\n [minHeight]=\"resizeConfig().minHeight\"\n [maxWidth]=\"resizeMaxWidth()\"\n [maxHeight]=\"resizeMaxHeight()\"\n [lockAspectRatio]=\"resizeConfig().lockAspectRatio\"\n [dblClickAction]=\"resizeConfig().dblClickAction\"\n [class.ax-popup-resizable]=\"resizeActive()\"\n [class.ax-popup-minimized]=\"popupSizeState() === 'minimize'\"\n [class.ax-popup-fullscreen]=\"fullScreenState()\"\n [style.position]=\"popupSizeState() === 'minimize' ? 'fixed' : null\"\n [style.left]=\"popupSizeState() === 'minimize' ? minimizeLeft() : null\"\n [style.right]=\"popupSizeState() === 'minimize' ? minimizeRight() : null\"\n [style.bottom]=\"popupSizeState() === 'minimize' ? '0' : null\"\n >\n <div class=\"ax-popup-header-container\">\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\" axDragHandle>\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n\n <div class=\"ax-popup-header-actions\" (pointerdown)=\"$event.stopPropagation()\">\n @if (minimizeEnabled() && popupSizeState() !== 'minimize') {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"minimize()\">\n <ax-icon class=\"ax-icon ax-icon-minimize text-xl\"></ax-icon>\n </ax-button>\n }\n\n @if (popupSizeState() !== 'normal' || fullScreenState()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"restore()\">\n <ax-icon class=\"ax-icon ax-icon-maximize text-lg\"></ax-icon>\n </ax-button>\n }\n\n @if (maximizeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" (onClick)=\"maximize()\">\n <ax-icon class=\"ax-icon ax-icon-full-screen text-xl\"></ax-icon>\n </ax-button>\n }\n\n @if (closeEnabled()) {\n <ax-close-button class=\"ax-sm text-xl\" tabindex=\"1\" (click)=\"_handleCloseClick()\"></ax-close-button>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer>\n @if (showSkeleton()) {\n <div class=\"ax-popup-skeleton-container\" #skeletonEl>\n @if (skeletonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"skeletonTemplate()\"></ng-container>\n } @else {\n <div class=\"ax-popup-skeleton-default\">\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-title\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line ax-popup-skeleton-bar-line-short\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <ng-container #contentOutlet />\n </div>\n\n <div class=\"ax-popup-footer-container\" [class.ax-popup-footer-visible]=\"__config__()?.footer\"></div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-overlay.ax-overlay-centered{pointer-events:none}.ax-popup-overlay.ax-overlay-centered .ax-overlay-content{display:flex;max-height:100%;min-height:calc(var(--spacing, .25rem) * 0);flex-direction:column;align-items:center;justify-content:center;width:100%!important;height:100%!important;max-width:none!important;overflow:visible!important;pointer-events:none}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host{width:fit-content;flex-shrink:0;align-self:center;pointer-events:auto}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-full){width:100%;max-width:100vw}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-minimized){width:fit-content!important}.ax-popup-wrapper{display:block;width:fit-content;max-width:100%}.ax-popup-wrapper.ax-popup-minimized-host{width:fit-content!important}.ax-popup.ax-dragging{-webkit-user-select:none;user-select:none}.ax-popup.ax-popup-minimized,.ax-popup.ax-popup-fullscreen{translate:none!important}.ax-popup.ax-popup-fullscreen{max-height:100vh!important;width:100vw!important;border-radius:0!important}.ax-popup-header-actions{display:flex;flex-shrink:0;align-items:center;gap:calc(var(--spacing, .25rem) * 1)}.ax-popup{--ax-comp-popup-shadow-rest: var(--ax-sys-effect-modal);--ax-comp-popup-highlight-rest: var(--ax-sys-highlight-surface);--ax-comp-popup-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-popup-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-popup-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-popup-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-popup-background-image-rest: var(--ax-sys-gradient-surface);--ax-comp-popup-surface-overlay-rest: var(--ax-sys-surface-overlay-modal);position:relative;box-sizing:border-box;display:flex;min-height:calc(var(--spacing, .25rem) * 0);min-width:calc(var(--spacing, .25rem) * 0);flex-direction:column;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;padding:calc(var(--spacing, .25rem) * 0);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius);border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));box-shadow:var(--ax-comp-popup-contrast-inner-border-rest),var(--ax-comp-popup-inner-border-rest),var(--ax-comp-popup-highlight-rest),var(--ax-comp-popup-shadow-rest);background-image:linear-gradient(var(--ax-comp-popup-contrast-surface-overlay-rest),var(--ax-comp-popup-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-popup-surface-overlay-rest),var(--ax-comp-popup-surface-overlay-rest)),var(--ax-comp-popup-background-image-rest);backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{flex-shrink:0}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-header-border-color))}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 7);line-height:calc(var(--spacing, .25rem) * 7)}}.ax-popup ax-footer{display:flex;align-items:center;justify-content:space-between;border-top-style:var(--tw-border-style);border-top-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup:focus{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;min-height:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-skeleton-container{overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar{display:block;border-radius:var(--radius-md, .375rem)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-title{height:calc(var(--spacing, .25rem) * 5);width:40%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line{height:calc(var(--spacing, .25rem) * 3.5);width:100%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line-short{width:80%}.ax-popup .ax-popup-main-container .ax-popup-footer-container{flex-shrink:0;background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{height:calc(100 * var(--ax-vh));max-height:calc(100 * var(--ax-vh));width:100vw;border-radius:0!important}.ax-popup.ax-popup-fit{width:fit-content!important}.ax-popup.ax-popup-fit .ax-popup-body-container{max-height:calc(100 * var(--ax-vh))}.ax-popup.ax-popup-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}.ax-popup.ax-popup-xs:not(.ax-popup-resizable){width:18vw!important;max-width:100vw}.ax-popup.ax-popup-sm:not(.ax-popup-resizable){width:25vw!important;max-width:100vw}.ax-popup.ax-popup-md:not(.ax-popup-resizable){width:40vw!important;max-width:100vw}.ax-popup.ax-popup-lg:not(.ax-popup-resizable){width:65vw!important;max-width:100vw}.ax-popup.ax-popup-xl:not(.ax-popup-resizable){width:75vw!important;max-width:100vw}.ax-popup.ax-popup-2xl:not(.ax-popup-resizable){width:85vw!important;max-width:100vw}.ax-popup.ax-popup-resizable{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));--ax-comp-resizable-corner-size: 12px}.ax-popup.ax-popup-resizable.ax-popup-xs{width:18vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-sm{width:25vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-md{width:40vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-lg{width:65vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-xl{width:75vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-2xl{width:85vw;max-width:100vw}.ax-popup.ax-popup-minimized{z-index:55;width:fit-content!important;max-width:min(90vw,24rem)!important;border-top-left-radius:var(--radius-2xl, 1rem);border-top-right-radius:var(--radius-2xl, 1rem);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;min-width:0;max-height:none;height:auto!important;min-height:0}.ax-popup.ax-popup-minimized .ax-popup-main-container{display:none}.ax-popup.ax-popup-minimized .ax-popup-header{max-width:100%;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}}@media screen and (max-width:768px){.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable){width:93vw!important;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important;border-radius:var(--ax-comp-popup-border-radius)}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable):not(.ax-popup-full) .ax-popup-body-container>ng-component>div{width:100%}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable).ax-popup-full{height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius)!important}}.ax-dark .ax-popup{--ax-comp-popup-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-dark-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-dark-surface)}}:root{--ax-comp-popup-border-radius: var(--ax-sys-border-radius);--ax-comp-popup-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-lighter-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-lighter-surface)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-outline-style: solid;--tw-font-weight: initial;--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
650
+ ], template: "<div\n class=\"ax-popup-wrapper\"\n aria-modal=\"true\"\n axFocusTrap\n [class.ax-popup-minimized-host]=\"popupSizeState() === 'minimize'\"\n>\n <div\n #popupEl\n axDrag\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [dragDisabled]=\"dragDisabled()\"\n [dragBoundary]=\"dragBoundary()\"\n [dragResetOnDblClick]=\"false\"\n [axResizable]=\"resizeEnabled()\"\n [handles]=\"resizeConfig().handles\"\n [minWidth]=\"resizeConfig().minWidth\"\n [minHeight]=\"resizeConfig().minHeight\"\n [maxWidth]=\"resizeMaxWidth()\"\n [maxHeight]=\"resizeMaxHeight()\"\n [lockAspectRatio]=\"resizeConfig().lockAspectRatio\"\n [dblClickAction]=\"resizeConfig().dblClickAction\"\n [class.ax-popup-resizable]=\"resizeActive()\"\n [class.ax-popup-minimized]=\"popupSizeState() === 'minimize'\"\n [class.ax-popup-minimized-end]=\"popupSizeState() === 'minimize' && minimizeSide() === 'bottom-right'\"\n [class.ax-popup-minimized-start]=\"popupSizeState() === 'minimize' && minimizeSide() === 'bottom-left'\"\n [class.ax-popup-fullscreen]=\"fullScreenState()\"\n [style.left]=\"popupSizeState() === 'minimize' ? minimizeLeft() : null\"\n [style.right]=\"popupSizeState() === 'minimize' ? minimizeRight() : null\"\n >\n <div class=\"ax-popup-header-container\">\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\" axDragHandle>\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n\n <div class=\"ax-popup-header-actions\" (pointerdown)=\"$event.stopPropagation()\">\n @if (minimizeEnabled() && popupSizeState() !== 'minimize') {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Minimize\" (onClick)=\"minimize()\">\n <ax-popup-caption-icon name=\"minimize\" />\n </ax-button>\n }\n\n @if (popupSizeState() === 'minimize' || fullScreenState()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Restore\" (onClick)=\"restore()\">\n <ax-popup-caption-icon name=\"restore\" />\n </ax-button>\n } @else if (maximizeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Maximize\" (onClick)=\"maximize()\">\n <ax-popup-caption-icon name=\"maximize\" />\n </ax-button>\n }\n\n @if (closeEnabled()) {\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Close\" tabindex=\"1\" (onClick)=\"_handleCloseClick()\">\n <ax-popup-caption-icon name=\"close\" />\n </ax-button>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer>\n @if (showSkeleton()) {\n <div class=\"ax-popup-skeleton-container\" #skeletonEl>\n @if (skeletonTemplate()) {\n <ng-container [ngTemplateOutlet]=\"skeletonTemplate()\"></ng-container>\n } @else {\n <div class=\"ax-popup-skeleton-default\">\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-title\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line ax-popup-skeleton-bar-line-short\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n\n <ax-skeleton\n class=\"ax-popup-skeleton-bar ax-popup-skeleton-bar-line\"\n [animated]=\"__config__()?.skeletonAnimated ?? true\"\n ></ax-skeleton>\n </div>\n }\n </div>\n }\n\n <ng-container #contentOutlet />\n </div>\n\n <div class=\"ax-popup-footer-container\" [class.ax-popup-footer-visible]=\"__config__()?.footer\"></div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-overlay-hidden,.ax-overlay-backdrop.ax-popup-overlay-hidden{display:none!important;pointer-events:none!important}.ax-popup-overlay.ax-overlay-centered{pointer-events:none}.ax-popup-overlay.ax-overlay-centered .ax-overlay-content{display:flex;max-height:100%;min-height:calc(var(--spacing, .25rem) * 0);flex-direction:column;align-items:center;justify-content:center;width:100%!important;height:100%!important;max-width:none!important;overflow:visible!important;pointer-events:none}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host{width:fit-content;flex-shrink:0;align-self:center;pointer-events:auto}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-full){width:100%;max-width:100vw}.ax-popup-overlay.ax-overlay-centered ax-popup.ax-popup-host:has(.ax-popup-minimized){width:fit-content!important}.ax-popup-wrapper{display:block;width:fit-content;max-width:100%}.ax-popup-wrapper.ax-popup-minimized-host{width:fit-content!important}.ax-popup.ax-dragging{-webkit-user-select:none;user-select:none}.ax-popup.ax-popup-minimized,.ax-popup.ax-popup-fullscreen{translate:none!important}.ax-popup.ax-popup-fullscreen{max-height:100vh!important;width:100vw!important;border-radius:0!important}.ax-popup-header-actions{display:flex;flex-shrink:0;align-items:center;gap:0}.ax-popup{--ax-comp-popup-shadow-rest: var(--ax-sys-effect-modal);--ax-comp-popup-highlight-rest: var(--ax-sys-highlight-surface);--ax-comp-popup-inner-border-rest: var(--ax-sys-inner-border-surface);--ax-comp-popup-contrast-inner-border-rest: var(--ax-sys-contrast-inner-border-surface);--ax-comp-popup-contrast-surface-overlay-rest: var(--ax-sys-contrast-surface-overlay-surface);--ax-comp-popup-backdrop-filter-rest: var(--ax-sys-backdrop-filter-surface);--ax-comp-popup-background-image-rest: var(--ax-sys-gradient-surface);--ax-comp-popup-surface-overlay-rest: var(--ax-sys-surface-overlay-modal);position:relative;box-sizing:border-box;display:flex;min-height:calc(var(--spacing, .25rem) * 0);min-width:calc(var(--spacing, .25rem) * 0);flex-direction:column;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;padding:calc(var(--spacing, .25rem) * 0);outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius);border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));box-shadow:var(--ax-comp-popup-contrast-inner-border-rest),var(--ax-comp-popup-inner-border-rest),var(--ax-comp-popup-highlight-rest),var(--ax-comp-popup-shadow-rest);background-image:linear-gradient(var(--ax-comp-popup-contrast-surface-overlay-rest),var(--ax-comp-popup-contrast-surface-overlay-rest)),linear-gradient(var(--ax-comp-popup-surface-overlay-rest),var(--ax-comp-popup-surface-overlay-rest)),var(--ax-comp-popup-background-image-rest);backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);-webkit-backdrop-filter:var(--ax-comp-popup-backdrop-filter-rest);color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{flex-shrink:0}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-header-border-color))}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}}@media(min-width:48rem){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 7);line-height:calc(var(--spacing, .25rem) * 7)}}.ax-popup ax-footer{display:flex;align-items:center;justify-content:space-between;border-top-style:var(--tw-border-style);border-top-width:1px;padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup:focus{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:transparent}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;min-height:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-skeleton-container{overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar{display:block;border-radius:var(--radius-md, .375rem)}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-title{height:calc(var(--spacing, .25rem) * 5);width:40%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line{height:calc(var(--spacing, .25rem) * 3.5);width:100%}.ax-popup .ax-popup-main-container .ax-popup-skeleton-default .ax-popup-skeleton-bar-line-short{width:80%}.ax-popup .ax-popup-main-container .ax-popup-footer-container{flex-shrink:0;background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{height:calc(100 * var(--ax-vh));max-height:calc(100 * var(--ax-vh));width:100vw;border-radius:0!important}.ax-popup.ax-popup-fit{width:fit-content!important}.ax-popup.ax-popup-fit .ax-popup-body-container{max-height:calc(100 * var(--ax-vh))}.ax-popup.ax-popup-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}.ax-popup.ax-popup-xs:not(.ax-popup-resizable){width:18vw!important;max-width:100vw}.ax-popup.ax-popup-sm:not(.ax-popup-resizable){width:25vw!important;max-width:100vw}.ax-popup.ax-popup-md:not(.ax-popup-resizable){width:40vw!important;max-width:100vw}.ax-popup.ax-popup-lg:not(.ax-popup-resizable){width:65vw!important;max-width:100vw}.ax-popup.ax-popup-xl:not(.ax-popup-resizable){width:75vw!important;max-width:100vw}.ax-popup.ax-popup-2xl:not(.ax-popup-resizable){width:85vw!important;max-width:100vw}.ax-popup.ax-popup-resizable{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));--ax-comp-resizable-corner-size: 12px}.ax-popup.ax-popup-resizable.ax-popup-xs{width:18vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-sm{width:25vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-md{width:40vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-lg{width:65vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-xl{width:75vw;max-width:100vw}.ax-popup.ax-popup-resizable.ax-popup-2xl{width:85vw;max-width:100vw}.ax-popup.ax-popup-minimized{z-index:55;width:fit-content!important;max-width:min(90vw,24rem)!important;border-top-left-radius:var(--radius-2xl, 1rem);border-top-right-radius:var(--radius-2xl, 1rem);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;position:fixed!important;bottom:0!important;min-width:0;max-height:none;height:auto!important;min-height:0}.ax-popup.ax-popup-minimized .ax-popup-main-container{display:none}.ax-popup.ax-popup-minimized .ax-popup-header{max-width:100%;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}}@media(min-width:48rem){.ax-popup.ax-popup-minimized .ax-popup-header-container .ax-popup-header .ax-popup-title{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5)}}.ax-popup.ax-popup-minimized-end{right:0}.ax-popup.ax-popup-minimized-start{left:0}@media screen and (max-width:768px){.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable){width:93vw!important;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important;border-radius:var(--ax-comp-popup-border-radius)}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable):not(.ax-popup-full) .ax-popup-body-container>ng-component>div{width:100%}.ax-popup:not(.ax-popup-fit):not(.ax-popup-minimized):not(.ax-popup-resizable).ax-popup-full{height:calc(var(--ax-overlay-full-width) * var(--ax-vh));border-radius:var(--ax-comp-popup-border-radius)!important}}.ax-dark .ax-popup{--ax-comp-popup-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-dark-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-dark-surface)}}:root{--ax-comp-popup-border-radius: var(--ax-sys-border-radius);--ax-comp-popup-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-popup-body-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-popup-body-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-popup-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-header-border-color: var(--ax-sys-color-border-lighter-surface);--ax-comp-popup-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-popup-footer-border-color: var(--ax-sys-color-border-lighter-surface)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-outline-style: solid;--tw-font-weight: initial;--tw-leading: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
523
651
  }], ctorParameters: () => [], propDecorators: { contentContainerRef: [{
524
652
  type: ViewChild,
525
653
  args: ['contentOutlet', { read: ViewContainerRef, static: true }]
526
654
  }], contentContainerEl: [{
527
655
  type: ViewChild,
528
656
  args: ['contentContainer', { static: true }]
529
- }], popupEl: [{ type: i0.ViewChild, args: ['popupEl', { isSignal: true }] }], __content__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__content__", required: false }] }], __config__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__config__", required: false }] }], __popupRef__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popupRef__", required: false }] }], __id__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__id__", required: false }] }], onKeydownHandler: [{
657
+ }], dragDir: [{
658
+ type: ViewChild,
659
+ args: ['popupEl', { read: AXDragDirective, static: true }]
660
+ }], popupEl: [{ type: i0.ViewChild, args: ['popupEl', { isSignal: true }] }], projectedHandles: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => AXDragHandleDirective), { isSignal: true }] }], __content__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__content__", required: false }] }], __config__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__config__", required: false }] }], __popupRef__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popupRef__", required: false }] }], __id__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__id__", required: false }] }], onKeydownHandler: [{
530
661
  type: HostListener,
531
662
  args: ['keydown.escape']
532
663
  }] } });
533
664
 
665
+ const OVERLAY_HIDDEN_CLASS = 'ax-popup-overlay-hidden';
534
666
  /**
535
667
  * This is a service which you can create popup with it
536
668
  *
@@ -540,6 +672,11 @@ class AXPopupService {
540
672
  constructor() {
541
673
  this.popupList = new Map();
542
674
  this.overlayService = inject(AXOverlayService);
675
+ this.injector = inject(Injector);
676
+ this.dockCounts = signal({}, /* @ts-ignore */
677
+ ...(ngDevMode ? [{ debugName: "dockCounts" }] : /* istanbul ignore next */ []));
678
+ this.minimizedByDock = signal({}, /* @ts-ignore */
679
+ ...(ngDevMode ? [{ debugName: "minimizedByDock" }] : /* istanbul ignore next */ []));
543
680
  }
544
681
  /**
545
682
  * @ignore
@@ -566,6 +703,50 @@ class AXPopupService {
566
703
  async openRef(content, config) {
567
704
  return this.openInternal(content, this.mergeConfig(config));
568
705
  }
706
+ hasDock(name) {
707
+ return (this.dockCounts()[name] ?? 0) > 0;
708
+ }
709
+ registerDock(name) {
710
+ this.dockCounts.update((counts) => ({
711
+ ...counts,
712
+ [name]: (counts[name] ?? 0) + 1,
713
+ }));
714
+ }
715
+ unregisterDock(name) {
716
+ const remaining = Math.max(0, (this.dockCounts()[name] ?? 0) - 1);
717
+ this.dockCounts.update((counts) => ({
718
+ ...counts,
719
+ [name]: remaining,
720
+ }));
721
+ if (remaining > 0) {
722
+ return;
723
+ }
724
+ const ids = this.minimizedByDock()[name] ?? [];
725
+ for (const id of [...ids]) {
726
+ const instance = this.getPopupInstance(id);
727
+ instance?.enterMinimized(false);
728
+ this.setOverlayVisible(id, true);
729
+ }
730
+ this.minimizedByDock.update((map) => {
731
+ if (!(name in map)) {
732
+ return map;
733
+ }
734
+ const next = { ...map };
735
+ delete next[name];
736
+ return next;
737
+ });
738
+ }
739
+ minimizedInDock(dock) {
740
+ const ids = this.minimizedByDock()[dock] ?? [];
741
+ return ids.map((id) => this.toDockItem(id)).filter((item) => !!item);
742
+ }
743
+ reorderMinimized(dock, fromIndex, toIndex) {
744
+ this.minimizedByDock.update((map) => {
745
+ const list = [...(map[dock] ?? [])];
746
+ moveItemInArray(list, fromIndex, toIndex);
747
+ return { ...map, [dock]: list };
748
+ });
749
+ }
569
750
  mergeConfig(arg2) {
570
751
  const config = {
571
752
  closeButton: true,
@@ -584,6 +765,7 @@ class AXPopupService {
584
765
  minimize: {
585
766
  enable: false,
586
767
  position: 'bottom-right',
768
+ dock: 'default',
587
769
  },
588
770
  },
589
771
  };
@@ -600,6 +782,7 @@ class AXPopupService {
600
782
  minimize: {
601
783
  enable: false,
602
784
  position: 'bottom-right',
785
+ dock: 'default',
603
786
  ...config.buttons?.minimize,
604
787
  ...buttons.minimize,
605
788
  },
@@ -614,6 +797,14 @@ class AXPopupService {
614
797
  async openInternal(content, config) {
615
798
  const randomId = Math.floor(Math.random() * 100000000000);
616
799
  const onClose = new Subject();
800
+ const onStateChange = new Subject();
801
+ const state = signal('normal', /* @ts-ignore */
802
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
803
+ const title = signal(config.title ?? '', /* @ts-ignore */
804
+ ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
805
+ const isMinimized = runInInjectionContext(this.injector, () => computed(() => state() === 'minimized'));
806
+ const isMaximized = runInInjectionContext(this.injector, () => computed(() => state() === 'maximized'));
807
+ const dock = resolvePopupMinimize(config).dock;
617
808
  const returnRef = {
618
809
  close: (data) => {
619
810
  this.close(randomId, data);
@@ -621,8 +812,9 @@ class AXPopupService {
621
812
  setInputs: (values) => {
622
813
  this.setInputs(randomId, values);
623
814
  },
624
- setTitle: (title) => {
625
- this.setTitle(randomId, title);
815
+ setTitle: (value) => {
816
+ title.set(value);
817
+ this.setTitle(randomId, value);
626
818
  },
627
819
  minimize: () => {
628
820
  this.minimize(randomId);
@@ -637,7 +829,19 @@ class AXPopupService {
637
829
  this.bringToFront(randomId);
638
830
  },
639
831
  onClose,
832
+ onStateChange,
833
+ state: state.asReadonly(),
834
+ title: title.asReadonly(),
835
+ isMinimized,
836
+ isMaximized,
640
837
  _getStackIndex: () => this.getMapIndexOf(randomId),
838
+ _setState: (next) => {
839
+ if (state() === next) {
840
+ return;
841
+ }
842
+ state.set(next);
843
+ onStateChange.next(next);
844
+ },
641
845
  };
642
846
  if (config._bindContentInputs) {
643
847
  config.inputs = {
@@ -656,7 +860,6 @@ class AXPopupService {
656
860
  backdrop: {
657
861
  enabled: config.hasBackdrop ?? true,
658
862
  background: true,
659
- // Dispose is handled via onDispose so close goes through onClose.
660
863
  closeOnClick: config.closeOnBackdropClick ?? false,
661
864
  backdropClass: config.backdropClass,
662
865
  },
@@ -669,33 +872,35 @@ class AXPopupService {
669
872
  __id__: randomId,
670
873
  },
671
874
  onDispose: () => {
672
- // Backdrop click (or external dispose) — complete close pipeline if still open.
673
875
  const entry = this.popupList.get(randomId);
674
876
  if (!entry)
675
877
  return;
878
+ this.removeFromDock(randomId);
676
879
  this.popupList.delete(randomId);
677
880
  entry.popup.onClose.next(undefined);
678
881
  entry.popup.onClose.complete();
882
+ entry.popup.onStateChange.complete();
679
883
  },
680
884
  });
681
- this.popupList.set(randomId, { overlay: ref, popup: returnRef });
885
+ this.popupList.set(randomId, {
886
+ overlay: ref,
887
+ popup: returnRef,
888
+ dock,
889
+ data: config.data,
890
+ });
682
891
  return returnRef;
683
892
  }
684
- /**
685
- * Closes a popup by its ID.
686
- */
687
893
  close(id, data) {
688
894
  const ref = this.popupList.get(id);
689
895
  if (!ref)
690
896
  return;
897
+ this.removeFromDock(id);
691
898
  this.popupList.delete(id);
692
899
  ref.popup.onClose.next(data);
693
900
  ref.popup.onClose.complete();
901
+ ref.popup.onStateChange.complete();
694
902
  ref.overlay.dispose();
695
903
  }
696
- /**
697
- * Sets input values for a popup by its ID.
698
- */
699
904
  setInputs(id, values) {
700
905
  const ref = this.popupList.get(id)?.overlay.instance;
701
906
  if (!ref)
@@ -705,9 +910,6 @@ class AXPopupService {
705
910
  componentInstance.setContentInputs(values);
706
911
  }
707
912
  }
708
- /**
709
- * Sets the title for a popup by its ID.
710
- */
711
913
  setTitle(id, title) {
712
914
  const ref = this.popupList.get(id)?.overlay.instance;
713
915
  if (!ref)
@@ -718,20 +920,47 @@ class AXPopupService {
718
920
  }
719
921
  }
720
922
  minimize(id) {
923
+ const entry = this.popupList.get(id);
721
924
  const instance = this.getPopupInstance(id);
722
- instance?.minimize();
925
+ if (!entry || !instance || entry.popup.state() === 'minimized')
926
+ return;
927
+ const docked = this.hasDock(entry.dock);
928
+ instance.enterMinimized(docked);
929
+ entry.popup._setState?.('minimized');
930
+ if (docked) {
931
+ this.addToDock(id, entry.dock);
932
+ this.setOverlayVisible(id, false);
933
+ }
723
934
  }
724
935
  maximize(id) {
936
+ const entry = this.popupList.get(id);
725
937
  const instance = this.getPopupInstance(id);
726
- instance?.maximize();
938
+ if (!entry || !instance)
939
+ return;
940
+ if (entry.popup.state() === 'minimized') {
941
+ this.restore(id);
942
+ }
943
+ instance.enterMaximized();
727
944
  }
728
945
  restore(id) {
946
+ const entry = this.popupList.get(id);
729
947
  const instance = this.getPopupInstance(id);
730
- instance?.restore();
948
+ if (!entry || !instance)
949
+ return;
950
+ const current = entry.popup.state();
951
+ if (current === 'normal') {
952
+ return;
953
+ }
954
+ if (current === 'maximized') {
955
+ instance.exitMaximized();
956
+ return;
957
+ }
958
+ instance.exitMinimized();
959
+ this.removeFromDock(id);
960
+ this.setOverlayVisible(id, true);
961
+ entry.popup._setState?.('normal');
962
+ this.bringToFront(id);
731
963
  }
732
- /**
733
- * Gets the index of a popup in the open stack (used for minimized bar positioning).
734
- */
735
964
  getMapIndexOf(targetKey) {
736
965
  let index = 0;
737
966
  for (const key of this.popupList.keys()) {
@@ -742,15 +971,66 @@ class AXPopupService {
742
971
  }
743
972
  return -1;
744
973
  }
745
- /**
746
- * Brings a popup to the front of all other overlays.
747
- */
748
974
  bringToFront(id) {
749
975
  const ref = this.popupList.get(id);
750
976
  if (!ref)
751
977
  return;
752
978
  ref.overlay.bringToFront();
753
979
  }
980
+ markMaximized(id, maximized) {
981
+ const entry = this.popupList.get(id);
982
+ if (!entry || entry.popup.state() === 'minimized') {
983
+ return;
984
+ }
985
+ entry.popup._setState?.(maximized ? 'maximized' : 'normal');
986
+ }
987
+ addToDock(id, dock) {
988
+ this.minimizedByDock.update((map) => {
989
+ const list = map[dock] ?? [];
990
+ if (list.includes(id)) {
991
+ return map;
992
+ }
993
+ return { ...map, [dock]: [...list, id] };
994
+ });
995
+ }
996
+ removeFromDock(id) {
997
+ this.minimizedByDock.update((map) => {
998
+ let changed = false;
999
+ const next = {};
1000
+ for (const [dock, ids] of Object.entries(map)) {
1001
+ const filtered = ids.filter((item) => item !== id);
1002
+ next[dock] = filtered;
1003
+ if (filtered.length !== ids.length) {
1004
+ changed = true;
1005
+ }
1006
+ }
1007
+ return changed ? next : map;
1008
+ });
1009
+ }
1010
+ setOverlayVisible(id, visible) {
1011
+ const overlay = this.popupList.get(id)?.overlay;
1012
+ if (!overlay)
1013
+ return;
1014
+ overlay.overlayElement?.classList.toggle(OVERLAY_HIDDEN_CLASS, !visible);
1015
+ overlay.backdropElement?.classList.toggle(OVERLAY_HIDDEN_CLASS, !visible);
1016
+ overlay.overlayElement?.toggleAttribute('aria-hidden', !visible);
1017
+ overlay.backdropElement?.toggleAttribute('aria-hidden', !visible);
1018
+ }
1019
+ toDockItem(id) {
1020
+ const entry = this.popupList.get(id);
1021
+ if (!entry) {
1022
+ return null;
1023
+ }
1024
+ return {
1025
+ id,
1026
+ title: entry.popup.title,
1027
+ data: entry.data,
1028
+ ref: entry.popup,
1029
+ restore: () => entry.popup.restore(),
1030
+ maximize: () => entry.popup.maximize(),
1031
+ close: () => entry.popup.close(),
1032
+ };
1033
+ }
754
1034
  getPopupInstance(id) {
755
1035
  const ref = this.popupList.get(id)?.overlay.instance;
756
1036
  if (!ref)
@@ -770,6 +1050,111 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
770
1050
  }]
771
1051
  }] });
772
1052
 
1053
+ /**
1054
+ * Binds `[axDragHandle]` nodes inside a dock tab (including projected templates)
1055
+ * to the parent `axDrag` wrapper.
1056
+ */
1057
+ class AXPopupDockItemDirective {
1058
+ constructor() {
1059
+ this.host = inject(ElementRef);
1060
+ this.drag = inject(AXDragDirective);
1061
+ this.injector = Injector.create({
1062
+ parent: inject(Injector),
1063
+ providers: [{ provide: AX_DRAG_PARENT, useValue: this.drag }],
1064
+ });
1065
+ afterRenderEffect(() => {
1066
+ this.host.nativeElement.querySelectorAll('[axDragHandle]').forEach((element) => {
1067
+ this.drag.registerHandle(element);
1068
+ });
1069
+ });
1070
+ }
1071
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupDockItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1072
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: AXPopupDockItemDirective, isStandalone: true, selector: "[axPopupDockItem]", exportAs: ["axPopupDockItem"], ngImport: i0 }); }
1073
+ }
1074
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupDockItemDirective, decorators: [{
1075
+ type: Directive,
1076
+ args: [{
1077
+ selector: '[axPopupDockItem]',
1078
+ exportAs: 'axPopupDockItem',
1079
+ }]
1080
+ }], ctorParameters: () => [] });
1081
+
1082
+ /**
1083
+ * Page-hosted dock for minimized popups. Place it anywhere in the app; matching
1084
+ * `buttons.minimize.dock` names send hidden windows here as reorderable tabs.
1085
+ *
1086
+ * @example
1087
+ * ```html
1088
+ * <ax-popup-dock name="taskbar">
1089
+ * <ng-template let-item>
1090
+ * <button axDragHandle (click)="item.restore()">{{ item.title() }}</button>
1091
+ * <button (click)="item.close()">Close</button>
1092
+ * </ng-template>
1093
+ * </ax-popup-dock>
1094
+ * ```
1095
+ */
1096
+ class AXPopupDockComponent extends NXComponent {
1097
+ constructor() {
1098
+ super();
1099
+ this.popupService = inject(AXPopupService);
1100
+ /**
1101
+ * Dock name matched against `buttons.minimize.dock`.
1102
+ * @defaultValue 'default'
1103
+ */
1104
+ this.name = input('default', /* @ts-ignore */
1105
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
1106
+ /**
1107
+ * Layout of the tab strip.
1108
+ * @defaultValue 'horizontal'
1109
+ */
1110
+ this.orientation = input('horizontal', /* @ts-ignore */
1111
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
1112
+ this.itemTemplate = contentChild(TemplateRef, /* @ts-ignore */
1113
+ ...(ngDevMode ? [{ debugName: "itemTemplate" }] : /* istanbul ignore next */ []));
1114
+ this.items = computed(() => this.popupService.minimizedInDock(this.name()), /* @ts-ignore */
1115
+ ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
1116
+ effect((onCleanup) => {
1117
+ const name = this.name();
1118
+ this.popupService.registerDock(name);
1119
+ onCleanup(() => this.popupService.unregisterDock(name));
1120
+ });
1121
+ }
1122
+ onDropped(event) {
1123
+ if (event.previousIndex < 0 || event.currentIndex < 0 || event.previousIndex === event.currentIndex) {
1124
+ return;
1125
+ }
1126
+ this.popupService.reorderMinimized(this.name(), event.previousIndex, event.currentIndex);
1127
+ }
1128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXPopupDockComponent, isStandalone: true, selector: "ax-popup-dock", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ax-popup-dock-empty": "items().length === 0", "class.ax-popup-dock-vertical": "orientation() === \"vertical\"", "class.ax-popup-dock-horizontal": "orientation() === \"horizontal\"" }, classAttribute: "ax-popup-dock" }, providers: [{ provide: AXComponent, useExisting: AXPopupDockComponent }], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-popup-dock-list\"\n axDropList\n [dropListOrientation]=\"orientation()\"\n (dropListDropped)=\"onDropped($event)\"\n>\n @for (item of items(); track item.id) {\n <div\n axDrag\n axPopupDockItem\n #dockItem=\"axPopupDockItem\"\n class=\"ax-popup-dock-item\"\n [dragData]=\"item.id\"\n dragCursor=\"grab\"\n >\n @if (itemTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"dockItem.injector\"\n />\n } @else {\n <div class=\"ax-popup-dock-tab\">\n <span axDragHandle class=\"ax-popup-dock-tab-title\" (click)=\"item.restore()\">\n {{ item.title() }}\n </span>\n <div class=\"ax-popup-dock-tab-actions\" (pointerdown)=\"$event.stopPropagation()\">\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Restore\" (onClick)=\"item.restore()\">\n <ax-popup-caption-icon name=\"restore\" />\n </ax-button>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Maximize\" (onClick)=\"item.maximize()\">\n <ax-popup-caption-icon name=\"maximize\" />\n </ax-button>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Close\" (onClick)=\"item.close()\">\n <ax-popup-caption-icon name=\"close\" />\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-dock{pointer-events:auto;display:flex;max-width:100%;z-index:10000}.ax-popup-dock.ax-popup-dock-empty{display:none}.ax-popup-dock-list{display:flex;max-width:100%;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup-dock-horizontal .ax-popup-dock-list{flex-direction:row;overflow:auto}.ax-popup-dock-vertical .ax-popup-dock-list{flex-direction:column}.ax-popup-dock-tab{display:flex;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 40);align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-default);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-comp-popup-header-bg-color));color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup-dock-tab-title{min-width:calc(var(--spacing, .25rem) * 0);flex:1;cursor:grab;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);-webkit-user-select:none;user-select:none}.ax-popup-dock-tab-actions{display:flex;flex-shrink:0;align-items:center}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDragHandleDirective, selector: "[axDragHandle]" }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["axDropList", "sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped", "sortPreviewChanged"], exportAs: ["axDropList"] }, { kind: "directive", type: AXPopupDockItemDirective, selector: "[axPopupDockItem]", exportAs: ["axPopupDockItem"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXPopupCaptionIconComponent, selector: "ax-popup-caption-icon", inputs: ["name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1130
+ }
1131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupDockComponent, decorators: [{
1132
+ type: Component,
1133
+ args: [{ selector: 'ax-popup-dock', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1134
+ class: 'ax-popup-dock',
1135
+ '[class.ax-popup-dock-empty]': 'items().length === 0',
1136
+ '[class.ax-popup-dock-vertical]': 'orientation() === "vertical"',
1137
+ '[class.ax-popup-dock-horizontal]': 'orientation() === "horizontal"',
1138
+ }, imports: [
1139
+ NgTemplateOutlet,
1140
+ AXDragDirective,
1141
+ AXDragHandleDirective,
1142
+ AXDropListDirective,
1143
+ AXPopupDockItemDirective,
1144
+ AXButtonComponent,
1145
+ AXPopupCaptionIconComponent,
1146
+ ], providers: [{ provide: AXComponent, useExisting: AXPopupDockComponent }], template: "<div\n class=\"ax-popup-dock-list\"\n axDropList\n [dropListOrientation]=\"orientation()\"\n (dropListDropped)=\"onDropped($event)\"\n>\n @for (item of items(); track item.id) {\n <div\n axDrag\n axPopupDockItem\n #dockItem=\"axPopupDockItem\"\n class=\"ax-popup-dock-item\"\n [dragData]=\"item.id\"\n dragCursor=\"grab\"\n >\n @if (itemTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"dockItem.injector\"\n />\n } @else {\n <div class=\"ax-popup-dock-tab\">\n <span axDragHandle class=\"ax-popup-dock-tab-title\" (click)=\"item.restore()\">\n {{ item.title() }}\n </span>\n <div class=\"ax-popup-dock-tab-actions\" (pointerdown)=\"$event.stopPropagation()\">\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Restore\" (onClick)=\"item.restore()\">\n <ax-popup-caption-icon name=\"restore\" />\n </ax-button>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Maximize\" (onClick)=\"item.maximize()\">\n <ax-popup-caption-icon name=\"maximize\" />\n </ax-button>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"default\" title=\"Close\" (onClick)=\"item.close()\">\n <ax-popup-caption-icon name=\"close\" />\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;@layer components{.ax-popup-dock{pointer-events:auto;display:flex;max-width:100%;z-index:10000}.ax-popup-dock.ax-popup-dock-empty{display:none}.ax-popup-dock-list{display:flex;max-width:100%;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.ax-popup-dock-horizontal .ax-popup-dock-list{flex-direction:row;overflow:auto}.ax-popup-dock-vertical .ax-popup-dock-list{flex-direction:column}.ax-popup-dock-tab{display:flex;max-width:calc(var(--spacing, .25rem) * 72);min-width:calc(var(--spacing, .25rem) * 40);align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-default);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-comp-popup-header-bg-color));color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup-dock-tab-title{min-width:calc(var(--spacing, .25rem) * 0);flex:1;cursor:grab;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);-webkit-user-select:none;user-select:none}.ax-popup-dock-tab-actions{display:flex;flex-shrink:0;align-items:center}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
1147
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
1148
+
1149
+ class AXPopupFooterComponent {
1150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1151
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: AXPopupFooterComponent, isStandalone: true, selector: "ax-popup-footer", providers: [{ provide: AXComponent, useExisting: AXPopupFooterComponent }], ngImport: i0, template: "<ng-content select=\"ax-prefix\"></ng-content>\n<ng-content select=\"ax-suffix\"></ng-content>\n<ng-content></ng-content>\n", styles: ["@layer components{ax-popup-footer{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
1152
+ }
1153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupFooterComponent, decorators: [{
1154
+ type: Component,
1155
+ args: [{ selector: 'ax-popup-footer', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXPopupFooterComponent }], template: "<ng-content select=\"ax-prefix\"></ng-content>\n<ng-content select=\"ax-suffix\"></ng-content>\n<ng-content></ng-content>\n", styles: ["@layer components{ax-popup-footer{display:flex;width:100%;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
1156
+ }] });
1157
+
773
1158
  /**
774
1159
  * Declarative popup host. Project content and call `open()` / `close()` on the component instance.
775
1160
  *
@@ -861,12 +1246,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
861
1246
  }]
862
1247
  }], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
863
1248
 
864
- const COMPONENT = [AXPopupComponent, AXPopupHostComponent, AXPopupFooterComponent];
1249
+ const COMPONENT = [
1250
+ AXPopupComponent,
1251
+ AXPopupHostComponent,
1252
+ AXPopupFooterComponent,
1253
+ AXPopupDockComponent,
1254
+ AXPopupCaptionIconComponent,
1255
+ ];
865
1256
  const MODULES = [CommonModule, AXCommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule];
866
1257
  class AXPopupModule {
867
1258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
868
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, imports: [CommonModule, AXCommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPopupComponent, AXPopupHostComponent, AXPopupFooterComponent], exports: [AXPopupComponent, AXPopupHostComponent, AXPopupFooterComponent] }); }
869
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, providers: [AXPopupService], imports: [MODULES, AXPopupComponent] }); }
1259
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, imports: [CommonModule, AXCommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPopupComponent,
1260
+ AXPopupHostComponent,
1261
+ AXPopupFooterComponent,
1262
+ AXPopupDockComponent,
1263
+ AXPopupCaptionIconComponent], exports: [AXPopupComponent,
1264
+ AXPopupHostComponent,
1265
+ AXPopupFooterComponent,
1266
+ AXPopupDockComponent,
1267
+ AXPopupCaptionIconComponent] }); }
1268
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, providers: [AXPopupService], imports: [MODULES, AXPopupComponent,
1269
+ AXPopupDockComponent] }); }
870
1270
  }
871
1271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXPopupModule, decorators: [{
872
1272
  type: NgModule,
@@ -881,5 +1281,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
881
1281
  * Generated bundle index. Do not edit.
882
1282
  */
883
1283
 
884
- export { AXPopupComponent, AXPopupComponentBase, AXPopupFooterComponent, AXPopupHostComponent, AXPopupModule, AXPopupService, AX_POPUP_DEFAULT_RESIZE_HANDLES, resolvePopupCloseButton, resolvePopupMaximizable, resolvePopupMinimize, resolvePopupResizable };
1284
+ export { AXPopupCaptionIconComponent, AXPopupComponent, AXPopupComponentBase, AXPopupDockComponent, AXPopupFooterComponent, AXPopupHostComponent, AXPopupModule, AXPopupService, AX_POPUP_DEFAULT_RESIZE_HANDLES, resolvePopupCloseButton, resolvePopupMaximizable, resolvePopupMinimize, resolvePopupResizable };
885
1285
  //# sourceMappingURL=acorex-components-popup.mjs.map