@acorex/components 19.1.0-next.2 → 19.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,4 +27,14 @@ export interface AXActionSheetConfig {
27
27
  closeOnBackdropClick?: boolean;
28
28
  items?: AXActionSheetItem[];
29
29
  content?: AXActionSheetContentType;
30
+ draggable?: boolean;
31
+ dragUp?: boolean;
32
+ }
33
+ export interface AXActionSheetEvent {
34
+ dialogRef: any;
35
+ nativeEvent?: Event;
36
+ isUserInteraction: boolean;
37
+ data: {
38
+ state: 'open' | 'close' | 'dragStart' | 'dragEnd' | 'fullScreen' | 'normalSize';
39
+ };
30
40
  }
@@ -1,7 +1,7 @@
1
1
  import { AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';
2
2
  import { DialogRef } from '@angular/cdk/dialog';
3
3
  import { CdkPortalOutletAttachedRef, Portal } from '@angular/cdk/portal';
4
- import { OnInit } from '@angular/core';
4
+ import { OnDestroy, OnInit } from '@angular/core';
5
5
  import { AXActionSheetConfig, AXActionSheetItem } from './action-sheet.class';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
@@ -9,9 +9,22 @@ import * as i0 from "@angular/core";
9
9
  *
10
10
  * @category Components
11
11
  */
12
- export declare class AXActionSheetComponent extends MXBaseComponent implements OnInit {
12
+ export declare class AXActionSheetComponent extends MXBaseComponent implements OnInit, OnDestroy {
13
13
  protected data: AXActionSheetConfig;
14
14
  private dialogRef;
15
+ private document;
16
+ private platformID;
17
+ private renderer;
18
+ private actionSheetService;
19
+ private onMouseMoveListenerFn;
20
+ private onMouseUpListenerFn;
21
+ private onTouchMoveListenerFn;
22
+ private onTouchUpListenerFn;
23
+ private isDragging;
24
+ private curserOffset;
25
+ private actionSheetHeight;
26
+ private isActionSheetHeightSet;
27
+ private transitionDuration;
15
28
  /**
16
29
  * @ignore
17
30
  */
@@ -28,9 +41,15 @@ export declare class AXActionSheetComponent extends MXBaseComponent implements O
28
41
  * @ignore
29
42
  */
30
43
  ngOnInit(): void;
44
+ ngOnDestroy(): void;
45
+ protected handleMouseDown(e: MouseEvent): void;
46
+ protected handleTouchDown(e: TouchEvent): void;
47
+ private handleDown;
48
+ private handleUp;
49
+ private heightCalculator;
31
50
  protected handleAttched(ref: CdkPortalOutletAttachedRef): void;
32
51
  onItemClick(item: AXActionSheetItem): void;
33
- close(e: any): void;
52
+ close(e?: any, isUserInteraction?: boolean): void;
34
53
  /**
35
54
  * @ignore
36
55
  */
@@ -1,5 +1,5 @@
1
1
  import { Subject } from 'rxjs';
2
- import { AXActionSheetConfig } from './action-sheet.class';
2
+ import { AXActionSheetConfig, AXActionSheetEvent } from './action-sheet.class';
3
3
  import * as i0 from "@angular/core";
4
4
  export interface AXActionSheetDialogRef {
5
5
  close: (e?: any) => void;
@@ -7,7 +7,10 @@ export interface AXActionSheetDialogRef {
7
7
  }
8
8
  export declare class AXActionSheetService {
9
9
  private dialog;
10
- open(config: AXActionSheetConfig): Promise<AXActionSheetDialogRef>;
10
+ private readonly actionSheetEvent;
11
+ actionSheetEvent$: import("rxjs").Observable<AXActionSheetEvent>;
12
+ open(config: AXActionSheetConfig, isUserInteraction?: boolean): Promise<AXActionSheetDialogRef>;
13
+ setActionSheetEventState(event: AXActionSheetEvent): void;
11
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXActionSheetService, never>;
12
15
  static ɵprov: i0.ɵɵInjectableDeclaration<AXActionSheetService>;
13
16
  }
@@ -1,21 +1,93 @@
1
1
  import { MXBaseComponent, AXClosbaleComponent, AXFocusableComponent, AXCommonModule } from '@acorex/components/common';
2
2
  import * as i1 from '@angular/cdk/dialog';
3
- import { DIALOG_DATA, Dialog, DialogModule } from '@angular/cdk/dialog';
3
+ import { Dialog, DIALOG_DATA, DialogModule } from '@angular/cdk/dialog';
4
4
  import * as i2 from '@angular/cdk/portal';
5
5
  import { TemplatePortal, ComponentPortal, PortalModule } from '@angular/cdk/portal';
6
+ import * as i5 from '@angular/common';
7
+ import { DOCUMENT, isPlatformBrowser, AsyncPipe } from '@angular/common';
6
8
  import * as i0 from '@angular/core';
7
- import { TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostListener, inject, Injectable, NgModule } from '@angular/core';
9
+ import { inject, Injectable, PLATFORM_ID, Renderer2, signal, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostListener, NgModule } from '@angular/core';
10
+ import { GlobalPositionStrategy } from '@angular/cdk/overlay';
11
+ import { Subject, BehaviorSubject } from 'rxjs';
8
12
  import * as i3 from '@acorex/components/decorators';
9
13
  import { AXDecoratorModule } from '@acorex/components/decorators';
10
14
  import * as i4 from '@acorex/core/translation';
11
15
  import { AXTranslationModule } from '@acorex/core/translation';
12
- import * as i5 from '@angular/common';
13
- import { AsyncPipe } from '@angular/common';
14
16
  import { AXButtonModule } from '@acorex/components/button';
15
17
  import { A11yModule } from '@angular/cdk/a11y';
16
18
  import { DragDropModule } from '@angular/cdk/drag-drop';
17
- import { GlobalPositionStrategy } from '@angular/cdk/overlay';
18
- import { BehaviorSubject } from 'rxjs';
19
+
20
+ class AXActionSheetService {
21
+ constructor() {
22
+ this.dialog = inject(Dialog);
23
+ this.actionSheetEvent = new Subject();
24
+ this.actionSheetEvent$ = this.actionSheetEvent.asObservable();
25
+ }
26
+ open(config, isUserInteraction = true) {
27
+ const defaultConfig = {
28
+ title: 'action-sheet.title',
29
+ closeButton: true,
30
+ closeOnBackdropClick: true,
31
+ header: true,
32
+ };
33
+ config = Object.assign(defaultConfig, config);
34
+ const dialogRef = this.dialog.open(AXActionSheetComponent, {
35
+ data: config,
36
+ autoFocus: 'first-tabbable',
37
+ restoreFocus: true,
38
+ role: 'dialog',
39
+ ariaModal: true,
40
+ closeOnNavigation: true,
41
+ closeOnDestroy: true,
42
+ hasBackdrop: true,
43
+ panelClass: ['ax-actionsheet-panel'],
44
+ disableClose: true,
45
+ positionStrategy: new GlobalPositionStrategy().centerHorizontally().bottom(),
46
+ });
47
+ this.actionSheetEvent.next({
48
+ dialogRef,
49
+ data: { state: 'open' },
50
+ isUserInteraction,
51
+ });
52
+ if (config.closeOnBackdropClick) {
53
+ dialogRef.backdropClick.subscribe(() => {
54
+ const componentInstance = dialogRef.componentInstance;
55
+ if (componentInstance) {
56
+ componentInstance.close();
57
+ }
58
+ });
59
+ }
60
+ const promise = new Promise((resolve) => {
61
+ const closed = new BehaviorSubject(null);
62
+ const axDialogRef = {
63
+ close: (e) => {
64
+ dialogRef.close(e);
65
+ },
66
+ closed,
67
+ };
68
+ dialogRef.closed.subscribe((c) => {
69
+ if (c?.data) {
70
+ closed.next({ data: c.data });
71
+ }
72
+ else {
73
+ closed.next({});
74
+ }
75
+ });
76
+ if (resolve) {
77
+ resolve(axDialogRef);
78
+ }
79
+ });
80
+ return promise;
81
+ }
82
+ setActionSheetEventState(event) {
83
+ this.actionSheetEvent.next(event);
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
86
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService }); }
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService, decorators: [{
89
+ type: Injectable
90
+ }] });
19
91
 
20
92
  /**
21
93
  * A component for displaying an action sheet, which is a menu that slides up from the bottom of the screen.
@@ -30,6 +102,19 @@ class AXActionSheetComponent extends MXBaseComponent {
30
102
  super();
31
103
  this.data = data;
32
104
  this.dialogRef = dialogRef;
105
+ this.document = inject(DOCUMENT);
106
+ this.platformID = inject(PLATFORM_ID);
107
+ this.renderer = inject(Renderer2);
108
+ this.actionSheetService = inject(AXActionSheetService);
109
+ this.onMouseMoveListenerFn = () => undefined;
110
+ this.onMouseUpListenerFn = () => undefined;
111
+ this.onTouchMoveListenerFn = () => undefined;
112
+ this.onTouchUpListenerFn = () => undefined;
113
+ this.isDragging = signal(false);
114
+ this.curserOffset = signal(0);
115
+ this.actionSheetHeight = signal(0);
116
+ this.isActionSheetHeightSet = signal(false);
117
+ this.transitionDuration = signal(300);
33
118
  }
34
119
  /**
35
120
  * @ignore
@@ -49,6 +134,122 @@ class AXActionSheetComponent extends MXBaseComponent {
49
134
  this.cdr.markForCheck();
50
135
  }
51
136
  }
137
+ if (isPlatformBrowser(this.platformID) && this.data.draggable) {
138
+ this.onMouseMoveListenerFn = this.renderer.listen(this.document, 'mousemove', (e) => {
139
+ if (this.isDragging()) {
140
+ e.preventDefault();
141
+ this.getHostElement().style.height = `${this.heightCalculator(e.clientY) + this.curserOffset()}px`;
142
+ }
143
+ });
144
+ this.onTouchMoveListenerFn = this.renderer.listen(this.document, 'touchmove', (e) => {
145
+ if (this.isDragging()) {
146
+ e.preventDefault();
147
+ this.getHostElement().style.height = `${this.heightCalculator(e.touches[0].clientY) + this.curserOffset()}px`;
148
+ }
149
+ });
150
+ this.onMouseUpListenerFn = this.renderer.listen(this.document, 'mouseup', (e) => {
151
+ if (this.isDragging()) {
152
+ this.isDragging.set(false);
153
+ this.actionSheetService.setActionSheetEventState({
154
+ nativeEvent: e,
155
+ data: { state: 'dragEnd' },
156
+ isUserInteraction: true,
157
+ dialogRef: this.dialogRef,
158
+ });
159
+ this.handleUp();
160
+ }
161
+ });
162
+ this.onTouchUpListenerFn = this.renderer.listen(this.document, 'touchend', (e) => {
163
+ if (this.isDragging()) {
164
+ this.isDragging.set(false);
165
+ this.actionSheetService.setActionSheetEventState({
166
+ nativeEvent: e,
167
+ data: { state: 'dragEnd' },
168
+ isUserInteraction: true,
169
+ dialogRef: this.dialogRef,
170
+ });
171
+ this.handleUp();
172
+ }
173
+ });
174
+ }
175
+ }
176
+ ngOnDestroy() {
177
+ this.onMouseMoveListenerFn();
178
+ this.onMouseUpListenerFn();
179
+ this.onTouchMoveListenerFn();
180
+ this.onTouchUpListenerFn();
181
+ }
182
+ handleMouseDown(e) {
183
+ if (!this.data.draggable || e.button !== 0)
184
+ return;
185
+ e.preventDefault();
186
+ this.actionSheetService.setActionSheetEventState({
187
+ nativeEvent: e,
188
+ data: { state: 'dragStart' },
189
+ isUserInteraction: true,
190
+ dialogRef: this.dialogRef,
191
+ });
192
+ this.handleDown(e.clientY);
193
+ }
194
+ handleTouchDown(e) {
195
+ if (!this.data.draggable || e.target.className.includes('close'))
196
+ return;
197
+ e.preventDefault();
198
+ this.actionSheetService.setActionSheetEventState({
199
+ nativeEvent: e,
200
+ data: { state: 'dragStart' },
201
+ isUserInteraction: true,
202
+ dialogRef: this.dialogRef,
203
+ });
204
+ this.handleDown(e.touches[0].clientY);
205
+ }
206
+ handleDown(clientY) {
207
+ this.isDragging.set(true);
208
+ this.getHostElement().style.transitionDuration = '0ms';
209
+ if (isPlatformBrowser(this.platformID)) {
210
+ this.curserOffset.set(clientY - (this.document.documentElement.clientHeight - this.getHostElement().clientHeight));
211
+ }
212
+ if (!this.isActionSheetHeightSet()) {
213
+ this.actionSheetHeight.set(this.getHostElement().clientHeight);
214
+ this.isActionSheetHeightSet.set(true);
215
+ }
216
+ }
217
+ handleUp() {
218
+ this.getHostElement().style.transitionDuration = `${this.transitionDuration()}ms`;
219
+ this.document.body.parentElement.style.overscrollBehaviorY = 'auto';
220
+ if (this.getHostElement().clientHeight < this.actionSheetHeight() / 2) {
221
+ this.close(null);
222
+ return;
223
+ }
224
+ if (this.getHostElement().clientHeight >
225
+ (this.document.documentElement.clientHeight + this.actionSheetHeight()) / 2 &&
226
+ this.data.dragUp) {
227
+ this.getHostElement().style.height = '100vh';
228
+ this.actionSheetService.setActionSheetEventState({
229
+ data: { state: 'fullScreen' },
230
+ isUserInteraction: true,
231
+ dialogRef: this.dialogRef,
232
+ });
233
+ this.document.body.parentElement.style.overscrollBehaviorY = 'contain';
234
+ return;
235
+ }
236
+ this.getHostElement().style.height = this.actionSheetHeight() + 'px';
237
+ this.actionSheetService.setActionSheetEventState({
238
+ data: { state: 'normalSize' },
239
+ isUserInteraction: true,
240
+ dialogRef: this.dialogRef,
241
+ });
242
+ return;
243
+ }
244
+ heightCalculator(clientY) {
245
+ if (this.data.dragUp) {
246
+ return this.document.documentElement.clientHeight - clientY;
247
+ }
248
+ if (clientY >= this.document.documentElement.clientHeight - this.actionSheetHeight()) {
249
+ return this.document.documentElement.clientHeight - clientY;
250
+ }
251
+ return (this.actionSheetHeight() +
252
+ (this.document.documentElement.clientHeight - clientY - this.actionSheetHeight()) / 10);
52
253
  }
53
254
  handleAttched(ref) {
54
255
  ref = ref;
@@ -68,12 +269,23 @@ class AXActionSheetComponent extends MXBaseComponent {
68
269
  if (item?.onClick)
69
270
  item.onClick();
70
271
  }
71
- close(e) {
72
- this.dialogRef.close({
73
- component: this._componentRef,
74
- htmlElement: this.getHostElement(),
75
- data: e,
272
+ close(e = null, isUserInteraction = true) {
273
+ this.getHostElement().style.height = `${this.getHostElement().clientHeight}px`;
274
+ setTimeout(() => {
275
+ this.getHostElement().style.height = '0vh';
76
276
  });
277
+ setTimeout(() => {
278
+ this.actionSheetService.setActionSheetEventState({
279
+ data: { state: 'close' },
280
+ isUserInteraction,
281
+ dialogRef: this.dialogRef,
282
+ });
283
+ this.dialogRef.close({
284
+ component: this._componentRef,
285
+ htmlElement: this.getHostElement(),
286
+ data: e,
287
+ });
288
+ }, this.transitionDuration());
77
289
  }
78
290
  /**
79
291
  * @ignore
@@ -94,7 +306,7 @@ class AXActionSheetComponent extends MXBaseComponent {
94
306
  provide: AXFocusableComponent,
95
307
  useExisting: AXActionSheetComponent,
96
308
  },
97
- ], usesInheritance: true, ngImport: i0, template: "@if (data.header) {\n <ax-header>\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n", styles: ["ax-action-sheet{display:block;width:100vw}@media (min-width: 768px){ax-action-sheet{width:70vw}}@media (min-width: 1024px){ax-action-sheet{width:50vw}}ax-action-sheet .ax-custom-template-container{overflow-y:auto;max-height:100vh}ax-action-sheet ax-header{padding:1rem;border-bottom-width:1px;font-size:1rem;line-height:1.5rem;font-weight:500}@media (min-width: 768px){ax-action-sheet ax-header{font-size:1.125rem;line-height:1.75rem}}ax-action-sheet ax-header ax-prefix,ax-action-sheet ax-header ax-suffix{display:flex;flex-direction:column;justify-content:flex-start}ax-action-sheet ax-header ax-prefix{align-items:flex-start}ax-action-sheet ax-header ax-prefix ax-title{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}ax-action-sheet ax-header ax-suffix{align-items:flex-end;max-width:fit-content}ax-action-sheet .ax-action-list{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-action-list ax-title{font-size:.875rem}ax-action-sheet .ax-action-list .ax-action-item{min-height:3.5rem!important;font-size:1rem!important}ax-action-sheet .ax-action-list .ax-action-item .ax-item-icon{margin-inline-end:.75rem!important;font-size:1.5rem!important;line-height:2rem!important}\n"], dependencies: [{ kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i3.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
309
+ ], usesInheritance: true, ngImport: i0, template: "@if (data.draggable) {\n <div\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchDown($event)\"\n class=\"ax-drag-handle-container\"\n >\n <div class=\"ax-drag-handle\"></div>\n </div>\n}\n@if (data.header) {\n <ax-header\n [class.draggable-header]=\"data.draggable\"\n (mousedown)=\"data.draggable ? handleMouseDown($event) : null\"\n (touchstart)=\"data.draggable ? handleTouchDown($event) : null\"\n >\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n", styles: ["ax-action-sheet{display:block;width:100vw;position:relative;transition:height .3s cubic-bezier(.25,.75,.15,1)}@media (min-width: 768px){ax-action-sheet{width:70vw}}@media (min-width: 1024px){ax-action-sheet{width:50vw}}ax-action-sheet .ax-custom-template-container{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-drag-handle-container{padding-top:.5rem}ax-action-sheet .ax-drag-handle-container .ax-drag-handle{height:.375rem;width:3rem;margin:auto;border-radius:.5rem;background-color:rgba(var(--ax-color-border-default))}ax-action-sheet ax-header{padding:1rem;border-bottom-width:1px;font-size:1rem;line-height:1.5rem;font-weight:500}@media (min-width: 768px){ax-action-sheet ax-header{font-size:1.125rem;line-height:1.75rem}}ax-action-sheet ax-header.draggable-header{padding-top:0;-webkit-user-select:none;user-select:none}ax-action-sheet ax-header ax-prefix,ax-action-sheet ax-header ax-suffix{display:flex;flex-direction:column;justify-content:flex-start}ax-action-sheet ax-header ax-prefix{align-items:flex-start}ax-action-sheet ax-header ax-prefix ax-title{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}ax-action-sheet ax-header ax-suffix{align-items:flex-end;max-width:fit-content}ax-action-sheet .ax-action-list{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-action-list ax-title{font-size:.875rem}ax-action-sheet .ax-action-list .ax-action-item{min-height:3.5rem!important;font-size:1rem!important}ax-action-sheet .ax-action-list .ax-action-item .ax-item-icon{margin-inline-end:.75rem!important;font-size:1.5rem!important;line-height:2rem!important}\n"], dependencies: [{ kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i3.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
98
310
  }
99
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetComponent, decorators: [{
100
312
  type: Component,
@@ -107,7 +319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
107
319
  provide: AXFocusableComponent,
108
320
  useExisting: AXActionSheetComponent,
109
321
  },
110
- ], standalone: false, template: "@if (data.header) {\n <ax-header>\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n", styles: ["ax-action-sheet{display:block;width:100vw}@media (min-width: 768px){ax-action-sheet{width:70vw}}@media (min-width: 1024px){ax-action-sheet{width:50vw}}ax-action-sheet .ax-custom-template-container{overflow-y:auto;max-height:100vh}ax-action-sheet ax-header{padding:1rem;border-bottom-width:1px;font-size:1rem;line-height:1.5rem;font-weight:500}@media (min-width: 768px){ax-action-sheet ax-header{font-size:1.125rem;line-height:1.75rem}}ax-action-sheet ax-header ax-prefix,ax-action-sheet ax-header ax-suffix{display:flex;flex-direction:column;justify-content:flex-start}ax-action-sheet ax-header ax-prefix{align-items:flex-start}ax-action-sheet ax-header ax-prefix ax-title{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}ax-action-sheet ax-header ax-suffix{align-items:flex-end;max-width:fit-content}ax-action-sheet .ax-action-list{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-action-list ax-title{font-size:.875rem}ax-action-sheet .ax-action-list .ax-action-item{min-height:3.5rem!important;font-size:1rem!important}ax-action-sheet .ax-action-list .ax-action-item .ax-item-icon{margin-inline-end:.75rem!important;font-size:1.5rem!important;line-height:2rem!important}\n"] }]
322
+ ], standalone: false, template: "@if (data.draggable) {\n <div\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchDown($event)\"\n class=\"ax-drag-handle-container\"\n >\n <div class=\"ax-drag-handle\"></div>\n </div>\n}\n@if (data.header) {\n <ax-header\n [class.draggable-header]=\"data.draggable\"\n (mousedown)=\"data.draggable ? handleMouseDown($event) : null\"\n (touchstart)=\"data.draggable ? handleTouchDown($event) : null\"\n >\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n", styles: ["ax-action-sheet{display:block;width:100vw;position:relative;transition:height .3s cubic-bezier(.25,.75,.15,1)}@media (min-width: 768px){ax-action-sheet{width:70vw}}@media (min-width: 1024px){ax-action-sheet{width:50vw}}ax-action-sheet .ax-custom-template-container{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-drag-handle-container{padding-top:.5rem}ax-action-sheet .ax-drag-handle-container .ax-drag-handle{height:.375rem;width:3rem;margin:auto;border-radius:.5rem;background-color:rgba(var(--ax-color-border-default))}ax-action-sheet ax-header{padding:1rem;border-bottom-width:1px;font-size:1rem;line-height:1.5rem;font-weight:500}@media (min-width: 768px){ax-action-sheet ax-header{font-size:1.125rem;line-height:1.75rem}}ax-action-sheet ax-header.draggable-header{padding-top:0;-webkit-user-select:none;user-select:none}ax-action-sheet ax-header ax-prefix,ax-action-sheet ax-header ax-suffix{display:flex;flex-direction:column;justify-content:flex-start}ax-action-sheet ax-header ax-prefix{align-items:flex-start}ax-action-sheet ax-header ax-prefix ax-title{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}ax-action-sheet ax-header ax-suffix{align-items:flex-end;max-width:fit-content}ax-action-sheet .ax-action-list{overflow-y:auto;max-height:100vh}ax-action-sheet .ax-action-list ax-title{font-size:.875rem}ax-action-sheet .ax-action-list .ax-action-item{min-height:3.5rem!important;font-size:1rem!important}ax-action-sheet .ax-action-list .ax-action-item .ax-item-icon{margin-inline-end:.75rem!important;font-size:1.5rem!important;line-height:2rem!important}\n"] }]
111
323
  }], ctorParameters: () => [{ type: undefined, decorators: [{
112
324
  type: Inject,
113
325
  args: [DIALOG_DATA]
@@ -116,60 +328,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
116
328
  args: ['keydown.escape']
117
329
  }] } });
118
330
 
119
- class AXActionSheetService {
120
- constructor() {
121
- this.dialog = inject(Dialog);
122
- }
123
- open(config) {
124
- const defaultConfig = {
125
- title: 'action-sheet.title',
126
- closeButton: true,
127
- closeOnBackdropClick: true,
128
- header: true,
129
- };
130
- config = Object.assign(defaultConfig, config);
131
- const dialogRef = this.dialog.open(AXActionSheetComponent, {
132
- data: config,
133
- autoFocus: 'first-tabbable',
134
- restoreFocus: true,
135
- role: 'dialog',
136
- ariaModal: true,
137
- closeOnNavigation: true,
138
- closeOnDestroy: true,
139
- hasBackdrop: true,
140
- panelClass: ['ax-actionsheet-panel'],
141
- disableClose: config.closeOnBackdropClick ? false : true,
142
- positionStrategy: new GlobalPositionStrategy().centerHorizontally().bottom(),
143
- });
144
- const promise = new Promise((resolve) => {
145
- const closed = new BehaviorSubject(null);
146
- const axDialogRef = {
147
- close: (e) => {
148
- dialogRef.close(e);
149
- },
150
- closed,
151
- };
152
- dialogRef.closed.subscribe((c) => {
153
- if (c?.data) {
154
- closed.next({ data: c.data });
155
- }
156
- else {
157
- closed.next({});
158
- }
159
- });
160
- if (resolve) {
161
- resolve(axDialogRef);
162
- }
163
- });
164
- return promise;
165
- }
166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
167
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService }); }
168
- }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXActionSheetService, decorators: [{
170
- type: Injectable
171
- }] });
172
-
173
331
  const MODULES = [
174
332
  AXCommonModule,
175
333
  DragDropModule,
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-action-sheet.mjs","sources":["../../../../libs/components/action-sheet/src/lib/action-sheet.component.ts","../../../../libs/components/action-sheet/src/lib/action-sheet.component.html","../../../../libs/components/action-sheet/src/lib/action-sheet.service.ts","../../../../libs/components/action-sheet/src/lib/action-sheet.module.ts","../../../../libs/components/action-sheet/src/acorex-components-action-sheet.ts"],"sourcesContent":["import {\n AXClosbaleComponent,\n AXComponentCloseEvent,\n AXFocusableComponent,\n MXBaseComponent,\n} from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { CdkPortalOutletAttachedRef, ComponentPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n Inject,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXActionSheetConfig, AXActionSheetItem } from './action-sheet.class';\n\n/**\n * A component for displaying an action sheet, which is a menu that slides up from the bottom of the screen.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-action-sheet',\n templateUrl: './action-sheet.component.html',\n styleUrls: ['./action-sheet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXClosbaleComponent,\n useExisting: AXActionSheetComponent,\n },\n {\n provide: AXFocusableComponent,\n useExisting: AXActionSheetComponent,\n },\n ],\n standalone: false\n})\nexport class AXActionSheetComponent extends MXBaseComponent implements OnInit {\n /**\n * @ignore\n */\n protected _selectedPortal: Portal<any>;\n\n /**\n * @ignore\n */\n private _componentRef: unknown;\n\n /**\n * @ignore\n */\n constructor(\n @Inject(DIALOG_DATA)\n protected data: AXActionSheetConfig,\n private dialogRef: DialogRef<AXComponentCloseEvent>,\n ) {\n super();\n }\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit();\n if (this.data.content) {\n if (this.data.content instanceof TemplateRef) {\n this._selectedPortal = new TemplatePortal(this.data.content, this.getViewContainer(), {\n $implicit: this.data,\n ref: this,\n });\n this.cdr.markForCheck();\n } else if (typeof this.data.content === 'function') {\n this._selectedPortal = new ComponentPortal(this.data.content);\n this.cdr.markForCheck();\n }\n }\n }\n\n protected handleAttched(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<any>;\n if (ref.instance) {\n this._componentRef = ref.instance;\n Object.assign(this._componentRef, this.data);\n Object.assign(this._componentRef, { _isPopup: true });\n if (ref.instance.onClosed) {\n ref.instance.onClosed.subscribe((e: AXComponentCloseEvent) => {\n this.close(e);\n });\n }\n }\n }\n\n onItemClick(item: AXActionSheetItem) {\n this.close(item);\n if (item?.onClick) item.onClick();\n }\n\n close(e) {\n this.dialogRef.close({\n component: this._componentRef,\n htmlElement: this.getHostElement(),\n data: e,\n });\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown.escape')\n protected onKeydownHandler() {\n const focusedOrHasFocused = this.getHostElement().matches(':focus-within');\n if (this.data.closeButton && focusedOrHasFocused) {\n this.close(null);\n }\n }\n}\n","@if (data.header) {\n <ax-header>\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n","import { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXActionSheetConfig } from './action-sheet.class';\nimport { AXActionSheetComponent } from './action-sheet.component';\n\nexport interface AXActionSheetDialogRef {\n close: (e?) => void;\n closed: Subject<any>;\n}\n\n@Injectable()\nexport class AXActionSheetService {\n private dialog: Dialog = inject(Dialog);\n\n open(config: AXActionSheetConfig): Promise<AXActionSheetDialogRef> {\n const defaultConfig: AXActionSheetConfig = {\n title: 'action-sheet.title',\n closeButton: true,\n closeOnBackdropClick: true,\n header: true,\n };\n config = Object.assign(defaultConfig, config);\n\n const dialogRef = this.dialog.open(AXActionSheetComponent, {\n data: config,\n autoFocus: 'first-tabbable',\n restoreFocus: true,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: true,\n panelClass: ['ax-actionsheet-panel'],\n disableClose: config.closeOnBackdropClick ? false : true,\n positionStrategy: new GlobalPositionStrategy().centerHorizontally().bottom(),\n });\n const promise = new Promise<AXActionSheetDialogRef>((resolve) => {\n const closed = new BehaviorSubject<any>(null);\n const axDialogRef: AXActionSheetDialogRef = {\n close: (e) => {\n dialogRef.close(e);\n },\n closed,\n };\n dialogRef.closed.subscribe((c: any) => {\n if (c?.data) {\n closed.next({ data: c.data });\n } else {\n closed.next({});\n }\n });\n if (resolve) {\n resolve(axDialogRef);\n }\n });\n return promise;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\n\nimport { AXCommonModule } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { AsyncPipe } from '@angular/common';\nimport { AXActionSheetComponent } from './action-sheet.component';\nimport { AXActionSheetService } from './action-sheet.service';\n\nconst MODULES = [\n AXCommonModule,\n DragDropModule,\n A11yModule,\n AXButtonModule,\n PortalModule,\n AXDecoratorModule,\n AXTranslationModule,\n DialogModule,\n AsyncPipe,\n];\n\n@NgModule({\n declarations: [AXActionSheetComponent],\n imports: [...MODULES],\n exports: [AXActionSheetComponent],\n providers: [AXActionSheetService],\n})\nexport class AXActionSheetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-action-sheet.mjs","sources":["../../../../libs/components/action-sheet/src/lib/action-sheet.service.ts","../../../../libs/components/action-sheet/src/lib/action-sheet.component.ts","../../../../libs/components/action-sheet/src/lib/action-sheet.component.html","../../../../libs/components/action-sheet/src/lib/action-sheet.module.ts","../../../../libs/components/action-sheet/src/acorex-components-action-sheet.ts"],"sourcesContent":["import { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXActionSheetConfig, AXActionSheetEvent } from './action-sheet.class';\nimport { AXActionSheetComponent } from './action-sheet.component';\n\nexport interface AXActionSheetDialogRef {\n close: (e?) => void;\n closed: Subject<any>;\n}\n\n@Injectable()\nexport class AXActionSheetService {\n private dialog: Dialog = inject(Dialog);\n private readonly actionSheetEvent = new Subject<AXActionSheetEvent>();\n actionSheetEvent$ = this.actionSheetEvent.asObservable();\n\n open(config: AXActionSheetConfig, isUserInteraction = true): Promise<AXActionSheetDialogRef> {\n const defaultConfig: AXActionSheetConfig = {\n title: 'action-sheet.title',\n closeButton: true,\n closeOnBackdropClick: true,\n header: true,\n };\n config = Object.assign(defaultConfig, config);\n\n const dialogRef = this.dialog.open(AXActionSheetComponent, {\n data: config,\n autoFocus: 'first-tabbable',\n restoreFocus: true,\n role: 'dialog',\n ariaModal: true,\n closeOnNavigation: true,\n closeOnDestroy: true,\n hasBackdrop: true,\n panelClass: ['ax-actionsheet-panel'],\n disableClose: true,\n positionStrategy: new GlobalPositionStrategy().centerHorizontally().bottom(),\n });\n\n this.actionSheetEvent.next({\n dialogRef,\n data: { state: 'open' },\n isUserInteraction,\n });\n\n if (config.closeOnBackdropClick) {\n dialogRef.backdropClick.subscribe(() => {\n const componentInstance = dialogRef.componentInstance;\n if (componentInstance) {\n componentInstance.close();\n }\n });\n }\n const promise = new Promise<AXActionSheetDialogRef>((resolve) => {\n const closed = new BehaviorSubject<any>(null);\n const axDialogRef: AXActionSheetDialogRef = {\n close: (e) => {\n dialogRef.close(e);\n },\n closed,\n };\n dialogRef.closed.subscribe((c: any) => {\n if (c?.data) {\n closed.next({ data: c.data });\n } else {\n closed.next({});\n }\n });\n if (resolve) {\n resolve(axDialogRef);\n }\n });\n return promise;\n }\n\n setActionSheetEventState(event: AXActionSheetEvent) {\n this.actionSheetEvent.next(event);\n }\n}\n","import {\n AXClosbaleComponent,\n AXComponentCloseEvent,\n AXFocusableComponent,\n MXBaseComponent,\n} from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { CdkPortalOutletAttachedRef, ComponentPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostListener,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXActionSheetConfig, AXActionSheetItem } from './action-sheet.class';\nimport { AXActionSheetService } from './action-sheet.service';\n\n/**\n * A component for displaying an action sheet, which is a menu that slides up from the bottom of the screen.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-action-sheet',\n templateUrl: './action-sheet.component.html',\n styleUrls: ['./action-sheet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXClosbaleComponent,\n useExisting: AXActionSheetComponent,\n },\n {\n provide: AXFocusableComponent,\n useExisting: AXActionSheetComponent,\n },\n ],\n standalone: false,\n})\nexport class AXActionSheetComponent extends MXBaseComponent implements OnInit, OnDestroy {\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n private renderer = inject(Renderer2);\n private actionSheetService = inject(AXActionSheetService);\n\n private onMouseMoveListenerFn = () => undefined;\n private onMouseUpListenerFn = () => undefined;\n private onTouchMoveListenerFn = () => undefined;\n private onTouchUpListenerFn = () => undefined;\n\n private isDragging = signal(false);\n private curserOffset = signal(0);\n private actionSheetHeight = signal(0);\n private isActionSheetHeightSet = signal(false);\n private transitionDuration = signal(300);\n\n /**\n * @ignore\n */\n protected _selectedPortal: Portal<any>;\n\n /**\n * @ignore\n */\n private _componentRef: unknown;\n\n /**\n * @ignore\n */\n constructor(\n @Inject(DIALOG_DATA)\n protected data: AXActionSheetConfig,\n private dialogRef: DialogRef<AXComponentCloseEvent>,\n ) {\n super();\n }\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit();\n if (this.data.content) {\n if (this.data.content instanceof TemplateRef) {\n this._selectedPortal = new TemplatePortal(this.data.content, this.getViewContainer(), {\n $implicit: this.data,\n ref: this,\n });\n this.cdr.markForCheck();\n } else if (typeof this.data.content === 'function') {\n this._selectedPortal = new ComponentPortal(this.data.content);\n this.cdr.markForCheck();\n }\n }\n if (isPlatformBrowser(this.platformID) && this.data.draggable) {\n this.onMouseMoveListenerFn = this.renderer.listen(this.document, 'mousemove', (e) => {\n if (this.isDragging()) {\n e.preventDefault();\n this.getHostElement().style.height = `${this.heightCalculator(e.clientY) + this.curserOffset()}px`;\n }\n });\n this.onTouchMoveListenerFn = this.renderer.listen(this.document, 'touchmove', (e) => {\n if (this.isDragging()) {\n e.preventDefault();\n this.getHostElement().style.height = `${this.heightCalculator(e.touches[0].clientY) + this.curserOffset()}px`;\n }\n });\n this.onMouseUpListenerFn = this.renderer.listen(this.document, 'mouseup', (e) => {\n if (this.isDragging()) {\n this.isDragging.set(false);\n this.actionSheetService.setActionSheetEventState({\n nativeEvent: e,\n data: { state: 'dragEnd' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n this.handleUp();\n }\n });\n this.onTouchUpListenerFn = this.renderer.listen(this.document, 'touchend', (e) => {\n if (this.isDragging()) {\n this.isDragging.set(false);\n this.actionSheetService.setActionSheetEventState({\n nativeEvent: e,\n data: { state: 'dragEnd' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n this.handleUp();\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.onMouseMoveListenerFn();\n this.onMouseUpListenerFn();\n this.onTouchMoveListenerFn();\n this.onTouchUpListenerFn();\n }\n\n protected handleMouseDown(e: MouseEvent) {\n if (!this.data.draggable || e.button !== 0) return;\n e.preventDefault();\n this.actionSheetService.setActionSheetEventState({\n nativeEvent: e,\n data: { state: 'dragStart' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n this.handleDown(e.clientY);\n }\n\n protected handleTouchDown(e: TouchEvent) {\n if (!this.data.draggable || (e.target as HTMLElement).className.includes('close')) return;\n e.preventDefault();\n this.actionSheetService.setActionSheetEventState({\n nativeEvent: e,\n data: { state: 'dragStart' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n this.handleDown(e.touches[0].clientY);\n }\n\n private handleDown(clientY: number) {\n this.isDragging.set(true);\n this.getHostElement().style.transitionDuration = '0ms';\n\n if (isPlatformBrowser(this.platformID)) {\n this.curserOffset.set(\n clientY - (this.document.documentElement.clientHeight - this.getHostElement().clientHeight),\n );\n }\n\n if (!this.isActionSheetHeightSet()) {\n this.actionSheetHeight.set(this.getHostElement().clientHeight);\n this.isActionSheetHeightSet.set(true);\n }\n }\n\n private handleUp() {\n this.getHostElement().style.transitionDuration = `${this.transitionDuration()}ms`;\n this.document.body.parentElement.style.overscrollBehaviorY = 'auto';\n\n if (this.getHostElement().clientHeight < this.actionSheetHeight() / 2) {\n this.close(null);\n return;\n }\n if (\n this.getHostElement().clientHeight >\n (this.document.documentElement.clientHeight + this.actionSheetHeight()) / 2 &&\n this.data.dragUp\n ) {\n this.getHostElement().style.height = '100vh';\n this.actionSheetService.setActionSheetEventState({\n data: { state: 'fullScreen' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n this.document.body.parentElement.style.overscrollBehaviorY = 'contain';\n return;\n }\n this.getHostElement().style.height = this.actionSheetHeight() + 'px';\n this.actionSheetService.setActionSheetEventState({\n data: { state: 'normalSize' },\n isUserInteraction: true,\n dialogRef: this.dialogRef,\n });\n return;\n }\n\n private heightCalculator(clientY: number): number {\n if (this.data.dragUp) {\n return this.document.documentElement.clientHeight - clientY;\n }\n if (clientY >= this.document.documentElement.clientHeight - this.actionSheetHeight()) {\n return this.document.documentElement.clientHeight - clientY;\n }\n return (\n this.actionSheetHeight() +\n (this.document.documentElement.clientHeight - clientY - this.actionSheetHeight()) / 10\n );\n }\n\n protected handleAttched(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<any>;\n if (ref.instance) {\n this._componentRef = ref.instance;\n Object.assign(this._componentRef, this.data);\n Object.assign(this._componentRef, { _isPopup: true });\n if (ref.instance.onClosed) {\n ref.instance.onClosed.subscribe((e: AXComponentCloseEvent) => {\n this.close(e);\n });\n }\n }\n }\n\n onItemClick(item: AXActionSheetItem) {\n this.close(item);\n if (item?.onClick) item.onClick();\n }\n\n close(e = null, isUserInteraction = true) {\n this.getHostElement().style.height = `${this.getHostElement().clientHeight}px`;\n setTimeout(() => {\n this.getHostElement().style.height = '0vh';\n });\n setTimeout(() => {\n this.actionSheetService.setActionSheetEventState({\n data: { state: 'close' },\n isUserInteraction,\n dialogRef: this.dialogRef,\n });\n this.dialogRef.close({\n component: this._componentRef,\n htmlElement: this.getHostElement(),\n data: e,\n });\n }, this.transitionDuration());\n }\n\n /**\n * @ignore\n */\n @HostListener('keydown.escape')\n protected onKeydownHandler() {\n const focusedOrHasFocused = this.getHostElement().matches(':focus-within');\n if (this.data.closeButton && focusedOrHasFocused) {\n this.close(null);\n }\n }\n}\n","@if (data.draggable) {\n <div\n (mousedown)=\"handleMouseDown($event)\"\n (touchstart)=\"handleTouchDown($event)\"\n class=\"ax-drag-handle-container\"\n >\n <div class=\"ax-drag-handle\"></div>\n </div>\n}\n@if (data.header) {\n <ax-header\n [class.draggable-header]=\"data.draggable\"\n (mousedown)=\"data.draggable ? handleMouseDown($event) : null\"\n (touchstart)=\"data.draggable ? handleTouchDown($event) : null\"\n >\n <ax-prefix>\n <ax-title>{{ data.title | translate | async }}</ax-title>\n\n @if (data.subTitle) {\n <ax-sub-title>\n {{ data.subTitle }}\n </ax-sub-title>\n }\n </ax-prefix>\n @if (data.closeButton) {\n <ax-suffix>\n <ax-close-button></ax-close-button>\n </ax-suffix>\n }\n </ax-header>\n}\n@if (this.data.content) {\n <div class=\"ax-custom-template-container\">\n <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"handleAttched($event)\"></ng-template>\n </div>\n}\n\n<div class=\"ax-action-list ax-action-list-vertical\">\n @for (item of data.items; let i = $index; track i) {\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <div\n class=\"ax-action-item ax-el-interactive ax-el-{{ item.color }}-blank\"\n [class.ax-state-disabled]=\"item.disabled\"\n [tabindex]=\"i\"\n (click)=\"onItemClick(item)\"\n >\n <div class=\"ax-action-item-prefix\">\n @if (item.icon) {\n <span class=\"ax-item-icon\" [class]=\"item.icon\"></span>\n }\n <ax-text>{{ item.text | translate | async }}</ax-text>\n </div>\n <div class=\"ax-action-item-suffix\"></div>\n </div>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n }\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\n\nimport { AXCommonModule } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { AsyncPipe } from '@angular/common';\nimport { AXActionSheetComponent } from './action-sheet.component';\nimport { AXActionSheetService } from './action-sheet.service';\n\nconst MODULES = [\n AXCommonModule,\n DragDropModule,\n A11yModule,\n AXButtonModule,\n PortalModule,\n AXDecoratorModule,\n AXTranslationModule,\n DialogModule,\n AsyncPipe,\n];\n\n@NgModule({\n declarations: [AXActionSheetComponent],\n imports: [...MODULES],\n exports: [AXActionSheetComponent],\n providers: [AXActionSheetService],\n})\nexport class AXActionSheetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -542,8 +542,8 @@ class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveCompo
542
542
  this._footPrint.month = val.monthOfYear;
543
543
  this._footPrint.day = val.dayOfMonth;
544
544
  if (isPlatformBrowser(this.platformID)) {
545
- const calendarSlots = Array.from(this.document.querySelectorAll('.ax-calendar-slot'));
546
- const selectedSlot = this.document.querySelector('.ax-state-selected');
545
+ const calendarSlots = Array.from(this.getHostElement().querySelectorAll('.ax-calendar-slot'));
546
+ const selectedSlot = this.getHostElement().querySelector('.ax-state-selected');
547
547
  if (selectedSlot) {
548
548
  selectedSlot.classList.remove('ax-state-selected');
549
549
  }