@acorex/components 21.0.0-next52 → 21.0.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/code-editor/index.d.ts +5 -1
- package/data-list/index.d.ts +1 -1
- package/decorators/index.d.ts +5 -1
- package/fesm2022/acorex-components-code-editor.mjs +17 -6
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +11 -22
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +0 -1
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +12 -5
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +22 -3
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +6 -8
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +11 -5
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +18 -24
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +26 -5
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/{acorex-components-modal-acorex-components-modal-iYSPzoLn.mjs → acorex-components-modal-acorex-components-modal-BNmjgw73.mjs} +27 -3
- package/fesm2022/acorex-components-modal-acorex-components-modal-BNmjgw73.mjs.map +1 -0
- package/fesm2022/{acorex-components-modal-modal-content.component-sZWKhYM-.mjs → acorex-components-modal-modal-content.component-B02583hv.mjs} +2 -2
- package/fesm2022/{acorex-components-modal-modal-content.component-sZWKhYM-.mjs.map → acorex-components-modal-modal-content.component-B02583hv.mjs.map} +1 -1
- package/fesm2022/acorex-components-modal.mjs +1 -1
- package/fesm2022/acorex-components-number-box.mjs +4 -5
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs +2 -2
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +12 -3
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +136 -175
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +308 -105
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +2 -2
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +68 -7
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +5 -5
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/json-viewer/index.d.ts +3 -2
- package/media-viewer/index.d.ts +3 -4
- package/menu/index.d.ts +4 -0
- package/modal/index.d.ts +7 -0
- package/number-box/index.d.ts +1 -1
- package/package.json +7 -7
- package/phone-box/index.d.ts +4 -1
- package/popover/index.d.ts +20 -27
- package/popup/index.d.ts +103 -27
- package/tree-view/index.d.ts +26 -4
- package/wysiwyg/index.d.ts +0 -1
- package/fesm2022/acorex-components-modal-acorex-components-modal-iYSPzoLn.mjs.map +0 -1
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TemplatePortal, ComponentPortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';
|
|
1
|
+
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { inject, NgZone,
|
|
3
|
+
import { inject, NgZone, DOCUMENT, input, signal, TemplateRef, ViewContainerRef, HostListener, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, ComponentRef, Injectable, Directive, NgModule } from '@angular/core';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { AXPlatform } from '@acorex/core/platform';
|
|
5
6
|
import { MXBaseComponent, AXClosableComponent, AXComponent, AXComponentClosedPromise, AXCommonModule } from '@acorex/cdk/common';
|
|
6
7
|
import { AXDecoratorCloseButtonComponent, AXDecoratorModule } from '@acorex/components/decorators';
|
|
7
8
|
import { AXLoadingService } from '@acorex/components/loading';
|
|
9
|
+
import { AXComponentService } from '@acorex/core/components';
|
|
8
10
|
import { AXTranslatorPipe, AXTranslationModule } from '@acorex/core/translation';
|
|
9
|
-
import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
|
|
10
|
-
import { DIALOG_DATA, DialogRef, Dialog, DialogModule } from '@angular/cdk/dialog';
|
|
11
|
-
import { CdkDrag, CdkDragHandle, DragDropModule } from '@angular/cdk/drag-drop';
|
|
12
11
|
import { AsyncPipe, CommonModule } from '@angular/common';
|
|
13
|
-
import { AXHtmlUtil } from '@acorex/core/utils';
|
|
14
12
|
|
|
15
13
|
/**
|
|
16
|
-
* The
|
|
14
|
+
* The Popup is a component which displays content in a dialog overlay
|
|
17
15
|
*
|
|
18
16
|
* @category Components
|
|
19
17
|
*/
|
|
@@ -21,69 +19,119 @@ class AXPopupComponent extends MXBaseComponent {
|
|
|
21
19
|
constructor() {
|
|
22
20
|
super(...arguments);
|
|
23
21
|
this._zone = inject(NgZone);
|
|
24
|
-
this.
|
|
22
|
+
this._document = inject(DOCUMENT);
|
|
25
23
|
this.loadingService = inject(AXLoadingService);
|
|
26
24
|
this._platform = inject(AXPlatform);
|
|
27
|
-
this.
|
|
28
|
-
|
|
25
|
+
this.componentService = inject(AXComponentService);
|
|
26
|
+
// Inputs from overlay service
|
|
27
|
+
this.__content__ = input(...(ngDevMode ? [undefined, { debugName: "__content__" }] : []));
|
|
28
|
+
this.__config__ = input(...(ngDevMode ? [undefined, { debugName: "__config__" }] : []));
|
|
29
|
+
this.__popupRef__ = input(...(ngDevMode ? [undefined, { debugName: "__popupRef__" }] : []));
|
|
30
|
+
this.__id__ = input(...(ngDevMode ? [undefined, { debugName: "__id__" }] : []));
|
|
29
31
|
/**
|
|
30
32
|
* Indicates whether the component is loading.
|
|
31
33
|
* @defaultValue true
|
|
32
34
|
*/
|
|
33
35
|
this.isLoading = true;
|
|
36
|
+
/** @ignore */
|
|
37
|
+
this._componentRef = null;
|
|
38
|
+
/** Current title */
|
|
39
|
+
this.title = signal('', ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
40
|
+
/** @ignore */
|
|
41
|
+
this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
|
|
42
|
+
/** @ignore */
|
|
43
|
+
this.dragOffset = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "dragOffset" }] : []));
|
|
44
|
+
/** @ignore */
|
|
45
|
+
this.dragStartPos = { x: 0, y: 0 };
|
|
46
|
+
/** @ignore */
|
|
47
|
+
this.elementStartPos = { x: 0, y: 0 };
|
|
34
48
|
}
|
|
35
49
|
/** @ignore */
|
|
36
50
|
ngOnInit() {
|
|
37
51
|
super.ngOnInit();
|
|
52
|
+
const config = this.__config__();
|
|
38
53
|
if (this._platform.is('SM')) {
|
|
39
|
-
|
|
54
|
+
// Disable dragging on small screens
|
|
55
|
+
if (config) {
|
|
56
|
+
config.draggable = false;
|
|
57
|
+
}
|
|
40
58
|
}
|
|
59
|
+
this.title.set(config?.title ?? '');
|
|
41
60
|
this._loadingId = this.loadingService.show({
|
|
42
61
|
location: this.getHostElement(),
|
|
43
62
|
});
|
|
44
|
-
|
|
45
|
-
if (this.data.content instanceof TemplateRef) {
|
|
46
|
-
this._selectedPortal = new TemplatePortal(this.data.content, this._viewContainerRef, {
|
|
47
|
-
$implicit: this.data,
|
|
48
|
-
ref: this,
|
|
49
|
-
});
|
|
50
|
-
this.cdr.markForCheck();
|
|
51
|
-
}
|
|
52
|
-
else if (typeof this.data.content === 'function') {
|
|
53
|
-
this._selectedPortal = new ComponentPortal(this.data.content);
|
|
54
|
-
this.cdr.markForCheck();
|
|
55
|
-
}
|
|
63
|
+
this.renderContent();
|
|
56
64
|
}
|
|
57
65
|
/** @ignore */
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
async renderContent() {
|
|
67
|
+
const content = this.__content__();
|
|
68
|
+
const config = this.__config__();
|
|
69
|
+
if (!content) {
|
|
70
|
+
this.loadingService.hide(this._loadingId);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (content instanceof TemplateRef) {
|
|
74
|
+
// Render template using ViewContainerRef (supports context)
|
|
75
|
+
this.contentContainerRef.createEmbeddedView(content, {
|
|
76
|
+
$implicit: config?.data,
|
|
77
|
+
ref: this,
|
|
68
78
|
});
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
this.handleContentRendered();
|
|
80
|
+
}
|
|
81
|
+
else if (typeof content === 'function') {
|
|
82
|
+
// Render component
|
|
83
|
+
const componentRef = await this.componentService.createFromComponent(content);
|
|
84
|
+
this._componentRef = componentRef;
|
|
85
|
+
// Get component input definitions to check before setting inputs
|
|
86
|
+
const inputDefs = componentRef.componentType?.ɵcmp
|
|
87
|
+
?.inputs;
|
|
88
|
+
// Set data inputs (only if the component has the input defined)
|
|
89
|
+
if (config?.data && typeof config.data === 'object') {
|
|
90
|
+
Object.entries(config.data).forEach(([key, value]) => {
|
|
91
|
+
if (inputDefs && key in inputDefs) {
|
|
92
|
+
componentRef.setInput(key, value);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Fallback: set as property directly on the instance
|
|
96
|
+
componentRef.instance[key] = value;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// Set popup reference (only if the component has this input)
|
|
101
|
+
if (inputDefs && '__popup__' in inputDefs) {
|
|
102
|
+
componentRef.setInput('__popup__', this.__popupRef__());
|
|
103
|
+
}
|
|
104
|
+
// Move component to container
|
|
105
|
+
const hostElement = componentRef.location.nativeElement;
|
|
106
|
+
this.contentContainerEl.nativeElement.appendChild(hostElement);
|
|
107
|
+
// Subscribe to close event if available
|
|
108
|
+
const instance = componentRef.instance;
|
|
109
|
+
if (instance.onClosed) {
|
|
110
|
+
instance.onClosed.subscribe((e) => {
|
|
71
111
|
this.close(e.data);
|
|
72
112
|
});
|
|
73
113
|
}
|
|
114
|
+
this.handleContentRendered();
|
|
74
115
|
}
|
|
116
|
+
}
|
|
117
|
+
/** @ignore */
|
|
118
|
+
handleContentRendered() {
|
|
75
119
|
this._zone.runOutsideAngular(() => {
|
|
76
120
|
setTimeout(() => {
|
|
77
121
|
const body = this.getHostElement().querySelector('.ax-popup-body-container');
|
|
122
|
+
if (!body)
|
|
123
|
+
return;
|
|
78
124
|
const content = body.children[0];
|
|
125
|
+
if (!content)
|
|
126
|
+
return;
|
|
79
127
|
const popHeader = this.getHostElement().querySelector('.ax-popup-header-container');
|
|
80
128
|
const popFooter = this.getHostElement().querySelector('.ax-popup-footer-container');
|
|
81
129
|
const footer = content.querySelector(':scope > ax-footer');
|
|
82
130
|
const header = content.querySelector(':scope > ax-header');
|
|
83
|
-
if (footer) {
|
|
84
|
-
popFooter
|
|
131
|
+
if (footer && popFooter) {
|
|
132
|
+
popFooter.append(footer);
|
|
85
133
|
}
|
|
86
|
-
if (header) {
|
|
134
|
+
if (header && popHeader) {
|
|
87
135
|
popHeader.innerHTML = '';
|
|
88
136
|
popHeader.append(header);
|
|
89
137
|
}
|
|
@@ -94,9 +142,9 @@ class AXPopupComponent extends MXBaseComponent {
|
|
|
94
142
|
this.cdr.markForCheck();
|
|
95
143
|
}
|
|
96
144
|
/** @ignore */
|
|
97
|
-
onKeydownHandler(
|
|
145
|
+
onKeydownHandler() {
|
|
98
146
|
const focusedOrHasFocused = this.getHostElement().matches(':focus-within');
|
|
99
|
-
if (this.
|
|
147
|
+
if (this.__config__()?.closeButton && focusedOrHasFocused) {
|
|
100
148
|
this.close();
|
|
101
149
|
}
|
|
102
150
|
}
|
|
@@ -107,6 +155,10 @@ class AXPopupComponent extends MXBaseComponent {
|
|
|
107
155
|
/** @ignore */
|
|
108
156
|
ngOnDestroy() {
|
|
109
157
|
this.loadingService.hide(this._loadingId);
|
|
158
|
+
if (this._componentRef) {
|
|
159
|
+
this._componentRef.destroy();
|
|
160
|
+
this._componentRef = null;
|
|
161
|
+
}
|
|
110
162
|
}
|
|
111
163
|
/**
|
|
112
164
|
* Sets focus on the `.ax-popup` element within the host element after a short delay.
|
|
@@ -115,23 +167,20 @@ class AXPopupComponent extends MXBaseComponent {
|
|
|
115
167
|
setTimeout(() => this.getHostElement().querySelector('.ax-popup')?.focus());
|
|
116
168
|
}
|
|
117
169
|
/**
|
|
118
|
-
* Closes the
|
|
170
|
+
* Closes the popup, emitting component reference, host element, and optional data.
|
|
119
171
|
* @param {unknown} [data]
|
|
120
172
|
*/
|
|
121
173
|
close(data) {
|
|
122
174
|
const closeFn = () => {
|
|
123
|
-
this.
|
|
124
|
-
component: this._componentRef,
|
|
125
|
-
htmlElement: this.getHostElement(),
|
|
126
|
-
data: data,
|
|
127
|
-
});
|
|
175
|
+
this.__popupRef__()?.close(data);
|
|
128
176
|
};
|
|
129
|
-
|
|
177
|
+
const componentInstance = this._componentRef?.instance;
|
|
178
|
+
if (typeof componentInstance?.onClosing === 'function') {
|
|
130
179
|
const ee = {
|
|
131
180
|
cancel: false,
|
|
132
181
|
data,
|
|
133
182
|
};
|
|
134
|
-
const closingResult =
|
|
183
|
+
const closingResult = componentInstance.onClosing(ee);
|
|
135
184
|
if (closingResult instanceof Promise) {
|
|
136
185
|
closingResult.then(() => {
|
|
137
186
|
if (!ee.cancel) {
|
|
@@ -149,31 +198,215 @@ class AXPopupComponent extends MXBaseComponent {
|
|
|
149
198
|
closeFn();
|
|
150
199
|
}
|
|
151
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Sets inputs on the content component.
|
|
203
|
+
* @param values - Object containing input values to set
|
|
204
|
+
*/
|
|
205
|
+
setContentInputs(values) {
|
|
206
|
+
const componentRef = this._componentRef;
|
|
207
|
+
if (componentRef) {
|
|
208
|
+
Object.entries(values).forEach(([key, value]) => {
|
|
209
|
+
componentRef.setInput(key, value);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Sets the popup title.
|
|
215
|
+
* @param title - The new title
|
|
216
|
+
*/
|
|
217
|
+
setTitle(title) {
|
|
218
|
+
this.title.set(title);
|
|
219
|
+
this.cdr.markForCheck();
|
|
220
|
+
}
|
|
221
|
+
// Drag functionality
|
|
222
|
+
onDragStart(event) {
|
|
223
|
+
const config = this.__config__();
|
|
224
|
+
if (!config?.draggable)
|
|
225
|
+
return;
|
|
226
|
+
this.isDragging.set(true);
|
|
227
|
+
this.dragStartPos = { x: event.clientX, y: event.clientY };
|
|
228
|
+
const popup = this.getHostElement().querySelector('.ax-popup');
|
|
229
|
+
if (popup) {
|
|
230
|
+
const rect = popup.getBoundingClientRect();
|
|
231
|
+
this.elementStartPos = { x: rect.left, y: rect.top };
|
|
232
|
+
}
|
|
233
|
+
event.preventDefault();
|
|
234
|
+
}
|
|
235
|
+
onDragMove(event) {
|
|
236
|
+
if (!this.isDragging())
|
|
237
|
+
return;
|
|
238
|
+
const deltaX = event.clientX - this.dragStartPos.x;
|
|
239
|
+
const deltaY = event.clientY - this.dragStartPos.y;
|
|
240
|
+
this.dragOffset.set({
|
|
241
|
+
x: this.elementStartPos.x + deltaX,
|
|
242
|
+
y: this.elementStartPos.y + deltaY,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
onDragEnd() {
|
|
246
|
+
this.isDragging.set(false);
|
|
247
|
+
}
|
|
152
248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: AXPopupComponent, isStandalone: true, selector: "ax-popup", host: { listeners: { "keydown.escape": "onKeydownHandler($event)" } }, providers: [
|
|
249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", 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()", "document:mousemove": "onDragMove($event)", "document:mouseup": "onDragEnd()" } }, providers: [
|
|
154
250
|
{ provide: AXClosableComponent, useExisting: AXPopupComponent },
|
|
155
251
|
{ provide: AXComponent, useExisting: AXPopupComponent },
|
|
156
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-popup-wrapper\" aria-modal=\"true\"
|
|
252
|
+
], viewQueries: [{ propertyName: "contentContainerRef", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "contentContainerEl", first: true, predicate: ["contentContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-popup-wrapper\" aria-modal=\"true\">\n <div\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [class.ax-popup-dragging]=\"isDragging()\"\n [style.position]=\"dragOffset().x || dragOffset().y ? 'fixed' : null\"\n [style.left.px]=\"dragOffset().x || null\"\n [style.top.px]=\"dragOffset().y || null\"\n [style.transform]=\"dragOffset().x || dragOffset().y ? 'none' : null\"\n >\n <div\n class=\"ax-popup-header-container\"\n [class.ax-popup-draggable]=\"__config__()?.draggable\"\n (mousedown)=\"onDragStart($event)\"\n >\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\">\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n @if (__config__()?.closeButton) {\n <ax-close-button tabindex=\"1\" (click)=\"_handleCloseClick()\"></ax-close-button>\n }\n </div>\n }\n </div>\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer></div>\n <div class=\"ax-popup-footer-container\"></div>\n </div>\n </div>\n</div>\n", styles: [":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)}.ax-popup-wrapper{display:contents}.ax-popup-header-container.ax-popup-draggable{cursor:move}.ax-popup.ax-popup-dragging{-webkit-user-select:none;user-select:none}.ax-popup{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));margin-left:auto;margin-right:auto;display:flex;width:auto;flex-direction:column;overflow:hidden;border-radius:var(--ax-comp-popup-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));padding:0;--ax-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--ax-shadow-colored: 0 10px 15px -3px var(--ax-shadow-color), 0 4px 6px -4px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);outline:2px solid transparent;outline-offset:2px;color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{background-color:rgba(var(--ax-comp-popup-header-bg-color))}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-comp-popup-header-border-color));padding:.75rem}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1rem;font-weight:500}@media (min-width: 768px){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1.125rem;line-height:1.75rem}}.ax-popup ax-footer{box-shadow:0 2px 10px #0000004d;display:flex;align-items:center;justify-content:space-between;border-top-width:1px;border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color));padding:.75rem}.ax-popup:focus{outline:2px solid transparent;outline-offset:2px}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;flex:1 1 0%;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{flex:1 1 0%;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-footer-container{background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{width:100vw;max-height:calc(100 * var(--ax-vh));height:calc(100 * var(--ax-vh));border-radius:0!important}.ax-popup.ax-fit{width:fit-content!important}.ax-popup.ax-fit .ax-popup-body-container{max-height:100vh}.ax-popup.ax-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}@media (min-width: 320px) and (max-width: 640px){.ax-popup.ax-popup-sm,.ax-popup.ax-popup-md,.ax-popup.ax-popup-lg{width:93vw!important;height:fit-content;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important}.ax-popup.ax-popup-sm .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-md .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-lg .ax-popup-body-container>ng-component>div{width:100%}}@media (min-width: 768px){.ax-popup.ax-popup-sm{width:55vw!important}.ax-popup.ax-popup-md{width:65vw!important}.ax-popup.ax-popup-lg{width:75vw!important}}@media (min-width: 1280px){.ax-popup.ax-popup-sm{width:30vw!important}.ax-popup.ax-popup-md{width:50vw!important}.ax-popup.ax-popup-lg{width:85vw!important}}@media (min-width: 1536px){.ax-popup.ax-popup-sm{width:25vw!important}.ax-popup.ax-popup-md{width:40vw!important}.ax-popup.ax-popup-lg{width:65vw!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)}\n"], dependencies: [{ kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
157
253
|
}
|
|
158
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupComponent, decorators: [{
|
|
159
255
|
type: Component,
|
|
160
256
|
args: [{ selector: 'ax-popup', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
161
257
|
{ provide: AXClosableComponent, useExisting: AXPopupComponent },
|
|
162
258
|
{ provide: AXComponent, useExisting: AXPopupComponent },
|
|
163
|
-
], imports: [
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
], template: "<div class=\"ax-popup-wrapper\" aria-modal=\"true\" [cdkTrapFocus]=\"true\">\n <div class=\"ax-popup ax-popup-{{ data.size }}\" tabindex=\"0\" cdkDrag [cdkDragDisabled]=\"!data.draggable\">\n <div cdkDragHandle class=\"ax-popup-header-container\">\n @if (data.header) {\n <div class=\"ax-popup-header\">\n <span class=\"ax-popup-title\">{{ data.title | translate | async }}</span>\n @if (data.closeButton) {\n <ax-close-button tabindex=\"1\"></ax-close-button>\n }\n </div>\n }\n </div>\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"_handleAttched($event)\"></ng-template>\n </div>\n <div class=\"ax-popup-footer-container\"></div>\n </div>\n </div>\n</div>\n", styles: [":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)}.ax-popup{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));margin-left:auto;margin-right:auto;display:flex;width:auto;flex-direction:column;overflow:hidden;border-radius:var(--ax-comp-popup-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));padding:0;--ax-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--ax-shadow-colored: 0 10px 15px -3px var(--ax-shadow-color), 0 4px 6px -4px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);outline:2px solid transparent;outline-offset:2px;color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{background-color:rgba(var(--ax-comp-popup-header-bg-color))}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-comp-popup-header-border-color));padding:.75rem}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1rem;font-weight:500}@media (min-width: 768px){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1.125rem;line-height:1.75rem}}.ax-popup ax-footer{box-shadow:0 2px 10px #0000004d;display:flex;align-items:center;justify-content:space-between;border-top-width:1px;border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color));padding:.75rem}.ax-popup:focus{outline:2px solid transparent;outline-offset:2px}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;flex:1 1 0%;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{flex:1 1 0%;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-footer-container{background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{width:100vw;max-height:calc(100 * var(--ax-vh));height:calc(100 * var(--ax-vh));border-radius:0!important}.ax-popup.ax-fit{width:fit-content!important}.ax-popup.ax-fit .ax-popup-body-container{max-height:100vh}.ax-popup.ax-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}@media (min-width: 320px) and (max-width: 640px){.ax-popup.ax-popup-sm,.ax-popup.ax-popup-md,.ax-popup.ax-popup-lg{width:93vw!important;height:fit-content;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important}.ax-popup.ax-popup-sm .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-md .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-lg .ax-popup-body-container>ng-component>div{width:100%}}@media (min-width: 768px){.ax-popup.ax-popup-sm{width:55vw!important}.ax-popup.ax-popup-md{width:65vw!important}.ax-popup.ax-popup-lg{width:75vw!important}}@media (min-width: 1280px){.ax-popup.ax-popup-sm{width:30vw!important}.ax-popup.ax-popup-md{width:50vw!important}.ax-popup.ax-popup-lg{width:85vw!important}}@media (min-width: 1536px){.ax-popup.ax-popup-sm{width:25vw!important}.ax-popup.ax-popup-md{width:40vw!important}.ax-popup.ax-popup-lg{width:65vw!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)}\n"] }]
|
|
172
|
-
}], propDecorators: { onKeydownHandler: [{
|
|
259
|
+
], imports: [AXDecoratorCloseButtonComponent, AsyncPipe, AXTranslatorPipe], template: "<div class=\"ax-popup-wrapper\" aria-modal=\"true\">\n <div\n class=\"ax-popup ax-popup-{{ __config__()?.size || 'md' }}\"\n tabindex=\"0\"\n [class.ax-popup-dragging]=\"isDragging()\"\n [style.position]=\"dragOffset().x || dragOffset().y ? 'fixed' : null\"\n [style.left.px]=\"dragOffset().x || null\"\n [style.top.px]=\"dragOffset().y || null\"\n [style.transform]=\"dragOffset().x || dragOffset().y ? 'none' : null\"\n >\n <div\n class=\"ax-popup-header-container\"\n [class.ax-popup-draggable]=\"__config__()?.draggable\"\n (mousedown)=\"onDragStart($event)\"\n >\n @if (__config__()?.header) {\n <div class=\"ax-popup-header\">\n <span class=\"ax-popup-title\">{{ title() | translate | async }}</span>\n @if (__config__()?.closeButton) {\n <ax-close-button tabindex=\"1\" (click)=\"_handleCloseClick()\"></ax-close-button>\n }\n </div>\n }\n </div>\n <div class=\"ax-popup-main-container ax-loading-container\">\n <div class=\"ax-popup-body-container\" #contentContainer></div>\n <div class=\"ax-popup-footer-container\"></div>\n </div>\n </div>\n</div>\n", styles: [":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)}.ax-popup-wrapper{display:contents}.ax-popup-header-container.ax-popup-draggable{cursor:move}.ax-popup.ax-popup-dragging{-webkit-user-select:none;user-select:none}.ax-popup{max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh));margin-left:auto;margin-right:auto;display:flex;width:auto;flex-direction:column;overflow:hidden;border-radius:var(--ax-comp-popup-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-popup-border-color));background-color:rgba(var(--ax-comp-popup-body-bg-color));padding:0;--ax-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--ax-shadow-colored: 0 10px 15px -3px var(--ax-shadow-color), 0 4px 6px -4px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);outline:2px solid transparent;outline-offset:2px;color:rgba(var(--ax-comp-popup-body-text-color))}.ax-popup .ax-popup-header-container{background-color:rgba(var(--ax-comp-popup-header-bg-color))}.ax-popup .ax-popup-header-container .ax-popup-header{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-comp-popup-header-border-color));padding:.75rem}.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1rem;font-weight:500}@media (min-width: 768px){.ax-popup .ax-popup-header-container .ax-popup-header .ax-popup-title{font-size:1.125rem;line-height:1.75rem}}.ax-popup ax-footer{box-shadow:0 2px 10px #0000004d;display:flex;align-items:center;justify-content:space-between;border-top-width:1px;border-color:rgba(var(--ax-comp-popup-footer-border-color));background-color:rgba(var(--ax-comp-popup-footer-bg-color));padding:.75rem}.ax-popup:focus{outline:2px solid transparent;outline-offset:2px}.ax-popup:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface))}.ax-popup .ax-popup-main-container{display:flex;flex:1 1 0%;flex-direction:column;overflow:hidden}.ax-popup .ax-popup-main-container .ax-popup-body-container{flex:1 1 0%;overflow:auto;background-color:rgba(var(--ax-comp-popup-body-bg-color))}.ax-popup .ax-popup-main-container .ax-popup-footer-container{background-color:rgba(var(--ax-comp-popup-footer-bg-color))}.ax-popup.ax-popup-full{width:100vw;max-height:calc(100 * var(--ax-vh));height:calc(100 * var(--ax-vh));border-radius:0!important}.ax-popup.ax-fit{width:fit-content!important}.ax-popup.ax-fit .ax-popup-body-container{max-height:100vh}.ax-popup.ax-fit .ax-popup-body-container>ng-component>div{width:fit-content!important}@media (min-width: 320px) and (max-width: 640px){.ax-popup.ax-popup-sm,.ax-popup.ax-popup-md,.ax-popup.ax-popup-lg{width:93vw!important;height:fit-content;max-height:calc(var(--ax-overlay-full-width) * var(--ax-vh))!important}.ax-popup.ax-popup-sm .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-md .ax-popup-body-container>ng-component>div,.ax-popup.ax-popup-lg .ax-popup-body-container>ng-component>div{width:100%}}@media (min-width: 768px){.ax-popup.ax-popup-sm{width:55vw!important}.ax-popup.ax-popup-md{width:65vw!important}.ax-popup.ax-popup-lg{width:75vw!important}}@media (min-width: 1280px){.ax-popup.ax-popup-sm{width:30vw!important}.ax-popup.ax-popup-md{width:50vw!important}.ax-popup.ax-popup-lg{width:85vw!important}}@media (min-width: 1536px){.ax-popup.ax-popup-sm{width:25vw!important}.ax-popup.ax-popup-md{width:40vw!important}.ax-popup.ax-popup-lg{width:65vw!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)}\n"] }]
|
|
260
|
+
}], propDecorators: { contentContainerRef: [{
|
|
261
|
+
type: ViewChild,
|
|
262
|
+
args: ['contentContainer', { read: ViewContainerRef, static: true }]
|
|
263
|
+
}], contentContainerEl: [{
|
|
264
|
+
type: ViewChild,
|
|
265
|
+
args: ['contentContainer', { static: true }]
|
|
266
|
+
}], __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: [{
|
|
173
267
|
type: HostListener,
|
|
174
|
-
args: ['keydown.escape'
|
|
268
|
+
args: ['keydown.escape']
|
|
269
|
+
}], onDragMove: [{
|
|
270
|
+
type: HostListener,
|
|
271
|
+
args: ['document:mousemove', ['$event']]
|
|
272
|
+
}], onDragEnd: [{
|
|
273
|
+
type: HostListener,
|
|
274
|
+
args: ['document:mouseup']
|
|
175
275
|
}] } });
|
|
176
276
|
|
|
277
|
+
class AXPopupStateService {
|
|
278
|
+
constructor() {
|
|
279
|
+
this.popupList = new Map();
|
|
280
|
+
this.overlayService = inject(AXOverlayService);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Opens a popup with the specified content and configuration.
|
|
284
|
+
* @param content - Component or template to display
|
|
285
|
+
* @param config - Configuration options for the popup
|
|
286
|
+
* @returns Promise<AXPopupRef> - Reference to the opened popup
|
|
287
|
+
*/
|
|
288
|
+
async open(content, config) {
|
|
289
|
+
const randomId = Math.floor(Math.random() * 100000000000);
|
|
290
|
+
const onClose = new Subject();
|
|
291
|
+
const returnRef = {
|
|
292
|
+
close: (data) => {
|
|
293
|
+
this.close(randomId, data);
|
|
294
|
+
},
|
|
295
|
+
setInputs: (values) => {
|
|
296
|
+
this.setInputs(randomId, values);
|
|
297
|
+
},
|
|
298
|
+
setTitle: (title) => {
|
|
299
|
+
this.setTitle(randomId, title);
|
|
300
|
+
},
|
|
301
|
+
bringToFront: () => {
|
|
302
|
+
this.bringToFront(randomId);
|
|
303
|
+
},
|
|
304
|
+
onClose,
|
|
305
|
+
};
|
|
306
|
+
// Build panel classes
|
|
307
|
+
const panelClasses = ['ax-popup-overlay'];
|
|
308
|
+
if (config.panelClass) {
|
|
309
|
+
panelClasses.push(...config.panelClass);
|
|
310
|
+
}
|
|
311
|
+
const ref = await this.overlayService.create(AXPopupComponent, {
|
|
312
|
+
backdrop: {
|
|
313
|
+
enabled: config.hasBackdrop ?? true,
|
|
314
|
+
background: true,
|
|
315
|
+
closeOnClick: config.closeOnBackdropClick ?? false,
|
|
316
|
+
},
|
|
317
|
+
panelClass: panelClasses,
|
|
318
|
+
inputs: {
|
|
319
|
+
__content__: content,
|
|
320
|
+
__config__: config,
|
|
321
|
+
__popupRef__: returnRef,
|
|
322
|
+
__id__: randomId,
|
|
323
|
+
},
|
|
324
|
+
});
|
|
325
|
+
this.popupList.set(randomId, { overlay: ref, popup: returnRef });
|
|
326
|
+
return returnRef;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Closes a popup by its ID.
|
|
330
|
+
* @param id - The popup ID to close
|
|
331
|
+
* @param data - Optional data to pass to the close event
|
|
332
|
+
*/
|
|
333
|
+
async close(id, data) {
|
|
334
|
+
const ref = this.popupList.get(id);
|
|
335
|
+
if (!ref)
|
|
336
|
+
return;
|
|
337
|
+
ref.popup.onClose.next(data);
|
|
338
|
+
ref.popup.onClose.complete();
|
|
339
|
+
ref.overlay.dispose();
|
|
340
|
+
this.popupList.delete(id);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Sets input values for a popup by its ID.
|
|
344
|
+
* @param id - The popup ID
|
|
345
|
+
* @param values - Object containing input values to set
|
|
346
|
+
*/
|
|
347
|
+
async setInputs(id, values) {
|
|
348
|
+
const ref = this.popupList.get(id)?.overlay.instance;
|
|
349
|
+
if (!ref)
|
|
350
|
+
return;
|
|
351
|
+
if (ref instanceof ComponentRef) {
|
|
352
|
+
const componentInstance = ref.instance;
|
|
353
|
+
componentInstance.setContentInputs(values);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Sets the title for a popup by its ID.
|
|
358
|
+
* @param id - The popup ID
|
|
359
|
+
* @param title - The new title
|
|
360
|
+
*/
|
|
361
|
+
async setTitle(id, title) {
|
|
362
|
+
const ref = this.popupList.get(id)?.overlay.instance;
|
|
363
|
+
if (!ref)
|
|
364
|
+
return;
|
|
365
|
+
if (ref instanceof ComponentRef) {
|
|
366
|
+
const componentInstance = ref.instance;
|
|
367
|
+
componentInstance.setTitle(title);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Brings a popup to the front of all other overlays.
|
|
372
|
+
* @param id - The popup ID to bring to front
|
|
373
|
+
*/
|
|
374
|
+
bringToFront(id) {
|
|
375
|
+
const ref = this.popupList.get(id);
|
|
376
|
+
if (!ref)
|
|
377
|
+
return;
|
|
378
|
+
ref.overlay.bringToFront();
|
|
379
|
+
}
|
|
380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
381
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupStateService, providedIn: 'root' }); }
|
|
382
|
+
}
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupStateService, decorators: [{
|
|
384
|
+
type: Injectable,
|
|
385
|
+
args: [{
|
|
386
|
+
providedIn: 'root',
|
|
387
|
+
}]
|
|
388
|
+
}] });
|
|
389
|
+
|
|
390
|
+
class AXPopupComponentBase {
|
|
391
|
+
constructor() {
|
|
392
|
+
this.__popup__ = input(...(ngDevMode ? [undefined, { debugName: "__popup__" }] : []));
|
|
393
|
+
}
|
|
394
|
+
close(data = null) {
|
|
395
|
+
this.__popup__().close(data);
|
|
396
|
+
}
|
|
397
|
+
setTitle(title) {
|
|
398
|
+
this.__popup__().setTitle(title);
|
|
399
|
+
}
|
|
400
|
+
bringToFront() {
|
|
401
|
+
this.__popup__().bringToFront();
|
|
402
|
+
}
|
|
403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupComponentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
404
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.9", type: AXPopupComponentBase, isStandalone: true, inputs: { __popup__: { classPropertyName: "__popup__", publicName: "__popup__", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
405
|
+
}
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupComponentBase, decorators: [{
|
|
407
|
+
type: Directive
|
|
408
|
+
}], propDecorators: { __popup__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popup__", required: false }] }] } });
|
|
409
|
+
|
|
177
410
|
/**
|
|
178
411
|
* This is a service which you can create popup with it
|
|
179
412
|
*
|
|
@@ -181,10 +414,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
181
414
|
*/
|
|
182
415
|
class AXPopupService {
|
|
183
416
|
constructor() {
|
|
184
|
-
this.
|
|
185
|
-
this.#platform = inject(AXPlatform);
|
|
417
|
+
this.stateService = inject(AXPopupStateService);
|
|
186
418
|
}
|
|
187
|
-
#platform;
|
|
188
419
|
/**
|
|
189
420
|
* @ignore
|
|
190
421
|
*/
|
|
@@ -205,28 +436,16 @@ class AXPopupService {
|
|
|
205
436
|
else {
|
|
206
437
|
config = Object.assign(config, arg2);
|
|
207
438
|
}
|
|
208
|
-
const dialogRef = this.dialog.open(AXPopupComponent, {
|
|
209
|
-
data: Object.assign(config, { content: arg1 }),
|
|
210
|
-
autoFocus: true,
|
|
211
|
-
restoreFocus: true,
|
|
212
|
-
closeOnNavigation: true,
|
|
213
|
-
closeOnDestroy: true,
|
|
214
|
-
hasBackdrop: config.hasBackdrop,
|
|
215
|
-
backdropClass: config.backdropClass,
|
|
216
|
-
disableClose: config.closeOnBackdropClick ? false : true,
|
|
217
|
-
viewContainerRef: config.viewContainerRef,
|
|
218
|
-
providers: config.providers,
|
|
219
|
-
panelClass: config.panelClass ? config.panelClass : [this.#platform.isDark() ? 'ax-dark' : ''],
|
|
220
|
-
direction: config.direction ? config.direction : AXHtmlUtil.isRtl() ? 'rtl' : 'ltr',
|
|
221
|
-
});
|
|
222
439
|
const promise = new AXComponentClosedPromise((resolve) => {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
resolve
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
440
|
+
this.stateService.open(arg1, config).then((ref) => {
|
|
441
|
+
ref.onClose.subscribe((data) => {
|
|
442
|
+
if (resolve) {
|
|
443
|
+
resolve({
|
|
444
|
+
sender: null,
|
|
445
|
+
data: data,
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
});
|
|
230
449
|
});
|
|
231
450
|
});
|
|
232
451
|
return promise;
|
|
@@ -239,26 +458,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
239
458
|
}] });
|
|
240
459
|
|
|
241
460
|
const COMPONENT = [AXPopupComponent];
|
|
242
|
-
const MODULES = [
|
|
243
|
-
CommonModule,
|
|
244
|
-
AXCommonModule,
|
|
245
|
-
DragDropModule,
|
|
246
|
-
A11yModule,
|
|
247
|
-
PortalModule,
|
|
248
|
-
AXDecoratorModule,
|
|
249
|
-
DialogModule,
|
|
250
|
-
AXTranslationModule,
|
|
251
|
-
];
|
|
461
|
+
const MODULES = [CommonModule, AXCommonModule, AXDecoratorModule, AXTranslationModule];
|
|
252
462
|
class AXPopupModule {
|
|
253
463
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
254
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: AXPopupModule, imports: [CommonModule,
|
|
255
|
-
AXCommonModule,
|
|
256
|
-
DragDropModule,
|
|
257
|
-
A11yModule,
|
|
258
|
-
PortalModule,
|
|
259
|
-
AXDecoratorModule,
|
|
260
|
-
DialogModule,
|
|
261
|
-
AXTranslationModule, AXPopupComponent], exports: [AXPopupComponent] }); }
|
|
464
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: AXPopupModule, imports: [CommonModule, AXCommonModule, AXDecoratorModule, AXTranslationModule, AXPopupComponent], exports: [AXPopupComponent] }); }
|
|
262
465
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupModule, providers: [AXPopupService], imports: [MODULES, COMPONENT] }); }
|
|
263
466
|
}
|
|
264
467
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXPopupModule, decorators: [{
|
|
@@ -274,5 +477,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
274
477
|
* Generated bundle index. Do not edit.
|
|
275
478
|
*/
|
|
276
479
|
|
|
277
|
-
export { AXPopupComponent, AXPopupModule, AXPopupService };
|
|
480
|
+
export { AXPopupComponent, AXPopupComponentBase, AXPopupModule, AXPopupService, AXPopupStateService };
|
|
278
481
|
//# sourceMappingURL=acorex-components-popup.mjs.map
|