cmat 0.0.81 → 0.0.83
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/fesm2022/cmat-components-adapter.mjs +19 -13
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +20 -20
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +7 -5
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +3 -2
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +228 -108
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +20 -11
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +1 -1
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +29 -11
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +16 -26
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +8 -7
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +28 -16
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +14 -14
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +2 -2
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +8 -5
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +2 -2
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +9 -2
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +1 -1
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +25 -24
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +42 -15
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +3 -1
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +24 -5
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +20 -13
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +11 -6
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +4 -3
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +29 -15
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-components-x6-angular-shape.mjs +2 -2
- package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +12 -18
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +3 -2
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +7 -7
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +9 -5
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +9 -1
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +16 -7
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +11 -10
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +42 -4
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +2 -2
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +78 -57
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs +4 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/fesm2022/cmat.mjs +759 -438
- package/fesm2022/cmat.mjs.map +1 -1
- package/package.json +1 -1
- package/types/cmat-components-adapter.d.ts +24 -24
- package/types/cmat-components-breadcrumb.d.ts +1 -1
- package/types/cmat-components-card.d.ts +1 -1
- package/types/cmat-components-carousel.d.ts +23 -23
- package/types/cmat-components-cascade.d.ts +12 -12
- package/types/cmat-components-chip-input.d.ts +8 -8
- package/types/cmat-components-code-editor.d.ts +2 -2
- package/types/cmat-components-custom-formly.d.ts +121 -44
- package/types/cmat-components-date-range.d.ts +30 -16
- package/types/cmat-components-drawer.d.ts +2 -2
- package/types/cmat-components-file-preview.d.ts +1 -1
- package/types/cmat-components-image-viewer.d.ts +5 -3
- package/types/cmat-components-json-editor.d.ts +7 -9
- package/types/cmat-components-knob-input.d.ts +3 -3
- package/types/cmat-components-masonry.d.ts +3 -3
- package/types/cmat-components-material-color-picker.d.ts +13 -9
- package/types/cmat-components-material-datetimepicker.d.ts +26 -10
- package/types/cmat-components-navigation.d.ts +14 -14
- package/types/cmat-components-opt-input.d.ts +8 -8
- package/types/cmat-components-popover.d.ts +1 -1
- package/types/cmat-components-qrcode.d.ts +2 -1
- package/types/cmat-components-rating.d.ts +13 -13
- package/types/cmat-components-select-search.d.ts +5 -5
- package/types/cmat-components-select-table.d.ts +12 -8
- package/types/cmat-components-select-tree.d.ts +1 -1
- package/types/cmat-components-speed-dial.d.ts +3 -0
- package/types/cmat-components-timeline.d.ts +2 -2
- package/types/cmat-components-toast.d.ts +2 -2
- package/types/cmat-components-transfer-picker.d.ts +5 -4
- package/types/cmat-components-treetable.d.ts +2 -2
- package/types/cmat-components-upload.d.ts +35 -28
- package/types/cmat-components-x6-angular-shape.d.ts +1 -1
- package/types/cmat-directives-autofocus.d.ts +1 -1
- package/types/cmat-directives-data-exporter.d.ts +2 -1
- package/types/cmat-directives-debounce.d.ts +5 -5
- package/types/cmat-directives-digit-only.d.ts +7 -7
- package/types/cmat-directives-seamless-auto-scroll.d.ts +2 -2
- package/types/cmat-lib-mock-api.d.ts +1 -1
- package/types/cmat-pipes-find-by-key.d.ts +2 -1
- package/types/cmat-pipes-group-by.d.ts +6 -1
- package/types/cmat-pipes-keys.d.ts +4 -1
- package/types/cmat-pipes-secure.d.ts +1 -0
- package/types/cmat-services-alert.d.ts +14 -13
- package/types/cmat-services-data.d.ts +3 -3
- package/types/cmat-services-export-as.d.ts +4 -3
- package/types/cmat-services-local-storage.d.ts +10 -2
- package/types/cmat-services-translation.d.ts +3 -3
- package/types/cmat-services-utils.d.ts +31 -15
- package/types/cmat-validators.d.ts +1 -1
- package/types/cmat.d.ts +463 -304
|
@@ -54,7 +54,7 @@ class CmatToastModalComponent {
|
|
|
54
54
|
if (this.leaving())
|
|
55
55
|
return;
|
|
56
56
|
this.leaving.set(true);
|
|
57
|
-
const el = this._elementRef.nativeElement
|
|
57
|
+
const el = this._elementRef.nativeElement.querySelector('.toast');
|
|
58
58
|
if (el) {
|
|
59
59
|
const onEnd = () => {
|
|
60
60
|
cleanup();
|
|
@@ -177,22 +177,29 @@ class CmatToastService {
|
|
|
177
177
|
}
|
|
178
178
|
_setGlobalValues(toast) {
|
|
179
179
|
if (this._globalConfigs) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
[key]: value,
|
|
184
|
-
};
|
|
180
|
+
const globalConfigs = this._globalConfigs;
|
|
181
|
+
if (globalConfigs.title) {
|
|
182
|
+
toast.title = globalConfigs.title;
|
|
185
183
|
}
|
|
186
|
-
if (
|
|
187
|
-
toast.
|
|
184
|
+
if (globalConfigs.timeout !== undefined) {
|
|
185
|
+
toast.timeout = globalConfigs.timeout;
|
|
188
186
|
}
|
|
189
|
-
if (
|
|
190
|
-
toast.
|
|
187
|
+
if (globalConfigs.limit !== undefined) {
|
|
188
|
+
toast.limit = globalConfigs.limit;
|
|
191
189
|
}
|
|
192
|
-
if (
|
|
190
|
+
if (globalConfigs.isCountdown !== undefined) {
|
|
191
|
+
toast.isCountdown = globalConfigs.isCountdown;
|
|
192
|
+
}
|
|
193
|
+
if (globalConfigs.theme) {
|
|
194
|
+
toast.theme = `toasta-theme-${globalConfigs.theme}`;
|
|
195
|
+
}
|
|
196
|
+
if (globalConfigs.position) {
|
|
197
|
+
toast.position = `toasta-position-${globalConfigs.position}`;
|
|
198
|
+
}
|
|
199
|
+
if (globalConfigs.showClose === false) {
|
|
193
200
|
toast.showClose = false;
|
|
194
201
|
}
|
|
195
|
-
if (
|
|
202
|
+
if (globalConfigs.showDuration === false) {
|
|
196
203
|
toast.showDuration = false;
|
|
197
204
|
}
|
|
198
205
|
}
|
|
@@ -207,7 +214,7 @@ class CmatToastService {
|
|
|
207
214
|
...toast,
|
|
208
215
|
id: this._counter++,
|
|
209
216
|
};
|
|
210
|
-
if (this.toasts.length >= toast.limit) {
|
|
217
|
+
if (this.toasts.length >= (toast.limit ?? 0)) {
|
|
211
218
|
this.toasts.shift();
|
|
212
219
|
}
|
|
213
220
|
this.toasts.push(latestToast);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-toast.mjs","sources":["../../../projects/cmat/components/toast/toast-modal.component.ts","../../../projects/cmat/components/toast/toast-modal.component.html","../../../projects/cmat/components/toast/toast.service.ts","../../../projects/cmat/components/toast/toast.component.ts","../../../projects/cmat/components/toast/toast.component.html","../../../projects/cmat/components/toast/cmat-components-toast.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n ElementRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { CmatToastModel } from './models/toast.model';\r\n\r\n@Component({\r\n selector: 'cmat-toast-modal',\r\n templateUrl: './toast-modal.component.html',\r\n styleUrls: ['./toast-modal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatToastModal',\r\n imports: [NgClass]\r\n})\r\nexport class CmatToastModalComponent implements AfterViewInit, OnDestroy {\r\n @Input() toast: CmatToastModel;\r\n @Output() closeToastEvent = new EventEmitter<number>();\r\n\r\n readonly progressPercent = signal(100);\r\n readonly displayTitle = signal('');\r\n readonly displayType = signal('');\r\n readonly displayMessage = signal('');\r\n readonly leaving = signal(false);\r\n timeout: number;\r\n\r\n private _progressInterval: number | null = null;\r\n private _startTime: number;\r\n private _leaveTimeoutId: number | null = null;\r\n private _elementRef = inject(ElementRef);\r\n\r\n ngAfterViewInit(): void {\r\n this.displayTitle.set(this.toast.title ?? '');\r\n this.displayType.set(this.toast.type ?? '');\r\n this.displayMessage.set(this.toast.message ?? '');\r\n this.handleProgress();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._clearInterval();\r\n this._clearLeaveTimeout();\r\n }\r\n\r\n handleProgress(): void {\r\n this.timeout = this.toast.timeout ?? 0;\r\n this._startTime = performance.now();\r\n\r\n if (this.toast.showDuration && this.timeout > 0) {\r\n this._progressInterval = window.setInterval(() => {\r\n const elapsed = performance.now() - this._startTime;\r\n const percent = 100 - (elapsed / this.timeout * 100);\r\n\r\n if (percent <= 0) {\r\n this.progressPercent.set(0);\r\n this._clearInterval();\r\n this.close(this.toast);\r\n return;\r\n }\r\n\r\n this.progressPercent.set(percent);\r\n\r\n if (this.toast.isCountdown) {\r\n const secondsRemaining = Math.ceil((this.timeout - elapsed) / 1000);\r\n this.displayTitle.set(`\\u5269\\u4f59\\u65f6\\u95f4: ${secondsRemaining.toString()}\\u79d2`);\r\n this.displayType.set('toasta-type-wait');\r\n this.displayMessage.set('');\r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n close(toast: CmatToastModel): void {\r\n this._clearInterval();\r\n\r\n if (this.leaving()) return;\r\n this.leaving.set(true);\r\n\r\n const el: HTMLElement | null = this._elementRef.nativeElement?.querySelector('.toast') ?? null;\r\n if (el) {\r\n const onEnd = (): void => {\r\n cleanup();\r\n this._emitClose(toast);\r\n };\r\n const cleanup = (): void => {\r\n el.removeEventListener('animationend', onEnd);\r\n this._clearLeaveTimeout();\r\n };\r\n el.addEventListener('animationend', onEnd);\r\n this._leaveTimeoutId = window.setTimeout(() => {\r\n cleanup();\r\n this._emitClose(toast);\r\n }, 400);\r\n } else {\r\n this._emitClose(toast);\r\n }\r\n }\r\n\r\n private _emitClose(toast: CmatToastModel): void {\r\n if (toast.id) {\r\n this.closeToastEvent.emit(toast.id);\r\n }\r\n }\r\n\r\n\r\n private _clearInterval(): void {\r\n if (this._progressInterval !== null) {\r\n clearInterval(this._progressInterval);\r\n this._progressInterval = null;\r\n }\r\n }\r\n\r\n private _clearLeaveTimeout(): void {\r\n if (this._leaveTimeoutId !== null) {\r\n clearTimeout(this._leaveTimeoutId);\r\n this._leaveTimeoutId = null; \r\n }\r\n }\r\n}","<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<div class=\"toast\" [ngClass]=\"[displayType(), toast.theme, leaving() ? 'toast-leaving' : '']\">\r\n @if (toast.showClose) {\r\n <button type=\"button\" class=\"close-button\" (click)=\"close(toast)\">\r\n </button>\r\n }\r\n @if (displayTitle() || displayMessage()) {\r\n <div class=\"toast-text\">\r\n @if (displayTitle()) {\r\n <span class=\"toast-title\">{{displayTitle()}}</span>\r\n }\r\n @if (displayTitle() && displayMessage()) {\r\n <br />\r\n }\r\n @if (displayMessage()) {\r\n <span class=\"toast-message\">{{displayMessage()}}</span>\r\n }\r\n </div>\r\n }\r\n @if (toast.showDuration && timeout > 0) {\r\n <div class=\"durationbackground\">\r\n <div class=\"durationbar\" [style.width.%]=\"progressPercent()\">\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Injectable, signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { GlobalConfigModel } from './models/global-config.model';\r\nimport { CmatToastModel } from './models/toast.model';\r\nimport { GlobalPosition, GlobalTheme, GlobalType } from './models/type.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatToastService {\r\n toasts: CmatToastModel[] = [];\r\n\r\n private _positionSubject = signal<string>('toasta-position-bottom-right');\r\n private readonly _position$ = toObservable(this._positionSubject);\r\n private _toastPopSubject = new Subject<CmatToastModel[]>();\r\n private _globalConfigs: GlobalConfigModel;\r\n private _counter = 1;\r\n\r\n get position$(): Observable<string> {\r\n return this._position$;\r\n }\r\n get toastPop$(): Observable<CmatToastModel[]> {\r\n return this._toastPopSubject.asObservable();\r\n }\r\n\r\n\r\n receiveGlobalConfigs(configs: GlobalConfigModel): void {\r\n this._globalConfigs = { ...configs };\r\n }\r\n\r\n removeToast(toastId: number): void {\r\n this.toasts = this.toasts.filter(t => t.id !== toastId);\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n clearAll(): void {\r\n this.toasts.length = 0;\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n clearLast(): void {\r\n this.toasts.pop();\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n addToast(toast: CmatToastModel): void {\r\n const defaultToast = this._getDefaultToast();\r\n const globalToast = this._setGlobalValues(defaultToast);\r\n\r\n const finalToast: CmatToastModel = {\r\n type: `toasta-type-${toast.type}` as GlobalType,\r\n message: toast.message,\r\n title: toast.title ?? globalToast.title,\r\n showClose: toast.showClose ?? globalToast.showClose,\r\n showDuration: toast.showDuration ?? globalToast.showDuration,\r\n theme: toast.theme ? (`toasta-theme-${toast.theme}` as GlobalTheme) : globalToast.theme,\r\n timeout: toast.timeout !== null ? toast.timeout : globalToast.timeout,\r\n position: toast.position ? (`toasta-position-${toast.position}` as GlobalPosition) : globalToast.position,\r\n limit: toast.limit ?? globalToast.limit,\r\n isCountdown: toast.isCountdown ?? globalToast.isCountdown,\r\n };\r\n\r\n if (toast.showClose === false) {\r\n finalToast.showClose = false;\r\n }\r\n\r\n if (toast.showDuration === false) {\r\n finalToast.showDuration = false;\r\n }\r\n\r\n this._setPosition(finalToast);\r\n this._serveToast(finalToast);\r\n }\r\n\r\n getGlobalConfigs(): GlobalConfigModel {\r\n return this._globalConfigs;\r\n }\r\n\r\n getToasts(): CmatToastModel[] {\r\n return this.toasts;\r\n }\r\n\r\n private _getDefaultToast(): GlobalConfigModel {\r\n const defaultToast: GlobalConfigModel = {\r\n title: '',\r\n showClose: true,\r\n showDuration: true,\r\n theme: 'toasta-theme-material',\r\n timeout: 5000,\r\n position: 'toasta-position-bottom-right',\r\n limit: 5,\r\n isCountdown: false,\r\n };\r\n\r\n return defaultToast;\r\n }\r\n\r\n private _setGlobalValues(toast: GlobalConfigModel): GlobalConfigModel {\r\n if (this._globalConfigs) {\r\n for (const [key, value] of Object.entries(this._globalConfigs)) {\r\n toast = {\r\n ...toast,\r\n [key]: value,\r\n };\r\n }\r\n\r\n if (this._globalConfigs.theme) {\r\n toast.theme = `toasta-theme-${this._globalConfigs.theme}` as GlobalTheme;\r\n }\r\n\r\n if (this._globalConfigs.position) {\r\n toast.position = `toasta-position-${this._globalConfigs.position}` as GlobalPosition;\r\n }\r\n\r\n if (this._globalConfigs.showClose === false) {\r\n toast.showClose = false;\r\n }\r\n\r\n if (this._globalConfigs.showDuration === false) {\r\n toast.showDuration = false;\r\n }\r\n }\r\n return toast;\r\n }\r\n\r\n private _setPosition(toast: CmatToastModel): void {\r\n const position = toast.position ?? 'toasta-position-bottom-right';\r\n\r\n this._positionSubject.set(position);\r\n }\r\n\r\n private _serveToast(toast: any): void {\r\n const latestToast = {\r\n ...toast,\r\n id: this._counter++,\r\n };\r\n\r\n if (this.toasts.length >= toast.limit) {\r\n this.toasts.shift();\r\n }\r\n this.toasts.push(latestToast);\r\n\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n}\r\n","import { NgClass, AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CmatToastModel } from './models/toast.model';\r\nimport { CmatToastModalComponent } from './toast-modal.component';\r\nimport { CmatToastService } from './toast.service';\r\n\r\n@Component({\r\n selector: 'cmat-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrls: ['./toast.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatToast',\r\n imports: [NgClass, CmatToastModalComponent, AsyncPipe]\r\n})\r\nexport class CmatToastComponent implements OnInit {\r\n\r\n toasts$: Observable<CmatToastModel[]>;\r\n position$: Observable<string>;\r\n\r\n private _cmatToastService = inject(CmatToastService);\r\n\r\n ngOnInit(): void {\r\n this.listenForToastEvent();\r\n }\r\n\r\n listenForToastEvent(): void {\r\n this.toasts$ = this._cmatToastService.toastPop$;\r\n this.position$ = this._cmatToastService.position$;\r\n }\r\n\r\n clearToast(toastId: any): void {\r\n this._cmatToastService.removeToast(toastId);\r\n }\r\n\r\n trackByFn(index: number, item: CmatToastModel): any {\r\n return item.id ?? index;\r\n }\r\n}\r\n","@if ((toasts$ | async); as toasts) {\r\n <div class=\"toast-wrapper\" [ngClass]=\"[position$ | async]\">\r\n @for (toast of toasts; track trackByFn($index, toast)) {\r\n <cmat-toast-modal [toast]=\"toast\"\r\n (closeToastEvent)=\"clearToast($event)\">\r\n </cmat-toast-modal>\r\n }\r\n </div>\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":"cmat-components-toast.mjs","sources":["../../../projects/cmat/components/toast/toast-modal.component.ts","../../../projects/cmat/components/toast/toast-modal.component.html","../../../projects/cmat/components/toast/toast.service.ts","../../../projects/cmat/components/toast/toast.component.ts","../../../projects/cmat/components/toast/toast.component.html","../../../projects/cmat/components/toast/cmat-components-toast.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n signal,\r\n ElementRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { CmatToastModel } from './models/toast.model';\r\n\r\ninterface ToastElement extends HTMLElement {\r\n addEventListener(type: 'animationend', listener: EventListener): void;\r\n removeEventListener(type: 'animationend', listener: EventListener): void;\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-toast-modal',\r\n templateUrl: './toast-modal.component.html',\r\n styleUrls: ['./toast-modal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatToastModal',\r\n imports: [NgClass]\r\n})\r\nexport class CmatToastModalComponent implements AfterViewInit, OnDestroy {\r\n @Input() toast: CmatToastModel;\r\n @Output() closeToastEvent = new EventEmitter<number>();\r\n\r\n readonly progressPercent = signal(100);\r\n readonly displayTitle = signal('');\r\n readonly displayType = signal('');\r\n readonly displayMessage = signal('');\r\n readonly leaving = signal(false);\r\n timeout: number;\r\n\r\n private _progressInterval: number | null = null;\r\n private _startTime: number;\r\n private _leaveTimeoutId: number | null = null;\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n ngAfterViewInit(): void {\r\n this.displayTitle.set(this.toast.title ?? '');\r\n this.displayType.set(this.toast.type ?? '');\r\n this.displayMessage.set(this.toast.message ?? '');\r\n this.handleProgress();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._clearInterval();\r\n this._clearLeaveTimeout();\r\n }\r\n\r\n handleProgress(): void {\r\n this.timeout = this.toast.timeout ?? 0;\r\n this._startTime = performance.now();\r\n\r\n if (this.toast.showDuration && this.timeout > 0) {\r\n this._progressInterval = window.setInterval(() => {\r\n const elapsed = performance.now() - this._startTime;\r\n const percent = 100 - (elapsed / this.timeout * 100);\r\n\r\n if (percent <= 0) {\r\n this.progressPercent.set(0);\r\n this._clearInterval();\r\n this.close(this.toast);\r\n return;\r\n }\r\n\r\n this.progressPercent.set(percent);\r\n\r\n if (this.toast.isCountdown) {\r\n const secondsRemaining = Math.ceil((this.timeout - elapsed) / 1000);\r\n this.displayTitle.set(`\\u5269\\u4f59\\u65f6\\u95f4: ${secondsRemaining.toString()}\\u79d2`);\r\n this.displayType.set('toasta-type-wait');\r\n this.displayMessage.set('');\r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n close(toast: CmatToastModel): void {\r\n this._clearInterval();\r\n\r\n if (this.leaving()) return;\r\n this.leaving.set(true);\r\n\r\n const el = this._elementRef.nativeElement.querySelector<ToastElement>('.toast');\r\n if (el) {\r\n const onEnd = (): void => {\r\n cleanup();\r\n this._emitClose(toast);\r\n };\r\n const cleanup = (): void => {\r\n el.removeEventListener('animationend', onEnd);\r\n this._clearLeaveTimeout();\r\n };\r\n el.addEventListener('animationend', onEnd);\r\n this._leaveTimeoutId = window.setTimeout(() => {\r\n cleanup();\r\n this._emitClose(toast);\r\n }, 400);\r\n } else {\r\n this._emitClose(toast);\r\n }\r\n }\r\n\r\n private _emitClose(toast: CmatToastModel): void {\r\n if (toast.id) {\r\n this.closeToastEvent.emit(toast.id);\r\n }\r\n }\r\n\r\n\r\n private _clearInterval(): void {\r\n if (this._progressInterval !== null) {\r\n clearInterval(this._progressInterval);\r\n this._progressInterval = null;\r\n }\r\n }\r\n\r\n private _clearLeaveTimeout(): void {\r\n if (this._leaveTimeoutId !== null) {\r\n clearTimeout(this._leaveTimeoutId);\r\n this._leaveTimeoutId = null; \r\n }\r\n }\r\n}\r\n","<!-- eslint-disable @angular-eslint/template/no-inline-styles -->\r\n<div class=\"toast\" [ngClass]=\"[displayType(), toast.theme, leaving() ? 'toast-leaving' : '']\">\r\n @if (toast.showClose) {\r\n <button type=\"button\" class=\"close-button\" (click)=\"close(toast)\">\r\n </button>\r\n }\r\n @if (displayTitle() || displayMessage()) {\r\n <div class=\"toast-text\">\r\n @if (displayTitle()) {\r\n <span class=\"toast-title\">{{displayTitle()}}</span>\r\n }\r\n @if (displayTitle() && displayMessage()) {\r\n <br />\r\n }\r\n @if (displayMessage()) {\r\n <span class=\"toast-message\">{{displayMessage()}}</span>\r\n }\r\n </div>\r\n }\r\n @if (toast.showDuration && timeout > 0) {\r\n <div class=\"durationbackground\">\r\n <div class=\"durationbar\" [style.width.%]=\"progressPercent()\">\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Injectable, signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { GlobalConfigModel } from './models/global-config.model';\r\nimport { CmatToastModel } from './models/toast.model';\r\nimport { GlobalPosition, GlobalTheme, GlobalType } from './models/type.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatToastService {\r\n toasts: CmatToastModel[] = [];\r\n\r\n private _positionSubject = signal<string>('toasta-position-bottom-right');\r\n private readonly _position$ = toObservable(this._positionSubject);\r\n private _toastPopSubject = new Subject<CmatToastModel[]>();\r\n private _globalConfigs: GlobalConfigModel;\r\n private _counter = 1;\r\n\r\n get position$(): Observable<string> {\r\n return this._position$;\r\n }\r\n get toastPop$(): Observable<CmatToastModel[]> {\r\n return this._toastPopSubject.asObservable();\r\n }\r\n\r\n\r\n receiveGlobalConfigs(configs: GlobalConfigModel): void {\r\n this._globalConfigs = { ...configs };\r\n }\r\n\r\n removeToast(toastId: number): void {\r\n this.toasts = this.toasts.filter(t => t.id !== toastId);\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n clearAll(): void {\r\n this.toasts.length = 0;\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n clearLast(): void {\r\n this.toasts.pop();\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n\r\n addToast(toast: CmatToastModel): void {\r\n const defaultToast = this._getDefaultToast();\r\n const globalToast = this._setGlobalValues(defaultToast);\r\n\r\n const finalToast: CmatToastModel = {\r\n type: `toasta-type-${toast.type}` as GlobalType,\r\n message: toast.message,\r\n title: toast.title ?? globalToast.title,\r\n showClose: toast.showClose ?? globalToast.showClose,\r\n showDuration: toast.showDuration ?? globalToast.showDuration,\r\n theme: toast.theme ? (`toasta-theme-${toast.theme}` as GlobalTheme) : globalToast.theme,\r\n timeout: toast.timeout !== null ? toast.timeout : globalToast.timeout,\r\n position: toast.position ? (`toasta-position-${toast.position}` as GlobalPosition) : globalToast.position,\r\n limit: toast.limit ?? globalToast.limit,\r\n isCountdown: toast.isCountdown ?? globalToast.isCountdown,\r\n };\r\n\r\n if (toast.showClose === false) {\r\n finalToast.showClose = false;\r\n }\r\n\r\n if (toast.showDuration === false) {\r\n finalToast.showDuration = false;\r\n }\r\n\r\n this._setPosition(finalToast);\r\n this._serveToast(finalToast);\r\n }\r\n\r\n getGlobalConfigs(): GlobalConfigModel {\r\n return this._globalConfigs;\r\n }\r\n\r\n getToasts(): CmatToastModel[] {\r\n return this.toasts;\r\n }\r\n\r\n private _getDefaultToast(): GlobalConfigModel {\r\n const defaultToast: GlobalConfigModel = {\r\n title: '',\r\n showClose: true,\r\n showDuration: true,\r\n theme: 'toasta-theme-material',\r\n timeout: 5000,\r\n position: 'toasta-position-bottom-right',\r\n limit: 5,\r\n isCountdown: false,\r\n };\r\n\r\n return defaultToast;\r\n }\r\n\r\n private _setGlobalValues(toast: GlobalConfigModel): GlobalConfigModel {\r\n if (this._globalConfigs) {\r\n const globalConfigs = this._globalConfigs;\r\n\r\n if (globalConfigs.title) {\r\n toast.title = globalConfigs.title;\r\n }\r\n if (globalConfigs.timeout !== undefined) {\r\n toast.timeout = globalConfigs.timeout;\r\n }\r\n if (globalConfigs.limit !== undefined) {\r\n toast.limit = globalConfigs.limit;\r\n }\r\n if (globalConfigs.isCountdown !== undefined) {\r\n toast.isCountdown = globalConfigs.isCountdown;\r\n }\r\n if (globalConfigs.theme) {\r\n toast.theme = `toasta-theme-${globalConfigs.theme}` as GlobalTheme;\r\n }\r\n if (globalConfigs.position) {\r\n toast.position = `toasta-position-${globalConfigs.position}` as GlobalPosition;\r\n }\r\n if (globalConfigs.showClose === false) {\r\n toast.showClose = false;\r\n }\r\n if (globalConfigs.showDuration === false) {\r\n toast.showDuration = false;\r\n }\r\n }\r\n return toast;\r\n }\r\n\r\n private _setPosition(toast: CmatToastModel): void {\r\n const position = toast.position ?? 'toasta-position-bottom-right';\r\n\r\n this._positionSubject.set(position);\r\n }\r\n\r\n private _serveToast(toast: CmatToastModel): void {\r\n const latestToast = {\r\n ...toast,\r\n id: this._counter++,\r\n };\r\n\r\n if (this.toasts.length >= (toast.limit ?? 0)) {\r\n this.toasts.shift();\r\n }\r\n this.toasts.push(latestToast);\r\n\r\n this._toastPopSubject.next(this.toasts);\r\n }\r\n}","import { NgClass, AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CmatToastModel } from './models/toast.model';\r\nimport { CmatToastModalComponent } from './toast-modal.component';\r\nimport { CmatToastService } from './toast.service';\r\n\r\n@Component({\r\n selector: 'cmat-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrls: ['./toast.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatToast',\r\n imports: [NgClass, CmatToastModalComponent, AsyncPipe]\r\n})\r\nexport class CmatToastComponent implements OnInit {\r\n\r\n toasts$: Observable<CmatToastModel[]>;\r\n position$: Observable<string>;\r\n\r\n private _cmatToastService = inject(CmatToastService);\r\n\r\n ngOnInit(): void {\r\n this.listenForToastEvent();\r\n }\r\n\r\n listenForToastEvent(): void {\r\n this.toasts$ = this._cmatToastService.toastPop$;\r\n this.position$ = this._cmatToastService.position$;\r\n }\r\n\r\n clearToast(toastId: number): void {\r\n this._cmatToastService.removeToast(toastId);\r\n }\r\n\r\n trackByFn(index: number, item: CmatToastModel): number {\r\n return item.id ?? index;\r\n }\r\n}\r\n","@if ((toasts$ | async); as toasts) {\r\n <div class=\"toast-wrapper\" [ngClass]=\"[position$ | async]\">\r\n @for (toast of toasts; track trackByFn($index, toast)) {\r\n <cmat-toast-modal [toast]=\"toast\"\r\n (closeToastEvent)=\"clearToast($event)\">\r\n </cmat-toast-modal>\r\n }\r\n </div>\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ class CmatTransferPickerService {
|
|
|
51
51
|
['2', (a, b) => a > b],
|
|
52
52
|
['3', (a, b) => a < b],
|
|
53
53
|
['0,2', (a, b) => a >= b],
|
|
54
|
-
['0,
|
|
54
|
+
['0,3', (a, b) => a <= b]
|
|
55
55
|
]);
|
|
56
56
|
this._conditionMap = new Map([
|
|
57
57
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
@@ -155,7 +155,7 @@ class CmatTransferPickerService {
|
|
|
155
155
|
this._filteredDataSource.push(data);
|
|
156
156
|
}
|
|
157
157
|
else {
|
|
158
|
-
compareResultArr.push(compare);
|
|
158
|
+
compareResultArr.push(compare ?? false);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
});
|
|
@@ -231,12 +231,12 @@ class CmatTransferPickerFilterComponent {
|
|
|
231
231
|
}
|
|
232
232
|
onFilterClick(filter) {
|
|
233
233
|
filter.selected = !filter.selected;
|
|
234
|
-
const existFilter = this.filterData.filters.find(item => item.value === filter.value);
|
|
234
|
+
const existFilter = this.filterData.filters.find((item) => item.value === filter.value);
|
|
235
235
|
if (!existFilter) {
|
|
236
236
|
this.filterData.filters.push(filter);
|
|
237
237
|
}
|
|
238
238
|
else if (!filter.selected) {
|
|
239
|
-
this.filterData.filters.splice(this.filterData.filters.findIndex(j => j === filter), 1);
|
|
239
|
+
this.filterData.filters.splice(this.filterData.filters.findIndex((j) => j === filter), 1);
|
|
240
240
|
}
|
|
241
241
|
this.changeFilterData();
|
|
242
242
|
}
|
|
@@ -247,6 +247,11 @@ class CmatTransferPickerFilterComponent {
|
|
|
247
247
|
changeFilterData() {
|
|
248
248
|
this._service.filterDataSource({ filterData: this.filterData });
|
|
249
249
|
}
|
|
250
|
+
ngOnDestroy() {
|
|
251
|
+
if (this.overlayRef) {
|
|
252
|
+
this.overlayRef.dispose();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
250
255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatTransferPickerFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
251
256
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: CmatTransferPickerFilterComponent, isStandalone: true, selector: "cmat-transfer-picker-filter", inputs: { filters: "filters" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }], exportAs: ["cmatTransferPickerFilter"], ngImport: i0, template: "<button type=\"button\" class=\"mr-2 mt-1\" matIconButton cdk-overlay-origin (click)=\"toggleFilter()\">\r\n <mat-icon svgIcon=\"mat_outline:filter_list\"></mat-icon>\r\n</button>\r\n<ng-template #filterTemplate=\"cdkPortal\" cdkPortal>\r\n <div\r\n class=\"transfer-picker-filter-panel bg-card flex flex-col flex-nowrap place-content-start box-border items-start w-full shadow\">\r\n <mat-button-toggle-group name=\"condition\" [hideSingleSelectionIndicator]=\"true\" (change)=\"onConditionChange($event.value)\">\r\n <mat-button-toggle value=\"or\" [checked]=\"filterData.condition === 'or'\">\u6216</mat-button-toggle>\r\n <mat-button-toggle value=\"and\" [checked]=\"filterData.condition === 'and'\">\u4E14</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n\r\n <div class=\"chip-list\">\r\n @for (item of filters; track $index) {\r\n <div class=\"chip-wrapper\" role=\"presentation\"\r\n (click)=\"onFilterClick(item)\">\r\n <span class=\"chip\" [ngClass]=\"{selected: item?.selected}\">{{item.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".transfer-picker-filter-panel{min-width:276px;padding:10px 0;border-width:1px}.transfer-picker-filter-panel .mat-button-toggle-group{font-size:12px;margin-right:15px;margin-bottom:20px;align-self:flex-end}.transfer-picker-filter-panel .mat-button-toggle-group .mat-button-toggle-label-content{line-height:1.8}.transfer-picker-filter-panel .chip-list{width:276px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;box-sizing:border-box}.transfer-picker-filter-panel .chip-list:after{content:\"\";flex:1 1 0%;max-width:33.333333%}.transfer-picker-filter-panel .chip-list .chip-wrapper{flex:1 1 0%;box-sizing:border-box;max-width:33.333333%;text-align:center;margin-bottom:20px}.transfer-picker-filter-panel .chip-list .chip-wrapper .chip{display:inline-block;min-width:50%;cursor:pointer;padding:5px 10px;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
252
257
|
}
|
|
@@ -272,7 +277,7 @@ class CmatTransferPickerSearchComponent {
|
|
|
272
277
|
this.keyword
|
|
273
278
|
.valueChanges
|
|
274
279
|
.pipe(debounceTime(200), distinctUntilChanged())
|
|
275
|
-
.subscribe((keyword) => this._service.filterDataSource({ keyword }));
|
|
280
|
+
.subscribe((keyword) => this._service.filterDataSource({ keyword: keyword ?? '' }));
|
|
276
281
|
}
|
|
277
282
|
reset() {
|
|
278
283
|
this.keyword.setValue('');
|
|
@@ -329,7 +334,7 @@ class CmatTransferPickerSourceComponent {
|
|
|
329
334
|
: new CmatTransferItemFlatNode();
|
|
330
335
|
flatNode.label = node.label;
|
|
331
336
|
flatNode.value = node.value;
|
|
332
|
-
flatNode.disabled = node.disabled;
|
|
337
|
+
flatNode.disabled = !!node.disabled;
|
|
333
338
|
flatNode.level = level;
|
|
334
339
|
flatNode.expandable = !!node.children;
|
|
335
340
|
this.nestedNodeMap.set(node, flatNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-transfer-picker.mjs","sources":["../../../projects/cmat/components/transfer-picker/transfer-picker.service.ts","../../../projects/cmat/components/transfer-picker/filter/filter.component.ts","../../../projects/cmat/components/transfer-picker/filter/filter.component.html","../../../projects/cmat/components/transfer-picker/search/search.component.ts","../../../projects/cmat/components/transfer-picker/search/search.component.html","../../../projects/cmat/components/transfer-picker/interface.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.html","../../../projects/cmat/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.html","../../../projects/cmat/components/transfer-picker/transfer-picker.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker.component.html","../../../projects/cmat/components/transfer-picker/cmat-components-transfer-picker.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n CmatSourceOptions,\r\n CmatTransferFilterData,\r\n CmatTransferFilterItem,\r\n CmatTransferItemNode\r\n} from './interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTransferPickerService {\r\n private readonly _dataSourceChange = signal<CmatTransferItemNode[]>([]);\r\n private readonly _refreshDataSourceChange = signal<{ clear: boolean; nonce: number }>({ clear: true, nonce: 0 });\r\n private readonly _filtersChange = signal<CmatTransferFilterItem[]>([]);\r\n private readonly _sourceOptionsChange = signal<CmatSourceOptions | void>(void 0);\r\n private readonly _selectedValuesChange = signal<string[]>([]);\r\n\r\n private _dataSource: CmatTransferItemNode[];\r\n\r\n private _filterData: CmatTransferFilterData;\r\n private _keyword: string;\r\n private _originalDataSource: CmatTransferItemNode[];\r\n private _filteredDataSource: CmatTransferItemNode[];\r\n private _compareMap: Map<string, (a: any, b: any) => boolean>;\r\n private _conditionMap: Map<string, (arr: boolean[]) => boolean>;\r\n private _refreshNonce = 0;\r\n private readonly _dataSourceChange$ = toObservable(this._dataSourceChange);\r\n private readonly _refreshDataSourceChange$ = toObservable(this._refreshDataSourceChange);\r\n private readonly _filtersChange$ = toObservable(this._filtersChange);\r\n private readonly _sourceOptionsChange$ = toObservable(this._sourceOptionsChange);\r\n private readonly _selectedValuesChange$ = toObservable(this._selectedValuesChange);\r\n\r\n constructor() {\r\n this._compareMap = new Map<string, (a: any, b: any) => boolean>([\r\n ['0', (a, b): boolean => a === b],\r\n ['1', (a, b): boolean => a !== b],\r\n ['2', (a, b): boolean => a > b],\r\n ['3', (a, b): boolean => a < b],\r\n ['0,2', (a, b): boolean => a >= b],\r\n ['0,2', (a, b): boolean => a <= b]\r\n ]);\r\n\r\n this._conditionMap = new Map<string, (arr: boolean[]) => boolean>([\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n ['or', arr => arr.reduce((o, item) => (o.result = o.result || item || o.prev, o.prev = item, o), {\r\n result: false,\r\n prev: arr[0]\r\n }).result],\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n ['and', arr => arr.reduce((o, item) => (o.result = o.result && item && o.prev, o.prev = item, o), {\r\n result: true,\r\n prev: arr[0]\r\n }).result],\r\n ]);\r\n }\r\n\r\n get dataSourceChange(): Observable<CmatTransferItemNode[]> {\r\n return this._dataSourceChange$;\r\n }\r\n\r\n get refreshDataSourceChange(): Observable<{ clear: boolean; nonce: number }> {\r\n return this._refreshDataSourceChange$;\r\n }\r\n\r\n get filtersChange(): Observable<CmatTransferFilterItem[]> {\r\n return this._filtersChange$;\r\n }\r\n\r\n get sourceOptionsChange(): Observable<CmatSourceOptions | void> {\r\n return this._sourceOptionsChange$;\r\n }\r\n\r\n get selectedValuesChange(): Observable<string[]> {\r\n return this._selectedValuesChange$;\r\n }\r\n\r\n get dataSource(): CmatTransferItemNode[] {\r\n return this._dataSource;\r\n }\r\n\r\n set dataSource(data: CmatTransferItemNode[]) {\r\n this._dataSource = data;\r\n\r\n if (!this._originalDataSource) {\r\n this._originalDataSource = JSON.parse(JSON.stringify(data));\r\n }\r\n\r\n this._dataSourceChange.set(data);\r\n }\r\n\r\n set sourceOptions(value: CmatSourceOptions) {\r\n this._sourceOptionsChange.set(value);\r\n }\r\n\r\n set selectedValues(value: string[]) {\r\n this._selectedValuesChange.set(value);\r\n }\r\n\r\n\r\n filterDataSource({ filterData, keyword }: { filterData?: CmatTransferFilterData; keyword?: string }): void {\r\n this._filterData = filterData ?? this._filterData;\r\n this._keyword = keyword === void (0) ? this._keyword : keyword;\r\n\r\n if (filterData?.filters.length) {\r\n this._filterDataSourceByType(this._keyword ? this._filteredDataSource : this._originalDataSource, 'Filters');\r\n return;\r\n } else if (filterData && !filterData.filters.length) {\r\n if (this._keyword) {\r\n this._filterDataSourceByType(this._originalDataSource, 'Keyword');\r\n } else {\r\n this.resetDataSource(false);\r\n }\r\n return;\r\n }\r\n\r\n if (keyword) {\r\n this._filterDataSourceByType(this._filterData?.filters.length ? this._filteredDataSource : this._originalDataSource, 'Keyword');\r\n return;\r\n } else if (!keyword) {\r\n if (this._filterData?.filters.length) {\r\n this._filterDataSourceByType(this._originalDataSource, 'Filters');\r\n } else {\r\n this.resetDataSource(false);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n resetDataSource(clear:boolean): void {\r\n this.dataSource = this._originalDataSource;\r\n this._filteredDataSource = [];\r\n this._refreshDataSourceChange.set({ clear, nonce: ++this._refreshNonce });\r\n }\r\n\r\n private _filterDataSourceByType(dataSource: CmatTransferItemNode[], type: 'Filters' | 'Keyword'): void {\r\n this._filteredDataSource = [];\r\n switch (type) {\r\n case 'Filters':\r\n this._setFilteredDataSourceByFilters(dataSource);\r\n break;\r\n case 'Keyword':\r\n this._setFilteredDataSourceByKeyword(dataSource);\r\n break;\r\n }\r\n this.dataSource = this._filteredDataSource;\r\n this._refreshDataSourceChange.set({ clear: false, nonce: ++this._refreshNonce });\r\n }\r\n\r\n private _setFilteredDataSourceByFilters(dataSource: CmatTransferItemNode[]): void {\r\n dataSource.map((data) => {\r\n const compareResultArr: any = [];\r\n this._filterData.filters.map((filter) => {\r\n if (Object.prototype.hasOwnProperty.call(data, filter.field)) {\r\n const compare = this._compareMap.get(filter.condition.sort().toString())?.(filter.value, data[filter.field]);\r\n\r\n if (this._filterData.filters.length < 2 && compare) {\r\n this._filteredDataSource.push(data);\r\n } else {\r\n compareResultArr.push(compare);\r\n }\r\n }\r\n });\r\n\r\n if (compareResultArr.length && this._conditionMap.get(this._filterData.condition)?.(compareResultArr)) {\r\n this._filteredDataSource.push(data);\r\n }\r\n\r\n if (data.children && data.children.length > 0) {\r\n this._setFilteredDataSourceByFilters(data.children);\r\n }\r\n });\r\n }\r\n\r\n private _setFilteredDataSourceByKeyword(dataSource: CmatTransferItemNode[]): void {\r\n dataSource.map((data) => {\r\n if (data.label.includes(this._keyword)) {\r\n this._filteredDataSource.push(data);\r\n } else if (data.children && data.children.length > 0) {\r\n this._setFilteredDataSourceByKeyword(data.children);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { CdkOverlayOrigin, Overlay, OverlayConfig, OverlayModule, OverlayRef } from '@angular/cdk/overlay';\r\nimport { CdkPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatTransferFilterData, CmatTransferFilterItem } from '../interface';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerFilter',\r\n imports: [MatButtonToggleModule, MatIconModule, CommonModule, PortalModule, MatButtonModule, OverlayModule]\r\n})\r\nexport class CmatTransferPickerFilterComponent implements OnInit {\r\n @Input()\r\n filters: CmatTransferFilterItem[] | undefined;\r\n\r\n @ViewChild(CdkOverlayOrigin, { static: true }) overlayOrigin: CdkOverlayOrigin;\r\n @ViewChild('filterTemplate', { static: true }) filterTemplate: CdkPortal;\r\n overlayRef: OverlayRef;\r\n\r\n filterData: CmatTransferFilterData;\r\n\r\n private _overlay = inject(Overlay);\r\n private _service = inject(CmatTransferPickerService);\r\n\r\n\r\n constructor() {\r\n this.filterData = {\r\n condition: 'or',\r\n filters: []\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this._overlay.scrollStrategies.block()\r\n });\r\n\r\n config.positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(\r\n this.overlayOrigin.elementRef).withPositions([\r\n {\r\n originX: 'end', originY: 'bottom', overlayX: 'end',\r\n overlayY: 'top', offsetX: 5\r\n }, {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -5\r\n }\r\n ]);\r\n\r\n this.overlayRef = this._overlay.create(config);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.overlayRef.detach();\r\n });\r\n }\r\n\r\n toggleFilter(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.overlayRef.detach();\r\n } else {\r\n this.overlayRef.attach(this.filterTemplate);\r\n }\r\n }\r\n\r\n onFilterClick(filter: CmatTransferFilterItem): void {\r\n filter.selected = !filter.selected;\r\n\r\n const existFilter = this.filterData.filters.find(item => item.value === filter.value);\r\n\r\n if (!existFilter) {\r\n this.filterData.filters.push(filter);\r\n } else if (!filter.selected) {\r\n this.filterData.filters.splice(this.filterData.filters.findIndex(j => j === filter), 1);\r\n }\r\n\r\n this.changeFilterData();\r\n }\r\n\r\n onConditionChange(event: any): void {\r\n this.filterData.condition = event;\r\n\r\n this.changeFilterData();\r\n }\r\n\r\n changeFilterData(): void {\r\n this._service.filterDataSource({ filterData: this.filterData });\r\n }\r\n}\r\n","<button type=\"button\" class=\"mr-2 mt-1\" matIconButton cdk-overlay-origin (click)=\"toggleFilter()\">\r\n <mat-icon svgIcon=\"mat_outline:filter_list\"></mat-icon>\r\n</button>\r\n<ng-template #filterTemplate=\"cdkPortal\" cdkPortal>\r\n <div\r\n class=\"transfer-picker-filter-panel bg-card flex flex-col flex-nowrap place-content-start box-border items-start w-full shadow\">\r\n <mat-button-toggle-group name=\"condition\" [hideSingleSelectionIndicator]=\"true\" (change)=\"onConditionChange($event.value)\">\r\n <mat-button-toggle value=\"or\" [checked]=\"filterData.condition === 'or'\">或</mat-button-toggle>\r\n <mat-button-toggle value=\"and\" [checked]=\"filterData.condition === 'and'\">且</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n\r\n <div class=\"chip-list\">\r\n @for (item of filters; track $index) {\r\n <div class=\"chip-wrapper\" role=\"presentation\"\r\n (click)=\"onFilterClick(item)\">\r\n <span class=\"chip\" [ngClass]=\"{selected: item?.selected}\">{{item.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-search',\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerSearch',\r\n imports: [MatFormFieldModule, MatIconModule, ReactiveFormsModule, MatButtonModule, MatInputModule]\r\n})\r\nexport class CmatTransferPickerSearchComponent implements OnInit {\r\n\r\n @Input()\r\n searchPlaceholder: string|undefined;\r\n\r\n keyword: FormControl;\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n\r\n constructor() {\r\n this.keyword = new FormControl();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.keyword\r\n .valueChanges\r\n .pipe(\r\n debounceTime(200),\r\n distinctUntilChanged()\r\n )\r\n .subscribe((keyword: any) => this._service.filterDataSource({ keyword }));\r\n }\r\n\r\n reset(): void {\r\n this.keyword.setValue('');\r\n }\r\n}\r\n","<mat-form-field>\r\n <input placeholder=\"{{searchPlaceholder}}\" matInput type=\"text\" [formControl]=\"keyword\">\r\n @if (keyword.value) {\r\n <button type=\"button\" matSuffix matIconButton (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:close\"></mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>","/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nexport class CmatTransferItemNode {\r\n [key: string]: any;\r\n\r\n children?: CmatTransferItemNode[];\r\n label: string;\r\n value: string | number;\r\n\r\n}\r\n\r\n\r\nexport class CmatTransferItemFlatNode {\r\n label: string;\r\n value: string | number;\r\n level: number;\r\n disabled?: boolean;\r\n expandable: boolean;\r\n}\r\n\r\nexport enum CmatTransferFilterCondition {\r\n EQUALS,\r\n NOT_EQUALS,\r\n MORE_THAN,\r\n LESS_THAN\r\n}\r\n\r\nexport interface CmatTransferFilterItem {\r\n label: string;\r\n value: number | string;\r\n condition: CmatTransferFilterCondition[];\r\n field: string;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface CmatTransferFilterData {\r\n condition: 'or' | 'and';\r\n filters: CmatTransferFilterItem[];\r\n}\r\n\r\nexport interface CmatSourceOptions {\r\n title: string;\r\n filterable: boolean;\r\n searchable: boolean;\r\n searchPlaceholder: string;\r\n filters: CmatTransferFilterItem[];\r\n}\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, OnInit, ViewChild, ViewEncapsulation, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { Observable, of as ofObservable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatTransferPickerFilterComponent } from '../filter/filter.component';\r\nimport { CmatSourceOptions, CmatTransferItemFlatNode, CmatTransferItemNode } from '../interface';\r\nimport { CmatTransferPickerSearchComponent } from '../search/search.component';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-source',\r\n templateUrl: './transfer-picker-source.component.html',\r\n styleUrls: ['./transfer-picker-source.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerSource',\r\n imports: [MatCardModule, MatTreeModule, MatCheckboxModule, MatIconModule, MatButtonModule,\r\n CmatTransferPickerFilterComponent, CmatTransferPickerSearchComponent, ScrollingModule]\r\n})\r\nexport class CmatTransferPickerSourceComponent implements OnInit, AfterViewInit {\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatTransferItemNode>;\r\n\r\n\r\n nestedNodeMap = new Map<CmatTransferItemNode, CmatTransferItemFlatNode>();\r\n\r\n readonly dataSource = signal<CmatTransferItemNode[]>([]);\r\n readonly dataFlatNodes = signal<CmatTransferItemFlatNode[]>([]);\r\n\r\n\r\n checklistSelection = new SelectionModel<CmatTransferItemFlatNode>(true /* multiple */);\r\n\r\n readonly options = signal<CmatSourceOptions>({\r\n title: '',\r\n filterable: false,\r\n searchable: false,\r\n searchPlaceholder: '',\r\n filters: []\r\n });\r\n\r\n readonly committedSelection = signal<CmatTransferItemFlatNode[]>([]);\r\n readonly committedValueSet = computed(() => new Set(this.committedSelection().map(node => node.value)));\r\n\r\n private readonly _flatNodeByValue = new Map<string | number, CmatTransferItemFlatNode>();\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n // 监听数据源变化并重建平铺节点\r\n this._service\r\n .dataSourceChange\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((data: CmatTransferItemNode[]) => {\r\n this.dataSource.set(data);\r\n this._flatNodeByValue.clear();\r\n this.dataFlatNodes.set(this._getFlattenNodes(this.dataSource()));\r\n });\r\n\r\n this._service.refreshDataSourceChange.pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ clear }: { clear: boolean; nonce: number }) => {\r\n // 刷新时按状态重置或恢复选择\r\n if (clear) {\r\n this.checklistSelection.clear();\r\n this.committedSelection.set([]);\r\n } else {\r\n this._selectNodesByValues(this.checklistSelection.selected.map(node => node.value));\r\n this.commitSelection();\r\n }\r\n });\r\n\r\n this._service\r\n .selectedValuesChange\r\n .pipe(\r\n filter((values: string | any[]) => !!values.length),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((values: any) => {\r\n // 根据外部值同步选中节点\r\n this._selectNodesByValues(values as (string | number)[]);\r\n this.commitSelection();\r\n\r\n });\r\n\r\n this._service\r\n .sourceOptionsChange\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((options: CmatSourceOptions | void) => { if (options) this.options.set(options); });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 初始化时展开整棵树\r\n this.tree.expandAll();\r\n }\r\n\r\n getCommittedSelection(): CmatTransferItemFlatNode[] {\r\n return this.committedSelection();\r\n }\r\n\r\n commitSelection(): CmatTransferItemFlatNode[] {\r\n this.committedSelection.set(this._cloneFlatNodes(this.checklistSelection.selected));\r\n return this.committedSelection();\r\n }\r\n\r\n resetSelectedItem(item: CmatTransferItemFlatNode): void {\r\n const target = this._flatNodeByValue.get(item.value) ?? this.checklistSelection.selected.find(i => i.value === item.value);\r\n if (!target) {\r\n return;\r\n }\r\n\r\n const descendants = this._getDescendants(target);\r\n this.checklistSelection.deselect(target, ...descendants.filter(node => this.checklistSelection.isSelected(node)));\r\n this._checkAllParentsSelection(target);\r\n this.commitSelection();\r\n }\r\n\r\n childrenAccessor: (node: CmatTransferItemNode) => CmatTransferItemNode[] = (node: CmatTransferItemNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatTransferItemNode) => boolean = (_: number, node: CmatTransferItemNode) => !!node.children && node.children.length > 0;\r\n\r\n\r\n descendantsAllSelected(node: CmatTransferItemFlatNode): boolean {\r\n // 判断后代是否全部选中\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child => this.checklistSelection.isSelected(child));\r\n }\r\n\r\n\r\n descendantsPartiallySelected(node: CmatTransferItemFlatNode): boolean {\r\n // 判断后代是否部分选中\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !this.descendantsAllSelected(node);\r\n }\r\n\r\n\r\n transferItemSelectionToggle(node: CmatTransferItemFlatNode): void {\r\n // 切换分支节点选择状态\r\n this.checklistSelection.toggle(node);\r\n let descendants = this._getDescendants(node);\r\n descendants = descendants.filter(n => !this.isNodeDisabled(n));\r\n this.checklistSelection.isSelected(node)\r\n ? this.checklistSelection.select(...descendants)\r\n : this.checklistSelection.deselect(...descendants);\r\n descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n this._checkAllParentsSelection(node);\r\n }\r\n\r\n\r\n transferLeafItemSelectionToggle(node: CmatTransferItemFlatNode): void {\r\n // 切换叶子节点选择状态\r\n this.checklistSelection.toggle(node);\r\n this._checkAllParentsSelection(node);\r\n }\r\n\r\n isNodeDisabled(node: CmatTransferItemFlatNode): boolean {\r\n return !!node.disabled || this.committedValueSet().has(node.value);\r\n }\r\n\r\n private _getLevel = (node: CmatTransferItemFlatNode): number => node.level;\r\n\r\n private _isExpandable = (node: CmatTransferItemFlatNode): boolean => node.expandable;\r\n\r\n private _getChildren = (node: CmatTransferItemNode): Observable<CmatTransferItemNode[]> => ofObservable(node.children ?? []);\r\n\r\n\r\n private _transformer = (node: CmatTransferItemNode, level: number): CmatTransferItemFlatNode => {\r\n const flatNode = this.nestedNodeMap.has(node) && this.nestedNodeMap.get(node)?.value === node.value\r\n ? this.nestedNodeMap.get(node)!\r\n : new CmatTransferItemFlatNode();\r\n flatNode.label = node.label;\r\n flatNode.value = node.value;\r\n flatNode.disabled = node.disabled;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children;\r\n this.nestedNodeMap.set(node, flatNode);\r\n this._flatNodeByValue.set(node.value, flatNode);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatTransferItemFlatNode): CmatTransferItemFlatNode[] {\r\n // 收集当前节点的所有后代节点\r\n const flatNodes = this.dataFlatNodes();\r\n const startIndex = flatNodes.findIndex(j => j === dataNode);\r\n const results: CmatTransferItemFlatNode[] = [];\r\n\r\n for (let i = startIndex + 1;\r\n i < flatNodes.length && this._getLevel(dataNode) < this._getLevel(flatNodes[i]);\r\n i++) {\r\n results.push(flatNodes[i]);\r\n }\r\n return results;\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatTransferItemNode[], i: number = 0): CmatTransferItemFlatNode[] {\r\n // 将树结构转换为平铺节点\r\n const flattenedNodes: CmatTransferItemFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n flattenedNodes.push(this._transformer(node, i));\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _checkAllParentsSelection(node: CmatTransferItemFlatNode): void {\r\n // 逐级回溯父节点并更新选择状态\r\n let parent: CmatTransferItemFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n\r\n private _checkRootNodeSelection(node: CmatTransferItemFlatNode): void {\r\n // 根据子节点状态更新当前节点\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && descAllSelected) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n\r\n private _cloneFlatNode(node: CmatTransferItemFlatNode): CmatTransferItemFlatNode {\r\n return {\r\n label: node.label,\r\n value: node.value,\r\n level: node.level,\r\n disabled: node.disabled,\r\n expandable: node.expandable\r\n };\r\n }\r\n\r\n private _cloneFlatNodes(nodes: CmatTransferItemFlatNode[]): CmatTransferItemFlatNode[] {\r\n return nodes.map(node => this._cloneFlatNode(node));\r\n }\r\n\r\n\r\n\r\n private _getParentNode(node: CmatTransferItemFlatNode): CmatTransferItemFlatNode | null {\r\n // 获取当前节点的父节点\r\n const currentLevel = this._getLevel(node);\r\n const flatNodes = this.dataFlatNodes();\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = flatNodes.findIndex(j => j === node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = flatNodes[i];\r\n\r\n if (this._getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _selectNodesByValues(values: readonly (string | number)[]): void {\r\n this.checklistSelection.clear();\r\n\r\n for (const value of values) {\r\n const node = this._flatNodeByValue.get(value);\r\n\r\n if (node) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<mat-card class=\"transfer-picker-source shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-source-title\">{{options().title}}</mat-card-title>\r\n @if (options().filterable) {\r\n <cmat-transfer-picker-filter\r\n [filters]=\"options().filters\"></cmat-transfer-picker-filter>\r\n }\r\n </mat-card-header>\r\n <mat-card-content class=\"transfer-picker-source-content\">\r\n @if (options().searchable) {\r\n <cmat-transfer-picker-search\r\n [searchPlaceholder]=\"options().searchPlaceholder\"></cmat-transfer-picker-search>\r\n }\r\n\r\n <cdk-virtual-scroll-viewport itemSize=\"48\"\r\n class=\"transfer-picker-source-scroll-wrapper overflow-y-auto scrollbar-custom\">\r\n <mat-tree #componentTree [dataSource]=\"dataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" matIconButton disabled> </button>\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"checklistSelection.isSelected(nestedNodeMap.get(node)!)\"\r\n [disabled]=\"isNodeDisabled(nestedNodeMap.get(node)!)\" (change)=\"transferLeafItemSelectionToggle(nestedNodeMap.get(node)!);\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle>\r\n <mat-icon svgIcon=\"{{componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'}}\"\r\n class=\"mat-icon-rtl-mirror\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)||committedValueSet().has(nestedNodeMap.get(node)!.value)\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\" [disabled]=\"isNodeDisabled(nestedNodeMap.get(node)!)\"\r\n (change)=\"transferItemSelectionToggle(nestedNodeMap.get(node)!)\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n </mat-tree>\r\n @if (!dataSource().length) {\r\n <div class=\"transfer-picker-source-empty\">暂无数据</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { CmatTransferItemFlatNode } from '../interface';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-target',\r\n templateUrl: './transfer-picker-target.component.html',\r\n styleUrls: ['./transfer-picker-target.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerTarget',\r\n imports: [MatCardModule, MatListModule, MatIconModule, ScrollingModule, MatButtonModule]\r\n})\r\nexport class CmatTransferPickerTargetComponent {\r\n\r\n @Input()\r\n committedSelection: CmatTransferItemFlatNode[];\r\n\r\n @Output()\r\n clearItemChange: EventEmitter<CmatTransferItemFlatNode>;\r\n\r\n constructor() {\r\n this.clearItemChange = new EventEmitter<CmatTransferItemFlatNode>();\r\n }\r\n\r\n clearItem(item: CmatTransferItemFlatNode): void {\r\n this.clearItemChange.emit(item);\r\n }\r\n}\r\n","<mat-card class=\"transfer-picker-target shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-target-title\">已选择 {{committedSelection.length}} 项</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cdk-virtual-scroll-viewport itemSize=\"40\"\r\n class=\"transfer-picker-target-scroll-wrapper overflow-y-auto scrollbar-custom\">\r\n <mat-list dense>\r\n @for (item of committedSelection; track $index) {\r\n <mat-list-item class=\"transfer-picker-target-item\">\r\n <div mat-line class=\"flex flex-row items-center\">\r\n <div class=\"flex-1\">{{item.label}}</div>\r\n <button type=\"button\" matIconButton (click)=\"clearItem(item)\">\r\n <mat-icon svgIcon=\"heroicons_solid:x-circle\"></mat-icon>\r\n </button>\r\n </div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n @if (!committedSelection.length) {\r\n <div class=\"transfer-picker-target-empty\">暂无数据</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Injector, OnInit, Output, ViewChild, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatTransferFilterItem, CmatTransferItemFlatNode, CmatTransferItemNode } from './interface';\r\nimport { CmatTransferPickerSourceComponent } from './transfer-picker-source/transfer-picker-source.component';\r\nimport { CmatTransferPickerTargetComponent } from './transfer-picker-target/transfer-picker-target.component';\r\nimport { CmatTransferPickerService } from './transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker',\r\n templateUrl: './transfer-picker.component.html',\r\n styleUrls: ['./transfer-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPicker',\r\n imports: [MatIconModule, MatButtonModule, CmatTransferPickerSourceComponent, CmatTransferPickerTargetComponent]\r\n})\r\nexport class CmatTransferPickerComponent implements OnInit, AfterViewInit {\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n filterable: boolean;\r\n\r\n @Input()\r\n searchable: boolean;\r\n\r\n @Input()\r\n searchPlaceholder: string;\r\n\r\n @Input()\r\n dataSource: CmatTransferItemNode[];\r\n\r\n @Input()\r\n filters: CmatTransferFilterItem[];\r\n\r\n @Input()\r\n selectedValues: string[];\r\n\r\n @Output()\r\n selectChange: EventEmitter<CmatTransferItemFlatNode[]>;\r\n\r\n @ViewChild(CmatTransferPickerSourceComponent, { static: true })\r\n source: CmatTransferPickerSourceComponent;\r\n\r\n readonly committedSelection = signal<CmatTransferItemFlatNode[]>([]);\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n private readonly _injector = inject(Injector);\r\n\r\n constructor() {\r\n this.filterable = true;\r\n this.dataSource = [];\r\n this.filters = [];\r\n this.committedSelection.set([]);\r\n this.selectedValues = [];\r\n }\r\n\r\n ngOnInit(): void {\r\n this._service.dataSource = this.dataSource;\r\n this._service.selectedValues = this.selectedValues;\r\n\r\n this._service.sourceOptions = {\r\n title: this.title || '数据源',\r\n filterable: this.filterable || true,\r\n searchable: this.searchable || true,\r\n searchPlaceholder: this.searchPlaceholder || '搜索关键字',\r\n filters: this.filters || []\r\n };\r\n\r\n this.selectChange = new EventEmitter<CmatTransferItemFlatNode[]>();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectedValues.length) {\r\n afterNextRender(() => {\r\n this.pick();\r\n }, { injector: this._injector });\r\n }\r\n }\r\n\r\n pick(): void {\r\n this._commitSelection(this.source.commitSelection());\r\n }\r\n\r\n reset(): void {\r\n if (this.committedSelection().length) {\r\n this._commitSelection([]);\r\n this._service.resetDataSource(true);\r\n }\r\n }\r\n\r\n onClearItemChange(item: CmatTransferItemFlatNode): void {\r\n if (item) {\r\n this.source.resetSelectedItem(item);\r\n this._commitSelection(this.source.getCommittedSelection());\r\n }\r\n }\r\n\r\n private _commitSelection(selectedList: CmatTransferItemFlatNode[]): void {\r\n this.committedSelection.set([...selectedList]);\r\n this._emitterChange();\r\n }\r\n\r\n private _emitterChange(): void {\r\n this.selectChange.emit(this.committedSelection());\r\n }\r\n}\r\n","<cmat-transfer-picker-source></cmat-transfer-picker-source>\r\n<div class=\"cmat-transfer-picker-operation flex flex-col flex-nowrap gap-2 mx-2\">\r\n <button type=\"button\" class=\"pl-2\" matButton=\"filled\" color=\"primary\" (click)=\"pick()\">\r\n 选择<mat-icon svgIcon=\"mat_outline:chevron_right\"></mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"pl-2\" matButton=\"filled\" color=\"primary\" (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:chevron_left\"></mat-icon>重置\r\n </button>\r\n</div>\r\n<cmat-transfer-picker-target [committedSelection]=\"committedSelection()\" (clearItemChange)=\"onClearItemChange($event)\">\r\n</cmat-transfer-picker-target>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i4","i5","ofObservable","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-components-transfer-picker.mjs","sources":["../../../projects/cmat/components/transfer-picker/transfer-picker.service.ts","../../../projects/cmat/components/transfer-picker/filter/filter.component.ts","../../../projects/cmat/components/transfer-picker/filter/filter.component.html","../../../projects/cmat/components/transfer-picker/search/search.component.ts","../../../projects/cmat/components/transfer-picker/search/search.component.html","../../../projects/cmat/components/transfer-picker/interface.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.html","../../../projects/cmat/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.html","../../../projects/cmat/components/transfer-picker/transfer-picker.component.ts","../../../projects/cmat/components/transfer-picker/transfer-picker.component.html","../../../projects/cmat/components/transfer-picker/cmat-components-transfer-picker.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n CmatSourceOptions,\r\n CmatTransferFilterData,\r\n CmatTransferFilterItem,\r\n CmatTransferItemNode\r\n} from './interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatTransferPickerService {\r\n private readonly _dataSourceChange = signal<CmatTransferItemNode[]>([]);\r\n private readonly _refreshDataSourceChange = signal<{ clear: boolean; nonce: number }>({ clear: true, nonce: 0 });\r\n private readonly _filtersChange = signal<CmatTransferFilterItem[]>([]);\r\n private readonly _sourceOptionsChange = signal<CmatSourceOptions | void>(void 0);\r\n private readonly _selectedValuesChange = signal<string[]>([]);\r\n\r\n private _dataSource: CmatTransferItemNode[];\r\n\r\n private _filterData: CmatTransferFilterData;\r\n private _keyword: string;\r\n private _originalDataSource: CmatTransferItemNode[];\r\n private _filteredDataSource: CmatTransferItemNode[];\r\n private _compareMap: Map<string, (a: unknown, b: unknown) => boolean>;\r\n private _conditionMap: Map<string, (arr: boolean[]) => boolean>;\r\n private _refreshNonce = 0;\r\n private readonly _dataSourceChange$ = toObservable(this._dataSourceChange);\r\n private readonly _refreshDataSourceChange$ = toObservable(this._refreshDataSourceChange);\r\n private readonly _filtersChange$ = toObservable(this._filtersChange);\r\n private readonly _sourceOptionsChange$ = toObservable(this._sourceOptionsChange);\r\n private readonly _selectedValuesChange$ = toObservable(this._selectedValuesChange);\r\n\r\n constructor() {\r\n this._compareMap = new Map<string, (a: unknown, b: unknown) => boolean>([\r\n ['0', (a, b): boolean => a === b],\r\n ['1', (a, b): boolean => a !== b],\r\n ['2', (a, b): boolean => (a as number) > (b as number)],\r\n ['3', (a, b): boolean => (a as number) < (b as number)],\r\n ['0,2', (a, b): boolean => (a as number) >= (b as number)],\r\n ['0,3', (a, b): boolean => (a as number) <= (b as number)]\r\n ]);\r\n\r\n this._conditionMap = new Map<string, (arr: boolean[]) => boolean>([\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n ['or', arr => arr.reduce((o, item) => (o.result = o.result || item || o.prev, o.prev = item, o), {\r\n result: false,\r\n prev: arr[0]\r\n }).result],\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n ['and', arr => arr.reduce((o, item) => (o.result = o.result && item && o.prev, o.prev = item, o), {\r\n result: true,\r\n prev: arr[0]\r\n }).result],\r\n ]);\r\n }\r\n\r\n get dataSourceChange(): Observable<CmatTransferItemNode[]> {\r\n return this._dataSourceChange$;\r\n }\r\n\r\n get refreshDataSourceChange(): Observable<{ clear: boolean; nonce: number }> {\r\n return this._refreshDataSourceChange$;\r\n }\r\n\r\n get filtersChange(): Observable<CmatTransferFilterItem[]> {\r\n return this._filtersChange$;\r\n }\r\n\r\n get sourceOptionsChange(): Observable<CmatSourceOptions | void> {\r\n return this._sourceOptionsChange$;\r\n }\r\n\r\n get selectedValuesChange(): Observable<string[]> {\r\n return this._selectedValuesChange$;\r\n }\r\n\r\n get dataSource(): CmatTransferItemNode[] {\r\n return this._dataSource;\r\n }\r\n\r\n set dataSource(data: CmatTransferItemNode[]) {\r\n this._dataSource = data;\r\n\r\n if (!this._originalDataSource) {\r\n this._originalDataSource = JSON.parse(JSON.stringify(data)) as CmatTransferItemNode[];\r\n }\r\n\r\n this._dataSourceChange.set(data);\r\n }\r\n\r\n set sourceOptions(value: CmatSourceOptions) {\r\n this._sourceOptionsChange.set(value);\r\n }\r\n\r\n set selectedValues(value: string[]) {\r\n this._selectedValuesChange.set(value);\r\n }\r\n\r\n\r\n filterDataSource({ filterData, keyword }: { filterData?: CmatTransferFilterData; keyword?: string }): void {\r\n this._filterData = filterData ?? this._filterData;\r\n this._keyword = keyword === void (0) ? this._keyword : keyword;\r\n\r\n if (filterData?.filters.length) {\r\n this._filterDataSourceByType(this._keyword ? this._filteredDataSource : this._originalDataSource, 'Filters');\r\n return;\r\n } else if (filterData && !filterData.filters.length) {\r\n if (this._keyword) {\r\n this._filterDataSourceByType(this._originalDataSource, 'Keyword');\r\n } else {\r\n this.resetDataSource(false);\r\n }\r\n return;\r\n }\r\n\r\n if (keyword) {\r\n this._filterDataSourceByType(this._filterData?.filters.length ? this._filteredDataSource : this._originalDataSource, 'Keyword');\r\n return;\r\n } else if (!keyword) {\r\n if (this._filterData?.filters.length) {\r\n this._filterDataSourceByType(this._originalDataSource, 'Filters');\r\n } else {\r\n this.resetDataSource(false);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n resetDataSource(clear:boolean): void {\r\n this.dataSource = this._originalDataSource;\r\n this._filteredDataSource = [];\r\n this._refreshDataSourceChange.set({ clear, nonce: ++this._refreshNonce });\r\n }\r\n\r\n private _filterDataSourceByType(dataSource: CmatTransferItemNode[], type: 'Filters' | 'Keyword'): void {\r\n this._filteredDataSource = [];\r\n switch (type) {\r\n case 'Filters':\r\n this._setFilteredDataSourceByFilters(dataSource);\r\n break;\r\n case 'Keyword':\r\n this._setFilteredDataSourceByKeyword(dataSource);\r\n break;\r\n }\r\n this.dataSource = this._filteredDataSource;\r\n this._refreshDataSourceChange.set({ clear: false, nonce: ++this._refreshNonce });\r\n }\r\n\r\n private _setFilteredDataSourceByFilters(dataSource: CmatTransferItemNode[]): void {\r\n dataSource.map((data): void => {\r\n const compareResultArr: boolean[] = [];\r\n this._filterData.filters.map((filter): void => {\r\n if (Object.prototype.hasOwnProperty.call(data, filter.field)) {\r\n const compare = this._compareMap.get(filter.condition.sort().toString())?.(filter.value, data[filter.field]);\r\n\r\n if (this._filterData.filters.length < 2 && compare) {\r\n this._filteredDataSource.push(data);\r\n } else {\r\n compareResultArr.push(compare ?? false);\r\n }\r\n }\r\n });\r\n\r\n if (compareResultArr.length && this._conditionMap.get(this._filterData.condition)?.(compareResultArr)) {\r\n this._filteredDataSource.push(data);\r\n }\r\n\r\n if (data.children && data.children.length > 0) {\r\n this._setFilteredDataSourceByFilters(data.children);\r\n }\r\n });\r\n }\r\n\r\n private _setFilteredDataSourceByKeyword(dataSource: CmatTransferItemNode[]): void {\r\n dataSource.map((data): void => {\r\n if (data.label.includes(this._keyword)) {\r\n this._filteredDataSource.push(data);\r\n } else if (data.children && data.children.length > 0) {\r\n this._setFilteredDataSourceByKeyword(data.children);\r\n }\r\n });\r\n }\r\n\r\n}","import { CdkOverlayOrigin, Overlay, OverlayConfig, OverlayModule, OverlayRef } from '@angular/cdk/overlay';\r\nimport { CdkPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatTransferFilterData, CmatTransferFilterItem } from '../interface';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerFilter',\r\n imports: [MatButtonToggleModule, MatIconModule, CommonModule, PortalModule, MatButtonModule, OverlayModule]\r\n})\r\nexport class CmatTransferPickerFilterComponent implements OnInit, OnDestroy {\r\n @Input()\r\n filters: CmatTransferFilterItem[] | undefined;\r\n\r\n @ViewChild(CdkOverlayOrigin, { static: true }) overlayOrigin: CdkOverlayOrigin;\r\n @ViewChild('filterTemplate', { static: true }) filterTemplate: CdkPortal;\r\n overlayRef: OverlayRef;\r\n\r\n filterData: CmatTransferFilterData;\r\n\r\n private _overlay = inject(Overlay);\r\n private _service = inject(CmatTransferPickerService);\r\n\r\n\r\n constructor() {\r\n this.filterData = {\r\n condition: 'or',\r\n filters: []\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n const config = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this._overlay.scrollStrategies.block()\r\n });\r\n\r\n config.positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(\r\n this.overlayOrigin.elementRef).withPositions([\r\n {\r\n originX: 'end', originY: 'bottom', overlayX: 'end',\r\n overlayY: 'top', offsetX: 5\r\n }, {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -5\r\n }\r\n ]);\r\n\r\n this.overlayRef = this._overlay.create(config);\r\n\r\n this.overlayRef.backdropClick().subscribe((): void => {\r\n this.overlayRef.detach();\r\n });\r\n }\r\n\r\n toggleFilter(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.overlayRef.detach();\r\n } else {\r\n this.overlayRef.attach(this.filterTemplate);\r\n }\r\n }\r\n\r\n onFilterClick(filter: CmatTransferFilterItem): void {\r\n filter.selected = !filter.selected;\r\n\r\n const existFilter = this.filterData.filters.find((item): boolean => item.value === filter.value);\r\n\r\n if (!existFilter) {\r\n this.filterData.filters.push(filter);\r\n } else if (!filter.selected) {\r\n this.filterData.filters.splice(this.filterData.filters.findIndex((j): boolean => j === filter), 1);\r\n }\r\n\r\n this.changeFilterData();\r\n }\r\n\r\n onConditionChange(event: 'or' | 'and'): void {\r\n this.filterData.condition = event;\r\n\r\n this.changeFilterData();\r\n }\r\n\r\n changeFilterData(): void {\r\n this._service.filterDataSource({ filterData: this.filterData });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n}","<button type=\"button\" class=\"mr-2 mt-1\" matIconButton cdk-overlay-origin (click)=\"toggleFilter()\">\r\n <mat-icon svgIcon=\"mat_outline:filter_list\"></mat-icon>\r\n</button>\r\n<ng-template #filterTemplate=\"cdkPortal\" cdkPortal>\r\n <div\r\n class=\"transfer-picker-filter-panel bg-card flex flex-col flex-nowrap place-content-start box-border items-start w-full shadow\">\r\n <mat-button-toggle-group name=\"condition\" [hideSingleSelectionIndicator]=\"true\" (change)=\"onConditionChange($event.value)\">\r\n <mat-button-toggle value=\"or\" [checked]=\"filterData.condition === 'or'\">或</mat-button-toggle>\r\n <mat-button-toggle value=\"and\" [checked]=\"filterData.condition === 'and'\">且</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n\r\n <div class=\"chip-list\">\r\n @for (item of filters; track $index) {\r\n <div class=\"chip-wrapper\" role=\"presentation\"\r\n (click)=\"onFilterClick(item)\">\r\n <span class=\"chip\" [ngClass]=\"{selected: item?.selected}\">{{item.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-search',\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerSearch',\r\n imports: [MatFormFieldModule, MatIconModule, ReactiveFormsModule, MatButtonModule, MatInputModule]\r\n})\r\nexport class CmatTransferPickerSearchComponent implements OnInit {\r\n\r\n @Input()\r\n searchPlaceholder: string|undefined;\r\n\r\n keyword: FormControl;\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n\r\n constructor() {\r\n this.keyword = new FormControl();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.keyword\r\n .valueChanges\r\n .pipe(\r\n debounceTime(200),\r\n distinctUntilChanged()\r\n )\r\n .subscribe((keyword: string | null) => this._service.filterDataSource({ keyword: keyword ?? '' }));\r\n }\r\n\r\n reset(): void {\r\n this.keyword.setValue('');\r\n }\r\n}\r\n","<mat-form-field>\r\n <input placeholder=\"{{searchPlaceholder}}\" matInput type=\"text\" [formControl]=\"keyword\">\r\n @if (keyword.value) {\r\n <button type=\"button\" matSuffix matIconButton (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:close\"></mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>","/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nexport class CmatTransferItemNode {\r\n [key: string]: unknown;\r\n\r\n children?: CmatTransferItemNode[];\r\n label: string;\r\n value: string | number;\r\n\r\n}\r\n\r\n\r\nexport class CmatTransferItemFlatNode {\r\n label: string;\r\n value: string | number;\r\n level: number;\r\n disabled?: boolean;\r\n expandable: boolean;\r\n}\r\n\r\nexport enum CmatTransferFilterCondition {\r\n EQUALS,\r\n NOT_EQUALS,\r\n MORE_THAN,\r\n LESS_THAN\r\n}\r\n\r\nexport interface CmatTransferFilterItem {\r\n label: string;\r\n value: number | string;\r\n condition: CmatTransferFilterCondition[];\r\n field: string;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface CmatTransferFilterData {\r\n condition: 'or' | 'and';\r\n filters: CmatTransferFilterItem[];\r\n}\r\n\r\nexport interface CmatSourceOptions {\r\n title: string;\r\n filterable: boolean;\r\n searchable: boolean;\r\n searchPlaceholder: string;\r\n filters: CmatTransferFilterItem[];\r\n}","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, OnInit, ViewChild, ViewEncapsulation, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { Observable, of as ofObservable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatTransferPickerFilterComponent } from '../filter/filter.component';\r\nimport { CmatSourceOptions, CmatTransferItemFlatNode, CmatTransferItemNode } from '../interface';\r\nimport { CmatTransferPickerSearchComponent } from '../search/search.component';\r\nimport { CmatTransferPickerService } from '../transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-source',\r\n templateUrl: './transfer-picker-source.component.html',\r\n styleUrls: ['./transfer-picker-source.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerSource',\r\n imports: [MatCardModule, MatTreeModule, MatCheckboxModule, MatIconModule, MatButtonModule,\r\n CmatTransferPickerFilterComponent, CmatTransferPickerSearchComponent, ScrollingModule]\r\n})\r\nexport class CmatTransferPickerSourceComponent implements OnInit, AfterViewInit {\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatTransferItemNode>;\r\n\r\n\r\n nestedNodeMap = new Map<CmatTransferItemNode, CmatTransferItemFlatNode>();\r\n\r\n readonly dataSource = signal<CmatTransferItemNode[]>([]);\r\n readonly dataFlatNodes = signal<CmatTransferItemFlatNode[]>([]);\r\n\r\n\r\n checklistSelection = new SelectionModel<CmatTransferItemFlatNode>(true /* multiple */);\r\n\r\n readonly options = signal<CmatSourceOptions>({\r\n title: '',\r\n filterable: false,\r\n searchable: false,\r\n searchPlaceholder: '',\r\n filters: []\r\n });\r\n\r\n readonly committedSelection = signal<CmatTransferItemFlatNode[]>([]);\r\n readonly committedValueSet = computed(() => new Set(this.committedSelection().map(node => node.value)));\r\n\r\n private readonly _flatNodeByValue = new Map<string | number, CmatTransferItemFlatNode>();\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n // 监听数据源变化并重建平铺节点\r\n this._service\r\n .dataSourceChange\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((data: CmatTransferItemNode[]) => {\r\n this.dataSource.set(data);\r\n this._flatNodeByValue.clear();\r\n this.dataFlatNodes.set(this._getFlattenNodes(this.dataSource()));\r\n });\r\n\r\n this._service.refreshDataSourceChange.pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ clear }: { clear: boolean; nonce: number }) => {\r\n // 刷新时按状态重置或恢复选择\r\n if (clear) {\r\n this.checklistSelection.clear();\r\n this.committedSelection.set([]);\r\n } else {\r\n this._selectNodesByValues(this.checklistSelection.selected.map(node => node.value));\r\n this.commitSelection();\r\n }\r\n });\r\n\r\n this._service\r\n .selectedValuesChange\r\n .pipe(\r\n filter((values: string[] | (string | number)[]) => !!values.length),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((values: (string | number)[]) => {\r\n // 根据外部值同步选中节点\r\n this._selectNodesByValues(values);\r\n this.commitSelection();\r\n\r\n });\r\n\r\n this._service\r\n .sourceOptionsChange\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((options: CmatSourceOptions | void) => { if (options) this.options.set(options); });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 初始化时展开整棵树\r\n this.tree.expandAll();\r\n }\r\n\r\n getCommittedSelection(): CmatTransferItemFlatNode[] {\r\n return this.committedSelection();\r\n }\r\n\r\n commitSelection(): CmatTransferItemFlatNode[] {\r\n this.committedSelection.set(this._cloneFlatNodes(this.checklistSelection.selected));\r\n return this.committedSelection();\r\n }\r\n\r\n resetSelectedItem(item: CmatTransferItemFlatNode): void {\r\n const target = this._flatNodeByValue.get(item.value) ?? this.checklistSelection.selected.find(i => i.value === item.value);\r\n if (!target) {\r\n return;\r\n }\r\n\r\n const descendants = this._getDescendants(target);\r\n this.checklistSelection.deselect(target, ...descendants.filter(node => this.checklistSelection.isSelected(node)));\r\n this._checkAllParentsSelection(target);\r\n this.commitSelection();\r\n }\r\n\r\n childrenAccessor: (node: CmatTransferItemNode) => CmatTransferItemNode[] = (node: CmatTransferItemNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatTransferItemNode) => boolean = (_: number, node: CmatTransferItemNode) => !!node.children && node.children.length > 0;\r\n\r\n\r\n descendantsAllSelected(node: CmatTransferItemFlatNode): boolean {\r\n // 判断后代是否全部选中\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child => this.checklistSelection.isSelected(child));\r\n }\r\n\r\n\r\n descendantsPartiallySelected(node: CmatTransferItemFlatNode): boolean {\r\n // 判断后代是否部分选中\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !this.descendantsAllSelected(node);\r\n }\r\n\r\n\r\n transferItemSelectionToggle(node: CmatTransferItemFlatNode): void {\r\n // 切换分支节点选择状态\r\n this.checklistSelection.toggle(node);\r\n let descendants = this._getDescendants(node);\r\n descendants = descendants.filter(n => !this.isNodeDisabled(n));\r\n this.checklistSelection.isSelected(node)\r\n ? this.checklistSelection.select(...descendants)\r\n : this.checklistSelection.deselect(...descendants);\r\n descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n this._checkAllParentsSelection(node);\r\n }\r\n\r\n\r\n transferLeafItemSelectionToggle(node: CmatTransferItemFlatNode): void {\r\n // 切换叶子节点选择状态\r\n this.checklistSelection.toggle(node);\r\n this._checkAllParentsSelection(node);\r\n }\r\n\r\n isNodeDisabled(node: CmatTransferItemFlatNode): boolean {\r\n return !!node.disabled || this.committedValueSet().has(node.value);\r\n }\r\n\r\n private _getLevel = (node: CmatTransferItemFlatNode): number => node.level;\r\n\r\n private _isExpandable = (node: CmatTransferItemFlatNode): boolean => node.expandable;\r\n\r\n private _getChildren = (node: CmatTransferItemNode): Observable<CmatTransferItemNode[]> => ofObservable(node.children ?? []);\r\n\r\n\r\n private _transformer = (node: CmatTransferItemNode, level: number): CmatTransferItemFlatNode => {\r\n const flatNode = this.nestedNodeMap.has(node) && this.nestedNodeMap.get(node)?.value === node.value\r\n ? this.nestedNodeMap.get(node)!\r\n : new CmatTransferItemFlatNode();\r\n flatNode.label = node.label;\r\n flatNode.value = node.value;\r\n flatNode.disabled = !!node.disabled;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children;\r\n this.nestedNodeMap.set(node, flatNode);\r\n this._flatNodeByValue.set(node.value, flatNode);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatTransferItemFlatNode): CmatTransferItemFlatNode[] {\r\n // 收集当前节点的所有后代节点\r\n const flatNodes = this.dataFlatNodes();\r\n const startIndex = flatNodes.findIndex(j => j === dataNode);\r\n const results: CmatTransferItemFlatNode[] = [];\r\n\r\n for (let i = startIndex + 1;\r\n i < flatNodes.length && this._getLevel(dataNode) < this._getLevel(flatNodes[i]);\r\n i++) {\r\n results.push(flatNodes[i]);\r\n }\r\n return results;\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatTransferItemNode[], i: number = 0): CmatTransferItemFlatNode[] {\r\n // 将树结构转换为平铺节点\r\n const flattenedNodes: CmatTransferItemFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n flattenedNodes.push(this._transformer(node, i));\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _checkAllParentsSelection(node: CmatTransferItemFlatNode): void {\r\n // 逐级回溯父节点并更新选择状态\r\n let parent: CmatTransferItemFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n\r\n private _checkRootNodeSelection(node: CmatTransferItemFlatNode): void {\r\n // 根据子节点状态更新当前节点\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && descAllSelected) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n\r\n private _cloneFlatNode(node: CmatTransferItemFlatNode): CmatTransferItemFlatNode {\r\n return {\r\n label: node.label,\r\n value: node.value,\r\n level: node.level,\r\n disabled: node.disabled,\r\n expandable: node.expandable\r\n };\r\n }\r\n\r\n private _cloneFlatNodes(nodes: CmatTransferItemFlatNode[]): CmatTransferItemFlatNode[] {\r\n return nodes.map(node => this._cloneFlatNode(node));\r\n }\r\n\r\n\r\n\r\n private _getParentNode(node: CmatTransferItemFlatNode): CmatTransferItemFlatNode | null {\r\n // 获取当前节点的父节点\r\n const currentLevel = this._getLevel(node);\r\n const flatNodes = this.dataFlatNodes();\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = flatNodes.findIndex(j => j === node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = flatNodes[i];\r\n\r\n if (this._getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _selectNodesByValues(values: readonly (string | number)[]): void {\r\n this.checklistSelection.clear();\r\n\r\n for (const value of values) {\r\n const node = this._flatNodeByValue.get(value);\r\n\r\n if (node) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<mat-card class=\"transfer-picker-source shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-source-title\">{{options().title}}</mat-card-title>\r\n @if (options().filterable) {\r\n <cmat-transfer-picker-filter\r\n [filters]=\"options().filters\"></cmat-transfer-picker-filter>\r\n }\r\n </mat-card-header>\r\n <mat-card-content class=\"transfer-picker-source-content\">\r\n @if (options().searchable) {\r\n <cmat-transfer-picker-search\r\n [searchPlaceholder]=\"options().searchPlaceholder\"></cmat-transfer-picker-search>\r\n }\r\n\r\n <cdk-virtual-scroll-viewport itemSize=\"48\"\r\n class=\"transfer-picker-source-scroll-wrapper overflow-y-auto scrollbar-custom\">\r\n <mat-tree #componentTree [dataSource]=\"dataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" matIconButton disabled> </button>\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"checklistSelection.isSelected(nestedNodeMap.get(node)!)\"\r\n [disabled]=\"isNodeDisabled(nestedNodeMap.get(node)!)\" (change)=\"transferLeafItemSelectionToggle(nestedNodeMap.get(node)!);\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle>\r\n <mat-icon svgIcon=\"{{componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'}}\"\r\n class=\"mat-icon-rtl-mirror\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)||committedValueSet().has(nestedNodeMap.get(node)!.value)\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\" [disabled]=\"isNodeDisabled(nestedNodeMap.get(node)!)\"\r\n (change)=\"transferItemSelectionToggle(nestedNodeMap.get(node)!)\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n </mat-tree>\r\n @if (!dataSource().length) {\r\n <div class=\"transfer-picker-source-empty\">暂无数据</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { CmatTransferItemFlatNode } from '../interface';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker-target',\r\n templateUrl: './transfer-picker-target.component.html',\r\n styleUrls: ['./transfer-picker-target.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPickerTarget',\r\n imports: [MatCardModule, MatListModule, MatIconModule, ScrollingModule, MatButtonModule]\r\n})\r\nexport class CmatTransferPickerTargetComponent {\r\n\r\n @Input()\r\n committedSelection: CmatTransferItemFlatNode[];\r\n\r\n @Output()\r\n clearItemChange: EventEmitter<CmatTransferItemFlatNode>;\r\n\r\n constructor() {\r\n this.clearItemChange = new EventEmitter<CmatTransferItemFlatNode>();\r\n }\r\n\r\n clearItem(item: CmatTransferItemFlatNode): void {\r\n this.clearItemChange.emit(item);\r\n }\r\n}\r\n","<mat-card class=\"transfer-picker-target shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-target-title\">已选择 {{committedSelection.length}} 项</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cdk-virtual-scroll-viewport itemSize=\"40\"\r\n class=\"transfer-picker-target-scroll-wrapper overflow-y-auto scrollbar-custom\">\r\n <mat-list dense>\r\n @for (item of committedSelection; track $index) {\r\n <mat-list-item class=\"transfer-picker-target-item\">\r\n <div mat-line class=\"flex flex-row items-center\">\r\n <div class=\"flex-1\">{{item.label}}</div>\r\n <button type=\"button\" matIconButton (click)=\"clearItem(item)\">\r\n <mat-icon svgIcon=\"heroicons_solid:x-circle\"></mat-icon>\r\n </button>\r\n </div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n @if (!committedSelection.length) {\r\n <div class=\"transfer-picker-target-empty\">暂无数据</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Injector, OnInit, Output, ViewChild, ViewEncapsulation, afterNextRender, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatTransferFilterItem, CmatTransferItemFlatNode, CmatTransferItemNode } from './interface';\r\nimport { CmatTransferPickerSourceComponent } from './transfer-picker-source/transfer-picker-source.component';\r\nimport { CmatTransferPickerTargetComponent } from './transfer-picker-target/transfer-picker-target.component';\r\nimport { CmatTransferPickerService } from './transfer-picker.service';\r\n\r\n@Component({\r\n selector: 'cmat-transfer-picker',\r\n templateUrl: './transfer-picker.component.html',\r\n styleUrls: ['./transfer-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTransferPicker',\r\n imports: [MatIconModule, MatButtonModule, CmatTransferPickerSourceComponent, CmatTransferPickerTargetComponent]\r\n})\r\nexport class CmatTransferPickerComponent implements OnInit, AfterViewInit {\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n filterable: boolean;\r\n\r\n @Input()\r\n searchable: boolean;\r\n\r\n @Input()\r\n searchPlaceholder: string;\r\n\r\n @Input()\r\n dataSource: CmatTransferItemNode[];\r\n\r\n @Input()\r\n filters: CmatTransferFilterItem[];\r\n\r\n @Input()\r\n selectedValues: string[];\r\n\r\n @Output()\r\n selectChange: EventEmitter<CmatTransferItemFlatNode[]>;\r\n\r\n @ViewChild(CmatTransferPickerSourceComponent, { static: true })\r\n source: CmatTransferPickerSourceComponent;\r\n\r\n readonly committedSelection = signal<CmatTransferItemFlatNode[]>([]);\r\n\r\n private _service = inject(CmatTransferPickerService);\r\n private readonly _injector = inject(Injector);\r\n\r\n constructor() {\r\n this.filterable = true;\r\n this.dataSource = [];\r\n this.filters = [];\r\n this.committedSelection.set([]);\r\n this.selectedValues = [];\r\n }\r\n\r\n ngOnInit(): void {\r\n this._service.dataSource = this.dataSource;\r\n this._service.selectedValues = this.selectedValues;\r\n\r\n this._service.sourceOptions = {\r\n title: this.title || '数据源',\r\n filterable: this.filterable || true,\r\n searchable: this.searchable || true,\r\n searchPlaceholder: this.searchPlaceholder || '搜索关键字',\r\n filters: this.filters || []\r\n };\r\n\r\n this.selectChange = new EventEmitter<CmatTransferItemFlatNode[]>();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectedValues.length) {\r\n afterNextRender(() => {\r\n this.pick();\r\n }, { injector: this._injector });\r\n }\r\n }\r\n\r\n pick(): void {\r\n this._commitSelection(this.source.commitSelection());\r\n }\r\n\r\n reset(): void {\r\n if (this.committedSelection().length) {\r\n this._commitSelection([]);\r\n this._service.resetDataSource(true);\r\n }\r\n }\r\n\r\n onClearItemChange(item: CmatTransferItemFlatNode): void {\r\n if (item) {\r\n this.source.resetSelectedItem(item);\r\n this._commitSelection(this.source.getCommittedSelection());\r\n }\r\n }\r\n\r\n private _commitSelection(selectedList: CmatTransferItemFlatNode[]): void {\r\n this.committedSelection.set([...selectedList]);\r\n this._emitterChange();\r\n }\r\n\r\n private _emitterChange(): void {\r\n this.selectChange.emit(this.committedSelection());\r\n }\r\n}\r\n","<cmat-transfer-picker-source></cmat-transfer-picker-source>\r\n<div class=\"cmat-transfer-picker-operation flex flex-col flex-nowrap gap-2 mx-2\">\r\n <button type=\"button\" class=\"pl-2\" matButton=\"filled\" color=\"primary\" (click)=\"pick()\">\r\n 选择<mat-icon svgIcon=\"mat_outline:chevron_right\"></mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"pl-2\" matButton=\"filled\" color=\"primary\" (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:chevron_left\"></mat-icon>重置\r\n </button>\r\n</div>\r\n<cmat-transfer-picker-target [committedSelection]=\"committedSelection()\" (clearItemChange)=\"onClearItemChange($event)\">\r\n</cmat-transfer-picker-target>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i4","i5","ofObservable","i2"],"mappings":"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"}
|