ngx-tethys 19.1.0-next.1 → 19.1.0-next.11
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/CHANGELOG.md +114 -0
- package/arrow-switcher/arrow-switcher.component.d.ts +5 -1
- package/badge/badge.component.d.ts +1 -1
- package/color-picker/coordinates.directive.d.ts +1 -2
- package/date-picker/abstract-picker.component.d.ts +50 -52
- package/date-picker/abstract-picker.directive.d.ts +15 -40
- package/date-picker/base-picker.component.d.ts +12 -40
- package/date-picker/date-picker.config.d.ts +3 -0
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +24 -19
- package/date-picker/lib/calendar/calendar-header.component.d.ts +15 -15
- package/date-picker/lib/calendar/calendar-table.component.d.ts +15 -16
- package/date-picker/lib/date/date-table-cell.component.d.ts +6 -3
- package/date-picker/lib/date/date-table.component.d.ts +2 -3
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +2 -3
- package/date-picker/lib/decade/decade-header.component.d.ts +2 -5
- package/date-picker/lib/decade/decade-table.component.d.ts +3 -5
- package/date-picker/lib/month/month-table.component.d.ts +1 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +33 -34
- package/date-picker/lib/popups/inner-popup.component.d.ts +22 -29
- package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -4
- package/date-picker/lib/year/year-header.component.d.ts +2 -4
- package/date-picker/lib/year/year-table.component.d.ts +2 -4
- package/date-picker/month-picker.component.d.ts +2 -2
- package/date-picker/picker.component.d.ts +31 -36
- package/date-picker/picker.pipes.d.ts +4 -5
- package/date-picker/picker.util.d.ts +5 -5
- package/date-picker/picker.validators.d.ts +4 -8
- package/date-picker/quarter-picker.component.d.ts +2 -3
- package/date-picker/styles/range-picker.scss +1 -0
- package/date-picker/week-picker.component.d.ts +0 -1
- package/date-picker/year-picker.component.d.ts +2 -3
- package/dropdown/dropdown-menu.component.d.ts +1 -1
- package/dropdown/dropdown.directive.d.ts +4 -3
- package/empty/empty.component.d.ts +2 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +15 -3
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +4 -4
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +2 -2
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +4 -6
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +2 -2
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +855 -1072
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +5 -5
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +9 -11
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +5 -2
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +4 -5
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +26 -6
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +5 -7
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +291 -334
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +183 -217
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +29 -36
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +33 -41
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +1 -0
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +4 -4
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +20 -17
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +164 -228
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +423 -587
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +1 -2
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +1 -2
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +244 -271
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +109 -93
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +215 -281
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +2 -2
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/i18n/i18n.d.ts +7 -2
- package/i18n/locales/de-de.d.ts +5 -1
- package/i18n/locales/en-us.d.ts +5 -1
- package/i18n/locales/ja-jp.d.ts +5 -1
- package/i18n/locales/zh-hans.d.ts +5 -1
- package/i18n/locales/zh-hant.d.ts +5 -1
- package/image/preview/image-preview.component.d.ts +2 -2
- package/layout/header.component.d.ts +15 -19
- package/layout/layout.component.d.ts +3 -2
- package/layout/sidebar-header.component.d.ts +7 -8
- package/layout/sidebar.component.d.ts +32 -62
- package/list/list-item-meta.component.d.ts +7 -9
- package/list/list-item.component.d.ts +0 -2
- package/list/list.component.d.ts +2 -8
- package/list/selection/selection-list.d.ts +33 -46
- package/message/abstract/abstract-message.component.d.ts +2 -3
- package/message/message-container.component.d.ts +0 -1
- package/message/message.component.d.ts +1 -3
- package/notify/notify-container.component.d.ts +0 -1
- package/notify/notify.component.d.ts +7 -12
- package/package.json +1 -1
- package/resizable/resizable.directive.d.ts +2 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/select/custom-select/custom-select.component.d.ts +33 -56
- package/select/native-select/native-select.component.d.ts +7 -13
- package/shared/base-form-check.component.d.ts +6 -8
- package/shared/directives/string-or-template-outlet.directive.d.ts +5 -6
- package/shared/directives/thy-autofocus.directive.d.ts +4 -6
- package/shared/directives/thy-contextmenu.directive.d.ts +2 -2
- package/shared/directives/thy-ctrl-enter.directive.d.ts +2 -2
- package/shared/directives/thy-enter.directive.d.ts +2 -2
- package/shared/directives/thy-scroll.directive.d.ts +5 -8
- package/shared/directives/thy-show.d.ts +5 -6
- package/shared/directives/thy-stop-propagation.directive.d.ts +4 -4
- package/shared/directives/view-outlet.directive.d.ts +6 -7
- package/shared/ng-transclude.directive.d.ts +2 -3
- package/shared/option/group/option-group.component.d.ts +5 -9
- package/shared/option/list-option/list-option.component.d.ts +9 -13
- package/shared/option/option.component.d.ts +10 -17
- package/shared/option/option.token.d.ts +4 -3
- package/shared/option/options-container.component.d.ts +1 -1
- package/shared/select/select-control/select-control.component.d.ts +38 -53
- package/stepper/stepper.component.d.ts +1 -1
- package/table/table-column.component.d.ts +15 -5
- package/time-picker/inner/inner-time-picker.class.d.ts +15 -13
- package/time-picker/inner/inner-time-picker.component.d.ts +26 -26
- package/time-picker/time-picker-panel.component.d.ts +18 -20
- package/time-picker/time-picker.component.d.ts +22 -30
- package/tooltip/tooltip.directive.d.ts +20 -22
- package/tree-select/tree-select.component.d.ts +53 -70
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable,
|
|
2
|
+
import { InjectionToken, inject, Injectable, signal, computed, effect, HostBinding, Component, NgModule, Injector } from '@angular/core';
|
|
3
3
|
import { NgClass, NgTemplateOutlet, AsyncPipe, CommonModule } from '@angular/common';
|
|
4
4
|
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
5
5
|
import { isString, helpers } from 'ngx-tethys/util';
|
|
@@ -52,46 +52,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
52
52
|
* @private
|
|
53
53
|
*/
|
|
54
54
|
class ThyNotify extends ThyAbstractMessageComponent {
|
|
55
|
-
set thyConfig(value) {
|
|
56
|
-
this.config = value;
|
|
57
|
-
const type = value.type;
|
|
58
|
-
this.placement = value.placement || 'topRight';
|
|
59
|
-
if (this.placement === 'topLeft' || this.placement === 'bottomLeft') {
|
|
60
|
-
this.animationState = 'flyInOutLeft';
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this.animationState = 'flyInOutRight';
|
|
64
|
-
}
|
|
65
|
-
this.className = `thy-notify thy-notify-${type}`;
|
|
66
|
-
}
|
|
67
55
|
constructor() {
|
|
68
56
|
const notifyQueue = inject(ThyNotifyQueue);
|
|
69
57
|
super(notifyQueue);
|
|
70
|
-
this.
|
|
71
|
-
this.
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
58
|
+
this.extendContentClass = signal(false);
|
|
59
|
+
this.isShowDetail = signal(false);
|
|
60
|
+
this.contentIsString = computed(() => isString(this.config().content));
|
|
61
|
+
this.placement = computed(() => {
|
|
62
|
+
const config = this.config();
|
|
63
|
+
return config.placement || 'topRight';
|
|
64
|
+
});
|
|
65
|
+
effect(() => {
|
|
66
|
+
const placement = this.placement();
|
|
67
|
+
if (placement === 'topLeft' || placement === 'bottomLeft') {
|
|
68
|
+
this.animationState = 'flyInOutLeft';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.animationState = 'flyInOutRight';
|
|
72
|
+
}
|
|
73
|
+
});
|
|
78
74
|
}
|
|
79
75
|
extendContent() {
|
|
80
|
-
this.extendContentClass
|
|
76
|
+
this.extendContentClass.set(true);
|
|
81
77
|
}
|
|
82
78
|
showDetailToggle() {
|
|
83
|
-
this.isShowDetail
|
|
79
|
+
this.isShowDetail.set(!this.isShowDetail());
|
|
84
80
|
}
|
|
85
81
|
triggerDetail() {
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
const config = this.config();
|
|
83
|
+
if (helpers.isFunction(config.detail.action)) {
|
|
84
|
+
config.detail.action();
|
|
88
85
|
}
|
|
89
|
-
if (
|
|
86
|
+
if (config.detail.content) {
|
|
90
87
|
this.showDetailToggle();
|
|
91
88
|
}
|
|
92
89
|
}
|
|
93
90
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyNotify, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyNotify, isStandalone: true, selector: "thy-notify",
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyNotify, isStandalone: true, selector: "thy-notify", host: { properties: { "class": "'thy-notify thy-notify-' + config().type", "@flyInOut": "this.animationState" } }, usesInheritance: true, ngImport: i0, template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ThyViewOutletDirective, selector: "[thyViewOutlet]", inputs: ["thyViewOutlet", "thyViewOutletContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
95
92
|
trigger('flyInOut', [
|
|
96
93
|
state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),
|
|
97
94
|
transition('void => flyInOutRight', [
|
|
@@ -111,7 +108,9 @@ class ThyNotify extends ThyAbstractMessageComponent {
|
|
|
111
108
|
}
|
|
112
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyNotify, decorators: [{
|
|
113
110
|
type: Component,
|
|
114
|
-
args: [{ selector: 'thy-notify',
|
|
111
|
+
args: [{ selector: 'thy-notify', host: {
|
|
112
|
+
'[class]': "'thy-notify thy-notify-' + config().type"
|
|
113
|
+
}, animations: [
|
|
115
114
|
trigger('flyInOut', [
|
|
116
115
|
state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),
|
|
117
116
|
transition('void => flyInOutRight', [
|
|
@@ -127,15 +126,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
127
126
|
transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),
|
|
128
127
|
state('componentHide', style(HIDE_STYLE))
|
|
129
128
|
])
|
|
130
|
-
], imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet], template: "@if (
|
|
129
|
+
], imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet], template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n" }]
|
|
131
130
|
}], ctorParameters: () => [], propDecorators: { animationState: [{
|
|
132
131
|
type: HostBinding,
|
|
133
132
|
args: ['@flyInOut']
|
|
134
|
-
}], className: [{
|
|
135
|
-
type: HostBinding,
|
|
136
|
-
args: ['class']
|
|
137
|
-
}], thyConfig: [{
|
|
138
|
-
type: Input
|
|
139
133
|
}] } });
|
|
140
134
|
|
|
141
135
|
/**
|
|
@@ -149,18 +143,16 @@ class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {
|
|
|
149
143
|
...defaultConfig
|
|
150
144
|
});
|
|
151
145
|
this.notifyQueue = inject(ThyNotifyQueue);
|
|
152
|
-
this.className = 'thy-notify-container';
|
|
153
146
|
}
|
|
154
147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyNotifyContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
155
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyNotifyContainer, isStandalone: true, selector: "thy-notify-container", host: {
|
|
148
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyNotifyContainer, isStandalone: true, selector: "thy-notify-container", host: { classAttribute: "thy-notify-container" }, usesInheritance: true, ngImport: i0, template: "<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyNotify, selector: "thy-notify" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
156
149
|
}
|
|
157
150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyNotifyContainer, decorators: [{
|
|
158
151
|
type: Component,
|
|
159
|
-
args: [{ selector: 'thy-notify-container', imports: [ThyNotify, AsyncPipe],
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}] } });
|
|
152
|
+
args: [{ selector: 'thy-notify-container', imports: [ThyNotify, AsyncPipe], host: {
|
|
153
|
+
class: 'thy-notify-container'
|
|
154
|
+
}, template: "<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n" }]
|
|
155
|
+
}], ctorParameters: () => [] });
|
|
164
156
|
|
|
165
157
|
class ThyNotifyModule {
|
|
166
158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyNotifyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topLeft')),\n shareReplay()\n );\n\n topRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topRight')),\n shareReplay()\n );\n\n bottomLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomLeft')),\n shareReplay()\n );\n\n bottomRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomRight')),\n shareReplay()\n );\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, Input, HostBinding, NgZone, OnInit, inject } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> implements OnInit {\n @HostBinding('@flyInOut') animationState: string;\n\n @HostBinding('class') className = '';\n\n config: ThyNotifyConfig;\n\n extendContentClass = false;\n\n isShowDetail = false;\n\n contentIsString = false;\n\n placement: ThyNotifyPlacement;\n\n @Input()\n set thyConfig(value: ThyNotifyConfig) {\n this.config = value;\n const type = value.type;\n this.placement = value.placement || 'topRight';\n if (this.placement === 'topLeft' || this.placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n this.className = `thy-notify thy-notify-${type}`;\n }\n\n constructor() {\n const notifyQueue = inject(ThyNotifyQueue);\n super(notifyQueue);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.contentIsString = isString(this.config.content);\n }\n\n extendContent() {\n this.extendContentClass = true;\n }\n\n showDetailToggle() {\n this.isShowDetail = !this.isShowDetail;\n }\n\n triggerDetail() {\n if (helpers.isFunction((this.config.detail as ThyNotifyDetail).action)) {\n (this.config.detail as ThyNotifyDetail).action();\n }\n if ((this.config.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@if (config?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"config?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ config?.title }}</div>\n @if (config?.detail || config?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass === true }\" (click)=\"extendContent()\">\n @if (config.content) {\n @if (contentIsString) {\n {{ config.content }}\n } @else {\n <ng-container *thyViewOutlet=\"config.content; context: config.contentInitialState || {}\"></ng-container>\n }\n }\n @if (config?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (config?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail) {\n <div class=\"thy-notify-detail\">{{ (config?.detail)['content'] }}</div>\n }\n </div>\n}\n","import { Component, ElementRef, HostBinding, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n imports: [ThyNotify, AsyncPipe]\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n @HostBinding('class') className = 'thy-notify-container';\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || '成功',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || '提示',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: '[详情]', content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topLeft')),\n shareReplay()\n );\n\n topRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topRight')),\n shareReplay()\n );\n\n bottomLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomLeft')),\n shareReplay()\n );\n\n bottomRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomRight')),\n shareReplay()\n );\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, HostBinding, effect, inject, signal, computed } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n host: {\n '[class]': \"'thy-notify thy-notify-' + config().type\"\n },\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> {\n @HostBinding('@flyInOut') animationState: string;\n\n extendContentClass = signal(false);\n\n isShowDetail = signal(false);\n\n readonly contentIsString = computed(() => isString(this.config().content));\n\n private placement = computed<ThyNotifyPlacement>(() => {\n const config = this.config();\n return config.placement || 'topRight';\n });\n\n constructor() {\n const notifyQueue = inject(ThyNotifyQueue);\n super(notifyQueue);\n\n effect(() => {\n const placement = this.placement();\n if (placement === 'topLeft' || placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n });\n }\n\n extendContent() {\n this.extendContentClass.set(true);\n }\n\n showDetailToggle() {\n this.isShowDetail.set(!this.isShowDetail());\n }\n\n triggerDetail() {\n const config = this.config();\n if (helpers.isFunction((config.detail as ThyNotifyDetail).action)) {\n (config.detail as ThyNotifyDetail).action();\n }\n if ((config.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n","import { Component, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n imports: [ThyNotify, AsyncPipe],\n host: {\n class: 'thy-notify-container'\n }\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || '成功',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || '提示',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: '[详情]', content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -158,6 +158,7 @@ class ThyPropertyItem {
|
|
|
158
158
|
this.clickEventSubscription = fromEvent(itemElement, 'click')
|
|
159
159
|
.pipe(takeUntil(this.eventDestroy$))
|
|
160
160
|
.subscribe(() => {
|
|
161
|
+
this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];
|
|
161
162
|
this.setEditing(true);
|
|
162
163
|
this.bindEditorBlurEvent(itemElement);
|
|
163
164
|
itemElement.querySelector('input')?.focus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, numberAttribute, input, computed } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout() === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout() === \"horizontal\"',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[style.grid-template-columns]': 'gridTemplateColumns()'\n }\n})\nexport class ThyProperties {\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n */\n readonly layout = input<ThyPropertiesLayout>('horizontal', { alias: 'thyLayout' });\n\n /**\n * 设置一行的可以 property-item 的数量\n */\n readonly thyColumn = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>('hover');\n\n protected readonly gridTemplateColumns = computed(() => {\n return `repeat(${this.thyColumn()}, 1fr)`;\n });\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n computed,\n effect,\n output,\n contentChild,\n viewChild,\n signal,\n DestroyRef\n} from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[class.thy-property-item-operational]': '!!operation()',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger() === 'hover'\",\n '[style.grid-column]': 'gridColumn()',\n '[class.thy-property-item-single]': '!parent'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnDestroy {\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n /**\n * 属性名称\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 设置属性是否是可编辑的\n */\n readonly thyEditable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置跨列的数量\n */\n readonly thySpan = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>();\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n readonly thyOperationTrigger = input<ThyPropertyItemOperationTrigger>('always');\n\n readonly thyEditingChange = output<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n readonly label = contentChild<TemplateRef<void>>('label');\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n readonly editor = contentChild<TemplateRef<void>>('editor');\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n readonly operation = contentChild<TemplateRef<void>>('operation');\n\n /**\n * @private\n */\n readonly content = viewChild<TemplateRef<void>>('contentTemplate');\n\n /**\n * @private\n */\n readonly itemContent = viewChild<ElementRef<HTMLElement>>('item');\n\n editing = signal(false);\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n protected readonly gridColumn = computed(() => {\n return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;\n });\n\n readonly isVertical = computed(() => {\n return this.parent?.layout() === 'vertical';\n });\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays] as OverlayRef[];\n\n effect(() => {\n if (this.thyEditable()) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n });\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing() !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing.set(editing);\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable() === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n const itemElement = this.itemContent().nativeElement;\n this.clickEventSubscription = fromEvent(itemElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.setEditing(true);\n this.bindEditorBlurEvent(itemElement);\n itemElement.querySelector('input')?.focus();\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, numberAttribute, input, computed } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout() === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout() === \"horizontal\"',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[style.grid-template-columns]': 'gridTemplateColumns()'\n }\n})\nexport class ThyProperties {\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n */\n readonly layout = input<ThyPropertiesLayout>('horizontal', { alias: 'thyLayout' });\n\n /**\n * 设置一行的可以 property-item 的数量\n */\n readonly thyColumn = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>('hover');\n\n protected readonly gridTemplateColumns = computed(() => {\n return `repeat(${this.thyColumn()}, 1fr)`;\n });\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n computed,\n effect,\n output,\n contentChild,\n viewChild,\n signal,\n DestroyRef\n} from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty, helpers, ThyBooleanInput } from 'ngx-tethys/util';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[class.thy-property-item-operational]': '!!operation()',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger() === 'hover'\",\n '[style.grid-column]': 'gridColumn()',\n '[class.thy-property-item-single]': '!parent'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnDestroy {\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n /**\n * 属性名称\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 设置属性是否是可编辑的\n */\n readonly thyEditable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置跨列的数量\n */\n readonly thySpan = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>();\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n readonly thyOperationTrigger = input<ThyPropertyItemOperationTrigger>('always');\n\n readonly thyEditingChange = output<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n readonly label = contentChild<TemplateRef<void>>('label');\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n readonly editor = contentChild<TemplateRef<void>>('editor');\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n readonly operation = contentChild<TemplateRef<void>>('operation');\n\n /**\n * @private\n */\n readonly content = viewChild<TemplateRef<void>>('contentTemplate');\n\n /**\n * @private\n */\n readonly itemContent = viewChild<ElementRef<HTMLElement>>('item');\n\n editing = signal(false);\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n protected readonly gridColumn = computed(() => {\n return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;\n });\n\n readonly isVertical = computed(() => {\n return this.parent?.layout() === 'vertical';\n });\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];\n\n effect(() => {\n if (this.thyEditable()) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n });\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing() !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing.set(editing);\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable() === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n const itemElement = this.itemContent().nativeElement;\n this.clickEventSubscription = fromEvent(itemElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];\n this.setEditing(true);\n this.bindEditorBlurEvent(itemElement);\n itemElement.querySelector('input')?.focus();\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ class ThyRadio extends ThyFormCheckBaseComponent {
|
|
|
47
47
|
useExisting: forwardRef(() => ThyRadio),
|
|
48
48
|
multi: true
|
|
49
49
|
}
|
|
50
|
-
], usesInheritance: true, ngImport: i0, template: "<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText }\" />\n@if (_labelText) {\n <span class=\"form-check-label\">{{ _labelText }}</span>\n}\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
50
|
+
], usesInheritance: true, ngImport: i0, template: "<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText() }\" />\n@if (_labelText()) {\n <span class=\"form-check-label\">{{ _labelText() }}</span>\n}\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRadio, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -59,7 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
59
59
|
}
|
|
60
60
|
], host: {
|
|
61
61
|
'[attr.tabindex]': `-1`
|
|
62
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass], template: "<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText }\" />\n@if (_labelText) {\n <span class=\"form-check-label\">{{ _labelText }}</span>\n}\n<ng-content></ng-content>\n" }]
|
|
62
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass], template: "<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText() }\" />\n@if (_labelText()) {\n <span class=\"form-check-label\">{{ _labelText() }}</span>\n}\n<ng-content></ng-content>\n" }]
|
|
63
63
|
}] });
|
|
64
64
|
|
|
65
65
|
/**
|
|
@@ -92,13 +92,13 @@ class ThyRadioButton extends ThyRadio {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRadioButton, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyRadioButton, isStandalone: true, selector: "[thy-radio-button],[thyRadioButton]", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click($event)" }, properties: { "attr.tabindex": "tabIndex", "class.btn": "this.isButton", "class.active": "this.isActive", "class.disabled": "this.isDisabled" } }, usesInheritance: true, ngImport: i0, template: "<ng-container> {{ _labelText }}</ng-container>\n<ng-content></ng-content>\n" }); }
|
|
95
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyRadioButton, isStandalone: true, selector: "[thy-radio-button],[thyRadioButton]", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click($event)" }, properties: { "attr.tabindex": "tabIndex", "class.btn": "this.isButton", "class.active": "this.isActive", "class.disabled": "this.isDisabled" } }, usesInheritance: true, ngImport: i0, template: "<ng-container> {{ _labelText() }}</ng-container>\n<ng-content></ng-content>\n" }); }
|
|
96
96
|
}
|
|
97
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRadioButton, decorators: [{
|
|
98
98
|
type: Component,
|
|
99
99
|
args: [{ selector: '[thy-radio-button],[thyRadioButton]', host: {
|
|
100
100
|
'[attr.tabindex]': `tabIndex`
|
|
101
|
-
}, template: "<ng-container> {{ _labelText }}</ng-container>\n<ng-content></ng-content>\n" }]
|
|
101
|
+
}, template: "<ng-container> {{ _labelText() }}</ng-container>\n<ng-content></ng-content>\n" }]
|
|
102
102
|
}], propDecorators: { isButton: [{
|
|
103
103
|
type: HostBinding,
|
|
104
104
|
args: ['class.btn']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-radio.mjs","sources":["../../../src/radio/radio.token.ts","../../../src/radio/radio.component.ts","../../../src/radio/radio.component.html","../../../src/radio/button/radio-button.component.ts","../../../src/radio/button/radio-button.component.html","../../../src/radio/group/radio-group.component.ts","../../../src/radio/group/radio-group.component.html","../../../src/radio/module.ts","../../../src/radio/ngx-tethys-radio.ts"],"sourcesContent":["import { InjectionToken, InputSignal } from '@angular/core';\n\nexport interface IThyRadioComponent {\n thyValue: InputSignal<string>;\n thyChecked: boolean;\n setDisabledState?(isDisabled: boolean): void;\n}\n\nexport interface IThyRadioGroupComponent {\n addRadio(radio: IThyRadioComponent): void;\n updateValue(value: string, emit: boolean): void;\n setGroup(): void;\n}\n\nexport const THY_RADIO_GROUP_COMPONENT = new InjectionToken<IThyRadioGroupComponent>('THY_RADIO_GROUP_COMPONENT');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyFormCheckBaseComponent } from 'ngx-tethys/shared';\nimport { IThyRadioComponent, THY_RADIO_GROUP_COMPONENT } from './radio.token';\n\n/**\n * 单选框组件\n * @name thy-radio,[thyRadio]\n * @order 10\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio],[thyRadio]',\n templateUrl: './radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadio),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ThyRadio extends ThyFormCheckBaseComponent implements IThyRadioComponent, OnInit {\n thyRadioGroupComponent = inject(THY_RADIO_GROUP_COMPONENT, { optional: true })!;\n\n name: string;\n\n /**\n * 当和 thy-radio-group 配合使用时的值,选中后的 NgModel 值\n */\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.writeValue(coerceBooleanProperty(value));\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnInit() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n }\n }\n\n change() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.updateValue(this.thyValue(), true);\n } else {\n this.updateValue(!this._innerValue);\n }\n }\n}\n","<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText }\" />\n@if (_labelText) {\n <span class=\"form-check-label\">{{ _labelText }}</span>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, HostBinding, HostListener, input } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThyRadio } from '../radio.component';\n\n/**\n * @name [thy-radio-button],[thyRadioButton]\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio-button],[thyRadioButton]',\n templateUrl: './radio-button.component.html',\n host: {\n '[attr.tabindex]': `tabIndex`\n }\n})\nexport class ThyRadioButton extends ThyRadio implements OnInit {\n @HostBinding('class.btn') isButton = true;\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') get isDisabled() {\n return this._disabled;\n }\n\n name: string;\n\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.isActive = !!value;\n this.writeValue(coerceBooleanProperty(value));\n }\n\n ngOnInit() {\n this._isFormCheck = false;\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n this.thyRadioGroupComponent.setGroup();\n }\n }\n\n @HostListener('click', ['$event'])\n click($event: MouseEvent) {\n if (!this._disabled) {\n this.change();\n }\n }\n}\n","<ng-container> {{ _labelText }}</ng-container>\n<ng-content></ng-content>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyRadioButton } from '../button/radio-button.component';\nimport { ThyRadio } from '../radio.component';\nimport { IThyRadioGroupComponent, THY_RADIO_GROUP_COMPONENT } from '../radio.token';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n lg: ['btn-group-lg']\n};\n\nconst radioGroupLayoutMap = {\n flex: ['radio-group-layout-flex']\n};\n\n/**\n * @name thy-radio-group\n * @order 20\n */\n@Component({\n selector: 'thy-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadioGroup),\n multi: true\n },\n {\n provide: THY_RADIO_GROUP_COMPONENT,\n useExisting: ThyRadioGroup\n }\n ],\n host: {\n class: 'thy-radio-group',\n '[class.btn-group]': 'isButtonGroup()',\n '[class.btn-group-outline-default]': 'isButtonGroupOutline()',\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyRadioGroup implements IThyRadioGroupComponent, ControlValueAccessor {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n isButtonGroup = signal(false);\n\n isButtonGroupOutline = signal(false);\n\n /**\n * 大小\n * @type sm | md | lg\n * @default md\n */\n readonly thySize = input<string>('md');\n\n /**\n * 布局\n * @type flex\n */\n readonly thyLayout = input<string>();\n\n _innerValue: string | number;\n\n radios: Array<ThyRadio | ThyRadioButton> = [];\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 是否禁用单选组合框\n * @default false\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n onChange: (_: string) => void = () => null;\n\n onTouched: () => void = () => null;\n\n addRadio(radio: ThyRadio | ThyRadioButton): void {\n this.radios.push(radio);\n radio.thyChecked = radio.thyValue() === this._innerValue;\n }\n\n updateValue(value: string, emit: boolean): void {\n this._innerValue = value;\n this.radios.forEach(radio => {\n radio.thyChecked = radio.thyValue() === this._innerValue;\n });\n if (emit) {\n this.onChange(value);\n }\n this.onTouched();\n this.changeDetectorRef.detectChanges();\n }\n\n writeValue(value: any): void {\n this.updateValue(value, false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.radios.forEach(radio => {\n radio.setDisabledState(isDisabled);\n });\n }\n\n setGroup(): void {\n if (!this.isButtonGroup() && !this.isButtonGroupOutline()) {\n this.isButtonGroup.set(true);\n this.isButtonGroupOutline.set(true);\n }\n }\n\n constructor() {\n effect(() => {\n this.setClasses();\n });\n\n effect(() => {\n const disabled = this.thyDisabled();\n this.setDisabledState(disabled);\n });\n }\n\n private setClasses() {\n const classNames: string[] = [];\n const size = this.thySize();\n if (size && buttonGroupSizeMap[size]) {\n classNames.push(buttonGroupSizeMap[size]);\n }\n const layout = this.thyLayout();\n if (layout && radioGroupLayoutMap[layout]) {\n classNames.push(radioGroupLayoutMap[layout]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRadio } from './radio.component';\nimport { ThyRadioButton } from './button/radio-button.component';\nimport { ThyRadioGroup } from './group/radio-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyRadio, ThyRadioGroup, ThyRadioButton],\n exports: [ThyRadio, ThyRadioGroup, ThyRadioButton]\n})\nexport class ThyRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-radio.mjs","sources":["../../../src/radio/radio.token.ts","../../../src/radio/radio.component.ts","../../../src/radio/radio.component.html","../../../src/radio/button/radio-button.component.ts","../../../src/radio/button/radio-button.component.html","../../../src/radio/group/radio-group.component.ts","../../../src/radio/group/radio-group.component.html","../../../src/radio/module.ts","../../../src/radio/ngx-tethys-radio.ts"],"sourcesContent":["import { InjectionToken, InputSignal } from '@angular/core';\n\nexport interface IThyRadioComponent {\n thyValue: InputSignal<string>;\n thyChecked: boolean;\n setDisabledState?(isDisabled: boolean): void;\n}\n\nexport interface IThyRadioGroupComponent {\n addRadio(radio: IThyRadioComponent): void;\n updateValue(value: string, emit: boolean): void;\n setGroup(): void;\n}\n\nexport const THY_RADIO_GROUP_COMPONENT = new InjectionToken<IThyRadioGroupComponent>('THY_RADIO_GROUP_COMPONENT');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyFormCheckBaseComponent } from 'ngx-tethys/shared';\nimport { IThyRadioComponent, THY_RADIO_GROUP_COMPONENT } from './radio.token';\n\n/**\n * 单选框组件\n * @name thy-radio,[thyRadio]\n * @order 10\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio],[thyRadio]',\n templateUrl: './radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadio),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ThyRadio extends ThyFormCheckBaseComponent implements IThyRadioComponent, OnInit {\n thyRadioGroupComponent = inject(THY_RADIO_GROUP_COMPONENT, { optional: true })!;\n\n name: string;\n\n /**\n * 当和 thy-radio-group 配合使用时的值,选中后的 NgModel 值\n */\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.writeValue(coerceBooleanProperty(value));\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnInit() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n }\n }\n\n change() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.updateValue(this.thyValue(), true);\n } else {\n this.updateValue(!this._innerValue);\n }\n }\n}\n","<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText() }\" />\n@if (_labelText()) {\n <span class=\"form-check-label\">{{ _labelText() }}</span>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, HostBinding, HostListener, input } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThyRadio } from '../radio.component';\n\n/**\n * @name [thy-radio-button],[thyRadioButton]\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio-button],[thyRadioButton]',\n templateUrl: './radio-button.component.html',\n host: {\n '[attr.tabindex]': `tabIndex`\n }\n})\nexport class ThyRadioButton extends ThyRadio implements OnInit {\n @HostBinding('class.btn') isButton = true;\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') get isDisabled() {\n return this._disabled;\n }\n\n name: string;\n\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.isActive = !!value;\n this.writeValue(coerceBooleanProperty(value));\n }\n\n ngOnInit() {\n this._isFormCheck = false;\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n this.thyRadioGroupComponent.setGroup();\n }\n }\n\n @HostListener('click', ['$event'])\n click($event: MouseEvent) {\n if (!this._disabled) {\n this.change();\n }\n }\n}\n","<ng-container> {{ _labelText() }}</ng-container>\n<ng-content></ng-content>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyRadioButton } from '../button/radio-button.component';\nimport { ThyRadio } from '../radio.component';\nimport { IThyRadioGroupComponent, THY_RADIO_GROUP_COMPONENT } from '../radio.token';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n lg: ['btn-group-lg']\n};\n\nconst radioGroupLayoutMap = {\n flex: ['radio-group-layout-flex']\n};\n\n/**\n * @name thy-radio-group\n * @order 20\n */\n@Component({\n selector: 'thy-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadioGroup),\n multi: true\n },\n {\n provide: THY_RADIO_GROUP_COMPONENT,\n useExisting: ThyRadioGroup\n }\n ],\n host: {\n class: 'thy-radio-group',\n '[class.btn-group]': 'isButtonGroup()',\n '[class.btn-group-outline-default]': 'isButtonGroupOutline()',\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyRadioGroup implements IThyRadioGroupComponent, ControlValueAccessor {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n isButtonGroup = signal(false);\n\n isButtonGroupOutline = signal(false);\n\n /**\n * 大小\n * @type sm | md | lg\n * @default md\n */\n readonly thySize = input<string>('md');\n\n /**\n * 布局\n * @type flex\n */\n readonly thyLayout = input<string>();\n\n _innerValue: string | number;\n\n radios: Array<ThyRadio | ThyRadioButton> = [];\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 是否禁用单选组合框\n * @default false\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n onChange: (_: string) => void = () => null;\n\n onTouched: () => void = () => null;\n\n addRadio(radio: ThyRadio | ThyRadioButton): void {\n this.radios.push(radio);\n radio.thyChecked = radio.thyValue() === this._innerValue;\n }\n\n updateValue(value: string, emit: boolean): void {\n this._innerValue = value;\n this.radios.forEach(radio => {\n radio.thyChecked = radio.thyValue() === this._innerValue;\n });\n if (emit) {\n this.onChange(value);\n }\n this.onTouched();\n this.changeDetectorRef.detectChanges();\n }\n\n writeValue(value: any): void {\n this.updateValue(value, false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.radios.forEach(radio => {\n radio.setDisabledState(isDisabled);\n });\n }\n\n setGroup(): void {\n if (!this.isButtonGroup() && !this.isButtonGroupOutline()) {\n this.isButtonGroup.set(true);\n this.isButtonGroupOutline.set(true);\n }\n }\n\n constructor() {\n effect(() => {\n this.setClasses();\n });\n\n effect(() => {\n const disabled = this.thyDisabled();\n this.setDisabledState(disabled);\n });\n }\n\n private setClasses() {\n const classNames: string[] = [];\n const size = this.thySize();\n if (size && buttonGroupSizeMap[size]) {\n classNames.push(buttonGroupSizeMap[size]);\n }\n const layout = this.thyLayout();\n if (layout && radioGroupLayoutMap[layout]) {\n classNames.push(radioGroupLayoutMap[layout]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRadio } from './radio.component';\nimport { ThyRadioButton } from './button/radio-button.component';\nimport { ThyRadioGroup } from './group/radio-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyRadio, ThyRadioGroup, ThyRadioButton],\n exports: [ThyRadio, ThyRadioGroup, ThyRadioButton]\n})\nexport class ThyRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, NgZone, Injectable, ElementRef, Renderer2, input, numberAttribute, output, signal, DestroyRef,
|
|
2
|
+
import { inject, NgZone, Injectable, ElementRef, Renderer2, input, numberAttribute, output, signal, DestroyRef, Directive, ChangeDetectionStrategy, Component, computed, NgModule } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
4
4
|
import { isTouchEvent, coerceBooleanProperty } from 'ngx-tethys/util';
|
|
5
5
|
import { Subject, fromEvent, merge } from 'rxjs';
|
|
@@ -89,6 +89,9 @@ function setCompatibleStyle(element, key, value) {
|
|
|
89
89
|
* @name thyResizable
|
|
90
90
|
*/
|
|
91
91
|
class ThyResizableDirective {
|
|
92
|
+
get nativeElement() {
|
|
93
|
+
return this.elementRef.nativeElement;
|
|
94
|
+
}
|
|
92
95
|
constructor() {
|
|
93
96
|
this.elementRef = inject(ElementRef);
|
|
94
97
|
this.renderer = inject(Renderer2);
|
|
@@ -186,22 +189,22 @@ class ThyResizableDirective {
|
|
|
186
189
|
this.resize(event);
|
|
187
190
|
}
|
|
188
191
|
});
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
192
|
+
this.bindMouseEnterAndLeaveEvents();
|
|
193
|
+
}
|
|
194
|
+
bindMouseEnterAndLeaveEvents() {
|
|
195
|
+
if (!this.platform.isBrowser) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
this.ngZone.runOutsideAngular(() => {
|
|
199
|
+
fromEvent(this.nativeElement, 'mouseenter')
|
|
200
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
201
|
+
.subscribe(() => {
|
|
202
|
+
this.thyResizableService.mouseEnteredOutsideAngular$.next(true);
|
|
203
|
+
});
|
|
204
|
+
fromEvent(this.nativeElement, 'mouseleave')
|
|
205
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
206
|
+
.subscribe(() => {
|
|
207
|
+
this.thyResizableService.mouseEnteredOutsideAngular$.next(false);
|
|
205
208
|
});
|
|
206
209
|
});
|
|
207
210
|
}
|