@ng-nest/ui 20.1.7 → 20.2.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/auto-complete/index.d.ts +10 -2
- package/cascade/index.d.ts +2 -1
- package/checkbox/index.d.ts +1 -1
- package/collapse/index.d.ts +0 -3
- package/color-picker/index.d.ts +2 -1
- package/core/index.d.ts +3 -65
- package/date-picker/index.d.ts +20 -4
- package/dialog/index.d.ts +27 -11
- package/drawer/index.d.ts +10 -12
- package/dropdown/index.d.ts +2 -1
- package/fesm2022/ng-nest-ui-affix.mjs +11 -11
- package/fesm2022/ng-nest-ui-alert.mjs +13 -13
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +18 -18
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +7 -7
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-attachments.mjs +18 -18
- package/fesm2022/ng-nest-ui-auto-complete.mjs +33 -26
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +18 -18
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +12 -12
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +13 -13
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +8 -8
- package/fesm2022/ng-nest-ui-bubble.mjs +20 -20
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +19 -19
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +11 -11
- package/fesm2022/ng-nest-ui-card.mjs +11 -11
- package/fesm2022/ng-nest-ui-carousel.mjs +21 -21
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +27 -25
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +12 -12
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +20 -28
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +31 -29
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +11 -11
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +18 -18
- package/fesm2022/ng-nest-ui-container.mjs +35 -35
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +20 -348
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-coversations.mjs +11 -11
- package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
- package/fesm2022/ng-nest-ui-date-picker.mjs +92 -78
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +20 -20
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +122 -73
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +7 -7
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +11 -11
- package/fesm2022/ng-nest-ui-drawer.mjs +67 -84
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +27 -25
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +11 -11
- package/fesm2022/ng-nest-ui-examples.mjs +7 -7
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +12 -12
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +19 -19
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +15 -15
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +14 -14
- package/fesm2022/ng-nest-ui-icon.mjs +14 -14
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +21 -21
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +11 -11
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +12 -12
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +19 -19
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +11 -11
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +18 -18
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +12 -12
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +23 -23
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +12 -12
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +18 -18
- package/fesm2022/ng-nest-ui-message-box.mjs +33 -20
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +13 -13
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +13 -13
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +8 -8
- package/fesm2022/ng-nest-ui-page-header.mjs +11 -11
- package/fesm2022/ng-nest-ui-pagination.mjs +11 -11
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -11
- package/fesm2022/ng-nest-ui-popover.mjs +25 -21
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +7 -7
- package/fesm2022/ng-nest-ui-progress.mjs +11 -11
- package/fesm2022/ng-nest-ui-prompts.mjs +11 -11
- package/fesm2022/ng-nest-ui-radio.mjs +12 -12
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +12 -12
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +11 -11
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +11 -11
- package/fesm2022/ng-nest-ui-ripple.mjs +11 -11
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +8 -8
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +34 -26
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-sender.mjs +15 -15
- package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +11 -11
- package/fesm2022/ng-nest-ui-slider-select.mjs +13 -13
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +12 -12
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +18 -18
- package/fesm2022/ng-nest-ui-steps.mjs +11 -11
- package/fesm2022/ng-nest-ui-suggestion.mjs +11 -11
- package/fesm2022/ng-nest-ui-switch.mjs +12 -12
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table-view.mjs +60 -60
- package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +60 -49
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +30 -30
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +29 -19
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
- package/fesm2022/ng-nest-ui-textarea.mjs +12 -12
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +11 -11
- package/fesm2022/ng-nest-ui-thought-chain.mjs +11 -11
- package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-picker.mjs +31 -29
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
- package/fesm2022/ng-nest-ui-tooltip.mjs +27 -74
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +12 -12
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +11 -11
- package/fesm2022/ng-nest-ui-tree-select.mjs +27 -25
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +23 -23
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +11 -11
- package/fesm2022/ng-nest-ui-upload.mjs +31 -28
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-welcome.mjs +11 -11
- package/message/index.d.ts +1 -3
- package/message-box/index.d.ts +4 -3
- package/notification/index.d.ts +1 -3
- package/package.json +52 -52
- package/popover/index.d.ts +2 -1
- package/radio/index.d.ts +1 -1
- package/select/index.d.ts +11 -2
- package/style/animates/base.scss +32 -0
- package/style/animates/conect.scss +32 -0
- package/style/animates/fade.scss +32 -0
- package/style/animates/index.scss +11 -0
- package/style/animates/move.scss +129 -0
- package/style/animates/opacity.scss +26 -0
- package/style/animates/slide.scss +113 -0
- package/style/core/index.css +353 -0
- package/style/core/index.css.map +1 -1
- package/style/core/index.scss +1 -6
- package/table/index.d.ts +15 -4
- package/table-view/index.d.ts +1 -1
- package/tag/index.d.ts +6 -1
- package/time-picker/index.d.ts +2 -1
- package/tooltip/index.d.ts +2 -12
- package/tree-select/index.d.ts +2 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, input, model, output, Component, viewChild, computed, inject, ViewContainerRef, signal, HostBinding, ChangeDetectionStrategy, ViewEncapsulation,
|
|
3
|
-
import { XPropertyFunction, XToCssPixelValue, XToBoolean, XProperty, XIsEmpty,
|
|
2
|
+
import { InjectionToken, input, model, output, Component, viewChild, computed, inject, ViewContainerRef, signal, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, HostListener, Directive, NgModule, TemplateRef, Injectable } from '@angular/core';
|
|
3
|
+
import { XPropertyFunction, XToCssPixelValue, XToBoolean, XProperty, XIsEmpty, XConfigService, XFillDefault } from '@ng-nest/ui/core';
|
|
4
4
|
import { XPortalService } from '@ng-nest/ui/portal';
|
|
5
|
-
import { Subject, takeUntil
|
|
5
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
6
6
|
import { Overlay } from '@angular/cdk/overlay';
|
|
7
7
|
import { XOutletDirective } from '@ng-nest/ui/outlet';
|
|
8
8
|
import { XButtonComponent } from '@ng-nest/ui/button';
|
|
9
9
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
10
10
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
11
11
|
import * as i1 from '@angular/cdk/portal';
|
|
12
|
-
import {
|
|
12
|
+
import { CdkPortalOutlet, PortalModule, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Drawer
|
|
@@ -66,13 +66,13 @@ class XDrawerProperty extends XPropertyFunction(X_DRAWER_CONFIG_NAME) {
|
|
|
66
66
|
*/
|
|
67
67
|
this.close = output();
|
|
68
68
|
}
|
|
69
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
70
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
69
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XDrawerProperty, isStandalone: true, selector: "x-drawer-property", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, backdropClose: { classPropertyName: "backdropClose", publicName: "backdropClose", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", close: "close" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
71
71
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerProperty, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
74
|
args: [{ selector: `${XDrawerPrefix}-property`, template: '' }]
|
|
75
|
-
}] });
|
|
75
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], backdropClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdropClose", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], close: [{ type: i0.Output, args: ["close"] }] } });
|
|
76
76
|
/**
|
|
77
77
|
* Drawer Container
|
|
78
78
|
* @selector x-drawer-container
|
|
@@ -84,10 +84,10 @@ const X_DRAWER_CONTAINER = new InjectionToken('X_DRAWER_CONTAINER');
|
|
|
84
84
|
* Drawer Container Property
|
|
85
85
|
*/
|
|
86
86
|
class XDrawerContainerProperty extends XProperty {
|
|
87
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
88
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
87
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContainerProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.5", type: XDrawerContainerProperty, isStandalone: true, selector: "x-drawer-container-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
89
89
|
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContainerProperty, decorators: [{
|
|
91
91
|
type: Component,
|
|
92
92
|
args: [{ selector: `${XDrawerContainerPrefix}-property`, template: '' }]
|
|
93
93
|
}] });
|
|
@@ -154,72 +154,57 @@ class XDrawerComponent extends XDrawerProperty {
|
|
|
154
154
|
return this.portal?.overlayRef?.hasAttached();
|
|
155
155
|
}
|
|
156
156
|
closePortal() {
|
|
157
|
-
if (this.
|
|
157
|
+
if (this.portalAttached()) {
|
|
158
|
+
this.portal?.overlayRef?.detach();
|
|
159
|
+
this.back$?.unsubscribe();
|
|
158
160
|
this.close.emit();
|
|
159
161
|
}
|
|
160
|
-
else {
|
|
161
|
-
|
|
162
|
-
this.portal?.overlayRef?.detach();
|
|
163
|
-
this.back$?.unsubscribe();
|
|
164
|
-
this.close.emit();
|
|
165
|
-
}
|
|
162
|
+
else if (this.container && this.visible()) {
|
|
163
|
+
this.visible.set(false);
|
|
166
164
|
}
|
|
167
165
|
}
|
|
168
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
169
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
166
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XDrawerComponent, isStandalone: true, selector: "x-drawer", host: { properties: { "class.x-drawer-visible": "this.getVisible" } }, viewQueries: [{ propertyName: "drawerTpl", first: true, predicate: ["drawerTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
170
168
|
}
|
|
171
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerComponent, decorators: [{
|
|
172
170
|
type: Component,
|
|
173
|
-
args: [{ selector: `${XDrawerPrefix}`, imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
171
|
+
args: [{ selector: `${XDrawerPrefix}`, imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n", styles: [".x-drawer{margin:0;padding:0}.x-drawer{background-color:var(--x-background);position:relative;box-shadow:var(--x-box-shadow)}.x-drawer-header{padding:1rem 1rem .5rem}.x-drawer-title{font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-close{position:absolute;top:.425rem;right:.425rem}.x-drawer-title{padding:0}.x-drawer-content{padding:0 1rem 1rem;height:calc(100% - 3rem);overflow:auto}.x-drawer-no-title .x-drawer-content{padding:.5rem 1rem}\n"] }]
|
|
174
172
|
}], ctorParameters: () => [], propDecorators: { getVisible: [{
|
|
175
173
|
type: HostBinding,
|
|
176
174
|
args: ['class.x-drawer-visible']
|
|
177
|
-
}] } });
|
|
175
|
+
}], drawerTpl: [{ type: i0.ViewChild, args: ['drawerTpl', { isSignal: true }] }] } });
|
|
178
176
|
|
|
179
|
-
class XDrawerPortalComponent
|
|
177
|
+
class XDrawerPortalComponent {
|
|
180
178
|
constructor() {
|
|
181
|
-
super(...arguments);
|
|
182
179
|
this._has = true;
|
|
180
|
+
this.placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : []));
|
|
183
181
|
this.portalOutlet = viewChild.required(CdkPortalOutlet);
|
|
184
|
-
this.animationChanged = new EventEmitter();
|
|
185
|
-
}
|
|
186
|
-
done({ toState, totalTime }) {
|
|
187
|
-
this.animationChanged.next({ action: 'done', state: toState, totalTime });
|
|
188
182
|
}
|
|
189
|
-
|
|
190
|
-
this.
|
|
183
|
+
get animateEnter() {
|
|
184
|
+
return `x-slide-${this.placement()}-enter`;
|
|
191
185
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
throw Error('drawer portal has attached');
|
|
195
|
-
}
|
|
196
|
-
return this.portalOutlet().attachComponentPortal(portal);
|
|
186
|
+
get animateLeave() {
|
|
187
|
+
return `x-slide-${this.placement()}-leave`;
|
|
197
188
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
throw Error('drawer portal has attached');
|
|
201
|
-
}
|
|
202
|
-
return this.portalOutlet().attachTemplatePortal(portal);
|
|
189
|
+
ngAfterViewInit() {
|
|
190
|
+
this.portalOutlet().setDisposeFn(() => { });
|
|
203
191
|
}
|
|
204
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
205
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
192
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerPortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XDrawerPortalComponent, isStandalone: true, selector: "x-drawer-portal", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.x-drawer-portal": "this._has", "animate.enter": "this.animateEnter", "animate.leave": "this.animateLeave" } }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\r\n", styles: [".x-drawer-portal{margin:0;padding:0}.x-drawer-portal{height:100%;width:100%;background-color:var(--x-background-100);position:relative;box-shadow:var(--x-box-shadow);overflow:auto;padding:1rem}.x-drawer-portal-title{display:block;margin:0 0 .5rem;font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-portal-content{display:block;margin:0 -1rem;padding:0 1rem;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
206
194
|
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerPortalComponent, decorators: [{
|
|
208
196
|
type: Component,
|
|
209
|
-
args: [{ selector: 'x-drawer-portal', imports: [PortalModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
197
|
+
args: [{ selector: 'x-drawer-portal', imports: [PortalModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\r\n", styles: [".x-drawer-portal{margin:0;padding:0}.x-drawer-portal{height:100%;width:100%;background-color:var(--x-background-100);position:relative;box-shadow:var(--x-box-shadow);overflow:auto;padding:1rem}.x-drawer-portal-title{display:block;margin:0 0 .5rem;font-weight:600;color:var(--x-text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x-drawer-portal-content{display:block;margin:0 -1rem;padding:0 1rem;overflow:auto}\n"] }]
|
|
210
198
|
}], propDecorators: { _has: [{
|
|
211
199
|
type: HostBinding,
|
|
212
200
|
args: ['class.x-drawer-portal']
|
|
213
|
-
}], placement: [{
|
|
201
|
+
}], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], animateEnter: [{
|
|
214
202
|
type: HostBinding,
|
|
215
|
-
args: ['
|
|
216
|
-
}],
|
|
217
|
-
type:
|
|
218
|
-
args: ['
|
|
219
|
-
}],
|
|
220
|
-
type: HostListener,
|
|
221
|
-
args: ['@x-slide-animation.start', ['$event']]
|
|
222
|
-
}] } });
|
|
203
|
+
args: ['animate.enter']
|
|
204
|
+
}], animateLeave: [{
|
|
205
|
+
type: HostBinding,
|
|
206
|
+
args: ['animate.leave']
|
|
207
|
+
}], portalOutlet: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkPortalOutlet), { isSignal: true }] }] } });
|
|
223
208
|
|
|
224
209
|
// TODO: add more function
|
|
225
210
|
class XDrawerRef {
|
|
@@ -228,12 +213,7 @@ class XDrawerRef {
|
|
|
228
213
|
this.containerInstance = containerInstance;
|
|
229
214
|
}
|
|
230
215
|
close() {
|
|
231
|
-
this.
|
|
232
|
-
.pipe(filter((event) => event.state === 'void' && event.action === 'done'), take(1))
|
|
233
|
-
.subscribe(() => {
|
|
234
|
-
this.overlayRef.dispose();
|
|
235
|
-
});
|
|
236
|
-
this.containerInstance.placement = 'void';
|
|
216
|
+
this.overlayRef.detach();
|
|
237
217
|
}
|
|
238
218
|
}
|
|
239
219
|
|
|
@@ -244,10 +224,10 @@ class XDrawerCloseDirective {
|
|
|
244
224
|
onCloseClick() {
|
|
245
225
|
this.drawerRef && this.drawerRef.close();
|
|
246
226
|
}
|
|
247
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
248
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
227
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
228
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.5", type: XDrawerCloseDirective, isStandalone: true, selector: "[x-drawer-close]", host: { listeners: { "click": "onCloseClick($event)" } }, ngImport: i0 }); }
|
|
249
229
|
}
|
|
250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerCloseDirective, decorators: [{
|
|
251
231
|
type: Directive,
|
|
252
232
|
args: [{
|
|
253
233
|
selector: `[x-drawer-close]`
|
|
@@ -260,10 +240,10 @@ class XDrawerTitleDirective {
|
|
|
260
240
|
constructor() {
|
|
261
241
|
this._has = true;
|
|
262
242
|
}
|
|
263
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
264
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
243
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
244
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.5", type: XDrawerTitleDirective, isStandalone: true, selector: "[x-drawer-title]", host: { properties: { "class.x-drawer-portal-title": "this._has" } }, ngImport: i0 }); }
|
|
265
245
|
}
|
|
266
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerTitleDirective, decorators: [{
|
|
267
247
|
type: Directive,
|
|
268
248
|
args: [{
|
|
269
249
|
selector: `[x-drawer-title]`
|
|
@@ -276,10 +256,10 @@ class XDrawerContentDirective {
|
|
|
276
256
|
constructor() {
|
|
277
257
|
this._has = true;
|
|
278
258
|
}
|
|
279
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
280
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
259
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
260
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.5", type: XDrawerContentDirective, isStandalone: true, selector: "[x-drawer-content], x-drawer-content", host: { properties: { "class.x-drawer-portal-content": "this._has" } }, ngImport: i0 }); }
|
|
281
261
|
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContentDirective, decorators: [{
|
|
283
263
|
type: Directive,
|
|
284
264
|
args: [{
|
|
285
265
|
selector: `[x-drawer-content], x-drawer-content`
|
|
@@ -294,30 +274,30 @@ class XDrawerContainerComponent extends XDrawerContainerProperty {
|
|
|
294
274
|
super(...arguments);
|
|
295
275
|
this.className = XDrawerContainerPrefix;
|
|
296
276
|
}
|
|
297
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
298
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
277
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
278
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.5", type: XDrawerContainerComponent, isStandalone: true, selector: "x-drawer-container", host: { properties: { "class": "this.className" } }, providers: [
|
|
299
279
|
{
|
|
300
280
|
provide: X_DRAWER_CONTAINER,
|
|
301
281
|
useExisting: XDrawerContainerComponent
|
|
302
282
|
}
|
|
303
|
-
], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [".x-drawer-container{margin:0;padding:0}.x-drawer-container{position:relative;z-index:1;box-sizing:border-box;display:block;overflow:hidden}.x-drawer-container .x-drawer{position:absolute;display:block;outline:0;z-index:
|
|
283
|
+
], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [".x-drawer-container{margin:0;padding:0}.x-drawer-container{position:relative;z-index:1;box-sizing:border-box;display:block;overflow:hidden}.x-drawer-container .x-drawer{position:absolute;display:block;outline:0;z-index:1001;width:initial;height:initial}.x-drawer-container .x-drawer-left{left:0;top:0}.x-drawer-container .x-drawer-right{right:0;top:0}.x-drawer-container .x-drawer-top{top:0;left:0}.x-drawer-container .x-drawer-bottom{bottom:0;left:0}.x-drawer-container .x-drawer-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;background:#00000052}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
304
284
|
}
|
|
305
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
285
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerContainerComponent, decorators: [{
|
|
306
286
|
type: Component,
|
|
307
287
|
args: [{ selector: XDrawerContainerPrefix, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
308
288
|
{
|
|
309
289
|
provide: X_DRAWER_CONTAINER,
|
|
310
290
|
useExisting: XDrawerContainerComponent
|
|
311
291
|
}
|
|
312
|
-
], template: "<ng-content></ng-content>\r\n", styles: [".x-drawer-container{margin:0;padding:0}.x-drawer-container{position:relative;z-index:1;box-sizing:border-box;display:block;overflow:hidden}.x-drawer-container .x-drawer{position:absolute;display:block;outline:0;z-index:
|
|
292
|
+
], template: "<ng-content></ng-content>\r\n", styles: [".x-drawer-container{margin:0;padding:0}.x-drawer-container{position:relative;z-index:1;box-sizing:border-box;display:block;overflow:hidden}.x-drawer-container .x-drawer{position:absolute;display:block;outline:0;z-index:1001;width:initial;height:initial}.x-drawer-container .x-drawer-left{left:0;top:0}.x-drawer-container .x-drawer-right{right:0;top:0}.x-drawer-container .x-drawer-top{top:0;left:0}.x-drawer-container .x-drawer-bottom{bottom:0;left:0}.x-drawer-container .x-drawer-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;background:#00000052}\n"] }]
|
|
313
293
|
}], propDecorators: { className: [{
|
|
314
294
|
type: HostBinding,
|
|
315
295
|
args: ['class']
|
|
316
296
|
}] } });
|
|
317
297
|
|
|
318
298
|
class XDrawerModule {
|
|
319
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
320
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
299
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
300
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: XDrawerModule, imports: [XDrawerComponent,
|
|
321
301
|
XDrawerCloseDirective,
|
|
322
302
|
XDrawerTitleDirective,
|
|
323
303
|
XDrawerContentDirective,
|
|
@@ -326,9 +306,9 @@ class XDrawerModule {
|
|
|
326
306
|
XDrawerTitleDirective,
|
|
327
307
|
XDrawerContentDirective,
|
|
328
308
|
XDrawerContainerComponent] }); }
|
|
329
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
309
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerModule, imports: [XDrawerComponent] }); }
|
|
330
310
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerModule, decorators: [{
|
|
332
312
|
type: NgModule,
|
|
333
313
|
args: [{
|
|
334
314
|
exports: [
|
|
@@ -378,17 +358,20 @@ class XDrawerService {
|
|
|
378
358
|
});
|
|
379
359
|
const { overlayRef, componentRef } = portal || {};
|
|
380
360
|
const { instance } = componentRef || {};
|
|
381
|
-
|
|
361
|
+
componentRef?.setInput('placement', option.placement);
|
|
382
362
|
const drawerRef = new XDrawerRef(overlayRef, instance);
|
|
383
363
|
if (content instanceof TemplateRef) {
|
|
384
|
-
instance.
|
|
364
|
+
instance.portal = new TemplatePortal(content, option.viewContainerRef, {
|
|
365
|
+
$implicit: option.data,
|
|
366
|
+
drawerRef: drawerRef
|
|
367
|
+
});
|
|
385
368
|
}
|
|
386
369
|
else {
|
|
387
370
|
const injector = this.portalService.createInjector([
|
|
388
371
|
{ provide: X_DRAWER_DATA, useValue: option.data },
|
|
389
372
|
{ provide: XDrawerRef, useValue: drawerRef }
|
|
390
373
|
]);
|
|
391
|
-
instance.
|
|
374
|
+
instance.portal = new ComponentPortal(content, option.viewContainerRef, injector);
|
|
392
375
|
}
|
|
393
376
|
if (option.hasBackdrop && option.backdropClose && overlayRef)
|
|
394
377
|
overlayRef.backdropClick().subscribe(() => {
|
|
@@ -396,10 +379,10 @@ class XDrawerService {
|
|
|
396
379
|
});
|
|
397
380
|
return drawerRef;
|
|
398
381
|
}
|
|
399
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
400
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
382
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
383
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerService, providedIn: 'root' }); }
|
|
401
384
|
}
|
|
402
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
385
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XDrawerService, decorators: [{
|
|
403
386
|
type: Injectable,
|
|
404
387
|
args: [{ providedIn: 'root' }]
|
|
405
388
|
}], ctorParameters: () => [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-drawer.mjs","sources":["../../../../lib/ng-nest/ui/drawer/drawer.property.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.html","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.html","../../../../lib/ng-nest/ui/drawer/drawer-ref.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.directives.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.html","../../../../lib/ng-nest/ui/drawer/drawer.module.ts","../../../../lib/ng-nest/ui/drawer/drawer.service.ts","../../../../lib/ng-nest/ui/drawer/ng-nest-ui-drawer.ts"],"sourcesContent":["import { XPropertyFunction, XProperty, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, InjectionToken, ViewContainerRef, input, model, output } from '@angular/core';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport type { XDrawerRef } from './drawer-ref';\r\nimport type { XTemplate, XPosition, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Drawer\r\n * @selector x-drawer\r\n * @decorator component\r\n */\r\nexport const XDrawerPrefix = 'x-drawer';\r\nexport const X_DRAWER_CONFIG_NAME = 'drawer';\r\nexport const X_DRAWER_DATA = new InjectionToken<any>('XDrawerData');\r\n\r\n/**\r\n * Drawer Property\r\n */\r\n@Component({ selector: `${XDrawerPrefix}-property`, template: '' })\r\nexport class XDrawerProperty extends XPropertyFunction(X_DRAWER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n readonly visible = model<boolean>(false);\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n */\r\n readonly placement = input<XPosition>(this.config?.placement ?? 'right');\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n */\r\n readonly size = input<string, XNumber>(this.config?.size ?? '30%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n */\r\n readonly backdropClose = input<boolean, XBoolean>(this.config?.backdropClose ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n */\r\n readonly hasBackdrop = input<boolean, XBoolean>(this.config?.hasBackdrop ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n readonly className = input<string>(this.config?.className ?? '');\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed event\r\n */\r\n readonly close = output();\r\n}\r\n\r\n/**\r\n * Drawer Option\r\n */\r\nexport interface XDrawerOption {\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n * @default 'right'\r\n * @withConfig true\r\n */\r\n placement?: XPosition;\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n * @default '30%'\r\n * @withConfig true\r\n */\r\n size?: string;\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n className?: string;\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n * @default true\r\n * @withConfig true\r\n */\r\n backdropClose?: boolean;\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n * @default true\r\n * @withConfig true\r\n */\r\n hasBackdrop?: boolean;\r\n /**\r\n * @zh_CN 数据,通过 \"@Inject(X_DRAWER_DATA)\" 来接收数据\r\n * @en_US Data. Receive data by \"@Inject(X_DRAWER_DATA)\"\r\n */\r\n data?: any;\r\n /**\r\n * @zh_CN 视图容器实例可以包含其他视图容器。\r\n * @en_US A view container instance can contain other view containers.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n}\r\n\r\n/**\r\n * Drawer Container\r\n * @selector x-drawer-container\r\n * @decorator component\r\n */\r\nexport const XDrawerContainerPrefix = 'x-drawer-container';\r\nexport const X_DRAWER_CONTAINER = new InjectionToken('X_DRAWER_CONTAINER');\r\n\r\n/**\r\n * Drawer Container Property\r\n */\r\n@Component({ selector: `${XDrawerContainerPrefix}-property`, template: '' })\r\nexport class XDrawerContainerProperty extends XProperty {}\r\n\r\n/**\r\n * @zh_CN 创建的抽屉对象\r\n * @en_US Drawer object created\r\n */\r\nexport interface XDrawerPortalOverlayRef extends XPortalOverlayRef<XDrawerPortalComponent> {\r\n drawerRef?: XDrawerRef<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 抽屉动画状态\r\n * @en_US Drawer animation status\r\n */\r\nexport type XDrawerAnimationState = XPosition | 'void';\r\n\r\n/**\r\n * @zh_CN 抽屉动画事件\r\n * @en_US Drawer animation event\r\n */\r\nexport interface XDrawerAnimationEvent {\r\n state: XDrawerAnimationState;\r\n action: 'start' | 'done';\r\n totalTime: number;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n HostBinding,\r\n inject,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n AfterViewInit,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XDrawerPrefix, XDrawerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\nimport { XIsEmpty, XOpacityAnimation, XSlideAnimation } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XDrawerPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent],\r\n templateUrl: './drawer.component.html',\r\n styleUrls: ['./drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XSlideAnimation, XOpacityAnimation]\r\n})\r\nexport class XDrawerComponent extends XDrawerProperty implements AfterViewInit, OnDestroy {\r\n @HostBinding('class.x-drawer-visible') get getVisible() {\r\n return this.visible();\r\n }\r\n drawerTpl = viewChild.required<TemplateRef<void>>('drawerTpl');\r\n portal!: XPortalOverlayRef<any>;\r\n back$: Subscription | null = null;\r\n width = computed(() => {\r\n return ['left', 'right'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n height = computed(() => {\r\n return ['top', 'bottom'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n\r\n private overlay = inject(Overlay);\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n container = inject<XDrawerContainerComponent>(X_DRAWER_CONTAINER, { optional: true });\r\n hasContainer = signal(false);\r\n classMap = computed(() => ({\r\n [`${XDrawerPrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XDrawerPrefix}-no-title`]: XIsEmpty(this.title())\r\n }));\r\n visibleChanged = toObservable(this.visible);\r\n\r\n constructor() {\r\n super();\r\n this.visibleChanged.pipe(takeUntil(this.unSubject)).subscribe(() => this.setVisible());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.hasContainer.set(!!this.container);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.back$?.unsubscribe();\r\n }\r\n\r\n setVisible() {\r\n if (this.visible()) {\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n if (this.hasContainer()) return;\r\n this.portal = this.portalService.attach({\r\n content: this.drawerTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n panelClass: this.className(),\r\n hasBackdrop: this.hasBackdrop(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(this.placement(), this.width(), this.height())\r\n }\r\n });\r\n if (this.portal.overlayRef && this.backdropClose()) {\r\n this.back$ = this.portal.overlayRef.backdropClick().subscribe(() => this.closePortal());\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.container) {\r\n this.close.emit();\r\n } else {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.back$?.unsubscribe();\r\n this.close.emit();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-template #drawerTpl>\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div class=\"x-drawer-backdrop\" (click)=\"closePortal()\"></div>\r\n }\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [class.x-drawer-visible]=\"visible()\"\r\n [@x-slide-animation]=\"placement()\"\r\n >\r\n @if (title()) {\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n","import { BasePortalOutlet, PortalModule, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n ViewEncapsulation,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XSlideAnimation } from '@ng-nest/ui/core';\r\nimport { XDrawerAnimationEvent, XDrawerAnimationState } from './drawer.property';\r\nimport { AnimationEvent } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'x-drawer-portal',\r\n imports: [PortalModule],\r\n templateUrl: './drawer-portal.component.html',\r\n styleUrls: ['./drawer-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XSlideAnimation]\r\n})\r\nexport class XDrawerPortalComponent extends BasePortalOutlet {\r\n @HostBinding('class.x-drawer-portal') _has = true;\r\n @HostBinding('@x-slide-animation') public placement?: XDrawerAnimationState;\r\n @HostListener('@x-slide-animation.done', ['$event']) done({ toState, totalTime }: AnimationEvent) {\r\n this.animationChanged.next({ action: 'done', state: toState as XDrawerAnimationState, totalTime });\r\n }\r\n @HostListener('@x-slide-animation.start', ['$event']) start({ toState, totalTime }: AnimationEvent) {\r\n this.animationChanged.next({ action: 'start', state: toState as XDrawerAnimationState, totalTime });\r\n }\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n animationChanged = new EventEmitter<XDrawerAnimationEvent>();\r\n\r\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\r\n if (this.portalOutlet().hasAttached()) {\r\n throw Error('drawer portal has attached');\r\n }\r\n return this.portalOutlet().attachComponentPortal(portal);\r\n }\r\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\r\n if (this.portalOutlet().hasAttached()) {\r\n throw Error('drawer portal has attached');\r\n }\r\n return this.portalOutlet().attachTemplatePortal(portal);\r\n }\r\n}\r\n","<ng-template cdkPortalOutlet></ng-template>\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { filter, take } from 'rxjs';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\n\r\n// TODO: add more function\r\nexport class XDrawerRef<C> {\r\n componentInstance!: C;\r\n constructor(\r\n public overlayRef: OverlayRef,\r\n public containerInstance: XDrawerPortalComponent\r\n ) {}\r\n close() {\r\n this.containerInstance.animationChanged\r\n .pipe(\r\n filter((event) => event.state === 'void' && event.action === 'done'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.overlayRef.dispose();\r\n });\r\n this.containerInstance.placement = 'void';\r\n }\r\n}\r\n","import { Directive, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { XDrawerRef } from './drawer-ref';\r\n\r\n@Directive({\r\n selector: `[x-drawer-close]`\r\n})\r\nexport class XDrawerCloseDirective {\r\n @HostListener('click', ['$event']) onCloseClick() {\r\n this.drawerRef && this.drawerRef.close();\r\n }\r\n drawerRef = inject(XDrawerRef, { optional: true });\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-title]`\r\n})\r\nexport class XDrawerTitleDirective {\r\n @HostBinding('class.x-drawer-portal-title') _has = true;\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-content], x-drawer-content`\r\n})\r\nexport class XDrawerContentDirective {\r\n @HostBinding('class.x-drawer-portal-content') _has = true;\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\nimport { XDrawerContainerPrefix, XDrawerContainerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\n\r\n@Component({\r\n selector: XDrawerContainerPrefix,\r\n templateUrl: './drawer-container.component.html',\r\n styleUrls: ['./drawer-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_DRAWER_CONTAINER,\r\n useExisting: XDrawerContainerComponent\r\n }\r\n ]\r\n})\r\nexport class XDrawerContainerComponent extends XDrawerContainerProperty {\r\n @HostBinding('class') className = XDrawerContainerPrefix;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDrawerComponent } from './drawer.component';\r\nimport { XDrawerCloseDirective, XDrawerContentDirective, XDrawerTitleDirective } from './drawer-portal.directives';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\n\r\n@NgModule({\r\n exports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ],\r\n imports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ]\r\n})\r\nexport class XDrawerModule {}\r\n","import { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Injectable, TemplateRef, inject } from '@angular/core';\r\nimport { XFillDefault, XConfigService, XDrawerConfig } from '@ng-nest/ui/core';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport { XDrawerRef } from './drawer-ref';\r\nimport { XDrawerOption, X_DRAWER_CONFIG_NAME, X_DRAWER_DATA } from './drawer.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XDrawerService {\r\n default: XDrawerOption = {\r\n placement: 'right',\r\n size: '30%',\r\n hasBackdrop: true,\r\n backdropClose: true\r\n };\r\n configDefault?: XDrawerConfig;\r\n private portalService = inject(XPortalService);\r\n private configService = inject(XConfigService);\r\n private overlay = inject(Overlay);\r\n\r\n constructor() {\r\n this.configDefault = this.configService.getConfigForComponent(X_DRAWER_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n create<T>(content: TemplateRef<any> | ComponentType<T>, option: XDrawerOption = {}): XDrawerRef<T> {\r\n XFillDefault(option, this.default);\r\n const width = ['left', 'right'].includes(option.placement as string) ? option.size : '100%';\r\n const height = ['top', 'bottom'].includes(option.placement as string) ? option.size : '100%';\r\n const portal = this.portalService.attach<XDrawerPortalComponent>({\r\n content: XDrawerPortalComponent,\r\n viewContainerRef: option.viewContainerRef,\r\n overlayConfig: {\r\n hasBackdrop: option.hasBackdrop,\r\n panelClass: option.className,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(option.placement, width, height)\r\n }\r\n });\r\n const { overlayRef, componentRef } = portal || {};\r\n const { instance } = componentRef! || {};\r\n instance.placement = option.placement;\r\n const drawerRef = new XDrawerRef<T>(overlayRef!, instance);\r\n if (content instanceof TemplateRef) {\r\n instance.attachTemplatePortal(\r\n new TemplatePortal(content, option.viewContainerRef!, { $implicit: option.data, drawerRef: drawerRef })\r\n );\r\n } else {\r\n const injector = this.portalService.createInjector([\r\n { provide: X_DRAWER_DATA, useValue: option.data },\r\n { provide: XDrawerRef, useValue: drawerRef }\r\n ]);\r\n\r\n instance.attachComponentPortal(new ComponentPortal(content, option.viewContainerRef, injector));\r\n }\r\n if (option.hasBackdrop && option.backdropClose && overlayRef)\r\n overlayRef.backdropClick().subscribe(() => {\r\n drawerRef.close();\r\n });\r\n\r\n return drawerRef;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-drawer.mjs","sources":["../../../../lib/ng-nest/ui/drawer/drawer.property.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.ts","../../../../lib/ng-nest/ui/drawer/drawer.component.html","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.component.html","../../../../lib/ng-nest/ui/drawer/drawer-ref.ts","../../../../lib/ng-nest/ui/drawer/drawer-portal.directives.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.ts","../../../../lib/ng-nest/ui/drawer/drawer-container.component.html","../../../../lib/ng-nest/ui/drawer/drawer.module.ts","../../../../lib/ng-nest/ui/drawer/drawer.service.ts","../../../../lib/ng-nest/ui/drawer/ng-nest-ui-drawer.ts"],"sourcesContent":["import { XPropertyFunction, XProperty, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, InjectionToken, ViewContainerRef, input, model, output } from '@angular/core';\r\nimport { XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport type { XDrawerRef } from './drawer-ref';\r\nimport type { XTemplate, XPosition, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Drawer\r\n * @selector x-drawer\r\n * @decorator component\r\n */\r\nexport const XDrawerPrefix = 'x-drawer';\r\nexport const X_DRAWER_CONFIG_NAME = 'drawer';\r\nexport const X_DRAWER_DATA = new InjectionToken<any>('XDrawerData');\r\n\r\n/**\r\n * Drawer Property\r\n */\r\n@Component({ selector: `${XDrawerPrefix}-property`, template: '' })\r\nexport class XDrawerProperty extends XPropertyFunction(X_DRAWER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示/隐藏\r\n * @en_US Show/hide\r\n */\r\n readonly visible = model<boolean>(false);\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n */\r\n readonly placement = input<XPosition>(this.config?.placement ?? 'right');\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n */\r\n readonly size = input<string, XNumber>(this.config?.size ?? '30%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n */\r\n readonly backdropClose = input<boolean, XBoolean>(this.config?.backdropClose ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n */\r\n readonly hasBackdrop = input<boolean, XBoolean>(this.config?.hasBackdrop ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n readonly className = input<string>(this.config?.className ?? '');\r\n /**\r\n * @zh_CN 关闭的事件\r\n * @en_US Closed event\r\n */\r\n readonly close = output();\r\n}\r\n\r\n/**\r\n * Drawer Option\r\n */\r\nexport interface XDrawerOption {\r\n /**\r\n * @zh_CN 展示方向\r\n * @en_US Display direction\r\n * @default 'right'\r\n * @withConfig true\r\n */\r\n placement?: XPosition;\r\n /**\r\n * @zh_CN 尺寸,支持固定值\r\n * @en_US Size, supports fixed value\r\n * @default '30%'\r\n * @withConfig true\r\n */\r\n size?: string;\r\n /**\r\n * @zh_CN 自定义样式名\r\n * @en_US Custom style name\r\n */\r\n className?: string;\r\n /**\r\n * @zh_CN 点击遮罩关闭\r\n * @en_US Click the mask to close\r\n * @default true\r\n * @withConfig true\r\n */\r\n backdropClose?: boolean;\r\n /**\r\n * @zh_CN 是否显示背景遮罩\r\n * @en_US Whether to display the background mask\r\n * @default true\r\n * @withConfig true\r\n */\r\n hasBackdrop?: boolean;\r\n /**\r\n * @zh_CN 数据,通过 \"@Inject(X_DRAWER_DATA)\" 来接收数据\r\n * @en_US Data. Receive data by \"@Inject(X_DRAWER_DATA)\"\r\n */\r\n data?: any;\r\n /**\r\n * @zh_CN 视图容器实例可以包含其他视图容器。\r\n * @en_US A view container instance can contain other view containers.\r\n */\r\n viewContainerRef?: ViewContainerRef;\r\n}\r\n\r\n/**\r\n * Drawer Container\r\n * @selector x-drawer-container\r\n * @decorator component\r\n */\r\nexport const XDrawerContainerPrefix = 'x-drawer-container';\r\nexport const X_DRAWER_CONTAINER = new InjectionToken('X_DRAWER_CONTAINER');\r\n\r\n/**\r\n * Drawer Container Property\r\n */\r\n@Component({ selector: `${XDrawerContainerPrefix}-property`, template: '' })\r\nexport class XDrawerContainerProperty extends XProperty {}\r\n\r\n/**\r\n * @zh_CN 创建的抽屉对象\r\n * @en_US Drawer object created\r\n */\r\nexport interface XDrawerPortalOverlayRef extends XPortalOverlayRef<XDrawerPortalComponent> {\r\n drawerRef?: XDrawerRef<any>;\r\n}\r\n\r\n/**\r\n * @zh_CN 抽屉动画状态\r\n * @en_US Drawer animation status\r\n */\r\nexport type XDrawerAnimationState = XPosition | 'void';\r\n\r\n/**\r\n * @zh_CN 抽屉动画事件\r\n * @en_US Drawer animation event\r\n */\r\nexport interface XDrawerAnimationEvent {\r\n state: XDrawerAnimationState;\r\n action: 'start' | 'done';\r\n totalTime: number;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n HostBinding,\r\n inject,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n AfterViewInit,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XDrawerPrefix, XDrawerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XDrawerPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, XOutletDirective, XButtonComponent],\r\n templateUrl: './drawer.component.html',\r\n styleUrls: ['./drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerComponent extends XDrawerProperty implements AfterViewInit, OnDestroy {\r\n @HostBinding('class.x-drawer-visible') get getVisible() {\r\n return this.visible();\r\n }\r\n drawerTpl = viewChild.required<TemplateRef<void>>('drawerTpl');\r\n portal!: XPortalOverlayRef<any>;\r\n back$: Subscription | null = null;\r\n width = computed(() => {\r\n return ['left', 'right'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n height = computed(() => {\r\n return ['top', 'bottom'].includes(this.placement()) ? this.size() : '100%';\r\n });\r\n\r\n private overlay = inject(Overlay);\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n container = inject<XDrawerContainerComponent>(X_DRAWER_CONTAINER, { optional: true });\r\n hasContainer = signal(false);\r\n classMap = computed(() => ({\r\n [`${XDrawerPrefix}-${this.placement()}`]: !XIsEmpty(this.placement()),\r\n [`${XDrawerPrefix}-no-title`]: XIsEmpty(this.title())\r\n }));\r\n visibleChanged = toObservable(this.visible);\r\n\r\n constructor() {\r\n super();\r\n this.visibleChanged.pipe(takeUntil(this.unSubject)).subscribe(() => this.setVisible());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.hasContainer.set(!!this.container);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.back$?.unsubscribe();\r\n }\r\n\r\n setVisible() {\r\n if (this.visible()) {\r\n this.createPortal();\r\n } else {\r\n this.closePortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n if (this.hasContainer()) return;\r\n this.portal = this.portalService.attach({\r\n content: this.drawerTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n panelClass: this.className(),\r\n hasBackdrop: this.hasBackdrop(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(this.placement(), this.width(), this.height())\r\n }\r\n });\r\n if (this.portal.overlayRef && this.backdropClose()) {\r\n this.back$ = this.portal.overlayRef.backdropClick().subscribe(() => this.closePortal());\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.back$?.unsubscribe();\r\n this.close.emit();\r\n } else if (this.container && this.visible()) {\r\n this.visible.set(false);\r\n }\r\n }\r\n}\r\n","<ng-template #drawerTpl>\r\n @if (visible()) {\r\n @if (hasContainer() && hasBackdrop()) {\r\n <div\r\n class=\"x-drawer-backdrop\"\r\n [animate.enter]=\"`x-opacity-enter`\"\r\n [animate.leave]=\"`x-opacity-leave`\"\r\n (click)=\"closePortal()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"x-drawer\"\r\n [ngClass]=\"classMap()\"\r\n [style.width]=\"hasContainer() ? width() : '100%'\"\r\n [style.height]=\"hasContainer() ? height() : '100%'\"\r\n [animate.enter]=\"`x-slide-${placement()}-enter`\"\r\n [animate.leave]=\"`x-slide-${placement()}-leave`\"\r\n >\r\n @if (title()) {\r\n {{ hasContainer() }} {{ hasBackdrop() }}\r\n <div class=\"x-drawer-header\">\r\n <div class=\"x-drawer-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <x-button\r\n size=\"small\"\r\n class=\"x-drawer-close\"\r\n icon=\"fto-x\"\r\n type=\"text\"\r\n (click)=\"closePortal()\"\r\n closable\r\n ></x-button>\r\n </div>\r\n }\r\n <div class=\"x-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n@if (hasContainer()) {\r\n <ng-container *ngTemplateOutlet=\"drawerTpl\"></ng-container>\r\n}\r\n","import { PortalModule, CdkPortalOutlet, Portal } from '@angular/cdk/portal';\r\nimport { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input, viewChild } from '@angular/core';\r\nimport { XPosition } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: 'x-drawer-portal',\r\n imports: [PortalModule],\r\n templateUrl: './drawer-portal.component.html',\r\n styleUrls: ['./drawer-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XDrawerPortalComponent {\r\n @HostBinding('class.x-drawer-portal') _has = true;\r\n\r\n placement = input<XPosition>();\r\n portal!: Portal<any>;\r\n\r\n @HostBinding('animate.enter') get animateEnter() {\r\n return `x-slide-${this.placement()}-enter`;\r\n }\r\n @HostBinding('animate.leave') get animateLeave() {\r\n return `x-slide-${this.placement()}-leave`;\r\n }\r\n\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n ngAfterViewInit() {\r\n this.portalOutlet().setDisposeFn(() => {});\r\n }\r\n}\r\n","<ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\n\r\n// TODO: add more function\r\nexport class XDrawerRef<C> {\r\n componentInstance!: C;\r\n constructor(\r\n public overlayRef: OverlayRef,\r\n public containerInstance: XDrawerPortalComponent\r\n ) {}\r\n close() {\r\n this.overlayRef.detach();\r\n }\r\n}\r\n","import { Directive, HostBinding, HostListener, inject } from '@angular/core';\r\nimport { XDrawerRef } from './drawer-ref';\r\n\r\n@Directive({\r\n selector: `[x-drawer-close]`\r\n})\r\nexport class XDrawerCloseDirective {\r\n @HostListener('click', ['$event']) onCloseClick() {\r\n this.drawerRef && this.drawerRef.close();\r\n }\r\n drawerRef = inject(XDrawerRef, { optional: true });\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-title]`\r\n})\r\nexport class XDrawerTitleDirective {\r\n @HostBinding('class.x-drawer-portal-title') _has = true;\r\n}\r\n\r\n@Directive({\r\n selector: `[x-drawer-content], x-drawer-content`\r\n})\r\nexport class XDrawerContentDirective {\r\n @HostBinding('class.x-drawer-portal-content') _has = true;\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\nimport { XDrawerContainerPrefix, XDrawerContainerProperty, X_DRAWER_CONTAINER } from './drawer.property';\r\n\r\n@Component({\r\n selector: XDrawerContainerPrefix,\r\n templateUrl: './drawer-container.component.html',\r\n styleUrls: ['./drawer-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: X_DRAWER_CONTAINER,\r\n useExisting: XDrawerContainerComponent\r\n }\r\n ]\r\n})\r\nexport class XDrawerContainerComponent extends XDrawerContainerProperty {\r\n @HostBinding('class') className = XDrawerContainerPrefix;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XDrawerComponent } from './drawer.component';\r\nimport { XDrawerCloseDirective, XDrawerContentDirective, XDrawerTitleDirective } from './drawer-portal.directives';\r\nimport { XDrawerContainerComponent } from './drawer-container.component';\r\n\r\n@NgModule({\r\n exports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ],\r\n imports: [\r\n XDrawerComponent,\r\n XDrawerCloseDirective,\r\n XDrawerTitleDirective,\r\n XDrawerContentDirective,\r\n XDrawerContainerComponent\r\n ]\r\n})\r\nexport class XDrawerModule {}\r\n","import { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Injectable, TemplateRef, inject } from '@angular/core';\r\nimport { XFillDefault, XConfigService, XDrawerConfig } from '@ng-nest/ui/core';\r\nimport { XPortalService } from '@ng-nest/ui/portal';\r\nimport { XDrawerPortalComponent } from './drawer-portal.component';\r\nimport { XDrawerRef } from './drawer-ref';\r\nimport { XDrawerOption, X_DRAWER_CONFIG_NAME, X_DRAWER_DATA } from './drawer.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XDrawerService {\r\n default: XDrawerOption = {\r\n placement: 'right',\r\n size: '30%',\r\n hasBackdrop: true,\r\n backdropClose: true\r\n };\r\n configDefault?: XDrawerConfig;\r\n private portalService = inject(XPortalService);\r\n private configService = inject(XConfigService);\r\n private overlay = inject(Overlay);\r\n\r\n constructor() {\r\n this.configDefault = this.configService.getConfigForComponent(X_DRAWER_CONFIG_NAME);\r\n Object.assign(this.default, this.configDefault);\r\n }\r\n\r\n create<T>(content: TemplateRef<any> | ComponentType<T>, option: XDrawerOption = {}): XDrawerRef<T> {\r\n XFillDefault(option, this.default);\r\n const width = ['left', 'right'].includes(option.placement as string) ? option.size : '100%';\r\n const height = ['top', 'bottom'].includes(option.placement as string) ? option.size : '100%';\r\n const portal = this.portalService.attach<XDrawerPortalComponent>({\r\n content: XDrawerPortalComponent,\r\n viewContainerRef: option.viewContainerRef,\r\n overlayConfig: {\r\n hasBackdrop: option.hasBackdrop,\r\n panelClass: option.className,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.portalService.setPosition(option.placement, width, height)\r\n }\r\n });\r\n const { overlayRef, componentRef } = portal || {};\r\n const { instance } = componentRef! || {};\r\n componentRef?.setInput('placement', option.placement);\r\n const drawerRef = new XDrawerRef<T>(overlayRef!, instance);\r\n if (content instanceof TemplateRef) {\r\n instance.portal = new TemplatePortal(content, option.viewContainerRef!, {\r\n $implicit: option.data,\r\n drawerRef: drawerRef\r\n });\r\n } else {\r\n const injector = this.portalService.createInjector([\r\n { provide: X_DRAWER_DATA, useValue: option.data },\r\n { provide: XDrawerRef, useValue: drawerRef }\r\n ]);\r\n\r\n instance.portal = new ComponentPortal(content, option.viewContainerRef, injector);\r\n }\r\n if (option.hasBackdrop && option.backdropClose && overlayRef)\r\n overlayRef.backdropClick().subscribe(() => {\r\n drawerRef.close();\r\n });\r\n\r\n return drawerRef;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|