ngx-tethys 20.0.10 → 20.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/fesm2022/ngx-tethys-cascader.mjs +5 -0
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +4 -2
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/notify/index.d.ts +11 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [20.0.12](https://github.com/atinc/ngx-tethys/compare/20.0.11...20.0.12) (2026-04-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **cascader:** prevent duplicate selections in multiple mode #TINFR-3662 ([#3772](https://github.com/atinc/ngx-tethys/issues/3772)) ([18d24d3](https://github.com/atinc/ngx-tethys/commit/18d24d3c365bc0464b1ebe504c498899f35fe68f)), closes [#TINFR-3662](https://github.com/atinc/ngx-tethys/issues/TINFR-3662)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [20.0.11](https://github.com/atinc/ngx-tethys/compare/20.0.10...20.0.11) (2026-03-13)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **notify:** support actions merge v20.x #TINFR-3626 ([#3761](https://github.com/atinc/ngx-tethys/issues/3761)) ([e60e1dd](https://github.com/atinc/ngx-tethys/commit/e60e1dd3a3e4d46e41e34399c6e2df50bcdf125d)), closes [#TINFR-3626](https://github.com/atinc/ngx-tethys/issues/TINFR-3626)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
5
23
|
## [20.0.10](https://github.com/atinc/ngx-tethys/compare/20.0.9...20.0.10) (2026-02-04)
|
|
6
24
|
|
|
7
25
|
|
|
@@ -536,6 +536,11 @@ class ThyCascaderService {
|
|
|
536
536
|
thyValue: labels,
|
|
537
537
|
thyLabelText: labelRenderText
|
|
538
538
|
};
|
|
539
|
+
// 多选时 SelectionModel 以引用判重,每次 new 的 selectedData 会被重复加入;按选中路径去重
|
|
540
|
+
if (this.cascaderOptions.isMultiple &&
|
|
541
|
+
this.selectionModel.selected.some(item => this.arrayEquals(this.getSubmitValue(item.thyRawValue.value), this.getSubmitValue(selectedOptions)))) {
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
539
544
|
this.selectionModel.select(selectedData);
|
|
540
545
|
}
|
|
541
546
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-cascader.mjs","sources":["../../../src/cascader/cascader-li.component.ts","../../../src/cascader/cascader-li.component.html","../../../src/cascader/cascader-search-option.component.ts","../../../src/cascader/cascader-search-option.component.html","../../../src/cascader/cascader.service.ts","../../../src/cascader/cascader.pipe.ts","../../../src/cascader/cascader.component.ts","../../../src/cascader/cascader.component.html","../../../src/cascader/module.ts","../../../src/cascader/ngx-tethys-cascader.ts"],"sourcesContent":["import { ThyCheckbox } from 'ngx-tethys/checkbox';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyRadio } from 'ngx-tethys/radio';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyCascaderOption } from './types';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: '[thy-cascader-option]',\n templateUrl: './cascader-li.component.html',\n imports: [ThyFlexibleText, ThyCheckbox, ThyRadio, FormsModule, ThyStopPropagationDirective, NgTemplateOutlet, ThyIcon],\n host: {\n class: 'd-flex thy-cascader-menu-item',\n '[class.thy-cascader-menu-item-active]': 'active()',\n '[class.thy-cascader-menu-item-disabled]': 'disabled()',\n '[class.thy-cascader-menu-item-expand]': 'expand()'\n }\n})\nexport class ThyCascaderOptionComponent implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n readonly option = input<ThyCascaderOption>();\n\n readonly multiple = input(false, { transform: coerceBooleanProperty });\n\n readonly isOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n readonly optionRender = input<TemplateRef<SafeAny>>();\n\n readonly active = input(false, { transform: coerceBooleanProperty });\n\n readonly halfSelected = input(false, { transform: coerceBooleanProperty });\n\n readonly selected = input(false, { transform: coerceBooleanProperty });\n\n readonly disabled: Signal<boolean> = computed(() => !!this.option()?.disabled);\n\n readonly expand: Signal<boolean> = computed(() => !!(this.option() && !this.option()!.isLeaf));\n\n readonly labelProperty = input<string>('label');\n\n readonly toggleSelectChange = output<boolean>();\n\n constructor() {}\n\n ngOnInit() {}\n\n public toggleOption(value: boolean) {\n this.toggleSelectChange.emit(value);\n }\n\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","@if (!option()!.readonly) {\n <div thyStopPropagation>\n @if (multiple()) {\n <label\n class=\"mr-2\"\n thyCheckbox\n [disabled]=\"option().disabled\"\n [name]=\"option().value || option()._id\"\n [thyIndeterminate]=\"halfSelected()\"\n [ngModel]=\"selected()\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n }\n @if (!multiple() && !isOnlySelectLeaf()) {\n <label\n class=\"mr-2\"\n thyRadio\n [disabled]=\"option().disabled\"\n [name]=\"option().value || option()._id\"\n [ngModel]=\"selected()\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n }\n </div>\n}\n\n@if (!optionRender()) {\n <span thyFlexibleText [thyTooltipContent]=\"option()[labelProperty()] || ''\"> {{ option()[labelProperty()] || '' }}</span>\n} @else {\n <ng-template [ngTemplateOutlet]=\"optionRender()\" [ngTemplateOutletContext]=\"{ option: option() }\"></ng-template>\n}\n\n@if (!option()?.isLeaf || (option()?.children && option()!.children?.length) || option()?.loading) {\n @if (option().loading) {\n <thy-icon\n class=\"thy-cascader-menu-item-loading font-size-base\"\n thyIconName=\"loading\"\n thyIconType=\"twotone\"\n thyTwotoneColor=\"#6698ff\"></thy-icon>\n } @else {\n <span class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\"> </span>\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostListener, OnInit, TemplateRef, ViewEncapsulation, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyBreadcrumb, ThyBreadcrumbItem } from 'ngx-tethys/breadcrumb';\nimport { ThyCheckbox } from 'ngx-tethys/checkbox';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyCascaderSearchOption } from './types';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n \n selector: '[thy-cascader-search-option]',\n templateUrl: './cascader-search-option.component.html',\n imports: [NgClass, ThyFlexibleText, ThyCheckbox, ThyBreadcrumb, ThyBreadcrumbItem, FormsModule, NgTemplateOutlet],\n host: {\n class: 'thy-cascader-search-list-item px-4 d-flex align-items-center cursor-pointer',\n '[class.multiple]': 'multiple()',\n '[class.active]': 'active()'\n }\n})\nexport class ThyCascaderSearchOptionComponent implements OnInit {\n readonly option = input<ThyCascaderSearchOption>();\n\n readonly multiple = input(false, { transform: coerceBooleanProperty });\n\n readonly isOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n readonly active = input(false, { transform: coerceBooleanProperty });\n\n readonly optionRender = input<TemplateRef<SafeAny>>();\n\n @HostListener('click', ['$event'])\n public toggleClick($event: Event) {\n if (this.multiple()) {\n return;\n }\n this.toggleSelectChange.emit(this.option()!);\n }\n\n readonly toggleSelectChange = output<ThyCascaderSearchOption>();\n\n constructor() {}\n\n ngOnInit() {}\n\n public clickCheckbox(event: Event) {\n // 已选中的在搜索情况下不能取消选择\n if (this.active()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n public toggleOption(value: boolean) {\n this.toggleSelectChange.emit(this.option()!);\n }\n}\n","@if (multiple()) {\n <label\n class=\"mr-1\"\n thyCheckbox\n [disabled]=\"option().thyRowValue[option().thyRowValue.length - 1].disabled\"\n [ngModel]=\"active()\"\n (click)=\"clickCheckbox($event)\"\n (ngModelChange)=\"toggleOption($event)\"\n [thyLabelText]=\"''\"></label>\n}\n\n<thy-breadcrumb thySeparator=\"slash\">\n @for (label of option()!.labelList; track $index; let i = $index) {\n <thy-breadcrumb-item [ngClass]=\"{ 'text-muted': !(option().thyRowValue[i].isLeaf && isOnlySelectLeaf()) }\">\n @if (!optionRender()) {\n <span class=\"option-label-item\" thyFlexibleText [thyTooltipContent]=\"label\">{{ label }}</span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"optionRender()\" [ngTemplateOutletContext]=\"{ option: option().thyRowValue[i] }\"> </ng-template>\n }\n </thy-breadcrumb-item>\n }\n</thy-breadcrumb>\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Injectable } from '@angular/core';\nimport { Id } from '@tethys/cdk/immutable';\nimport { SelectOptionBase } from 'ngx-tethys/shared';\nimport { helpers, isArray, isEmpty, isUndefinedOrNull, set, get, wrapIntoObservable } from 'ngx-tethys/util';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, finalize, map } from 'rxjs/operators';\nimport { ThyCascaderOption, ThyCascaderSearchOption } from './types';\nconst defaultDisplayRender = (label: any) => label.join(' / ');\n\n/**\n * @internal\n */\n@Injectable()\nexport class ThyCascaderService {\n public selectionModel?: SelectionModel<SelectOptionBase>;\n\n public columns: ThyCascaderOption[][] = [];\n\n public customOptions!: ThyCascaderOption[];\n\n public cascaderOptions!: {\n labelProperty?: string;\n valueProperty?: string;\n isMultiple?: boolean;\n isOnlySelectLeaf?: boolean;\n isLabelRenderTemplate?: boolean;\n loadData?: (node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>;\n };\n\n public selectedOptions: ThyCascaderOption[] = [];\n\n public activatedOptions: ThyCascaderOption[] = [];\n\n public labelRenderText?: string;\n\n public flattenOptions: ThyCascaderSearchOption[] = [];\n\n public leafNodes: ThyCascaderSearchOption[] = [];\n\n public isLoading = false;\n\n public searchResultList: ThyCascaderSearchOption[] = [];\n\n public defaultValue: any[] | null = null;\n\n public value!: any[];\n\n private prevSelectedOptions: Set<ThyCascaderOption> = new Set<ThyCascaderOption>();\n\n public valueChange$ = new Subject<void>();\n\n public cascaderValueChange() {\n return this.valueChange$.pipe(\n map(() => {\n const valueChangeOptions = {\n value: this.getValues(),\n isValueEqual: this.arrayEquals(this.value, this.getValues()),\n isSelectionModelEmpty: this.selectionModel!.isEmpty()\n };\n this.defaultValue = null;\n this.value = this.getValues();\n return valueChangeOptions;\n }),\n debounceTime(100)\n );\n }\n\n public setCascaderOptions(options: {\n labelProperty?: string;\n valueProperty?: string;\n isMultiple?: boolean;\n isOnlySelectLeaf?: boolean;\n isLabelRenderTemplate?: boolean;\n loadData?: (node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>;\n }) {\n this.cascaderOptions = { ...this.cascaderOptions, ...options };\n if (this.cascaderOptions.hasOwnProperty('isMultiple')) {\n this.initSelectionModel(this.cascaderOptions.isMultiple);\n }\n }\n\n public initSelectionModel(isMultiple?: boolean) {\n if (this.selectionModel!) {\n this.selectionModel!.clear();\n } else {\n this.selectionModel = new SelectionModel(isMultiple);\n }\n }\n\n public initColumns(columns: ThyCascaderOption[][]) {\n this.columns = columns;\n }\n\n public initActivatedOptions(menuVisible: boolean) {\n if (isEmpty(this.selectedOptions) || !menuVisible) {\n return;\n }\n this.activatedOptions = [...this.selectedOptions];\n this.activatedOptions.forEach((item, index) => {\n if (!isEmpty(item.children) && !item.isLeaf) {\n this.columns[index + 1] = item.children!;\n }\n });\n }\n\n public initOptions(index: number) {\n const vs = this.defaultValue!;\n const load = () => {\n this.activateOnInit(index, vs[index]);\n if (index < vs.length - 1) {\n this.initOptions(index + 1);\n }\n if (index === vs.length - 1) {\n this.afterWriteValue();\n }\n };\n\n if (this.columns[index]?.length || !this.cascaderOptions.loadData) {\n load();\n } else {\n const node = this.activatedOptions[index - 1] || {};\n this.loadChildren(node, index - 1, load, this.afterWriteValue.bind(this));\n }\n }\n\n public clickOption(\n option: ThyCascaderOption,\n index: number,\n event: Event | boolean,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ) {\n if (option?.disabled && !this.cascaderOptions.isMultiple) {\n return;\n }\n\n const isSelect = event instanceof Event ? !this.cascaderOptions.isMultiple && option.isLeaf : true;\n\n if (this.cascaderOptions.isMultiple && !option.isLeaf && this.cascaderOptions.isOnlySelectLeaf && isSelect) {\n this.toggleAllChildren(option, index, event as boolean, selectFn);\n } else {\n this.setActiveOption(option, index, !!isSelect, true, selectFn);\n }\n }\n\n public setActiveOption(\n option: ThyCascaderOption,\n index: number,\n select: boolean,\n loadChildren: boolean = true,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ): void {\n this.activatedOptions[index] = option;\n for (let i = index - 1; i >= 0; i--) {\n const originOption = this.activatedOptions[i + 1]?.parent;\n if (\n !this.activatedOptions[i] ||\n originOption?.[this.cascaderOptions.valueProperty!] !== this.activatedOptions[i]?.[this.cascaderOptions.valueProperty!]\n ) {\n this.activatedOptions[i] = originOption ?? this.activatedOptions[i];\n }\n }\n if (index < this.activatedOptions.length - 1) {\n this.activatedOptions = this.activatedOptions.slice(0, index + 1);\n }\n if (isArray(option.children) && option.children.length) {\n option.isLeaf = false;\n option.children.forEach(child => (child.parent = option));\n this.setColumnData(option.children, index + 1);\n } else if (!option.isLeaf && loadChildren) {\n this.loadChildren(option, index);\n } else if (index < this.columns.length - 1) {\n this.columns = this.columns.slice(0, index + 1);\n }\n\n if (select && selectFn) {\n selectFn(option, index);\n }\n }\n\n private loadChildren(option: ThyCascaderOption, index: number, success?: () => void, failure?: () => void): void {\n if (option.isLeaf) {\n return;\n }\n if (!this.cascaderOptions?.loadData) {\n this.setColumnData(option.children || [], index + 1);\n return;\n }\n\n this.isLoading = true;\n option.loading = true;\n\n wrapIntoObservable(this.cascaderOptions.loadData(option, index))\n .pipe(\n finalize(() => {\n this.isLoading = false;\n option.loading = false;\n })\n )\n .subscribe({\n next: data => this.handleLoadDataSuccess(data, index, success),\n error: () => this.handleLoadDataFailure(option, index, failure)\n });\n }\n\n private handleLoadDataSuccess(option: ThyCascaderOption, index: number, success?: () => void): void {\n option.loading = this.isLoading = false;\n\n if (option.children) {\n option.children.forEach(child => (child.parent = index < 0 ? undefined : option));\n this.setColumnData(option.children, index + 1);\n }\n\n if (success) {\n success();\n }\n }\n\n private handleLoadDataFailure(option: ThyCascaderOption, index: number, failure?: () => void): void {\n option.loading = this.isLoading = false;\n option.isLeaf = true;\n\n if (failure) {\n failure();\n }\n }\n\n private activateOnInit(index: number, value: any): void {\n let option: ThyCascaderOption | undefined | null;\n if (isArray(this.customOptions) && this.customOptions.length > 0) {\n option = this.customOptions.find(item => get(item, this.cascaderOptions.valueProperty!) === value);\n }\n if (isUndefinedOrNull(option)) {\n option = this.findOption(value, index);\n }\n if (!option) {\n option =\n typeof value === 'object'\n ? value\n : {\n [`${this.cascaderOptions.valueProperty || 'value'}`]: value,\n [`${this.cascaderOptions.labelProperty || 'label'}`]: value\n };\n }\n this.updatePrevSelectedOptions(option!, true);\n this.setActiveOption(option!, index, false, false);\n }\n\n public isSelectedOption(option: ThyCascaderOption, index: number): boolean {\n if (this.cascaderOptions?.isOnlySelectLeaf) {\n if (option.isLeaf) {\n return option.selected;\n } else {\n return this.checkSelectedStatus(option, true);\n }\n } else {\n const selectedOpts = this.selectionModel!.selected;\n const appearIndex = selectedOpts.findIndex(item => {\n if (item.thyRawValue.value.length - 1 === index) {\n const selectedItem = helpers.get(item, `thyRawValue.value.${index}`);\n return helpers.shallowEqual(selectedItem, option);\n } else {\n return false;\n }\n });\n return appearIndex >= 0;\n }\n }\n\n private toggleAllChildren(\n option: ThyCascaderOption,\n index: number,\n selected: boolean,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ): void {\n const allLeafs: {\n option: ThyCascaderOption;\n index: number;\n }[] = this.getAllLeafs(option, index, selected);\n option.selected = selected;\n\n while (allLeafs.length) {\n const { option, index } = allLeafs.shift()!;\n option.selected = !selected;\n this.setActiveOption(option, index, true, undefined, selectFn);\n }\n\n for (let i = 0; i < this.activatedOptions.length; i++) {\n const option = this.activatedOptions[i];\n if (isArray(option.children) && option.children.length) {\n this.setColumnData(option.children, i + 1);\n }\n }\n }\n\n private getAllLeafs(\n option: ThyCascaderOption,\n index: number,\n selected: boolean\n ): {\n option: ThyCascaderOption;\n index: number;\n }[] {\n let allLeafs: {\n option: ThyCascaderOption;\n index: number;\n }[] = [];\n if (option.children!.length > 0) {\n for (const childOption of option.children!) {\n childOption.parent = option;\n if (childOption.isLeaf && !childOption.selected === selected) {\n allLeafs.push({\n option: childOption,\n index: index + 1\n });\n } else if (!childOption.isLeaf) {\n allLeafs = allLeafs.concat(this.getAllLeafs(childOption, index + 1, selected));\n }\n }\n }\n return allLeafs;\n }\n\n public searchInLocal(searchText: string): void {\n this.forEachColumns();\n\n this.setSearchResultList(this.cascaderOptions.isOnlySelectLeaf ? this.leafNodes : this.flattenOptions, searchText);\n }\n\n private forEachColumns(\n currentLabel?: string[],\n currentValue: Id[] = [],\n currentRowValue: ThyCascaderOption[] = [],\n list = this.columns[0]\n ) {\n list.forEach(item => {\n const curOptionLabel = this.getOptionLabel(item);\n const curOptionValue = this.getOptionValue(item);\n const label: string[] = currentLabel ? [...currentLabel, curOptionLabel] : [curOptionLabel];\n const valueList: Id[] = [...currentValue, curOptionValue];\n const rowValueList: ThyCascaderOption[] = [...currentRowValue, item];\n const isSelected = this.isSelectedOption(item, valueList.length - 1);\n\n const node = {\n labelList: label,\n valueList,\n selected: isSelected,\n thyRowValue: rowValueList,\n isLeaf: item.isLeaf,\n disabled: item.disabled\n };\n\n this.flattenOptions.push(node);\n if (item?.children?.length) {\n this.forEachColumns(label, valueList, rowValueList, item.children);\n } else {\n this.leafNodes.push(node);\n }\n });\n }\n\n private setSearchResultList(listOfOption: ThyCascaderSearchOption[], searchText: string) {\n this.searchResultList = [];\n const lowerSearchText = searchText.toLowerCase();\n listOfOption.forEach(item => {\n if (!item.disabled && item.isLeaf) {\n const joinedLabel = item.labelList.join();\n const joinedLabelWithSlash = item.labelList.join('/');\n if (\n joinedLabel.toLowerCase().includes(lowerSearchText) ||\n (joinedLabelWithSlash.toLowerCase().includes(lowerSearchText) && searchText !== '/')\n ) {\n // 由于 joinedLabelWithSlash 额外添加了 '/' ,所以这里跳过对 '/' 字符对判断\n this.searchResultList.push(item);\n }\n }\n });\n }\n\n /**\n * 检查所有所有子项的选择状态, 有一个不符合预期,就直接返回 false\n * @param option\n * @param trueOrFalse\n * @private\n */\n private checkSelectedStatus(option: ThyCascaderOption, isSelected: boolean): boolean {\n if (option.isLeaf) {\n return option.selected === isSelected;\n }\n if (helpers.isEmpty(option.children) && this.cascaderOptions?.isOnlySelectLeaf) {\n return false;\n }\n for (const childOption of option.children!) {\n if (isArray(childOption.children) && childOption.children.length && !this.checkSelectedStatus(childOption, isSelected)) {\n return false;\n }\n if (!childOption.selected === isSelected) {\n return false;\n }\n }\n return true;\n }\n\n private findOption(option: any, index: number): ThyCascaderOption | null | undefined {\n const options: ThyCascaderOption[] = this.columns[index];\n if (options) {\n const value = typeof option === 'object' ? this.getOptionValue(option) : option;\n return options.find(o => value === this.getOptionValue(o));\n }\n return null;\n }\n\n private setColumnData(options: ThyCascaderOption[], index: number): void {\n if (!this.arrayEquals(this.columns[index], options)) {\n this.columns[index] = options;\n if (index < this.columns.length - 1) {\n this.columns = this.columns.slice(0, index + 1);\n }\n }\n }\n\n private getSubmitValue(originOptions: ThyCascaderOption[]): any[] {\n const values: any[] = [];\n (originOptions || []).forEach(option => {\n values.push(this.getOptionValue(option));\n });\n return values;\n }\n\n public removeSelectedItem(item: SelectOptionBase) {\n const selectedItems = this.selectionModel!.selected;\n const currentItem = selectedItems.find(i => {\n return helpers.shallowEqual(i.thyValue, item.thyValue);\n });\n if (currentItem) {\n this.deselectOption(currentItem);\n this.selectionModel!.deselect(currentItem);\n }\n\n // update selectedOptions\n const updatedSelectedItems = this.selectionModel!.selected;\n if (isArray(updatedSelectedItems) && updatedSelectedItems.length) {\n this.selectedOptions = updatedSelectedItems[updatedSelectedItems.length - 1].thyRawValue.value;\n }\n\n this.valueChange$.next();\n }\n\n public resetSearch() {\n this.searchResultList = [];\n this.leafNodes = [];\n this.flattenOptions = [];\n }\n\n public clearSelection() {\n this.labelRenderText = '';\n this.selectedOptions = [];\n this.activatedOptions = [];\n this.deselectAllSelected();\n }\n\n private deselectAllSelected() {\n const selectedOptions = this.selectionModel!.selected;\n selectedOptions.forEach(item => this.deselectOption(item));\n this.selectionModel!.clear();\n this.valueChange$.next();\n }\n\n private deselectOption(option: SelectOptionBase) {\n const value: ThyCascaderOption[] = option.thyRawValue.value;\n value.forEach(item => {\n if (item.isLeaf && item.selected) {\n set(item, 'selected', false);\n }\n });\n }\n\n public selectOption(option: ThyCascaderOption, index: number): void {\n this.selectedOptions = this.activatedOptions;\n this.updatePrevSelectedOptions(option, false, index);\n if (option.selected) {\n this.buildDisplayLabel();\n } else {\n const selectedItems = this.selectionModel!.selected;\n const currentItem = selectedItems.find(item => {\n if (item.thyRawValue.value.length - 1 === index) {\n const selectedItem = helpers.get(item, `thyRawValue.value.${index}`);\n return helpers.shallowEqual(selectedItem, option);\n } else {\n return false;\n }\n });\n if (currentItem) {\n this.selectionModel!.deselect(currentItem);\n }\n }\n this.valueChange$.next();\n }\n\n private addSelectedState(selectOptions: ThyCascaderOption[]) {\n if (this.cascaderOptions.isMultiple && this.cascaderOptions.isOnlySelectLeaf) {\n selectOptions.forEach(opt => {\n if (opt.isLeaf) {\n opt.selected = true;\n set(opt, 'selected', true);\n }\n });\n this.addParentSelectedState(selectOptions);\n }\n }\n\n private addParentSelectedState(selectOptions: ThyCascaderOption[]) {\n selectOptions.forEach(opt => {\n if (opt?.children?.length && opt.children.every(i => i.selected)) {\n opt.selected = true;\n set(opt, 'selected', true);\n if (opt.parent) {\n this.addParentSelectedState([opt.parent]);\n }\n }\n });\n }\n\n private buildDisplayLabel(): void {\n const selectedOptions = [...this.selectedOptions];\n const labels: string[] = selectedOptions.map(o => this.getOptionLabel(o));\n\n if (labels.length === 0) {\n return;\n }\n\n let labelRenderContext;\n let labelRenderText;\n\n if (this.cascaderOptions.isLabelRenderTemplate) {\n labelRenderContext = { labels, selectedOptions };\n } else {\n // @ts-ignore\n labelRenderText = defaultDisplayRender.call(this, labels, selectedOptions);\n this.labelRenderText = labelRenderText;\n }\n\n if (this.labelRenderText || this.cascaderOptions.isLabelRenderTemplate) {\n const selectedData: SelectOptionBase = {\n thyRawValue: {\n value: selectedOptions,\n labelText: labelRenderText,\n labelRenderContext: labelRenderContext\n },\n thyValue: labels,\n thyLabelText: labelRenderText\n };\n this.selectionModel!.select(selectedData);\n }\n }\n\n public writeCascaderValue(value: any): void {\n if (!this.selectionModel!) {\n this.initSelectionModel(this.cascaderOptions.isMultiple);\n }\n if (!this.cascaderOptions.isMultiple) {\n const vs = (this.defaultValue = this.toArray(value));\n if (vs.length) {\n this.initOptions(0);\n } else {\n this.value = vs;\n this.activatedOptions = [];\n this.afterWriteValue();\n }\n } else {\n const values = this.toArray(value);\n this.selectionModel!.clear();\n values.forEach(item => {\n const vs = (this.defaultValue = this.toArray(item));\n if (vs.length) {\n this.initOptions(0);\n } else {\n this.value = vs;\n this.activatedOptions = [];\n this.afterWriteValue();\n }\n });\n }\n }\n\n private afterWriteValue() {\n this.selectedOptions = this.activatedOptions;\n this.value = this.getSubmitValue(this.selectedOptions);\n this.addSelectedState(this.selectedOptions);\n this.buildDisplayLabel();\n }\n\n public isActivatedOption(option: ThyCascaderOption, index: number): boolean {\n const activeOpt = this.activatedOptions[index];\n return activeOpt === option;\n }\n\n public isHalfSelectedOption(option: ThyCascaderOption, index: number): boolean {\n if (\n this.cascaderOptions.isMultiple &&\n !option.selected &&\n this.cascaderOptions.isOnlySelectLeaf &&\n !option.isLeaf &&\n !this.checkSelectedStatus(option, false) &&\n !helpers.isEmpty(option.children)\n ) {\n return true;\n }\n return false;\n }\n\n public getValues() {\n const selected = this.selectionModel!.selected;\n const selectedItems = selected.map(item => this.getSubmitValue(item.thyRawValue.value));\n return this.cascaderOptions?.isMultiple ? selectedItems : (selectedItems[0] ?? selectedItems);\n }\n\n private updatePrevSelectedOptions(option: ThyCascaderOption, isActivateInit: boolean, index?: number) {\n if (isActivateInit) {\n this.handleActivateInit(option);\n } else {\n if (!this.cascaderOptions.isMultiple) {\n this.clearPrevSelectedOptions();\n }\n\n set(option, 'selected', this.isSelected(option, index));\n\n if (this.cascaderOptions.isOnlySelectLeaf && this.cascaderOptions.isMultiple && option.parent) {\n this.updatePrevSelectedOptions(option.parent, false, index! - 1);\n }\n }\n\n this.prevSelectedOptions.add(option);\n }\n\n private handleActivateInit(option: ThyCascaderOption): void {\n if (isArray(this.customOptions) && this.customOptions.length > 0) {\n const valueKey = this.cascaderOptions.valueProperty!;\n this.customOptions.some(item => get(item, valueKey) == get(option, valueKey)) && set(option, 'selected', true);\n }\n if (this.cascaderOptions.isOnlySelectLeaf && option.isLeaf) {\n set(option, 'selected', true);\n }\n }\n\n private isSelected(option: ThyCascaderOption, index?: number) {\n return this.cascaderOptions.isOnlySelectLeaf && !option.isLeaf && this.cascaderOptions.isMultiple\n ? this.isSelectedOption(option, index!)\n : !this.isSelectedOption(option, index!);\n }\n\n private clearPrevSelectedOptions() {\n const prevSelectedOptions = Array.from(this.prevSelectedOptions);\n while (prevSelectedOptions.length) {\n set(prevSelectedOptions.pop(), 'selected', false);\n }\n this.prevSelectedOptions = new Set([]);\n }\n\n private getOptionLabel(option: ThyCascaderOption): any {\n return option[this.cascaderOptions.labelProperty || 'label'];\n }\n\n private getOptionValue(option: ThyCascaderOption): any {\n return option[this.cascaderOptions.valueProperty || 'value'];\n }\n\n public removeCustomOption() {\n if (!isArray(this.customOptions) || this.customOptions.length === 0) {\n return;\n }\n\n const selectedCustomOptions = this.getSelectedCustomOptions();\n selectedCustomOptions.forEach(item => {\n this.removeSelectedItem(item);\n });\n }\n\n private getSelectedCustomOptions() {\n const selected = this.cascaderOptions.isMultiple ? this.selectionModel!.selected : this.selectionModel!.selected[0];\n if (!isArray(selected)) {\n return [];\n }\n const valueKey = this.cascaderOptions.valueProperty;\n return selected.filter(item => {\n const selectedId = get(item, `thyRawValue.value.0.${valueKey}`);\n return this.customOptions.some(option => get(option, valueKey!) === selectedId);\n });\n }\n\n toArray<T>(value: T | T[]): T[] {\n if (value == null) {\n return [];\n } else if (!Array.isArray(value)) {\n return [value];\n } else {\n return value;\n }\n }\n\n arrayEquals<T>(array1: T[], array2: T[]): boolean {\n if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length) {\n return false;\n }\n\n return array1.every((element, index) => element === array2[index]);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ThyCascaderOption } from './types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'cascaderOptions'\n})\nexport class ThyCascaderOptionsPipe implements PipeTransform {\n transform(options: ThyCascaderOption[], customOptions?: ThyCascaderOption[]) {\n if (!customOptions?.length) {\n return options;\n }\n return [...customOptions, ...options];\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n Input,\n input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n Signal,\n TemplateRef,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport {\n DebounceTimeWrapper,\n EXPANDED_DROPDOWN_POSITIONS,\n injectPanelEmptyIcon,\n scaleYMotion,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher\n} from 'ngx-tethys/core';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { injectLocale, ThyCascaderLocale } from 'ngx-tethys/i18n';\nimport { SelectControlSize, SelectOptionBase, ThySelectControl } from 'ngx-tethys/shared';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, elementMatchClosest, isEmpty } from 'ngx-tethys/util';\nimport { BehaviorSubject, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\nimport { ThyCascaderOptionComponent } from './cascader-li.component';\nimport { ThyCascaderSearchOptionComponent } from './cascader-search-option.component';\nimport { ThyCascaderService } from './cascader.service';\nimport { ThyCascaderExpandTrigger, ThyCascaderOption, ThyCascaderSearchOption, ThyCascaderTriggerType } from './types';\nimport { CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { ThyCascaderOptionsPipe } from './cascader.pipe';\nimport { ThyLoading } from 'ngx-tethys/loading';\n\n/**\n * 级联选择菜单\n * @name thy-cascader\n */\n@Component({\n selector: 'thy-cascader,[thy-cascader]',\n templateUrl: './cascader.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyCascader),\n multi: true\n },\n ScrollDispatcher,\n ThyCascaderService\n ],\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n NgClass,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n NgStyle,\n ThyCascaderOptionComponent,\n ThyCascaderSearchOptionComponent,\n ThyEmpty,\n ThyDivider,\n ScrollingModule,\n ThyCascaderOptionsPipe,\n ThyLoading\n ],\n animations: [scaleYMotion]\n})\nexport class ThyCascader\n extends TabIndexDisabledControlValueAccessorMixin\n implements ControlValueAccessor, OnInit, OnDestroy, AfterContentInit {\n private platformId = inject(PLATFORM_ID);\n private cdr = inject(ChangeDetectorRef);\n elementRef = inject(ElementRef);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n thyCascaderService = inject(ThyCascaderService);\n private locale: Signal<ThyCascaderLocale> = injectLocale('cascader');\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n /**\n * 选项的实际值的属性名\n */\n readonly thyValueProperty = input('value');\n\n /**\n * 选项的显示值的属性名\n */\n readonly thyLabelProperty = input('label');\n\n /**\n * 描述输入字段预期值的简短的提示信息\n */\n readonly thyPlaceholder = input(this.locale().placeholder);\n\n /**\n * 控制大小(5种)\n * @type 'xs' | 'sm' | 'md' | 'lg' | ''\n */\n readonly thySize = input<SelectControlSize>('');\n\n /**\n * 数据项\n * @type ThyCascaderOption[]\n */\n readonly thyOptions = input<ThyCascaderOption[] | null>([]);\n\n /**\n * 自定义选项\n * @type ThyCascaderOption[]\n */\n readonly thyCustomOptions = input<ThyCascaderOption[] | null>([]);\n\n /**\n * 点击父级菜单选项时,可通过该函数判断是否允许值的变化\n */\n readonly thyChangeOn = input<(option: ThyCascaderOption, level: number) => boolean>();\n\n /**\n * 点击项时,表单是否动态展示数据项\n * @type boolean\n */\n readonly thyChangeOnSelect = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 显示输入框\n * @type boolean\n */\n readonly thyShowInput = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 用户自定义选项模板\n * @type TemplateRef\n */\n readonly thyOptionRender = input<TemplateRef<SafeAny>>();\n\n /**\n * 用户自定义模板\n * @type TemplateRef\n */\n readonly thyLabelRender = input<TemplateRef<any>>();\n\n readonly isLabelRenderTemplate: Signal<boolean> = computed(() => {\n return this.thyLabelRender() instanceof TemplateRef;\n });\n\n /**\n /**\n * 用于动态加载选项\n */\n readonly thyLoadData =\n input<(node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>>();\n\n /**\n * 控制触发状态, 支持 `click` | `hover`\n * @type ThyCascaderTriggerType | ThyCascaderTriggerType[]\n */\n readonly thyTriggerAction = input<ThyCascaderTriggerType | ThyCascaderTriggerType[]>(['click']);\n\n /**\n * 鼠标经过下方列表项时,是否自动展开列表,支持 `click` | `hover`\n * @type ThyCascaderExpandTrigger | ThyCascaderExpandTrigger[]\n */\n readonly thyExpandTriggerAction = input<ThyCascaderExpandTrigger | ThyCascaderExpandTrigger[]>(['click']);\n\n /**\n * 自定义浮层样式\n */\n readonly thyMenuStyle = input<{\n [key: string]: string;\n }>();\n\n /**\n * 自定义搜索样式\n */\n readonly thySearchListStyle = input<{\n [key: string]: string;\n }>();\n\n /**\n * 自定义浮层类名\n * @type string\n */\n readonly thyMenuClassName = input<string>();\n\n /**\n * 自定义浮层列类名\n * @type string\n */\n readonly thyColumnClassName = input<string>();\n\n readonly menuColumnCls = computed(() => {\n return {\n [`${this.prefixCls}-menu`]: true,\n [`${this.thyColumnClassName()}`]: this.thyColumnClassName()\n };\n });\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n /**\n * 空状态下的展示文字\n * @default 暂无可选项\n */\n\n readonly thyEmptyStateText = input<string>();\n\n /**\n * 是否多选\n * @type boolean\n */\n readonly thyMultiple = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制,'auto' 表示自动计算显示数量,默认值为 0\n */\n readonly thyMaxTagCount = input(0, {\n transform: (value: number | 'auto') => {\n if (value === 'auto') return 'auto';\n return numberAttribute(value, 0);\n }\n });\n\n /**\n * 是否仅允许选择叶子项\n * @default true\n */\n readonly thyIsOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 设置\n * @default 140\n */\n readonly thyWidth = input(140, {\n transform: (value: number) => {\n return numberAttribute(value, 140);\n }\n });\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n readonly thyLoadingDone = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 初始化时,是否展开面板\n */\n readonly thyAutoExpand = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否支持搜索\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 多选选中项的展示方式,默认为空,渲染文字模板,传入tag,渲染展示模板,\n */\n readonly thyPreset = input<string>('');\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 值发生变化时触发,返回选择项的值\n * @type EventEmitter<any[]>\n */\n readonly thyChange = output<any[]>();\n\n /**\n * 值发生变化时触发,返回选择项列表\n * @type EventEmitter<ThyCascaderOption[]>\n */\n readonly thySelectionChange = output<ThyCascaderOption[]>();\n\n /**\n * 选择选项时触发\n */\n readonly thySelect = output<{\n option: ThyCascaderOption;\n index: number;\n }>();\n\n /**\n * @private 暂无实现\n */\n readonly thyDeselect = output<{\n option: ThyCascaderOption;\n index: number;\n }>();\n\n /**\n * 清空选项时触发\n */\n readonly thyClear = output<void>();\n\n /**\n * 下拉选项展开和折叠状态事件\n */\n readonly thyExpandStatusChange = output<boolean>();\n\n /**\n * 搜索时回调\n */\n readonly thyOnSearch = output<string>();\n\n readonly cascaderOptions = viewChildren<ThyCascaderOptionComponent, ElementRef>('cascaderOptions', { read: ElementRef });\n\n readonly cascaderItems = viewChildren<ThyCascaderOptionComponent>(ThyCascaderOptionComponent);\n\n readonly cascaderOptionContainers = viewChildren('cascaderOptionContainers', { read: ElementRef });\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n readonly trigger = viewChild.required<ElementRef<any>>('trigger');\n\n readonly input = viewChild<ElementRef>('input');\n\n readonly menu = viewChild<ElementRef>('menu');\n\n readonly virtualScrollViewports = viewChildren(CdkVirtualScrollViewport);\n\n public dropDownPosition = 'bottom';\n\n public menuVisible = false;\n\n public triggerRect!: DOMRect;\n\n public menuCls!: { [name: string]: any };\n\n public labelCls!: { [name: string]: any };\n\n private prefixCls = 'thy-cascader';\n\n private readonly destroy$ = new Subject<void>();\n\n private hostRenderer = useHostRenderer();\n\n public positions!: ConnectionPositionPair[];\n\n get selected(): SelectOptionBase | SelectOptionBase[] {\n return this.thyMultiple() ? this.thyCascaderService.selectionModel!.selected : this.thyCascaderService.selectionModel!.selected[0];\n }\n\n public menuMinWidth = 122;\n\n private searchText$ = new BehaviorSubject('');\n\n public get searchResultList(): ThyCascaderSearchOption[] {\n return this.thyCascaderService.searchResultList;\n }\n\n public isShowSearchPanel: boolean = false;\n\n /**\n * 解决搜索&多选的情况下,点击搜索项会导致 panel 闪烁\n * 由于点击后,thySelectedOptions变化,导致 thySelectControl\n * 又会触发 searchFilter 函数,即 resetSearch 会执行\n * 会导致恢复级联状态再变为搜索状态\n */\n private isSelectingSearchState: boolean = false;\n\n public get isLoading() {\n return this.thyCascaderService?.isLoading;\n }\n\n public get columns() {\n return this.thyCascaderService.columns;\n }\n\n private afterChangeFn: null | (() => void) = null;\n\n private resizeSubscription: Subscription | null = null;\n\n constructor() {\n super();\n effect(() => {\n const options = this.thyOptions();\n const columns = options && options.length ? [options] : [];\n this.thyCascaderService.initColumns(columns);\n if (this.thyCascaderService.defaultValue && columns.length) {\n this.thyCascaderService.initOptions(0);\n }\n if (this.searchText$.getValue()) {\n // local search\n this.searchInLocal(this.searchText$.getValue());\n this.isShowSearchPanel = true;\n }\n });\n\n effect(() => {\n this.thyCascaderService.customOptions = (this.thyCustomOptions() || []).map(item => ({ ...item }));\n });\n\n effect(() => {\n this.setCascaderOptions();\n });\n\n effect(() => {\n this.setMenuClass();\n });\n\n effect(() => {\n if (this.cascaderItems().length > 0) {\n this.cascaderItems().forEach(item => item.markForCheck());\n }\n });\n }\n\n ngOnInit(): void {\n this.setClassMap();\n this.setLabelClass();\n this.initPosition();\n this.initSearch();\n this.setCascaderOptions();\n this.thyCascaderService.cascaderValueChange().subscribe(options => {\n if (!options.isValueEqual) {\n this.onChangeFn(options.value);\n if (options.isSelectionModelEmpty) {\n this.thyClear.emit();\n }\n this.thySelectionChange.emit(this.thyCascaderService.selectedOptions);\n this.thyChange.emit(options.value);\n if (this.afterChangeFn) {\n this.afterChangeFn();\n this.afterChangeFn = null;\n }\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (\n !this.elementRef.nativeElement.contains(event.target) &&\n !this.menu()?.nativeElement.contains(event.target as Node) &&\n this.menuVisible\n ) {\n this.ngZone.run(() => {\n this.closeMenu();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n ngAfterContentInit() {\n if (this.thyAutoExpand()) {\n timer(0).subscribe(() => {\n this.cdr.markForCheck();\n this.setMenuVisible(true);\n });\n }\n }\n\n private setCascaderOptions() {\n const options = {\n labelProperty: this.thyLabelProperty(),\n valueProperty: this.thyValueProperty(),\n isMultiple: this.thyMultiple(),\n isOnlySelectLeaf: this.thyIsOnlySelectLeaf(),\n isLabelRenderTemplate: this.isLabelRenderTemplate(),\n loadData: this.thyLoadData()\n };\n\n this.thyCascaderService.setCascaderOptions(options);\n }\n\n private initPosition() {\n const cascaderPosition: ConnectionPositionPair[] = EXPANDED_DROPDOWN_POSITIONS.map(item => {\n return { ...item };\n });\n this.positions = cascaderPosition;\n }\n\n writeValue(value: any): void {\n this.thyCascaderService.writeCascaderValue(value);\n if (this.thyMultiple()) {\n this.cdr.detectChanges();\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public positionChange(position: ConnectedOverlayPositionChange): void {\n const newValue = position.connectionPair.originY === 'bottom' ? 'bottom' : 'top';\n if (this.dropDownPosition !== newValue) {\n this.dropDownPosition = newValue;\n this.cdr.detectChanges();\n }\n }\n\n public isActivatedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isActivatedOption(option, index);\n }\n\n public isHalfSelectedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isHalfSelectedOption(option, index);\n }\n\n public isSelectedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isSelectedOption(option, index);\n }\n\n public attached(): void {\n this.cdr.detectChanges();\n this.cdkConnectedOverlay()!\n .positionChange.pipe(take(1), delay(50), takeUntil(this.destroy$))\n .subscribe(() => {\n this.scrollActiveElementIntoView();\n });\n }\n\n private scrollActiveElementIntoView() {\n if (!isEmpty(this.thyCascaderService.selectedOptions)) {\n for (let i = 0; i < this.virtualScrollViewports()?.length; i += 1) {\n for (let index = this.columns[i].length - 1; index > -1; index -= 1) {\n if (this.thyCascaderService.isActivatedOption(this.columns[i][index], i)) {\n this.virtualScrollViewports()[i]?.scrollToIndex(index);\n break;\n }\n }\n }\n }\n }\n\n public setMenuVisible(menuVisible: boolean): void {\n if (this.menuVisible !== menuVisible) {\n this.menuVisible = menuVisible;\n\n this.thyCascaderService.initActivatedOptions(this.menuVisible);\n this.setClassMap();\n this.setMenuClass();\n if (this.menuVisible) {\n this.triggerRect = this.trigger().nativeElement.getBoundingClientRect();\n this.subscribeTriggerResize();\n } else {\n this.unsubscribeTriggerResize();\n }\n this.thyExpandStatusChange.emit(menuVisible);\n }\n }\n\n private setMenuClass(): void {\n this.menuCls = {\n [`${this.prefixCls}-menus`]: true,\n [`${this.prefixCls}-menus-hidden`]: !this.menuVisible,\n [`${this.thyMenuClassName()}`]: this.thyMenuClassName(),\n [`w-100`]: this.columns.length === 0\n };\n }\n\n private setLabelClass(): void {\n this.labelCls = {\n [`${this.prefixCls}-picker-label`]: true,\n [`${this.prefixCls}-show-search`]: false,\n [`${this.prefixCls}-focused`]: false,\n 'text-truncate': true\n };\n }\n\n private setClassMap(): void {\n const classMap = {\n [`${this.prefixCls}`]: true,\n [`${this.prefixCls}-picker`]: true,\n [`${this.prefixCls}-${this.thySize()}`]: true,\n [`${this.prefixCls}-picker-disabled`]: this.disabled,\n [`${this.prefixCls}-picker-open`]: this.menuVisible\n };\n this.hostRenderer.updateClassByMap(classMap);\n }\n\n private isClickTriggerAction(): boolean {\n const thyTriggerAction = this.thyTriggerAction();\n if (typeof thyTriggerAction === 'string') {\n return thyTriggerAction === 'click';\n }\n return thyTriggerAction.indexOf('click') !== -1;\n }\n\n private isHoverTriggerAction(): boolean {\n const thyTriggerAction = this.thyTriggerAction();\n if (typeof thyTriggerAction === 'string') {\n return thyTriggerAction === 'hover';\n }\n return thyTriggerAction.indexOf('hover') !== -1;\n }\n\n private isHoverExpandTriggerAction(): boolean {\n const thyExpandTriggerAction = this.thyExpandTriggerAction();\n if (typeof thyExpandTriggerAction === 'string') {\n return thyExpandTriggerAction === 'hover';\n }\n return thyExpandTriggerAction.indexOf('hover') !== -1;\n }\n\n @HostListener('click', ['$event'])\n public toggleClick($event: Event) {\n if (this.disabled) {\n return;\n }\n if (this.isClickTriggerAction()) {\n this.setMenuVisible(!this.menuVisible);\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n public toggleMouseEnter(event: MouseEvent): void {\n if (this.disabled || !this.isHoverTriggerAction() || this.menuVisible) {\n return;\n }\n\n this.setMenuVisible(true);\n }\n\n @HostListener('mouseleave', ['$event'])\n public toggleMouseLeave(event: MouseEvent): void {\n if (this.disabled || !this.isHoverTriggerAction() || !this.menuVisible) {\n event.preventDefault();\n return;\n }\n\n const hostEl = this.elementRef.nativeElement;\n const mouseTarget = event.relatedTarget as HTMLElement;\n if (\n hostEl.contains(mouseTarget) ||\n mouseTarget?.classList.contains('cdk-overlay-pane') ||\n mouseTarget?.classList.contains('cdk-overlay-backdrop')\n ) {\n return;\n }\n\n this.setMenuVisible(false);\n }\n\n public clickCustomOption(option: ThyCascaderOption, index: number, event: Event | boolean): void {\n if (event === true) {\n this.thyCascaderService.clearSelection();\n }\n this.thyCascaderService.clickOption(option, index, event, this.selectOption);\n }\n\n public clickOption(option: ThyCascaderOption, index: number, event: Event | boolean): void {\n this.thyCascaderService.removeCustomOption();\n this.thyCascaderService.clickOption(option, index, event, this.selectOption);\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n // Make sure to calculate and update the position after the submenu is opened\n this.cdr.detectChanges();\n\n // Update the position to prevent the submenu from appearing off-screen\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n this.cdr.markForCheck();\n }\n }\n\n public mouseoverOption(option: ThyCascaderOption, index: number, event: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (option && option.disabled && !this.thyMultiple()) {\n return;\n }\n\n if (!this.isHoverExpandTriggerAction() && !(option && option.disabled && this.thyMultiple())) {\n return;\n }\n this.setActiveOption(option, index, false);\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-cascader-menus', 'thy-cascader'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n if (!elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-cascader-menus', 'thy-cascader'])) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n }\n\n public closeMenu(): void {\n if (this.menuVisible) {\n this.setMenuVisible(false);\n this.onTouchedFn();\n this.isShowSearchPanel = false;\n this.thyCascaderService.searchResultList = [];\n }\n }\n\n public setActiveOption(option: ThyCascaderOption, index: number, select: boolean, loadChildren: boolean = true): void {\n this.thyCascaderService.setActiveOption(option, index, select, loadChildren, this.selectOption);\n }\n\n private selectOption = (option: ThyCascaderOption, index: number) => {\n const isOnlySelectLeaf = this.thyIsOnlySelectLeaf();\n\n if ((option.isLeaf || !isOnlySelectLeaf) && !this.thyMultiple()) {\n this.afterChangeFn = () => {\n this.setMenuVisible(false);\n this.onTouchedFn();\n };\n }\n this.thySelect.emit({ option, index });\n const isOptionCanSelect = this.thyChangeOnSelect() && !this.thyMultiple();\n if (option.isLeaf || !isOnlySelectLeaf || isOptionCanSelect || this.shouldPerformSelection(option, index)) {\n this.thyCascaderService.selectOption(option, index);\n }\n };\n\n public removeSelectedItem(event: { item: SelectOptionBase; $eventOrigin: Event }) {\n event.$eventOrigin.stopPropagation();\n this.thyCascaderService.removeSelectedItem(event?.item);\n }\n\n private shouldPerformSelection(option: ThyCascaderOption, level: number): boolean {\n const thyChangeOn = this.thyChangeOn();\n return typeof thyChangeOn === 'function' ? thyChangeOn(option, level) === true : false;\n }\n\n public clearSelection($event: Event): void {\n if ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n this.afterChangeFn = () => {\n this.setMenuVisible(false);\n };\n this.thyCascaderService.clearSelection();\n }\n\n public trackByFn(index: number, item: ThyCascaderOption) {\n return item?.value || item?._id || index;\n }\n\n public searchFilter(searchText: string) {\n if (!searchText && !this.isSelectingSearchState) {\n this.resetSearch();\n }\n this.searchText$.next(searchText);\n }\n\n private initSearch() {\n this.searchText$\n .pipe(\n takeUntil(this.destroy$),\n DebounceTimeWrapper.debounceTime(200),\n distinctUntilChanged(),\n filter(text => text !== '')\n )\n .subscribe(searchText => {\n this.thyOnSearch.emit(searchText);\n this.resetSearch();\n\n // local search\n this.searchInLocal(searchText);\n this.isShowSearchPanel = true;\n this.cdr.markForCheck();\n });\n }\n\n private searchInLocal(searchText: string): void {\n this.thyCascaderService.searchInLocal(searchText);\n }\n\n private resetSearch() {\n this.isShowSearchPanel = false;\n this.thyCascaderService.resetSearch();\n this.scrollActiveElementIntoView();\n }\n\n public selectSearchResult(selectOptionData: ThyCascaderSearchOption): void {\n const { thyRowValue: selectedOptions } = selectOptionData;\n if (selectOptionData.selected) {\n if (!this.thyMultiple()) {\n this.closeMenu();\n }\n return;\n }\n selectedOptions.forEach((item: ThyCascaderOption, index: number) => {\n this.setActiveOption(item, index, index === selectedOptions.length - 1);\n });\n if (this.thyMultiple()) {\n this.isSelectingSearchState = true;\n selectOptionData.selected = true;\n const originSearchResultList = this.searchResultList;\n // 保持搜索选项\n setTimeout(() => {\n this.isShowSearchPanel = true;\n this.thyCascaderService.searchResultList = originSearchResultList;\n this.isSelectingSearchState = false;\n });\n } else {\n this.resetSearch();\n }\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(null);\n });\n resize.observe(this.trigger().nativeElement);\n return () => {\n resize.disconnect();\n };\n }).subscribe(() => {\n this.ngZone.run(() => {\n this.triggerRect = this.trigger().nativeElement.getBoundingClientRect();\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n this.cdr.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n @if (thyShowInput()) {\n <div\n thySelectControl\n [thyShowSearch]=\"thyShowSearch()\"\n [thySize]=\"thySize()\"\n [thyAllowClear]=\"true\"\n [thySelectedOptions]=\"selected\"\n [thyMaxTagCount]=\"thyMaxTagCount()\"\n (thyOnRemove)=\"removeSelectedItem($event)\"\n (thyOnClear)=\"clearSelection($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnSearch)=\"searchFilter($event)\"\n [thyDisabled]=\"disabled\"\n [thyIsMultiple]=\"thyMultiple()\"\n [thyPanelOpened]=\"menuVisible\"\n [thyPlaceholder]=\"thyPlaceholder()\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyPreset]=\"thyPreset()\">\n <ng-template #customDisplayTemplate let-value>\n @if (!isLabelRenderTemplate()) {\n <span [ngClass]=\"labelCls\">{{ value.labelText }}</span>\n } @else {\n <span [ngClass]=\"labelCls\">\n <ng-template [ngTemplateOutlet]=\"thyLabelRender()\" [ngTemplateOutletContext]=\"value.labelRenderContext\"></ng-template>\n </span>\n }\n </ng-template>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop()\"\n cdkConnectedOverlayBackdropClass=\"thy-cascader-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"menuMinWidth\"\n cdkConnectedOverlayTransformOriginOn=\".thy-cascader-menus\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n (attach)=\"attached()\"\n (positionChange)=\"positionChange($event)\"\n [cdkConnectedOverlayOpen]=\"menuVisible\">\n <div\n [attr.tabindex]=\"-1\"\n #menu\n [ngClass]=\"menuCls\"\n [ngStyle]=\"thyMenuStyle()\"\n (mouseleave)=\"toggleMouseLeave($event)\"\n [@scaleYMotion]=\"'enter'\"\n [class.thy-cascader-loading]=\"!thyLoadingDone()\">\n @if (thyLoadingDone()) {\n @if (!isShowSearchPanel) {\n @if (columns.length > 0) {\n @for (options of columns; track $index; let i = $index; let isFirst = $first) {\n <ul #cascaderOptionContainers [ngClass]=\"menuColumnCls()\" [ngStyle]=\"{ 'width.px': thyWidth() }\">\n @let allOptions = options | cascaderOptions: (isFirst ? thyCascaderService.customOptions : []);\n\n @if (allOptions.length > 0) {\n <cdk-virtual-scroll-viewport [itemSize]=\"36\" class=\"h-100\">\n <ng-container *cdkVirtualFor=\"let option of allOptions; let index = index; trackBy: trackByFn\">\n @if (\n thyCascaderService.customOptions &&\n thyCascaderService.customOptions.length > 0 &&\n isFirst &&\n index < thyCascaderService.customOptions.length\n ) {\n <li\n #cascaderOptions\n thy-cascader-option\n [option]=\"option\"\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [labelProperty]=\"thyLabelProperty()\"\n [active]=\"isActivatedOption(option, 0)\"\n [halfSelected]=\"isHalfSelectedOption(option, 0)\"\n [selected]=\"isSelectedOption(option, 0)\"\n (toggleSelectChange)=\"clickCustomOption(option, 0, $event)\"\n (click)=\"clickCustomOption(option, 0, $event)\"\n (mouseover)=\"mouseoverOption(option, 0, $event)\"></li>\n @if (index === thyCascaderService.customOptions.length - 1) {\n <thy-divider class=\"my-1 mx-4\"></thy-divider>\n }\n } @else {\n <li\n #cascaderOptions\n thy-cascader-option\n [option]=\"option\"\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [labelProperty]=\"thyLabelProperty()\"\n [active]=\"isActivatedOption(option, i)\"\n [halfSelected]=\"isHalfSelectedOption(option, i)\"\n [selected]=\"isSelectedOption(option, i)\"\n [optionRender]=\"thyOptionRender()\"\n (toggleSelectChange)=\"clickOption(option, i, $event)\"\n (click)=\"clickOption(option, i, $event)\"\n (mouseover)=\"mouseoverOption(option, i, $event)\"></li>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </ul>\n }\n } @else {\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"thyEmptyStateText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n </div>\n }\n }\n @if (isShowSearchPanel) {\n @if (searchResultList.length) {\n <ul class=\"thy-cascader-search-list py-3\" [ngStyle]=\"thySearchListStyle()\">\n @for (item of searchResultList; track $index) {\n <li\n thy-cascader-search-option\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [option]=\"item\"\n [active]=\"item.selected\"\n [optionRender]=\"thyOptionRender()\"\n (toggleSelectChange)=\"selectSearchResult($event)\"></li>\n }\n </ul>\n } @else {\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"thyEmptyStateText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n </div>\n }\n }\n } @else {\n <thy-loading [ngStyle]=\"{ 'width.px': thyWidth() }\" [thyDone]=\"thyLoadingDone()\" thySize=\"sm\"></thy-loading>\n }\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThySelectCommonModule } from 'ngx-tethys/shared';\nimport { ThyCascaderOptionComponent } from './cascader-li.component';\nimport { ThyCascaderSearchOptionComponent } from './cascader-search-option.component';\nimport { ThyCascader } from './cascader.component';\nimport { ThyCascaderOptionsPipe } from './cascader.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n ThyInputModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyCheckboxModule,\n ThyFlexibleTextModule,\n ThyCascader,\n ThyCascaderOptionComponent,\n ThyCascaderSearchOptionComponent,\n ThyCascaderOptionsPipe\n ],\n exports: [ThyCascader]\n})\nexport class ThyCascaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-cascader.mjs","sources":["../../../src/cascader/cascader-li.component.ts","../../../src/cascader/cascader-li.component.html","../../../src/cascader/cascader-search-option.component.ts","../../../src/cascader/cascader-search-option.component.html","../../../src/cascader/cascader.service.ts","../../../src/cascader/cascader.pipe.ts","../../../src/cascader/cascader.component.ts","../../../src/cascader/cascader.component.html","../../../src/cascader/module.ts","../../../src/cascader/ngx-tethys-cascader.ts"],"sourcesContent":["import { ThyCheckbox } from 'ngx-tethys/checkbox';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyRadio } from 'ngx-tethys/radio';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n output\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyCascaderOption } from './types';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: '[thy-cascader-option]',\n templateUrl: './cascader-li.component.html',\n imports: [ThyFlexibleText, ThyCheckbox, ThyRadio, FormsModule, ThyStopPropagationDirective, NgTemplateOutlet, ThyIcon],\n host: {\n class: 'd-flex thy-cascader-menu-item',\n '[class.thy-cascader-menu-item-active]': 'active()',\n '[class.thy-cascader-menu-item-disabled]': 'disabled()',\n '[class.thy-cascader-menu-item-expand]': 'expand()'\n }\n})\nexport class ThyCascaderOptionComponent implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n readonly option = input<ThyCascaderOption>();\n\n readonly multiple = input(false, { transform: coerceBooleanProperty });\n\n readonly isOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n readonly optionRender = input<TemplateRef<SafeAny>>();\n\n readonly active = input(false, { transform: coerceBooleanProperty });\n\n readonly halfSelected = input(false, { transform: coerceBooleanProperty });\n\n readonly selected = input(false, { transform: coerceBooleanProperty });\n\n readonly disabled: Signal<boolean> = computed(() => !!this.option()?.disabled);\n\n readonly expand: Signal<boolean> = computed(() => !!(this.option() && !this.option()!.isLeaf));\n\n readonly labelProperty = input<string>('label');\n\n readonly toggleSelectChange = output<boolean>();\n\n constructor() {}\n\n ngOnInit() {}\n\n public toggleOption(value: boolean) {\n this.toggleSelectChange.emit(value);\n }\n\n public markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","@if (!option()!.readonly) {\n <div thyStopPropagation>\n @if (multiple()) {\n <label\n class=\"mr-2\"\n thyCheckbox\n [disabled]=\"option().disabled\"\n [name]=\"option().value || option()._id\"\n [thyIndeterminate]=\"halfSelected()\"\n [ngModel]=\"selected()\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n }\n @if (!multiple() && !isOnlySelectLeaf()) {\n <label\n class=\"mr-2\"\n thyRadio\n [disabled]=\"option().disabled\"\n [name]=\"option().value || option()._id\"\n [ngModel]=\"selected()\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n }\n </div>\n}\n\n@if (!optionRender()) {\n <span thyFlexibleText [thyTooltipContent]=\"option()[labelProperty()] || ''\"> {{ option()[labelProperty()] || '' }}</span>\n} @else {\n <ng-template [ngTemplateOutlet]=\"optionRender()\" [ngTemplateOutletContext]=\"{ option: option() }\"></ng-template>\n}\n\n@if (!option()?.isLeaf || (option()?.children && option()!.children?.length) || option()?.loading) {\n @if (option().loading) {\n <thy-icon\n class=\"thy-cascader-menu-item-loading font-size-base\"\n thyIconName=\"loading\"\n thyIconType=\"twotone\"\n thyTwotoneColor=\"#6698ff\"></thy-icon>\n } @else {\n <span class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\"> </span>\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostListener, OnInit, TemplateRef, ViewEncapsulation, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyBreadcrumb, ThyBreadcrumbItem } from 'ngx-tethys/breadcrumb';\nimport { ThyCheckbox } from 'ngx-tethys/checkbox';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyCascaderSearchOption } from './types';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n \n selector: '[thy-cascader-search-option]',\n templateUrl: './cascader-search-option.component.html',\n imports: [NgClass, ThyFlexibleText, ThyCheckbox, ThyBreadcrumb, ThyBreadcrumbItem, FormsModule, NgTemplateOutlet],\n host: {\n class: 'thy-cascader-search-list-item px-4 d-flex align-items-center cursor-pointer',\n '[class.multiple]': 'multiple()',\n '[class.active]': 'active()'\n }\n})\nexport class ThyCascaderSearchOptionComponent implements OnInit {\n readonly option = input<ThyCascaderSearchOption>();\n\n readonly multiple = input(false, { transform: coerceBooleanProperty });\n\n readonly isOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n readonly active = input(false, { transform: coerceBooleanProperty });\n\n readonly optionRender = input<TemplateRef<SafeAny>>();\n\n @HostListener('click', ['$event'])\n public toggleClick($event: Event) {\n if (this.multiple()) {\n return;\n }\n this.toggleSelectChange.emit(this.option()!);\n }\n\n readonly toggleSelectChange = output<ThyCascaderSearchOption>();\n\n constructor() {}\n\n ngOnInit() {}\n\n public clickCheckbox(event: Event) {\n // 已选中的在搜索情况下不能取消选择\n if (this.active()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n public toggleOption(value: boolean) {\n this.toggleSelectChange.emit(this.option()!);\n }\n}\n","@if (multiple()) {\n <label\n class=\"mr-1\"\n thyCheckbox\n [disabled]=\"option().thyRowValue[option().thyRowValue.length - 1].disabled\"\n [ngModel]=\"active()\"\n (click)=\"clickCheckbox($event)\"\n (ngModelChange)=\"toggleOption($event)\"\n [thyLabelText]=\"''\"></label>\n}\n\n<thy-breadcrumb thySeparator=\"slash\">\n @for (label of option()!.labelList; track $index; let i = $index) {\n <thy-breadcrumb-item [ngClass]=\"{ 'text-muted': !(option().thyRowValue[i].isLeaf && isOnlySelectLeaf()) }\">\n @if (!optionRender()) {\n <span class=\"option-label-item\" thyFlexibleText [thyTooltipContent]=\"label\">{{ label }}</span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"optionRender()\" [ngTemplateOutletContext]=\"{ option: option().thyRowValue[i] }\"> </ng-template>\n }\n </thy-breadcrumb-item>\n }\n</thy-breadcrumb>\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Injectable } from '@angular/core';\nimport { Id } from '@tethys/cdk/immutable';\nimport { SelectOptionBase } from 'ngx-tethys/shared';\nimport { helpers, isArray, isEmpty, isUndefinedOrNull, set, get, wrapIntoObservable } from 'ngx-tethys/util';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, finalize, map } from 'rxjs/operators';\nimport { ThyCascaderOption, ThyCascaderSearchOption } from './types';\nconst defaultDisplayRender = (label: any) => label.join(' / ');\n\n/**\n * @internal\n */\n@Injectable()\nexport class ThyCascaderService {\n public selectionModel?: SelectionModel<SelectOptionBase>;\n\n public columns: ThyCascaderOption[][] = [];\n\n public customOptions!: ThyCascaderOption[];\n\n public cascaderOptions!: {\n labelProperty?: string;\n valueProperty?: string;\n isMultiple?: boolean;\n isOnlySelectLeaf?: boolean;\n isLabelRenderTemplate?: boolean;\n loadData?: (node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>;\n };\n\n public selectedOptions: ThyCascaderOption[] = [];\n\n public activatedOptions: ThyCascaderOption[] = [];\n\n public labelRenderText?: string;\n\n public flattenOptions: ThyCascaderSearchOption[] = [];\n\n public leafNodes: ThyCascaderSearchOption[] = [];\n\n public isLoading = false;\n\n public searchResultList: ThyCascaderSearchOption[] = [];\n\n public defaultValue: any[] | null = null;\n\n public value!: any[];\n\n private prevSelectedOptions: Set<ThyCascaderOption> = new Set<ThyCascaderOption>();\n\n public valueChange$ = new Subject<void>();\n\n public cascaderValueChange() {\n return this.valueChange$.pipe(\n map(() => {\n const valueChangeOptions = {\n value: this.getValues(),\n isValueEqual: this.arrayEquals(this.value, this.getValues()),\n isSelectionModelEmpty: this.selectionModel!.isEmpty()\n };\n this.defaultValue = null;\n this.value = this.getValues();\n return valueChangeOptions;\n }),\n debounceTime(100)\n );\n }\n\n public setCascaderOptions(options: {\n labelProperty?: string;\n valueProperty?: string;\n isMultiple?: boolean;\n isOnlySelectLeaf?: boolean;\n isLabelRenderTemplate?: boolean;\n loadData?: (node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>;\n }) {\n this.cascaderOptions = { ...this.cascaderOptions, ...options };\n if (this.cascaderOptions.hasOwnProperty('isMultiple')) {\n this.initSelectionModel(this.cascaderOptions.isMultiple);\n }\n }\n\n public initSelectionModel(isMultiple?: boolean) {\n if (this.selectionModel!) {\n this.selectionModel!.clear();\n } else {\n this.selectionModel = new SelectionModel(isMultiple);\n }\n }\n\n public initColumns(columns: ThyCascaderOption[][]) {\n this.columns = columns;\n }\n\n public initActivatedOptions(menuVisible: boolean) {\n if (isEmpty(this.selectedOptions) || !menuVisible) {\n return;\n }\n this.activatedOptions = [...this.selectedOptions];\n this.activatedOptions.forEach((item, index) => {\n if (!isEmpty(item.children) && !item.isLeaf) {\n this.columns[index + 1] = item.children!;\n }\n });\n }\n\n public initOptions(index: number) {\n const vs = this.defaultValue!;\n const load = () => {\n this.activateOnInit(index, vs[index]);\n if (index < vs.length - 1) {\n this.initOptions(index + 1);\n }\n if (index === vs.length - 1) {\n this.afterWriteValue();\n }\n };\n\n if (this.columns[index]?.length || !this.cascaderOptions.loadData) {\n load();\n } else {\n const node = this.activatedOptions[index - 1] || {};\n this.loadChildren(node, index - 1, load, this.afterWriteValue.bind(this));\n }\n }\n\n public clickOption(\n option: ThyCascaderOption,\n index: number,\n event: Event | boolean,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ) {\n if (option?.disabled && !this.cascaderOptions.isMultiple) {\n return;\n }\n\n const isSelect = event instanceof Event ? !this.cascaderOptions.isMultiple && option.isLeaf : true;\n\n if (this.cascaderOptions.isMultiple && !option.isLeaf && this.cascaderOptions.isOnlySelectLeaf && isSelect) {\n this.toggleAllChildren(option, index, event as boolean, selectFn);\n } else {\n this.setActiveOption(option, index, !!isSelect, true, selectFn);\n }\n }\n\n public setActiveOption(\n option: ThyCascaderOption,\n index: number,\n select: boolean,\n loadChildren: boolean = true,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ): void {\n this.activatedOptions[index] = option;\n for (let i = index - 1; i >= 0; i--) {\n const originOption = this.activatedOptions[i + 1]?.parent;\n if (\n !this.activatedOptions[i] ||\n originOption?.[this.cascaderOptions.valueProperty!] !== this.activatedOptions[i]?.[this.cascaderOptions.valueProperty!]\n ) {\n this.activatedOptions[i] = originOption ?? this.activatedOptions[i];\n }\n }\n if (index < this.activatedOptions.length - 1) {\n this.activatedOptions = this.activatedOptions.slice(0, index + 1);\n }\n if (isArray(option.children) && option.children.length) {\n option.isLeaf = false;\n option.children.forEach(child => (child.parent = option));\n this.setColumnData(option.children, index + 1);\n } else if (!option.isLeaf && loadChildren) {\n this.loadChildren(option, index);\n } else if (index < this.columns.length - 1) {\n this.columns = this.columns.slice(0, index + 1);\n }\n\n if (select && selectFn) {\n selectFn(option, index);\n }\n }\n\n private loadChildren(option: ThyCascaderOption, index: number, success?: () => void, failure?: () => void): void {\n if (option.isLeaf) {\n return;\n }\n if (!this.cascaderOptions?.loadData) {\n this.setColumnData(option.children || [], index + 1);\n return;\n }\n\n this.isLoading = true;\n option.loading = true;\n\n wrapIntoObservable(this.cascaderOptions.loadData(option, index))\n .pipe(\n finalize(() => {\n this.isLoading = false;\n option.loading = false;\n })\n )\n .subscribe({\n next: data => this.handleLoadDataSuccess(data, index, success),\n error: () => this.handleLoadDataFailure(option, index, failure)\n });\n }\n\n private handleLoadDataSuccess(option: ThyCascaderOption, index: number, success?: () => void): void {\n option.loading = this.isLoading = false;\n\n if (option.children) {\n option.children.forEach(child => (child.parent = index < 0 ? undefined : option));\n this.setColumnData(option.children, index + 1);\n }\n\n if (success) {\n success();\n }\n }\n\n private handleLoadDataFailure(option: ThyCascaderOption, index: number, failure?: () => void): void {\n option.loading = this.isLoading = false;\n option.isLeaf = true;\n\n if (failure) {\n failure();\n }\n }\n\n private activateOnInit(index: number, value: any): void {\n let option: ThyCascaderOption | undefined | null;\n if (isArray(this.customOptions) && this.customOptions.length > 0) {\n option = this.customOptions.find(item => get(item, this.cascaderOptions.valueProperty!) === value);\n }\n if (isUndefinedOrNull(option)) {\n option = this.findOption(value, index);\n }\n if (!option) {\n option =\n typeof value === 'object'\n ? value\n : {\n [`${this.cascaderOptions.valueProperty || 'value'}`]: value,\n [`${this.cascaderOptions.labelProperty || 'label'}`]: value\n };\n }\n this.updatePrevSelectedOptions(option!, true);\n this.setActiveOption(option!, index, false, false);\n }\n\n public isSelectedOption(option: ThyCascaderOption, index: number): boolean {\n if (this.cascaderOptions?.isOnlySelectLeaf) {\n if (option.isLeaf) {\n return option.selected;\n } else {\n return this.checkSelectedStatus(option, true);\n }\n } else {\n const selectedOpts = this.selectionModel!.selected;\n const appearIndex = selectedOpts.findIndex(item => {\n if (item.thyRawValue.value.length - 1 === index) {\n const selectedItem = helpers.get(item, `thyRawValue.value.${index}`);\n return helpers.shallowEqual(selectedItem, option);\n } else {\n return false;\n }\n });\n return appearIndex >= 0;\n }\n }\n\n private toggleAllChildren(\n option: ThyCascaderOption,\n index: number,\n selected: boolean,\n selectFn?: (option: ThyCascaderOption, index: number) => void\n ): void {\n const allLeafs: {\n option: ThyCascaderOption;\n index: number;\n }[] = this.getAllLeafs(option, index, selected);\n option.selected = selected;\n\n while (allLeafs.length) {\n const { option, index } = allLeafs.shift()!;\n option.selected = !selected;\n this.setActiveOption(option, index, true, undefined, selectFn);\n }\n\n for (let i = 0; i < this.activatedOptions.length; i++) {\n const option = this.activatedOptions[i];\n if (isArray(option.children) && option.children.length) {\n this.setColumnData(option.children, i + 1);\n }\n }\n }\n\n private getAllLeafs(\n option: ThyCascaderOption,\n index: number,\n selected: boolean\n ): {\n option: ThyCascaderOption;\n index: number;\n }[] {\n let allLeafs: {\n option: ThyCascaderOption;\n index: number;\n }[] = [];\n if (option.children!.length > 0) {\n for (const childOption of option.children!) {\n childOption.parent = option;\n if (childOption.isLeaf && !childOption.selected === selected) {\n allLeafs.push({\n option: childOption,\n index: index + 1\n });\n } else if (!childOption.isLeaf) {\n allLeafs = allLeafs.concat(this.getAllLeafs(childOption, index + 1, selected));\n }\n }\n }\n return allLeafs;\n }\n\n public searchInLocal(searchText: string): void {\n this.forEachColumns();\n\n this.setSearchResultList(this.cascaderOptions.isOnlySelectLeaf ? this.leafNodes : this.flattenOptions, searchText);\n }\n\n private forEachColumns(\n currentLabel?: string[],\n currentValue: Id[] = [],\n currentRowValue: ThyCascaderOption[] = [],\n list = this.columns[0]\n ) {\n list.forEach(item => {\n const curOptionLabel = this.getOptionLabel(item);\n const curOptionValue = this.getOptionValue(item);\n const label: string[] = currentLabel ? [...currentLabel, curOptionLabel] : [curOptionLabel];\n const valueList: Id[] = [...currentValue, curOptionValue];\n const rowValueList: ThyCascaderOption[] = [...currentRowValue, item];\n const isSelected = this.isSelectedOption(item, valueList.length - 1);\n\n const node = {\n labelList: label,\n valueList,\n selected: isSelected,\n thyRowValue: rowValueList,\n isLeaf: item.isLeaf,\n disabled: item.disabled\n };\n\n this.flattenOptions.push(node);\n if (item?.children?.length) {\n this.forEachColumns(label, valueList, rowValueList, item.children);\n } else {\n this.leafNodes.push(node);\n }\n });\n }\n\n private setSearchResultList(listOfOption: ThyCascaderSearchOption[], searchText: string) {\n this.searchResultList = [];\n const lowerSearchText = searchText.toLowerCase();\n listOfOption.forEach(item => {\n if (!item.disabled && item.isLeaf) {\n const joinedLabel = item.labelList.join();\n const joinedLabelWithSlash = item.labelList.join('/');\n if (\n joinedLabel.toLowerCase().includes(lowerSearchText) ||\n (joinedLabelWithSlash.toLowerCase().includes(lowerSearchText) && searchText !== '/')\n ) {\n // 由于 joinedLabelWithSlash 额外添加了 '/' ,所以这里跳过对 '/' 字符对判断\n this.searchResultList.push(item);\n }\n }\n });\n }\n\n /**\n * 检查所有所有子项的选择状态, 有一个不符合预期,就直接返回 false\n * @param option\n * @param trueOrFalse\n * @private\n */\n private checkSelectedStatus(option: ThyCascaderOption, isSelected: boolean): boolean {\n if (option.isLeaf) {\n return option.selected === isSelected;\n }\n if (helpers.isEmpty(option.children) && this.cascaderOptions?.isOnlySelectLeaf) {\n return false;\n }\n for (const childOption of option.children!) {\n if (isArray(childOption.children) && childOption.children.length && !this.checkSelectedStatus(childOption, isSelected)) {\n return false;\n }\n if (!childOption.selected === isSelected) {\n return false;\n }\n }\n return true;\n }\n\n private findOption(option: any, index: number): ThyCascaderOption | null | undefined {\n const options: ThyCascaderOption[] = this.columns[index];\n if (options) {\n const value = typeof option === 'object' ? this.getOptionValue(option) : option;\n return options.find(o => value === this.getOptionValue(o));\n }\n return null;\n }\n\n private setColumnData(options: ThyCascaderOption[], index: number): void {\n if (!this.arrayEquals(this.columns[index], options)) {\n this.columns[index] = options;\n if (index < this.columns.length - 1) {\n this.columns = this.columns.slice(0, index + 1);\n }\n }\n }\n\n private getSubmitValue(originOptions: ThyCascaderOption[]): any[] {\n const values: any[] = [];\n (originOptions || []).forEach(option => {\n values.push(this.getOptionValue(option));\n });\n return values;\n }\n\n public removeSelectedItem(item: SelectOptionBase) {\n const selectedItems = this.selectionModel!.selected;\n const currentItem = selectedItems.find(i => {\n return helpers.shallowEqual(i.thyValue, item.thyValue);\n });\n if (currentItem) {\n this.deselectOption(currentItem);\n this.selectionModel!.deselect(currentItem);\n }\n\n // update selectedOptions\n const updatedSelectedItems = this.selectionModel!.selected;\n if (isArray(updatedSelectedItems) && updatedSelectedItems.length) {\n this.selectedOptions = updatedSelectedItems[updatedSelectedItems.length - 1].thyRawValue.value;\n }\n\n this.valueChange$.next();\n }\n\n public resetSearch() {\n this.searchResultList = [];\n this.leafNodes = [];\n this.flattenOptions = [];\n }\n\n public clearSelection() {\n this.labelRenderText = '';\n this.selectedOptions = [];\n this.activatedOptions = [];\n this.deselectAllSelected();\n }\n\n private deselectAllSelected() {\n const selectedOptions = this.selectionModel!.selected;\n selectedOptions.forEach(item => this.deselectOption(item));\n this.selectionModel!.clear();\n this.valueChange$.next();\n }\n\n private deselectOption(option: SelectOptionBase) {\n const value: ThyCascaderOption[] = option.thyRawValue.value;\n value.forEach(item => {\n if (item.isLeaf && item.selected) {\n set(item, 'selected', false);\n }\n });\n }\n\n public selectOption(option: ThyCascaderOption, index: number): void {\n this.selectedOptions = this.activatedOptions;\n this.updatePrevSelectedOptions(option, false, index);\n if (option.selected) {\n this.buildDisplayLabel();\n } else {\n const selectedItems = this.selectionModel!.selected;\n const currentItem = selectedItems.find(item => {\n if (item.thyRawValue.value.length - 1 === index) {\n const selectedItem = helpers.get(item, `thyRawValue.value.${index}`);\n return helpers.shallowEqual(selectedItem, option);\n } else {\n return false;\n }\n });\n if (currentItem) {\n this.selectionModel!.deselect(currentItem);\n }\n }\n this.valueChange$.next();\n }\n\n private addSelectedState(selectOptions: ThyCascaderOption[]) {\n if (this.cascaderOptions.isMultiple && this.cascaderOptions.isOnlySelectLeaf) {\n selectOptions.forEach(opt => {\n if (opt.isLeaf) {\n opt.selected = true;\n set(opt, 'selected', true);\n }\n });\n this.addParentSelectedState(selectOptions);\n }\n }\n\n private addParentSelectedState(selectOptions: ThyCascaderOption[]) {\n selectOptions.forEach(opt => {\n if (opt?.children?.length && opt.children.every(i => i.selected)) {\n opt.selected = true;\n set(opt, 'selected', true);\n if (opt.parent) {\n this.addParentSelectedState([opt.parent]);\n }\n }\n });\n }\n\n private buildDisplayLabel(): void {\n const selectedOptions = [...this.selectedOptions];\n const labels: string[] = selectedOptions.map(o => this.getOptionLabel(o));\n\n if (labels.length === 0) {\n return;\n }\n\n let labelRenderContext;\n let labelRenderText;\n\n if (this.cascaderOptions.isLabelRenderTemplate) {\n labelRenderContext = { labels, selectedOptions };\n } else {\n // @ts-ignore\n labelRenderText = defaultDisplayRender.call(this, labels, selectedOptions);\n this.labelRenderText = labelRenderText;\n }\n\n if (this.labelRenderText || this.cascaderOptions.isLabelRenderTemplate) {\n const selectedData: SelectOptionBase = {\n thyRawValue: {\n value: selectedOptions,\n labelText: labelRenderText,\n labelRenderContext: labelRenderContext\n },\n thyValue: labels,\n thyLabelText: labelRenderText\n };\n // 多选时 SelectionModel 以引用判重,每次 new 的 selectedData 会被重复加入;按选中路径去重\n if (\n this.cascaderOptions.isMultiple &&\n this.selectionModel!.selected.some(item =>\n this.arrayEquals(this.getSubmitValue(item.thyRawValue.value), this.getSubmitValue(selectedOptions))\n )\n ) {\n return;\n }\n this.selectionModel!.select(selectedData);\n }\n }\n\n public writeCascaderValue(value: any): void {\n if (!this.selectionModel!) {\n this.initSelectionModel(this.cascaderOptions.isMultiple);\n }\n if (!this.cascaderOptions.isMultiple) {\n const vs = (this.defaultValue = this.toArray(value));\n if (vs.length) {\n this.initOptions(0);\n } else {\n this.value = vs;\n this.activatedOptions = [];\n this.afterWriteValue();\n }\n } else {\n const values = this.toArray(value);\n this.selectionModel!.clear();\n values.forEach(item => {\n const vs = (this.defaultValue = this.toArray(item));\n if (vs.length) {\n this.initOptions(0);\n } else {\n this.value = vs;\n this.activatedOptions = [];\n this.afterWriteValue();\n }\n });\n }\n }\n\n private afterWriteValue() {\n this.selectedOptions = this.activatedOptions;\n this.value = this.getSubmitValue(this.selectedOptions);\n this.addSelectedState(this.selectedOptions);\n this.buildDisplayLabel();\n }\n\n public isActivatedOption(option: ThyCascaderOption, index: number): boolean {\n const activeOpt = this.activatedOptions[index];\n return activeOpt === option;\n }\n\n public isHalfSelectedOption(option: ThyCascaderOption, index: number): boolean {\n if (\n this.cascaderOptions.isMultiple &&\n !option.selected &&\n this.cascaderOptions.isOnlySelectLeaf &&\n !option.isLeaf &&\n !this.checkSelectedStatus(option, false) &&\n !helpers.isEmpty(option.children)\n ) {\n return true;\n }\n return false;\n }\n\n public getValues() {\n const selected = this.selectionModel!.selected;\n const selectedItems = selected.map(item => this.getSubmitValue(item.thyRawValue.value));\n return this.cascaderOptions?.isMultiple ? selectedItems : (selectedItems[0] ?? selectedItems);\n }\n\n private updatePrevSelectedOptions(option: ThyCascaderOption, isActivateInit: boolean, index?: number) {\n if (isActivateInit) {\n this.handleActivateInit(option);\n } else {\n if (!this.cascaderOptions.isMultiple) {\n this.clearPrevSelectedOptions();\n }\n\n set(option, 'selected', this.isSelected(option, index));\n\n if (this.cascaderOptions.isOnlySelectLeaf && this.cascaderOptions.isMultiple && option.parent) {\n this.updatePrevSelectedOptions(option.parent, false, index! - 1);\n }\n }\n\n this.prevSelectedOptions.add(option);\n }\n\n private handleActivateInit(option: ThyCascaderOption): void {\n if (isArray(this.customOptions) && this.customOptions.length > 0) {\n const valueKey = this.cascaderOptions.valueProperty!;\n this.customOptions.some(item => get(item, valueKey) == get(option, valueKey)) && set(option, 'selected', true);\n }\n if (this.cascaderOptions.isOnlySelectLeaf && option.isLeaf) {\n set(option, 'selected', true);\n }\n }\n\n private isSelected(option: ThyCascaderOption, index?: number) {\n return this.cascaderOptions.isOnlySelectLeaf && !option.isLeaf && this.cascaderOptions.isMultiple\n ? this.isSelectedOption(option, index!)\n : !this.isSelectedOption(option, index!);\n }\n\n private clearPrevSelectedOptions() {\n const prevSelectedOptions = Array.from(this.prevSelectedOptions);\n while (prevSelectedOptions.length) {\n set(prevSelectedOptions.pop(), 'selected', false);\n }\n this.prevSelectedOptions = new Set([]);\n }\n\n private getOptionLabel(option: ThyCascaderOption): any {\n return option[this.cascaderOptions.labelProperty || 'label'];\n }\n\n private getOptionValue(option: ThyCascaderOption): any {\n return option[this.cascaderOptions.valueProperty || 'value'];\n }\n\n public removeCustomOption() {\n if (!isArray(this.customOptions) || this.customOptions.length === 0) {\n return;\n }\n\n const selectedCustomOptions = this.getSelectedCustomOptions();\n selectedCustomOptions.forEach(item => {\n this.removeSelectedItem(item);\n });\n }\n\n private getSelectedCustomOptions() {\n const selected = this.cascaderOptions.isMultiple ? this.selectionModel!.selected : this.selectionModel!.selected[0];\n if (!isArray(selected)) {\n return [];\n }\n const valueKey = this.cascaderOptions.valueProperty;\n return selected.filter(item => {\n const selectedId = get(item, `thyRawValue.value.0.${valueKey}`);\n return this.customOptions.some(option => get(option, valueKey!) === selectedId);\n });\n }\n\n toArray<T>(value: T | T[]): T[] {\n if (value == null) {\n return [];\n } else if (!Array.isArray(value)) {\n return [value];\n } else {\n return value;\n }\n }\n\n arrayEquals<T>(array1: T[], array2: T[]): boolean {\n if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length) {\n return false;\n }\n\n return array1.every((element, index) => element === array2[index]);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ThyCascaderOption } from './types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'cascaderOptions'\n})\nexport class ThyCascaderOptionsPipe implements PipeTransform {\n transform(options: ThyCascaderOption[], customOptions?: ThyCascaderOption[]) {\n if (!customOptions?.length) {\n return options;\n }\n return [...customOptions, ...options];\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n Input,\n input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n Signal,\n TemplateRef,\n viewChild,\n viewChildren\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport {\n DebounceTimeWrapper,\n EXPANDED_DROPDOWN_POSITIONS,\n injectPanelEmptyIcon,\n scaleYMotion,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher\n} from 'ngx-tethys/core';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { injectLocale, ThyCascaderLocale } from 'ngx-tethys/i18n';\nimport { SelectControlSize, SelectOptionBase, ThySelectControl } from 'ngx-tethys/shared';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, elementMatchClosest, isEmpty } from 'ngx-tethys/util';\nimport { BehaviorSubject, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\nimport { ThyCascaderOptionComponent } from './cascader-li.component';\nimport { ThyCascaderSearchOptionComponent } from './cascader-search-option.component';\nimport { ThyCascaderService } from './cascader.service';\nimport { ThyCascaderExpandTrigger, ThyCascaderOption, ThyCascaderSearchOption, ThyCascaderTriggerType } from './types';\nimport { CdkVirtualScrollViewport, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';\nimport { ThyCascaderOptionsPipe } from './cascader.pipe';\nimport { ThyLoading } from 'ngx-tethys/loading';\n\n/**\n * 级联选择菜单\n * @name thy-cascader\n */\n@Component({\n selector: 'thy-cascader,[thy-cascader]',\n templateUrl: './cascader.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyCascader),\n multi: true\n },\n ScrollDispatcher,\n ThyCascaderService\n ],\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n NgClass,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n NgStyle,\n ThyCascaderOptionComponent,\n ThyCascaderSearchOptionComponent,\n ThyEmpty,\n ThyDivider,\n ScrollingModule,\n ThyCascaderOptionsPipe,\n ThyLoading\n ],\n animations: [scaleYMotion]\n})\nexport class ThyCascader\n extends TabIndexDisabledControlValueAccessorMixin\n implements ControlValueAccessor, OnInit, OnDestroy, AfterContentInit {\n private platformId = inject(PLATFORM_ID);\n private cdr = inject(ChangeDetectorRef);\n elementRef = inject(ElementRef);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n thyCascaderService = inject(ThyCascaderService);\n private locale: Signal<ThyCascaderLocale> = injectLocale('cascader');\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n /**\n * 选项的实际值的属性名\n */\n readonly thyValueProperty = input('value');\n\n /**\n * 选项的显示值的属性名\n */\n readonly thyLabelProperty = input('label');\n\n /**\n * 描述输入字段预期值的简短的提示信息\n */\n readonly thyPlaceholder = input(this.locale().placeholder);\n\n /**\n * 控制大小(5种)\n * @type 'xs' | 'sm' | 'md' | 'lg' | ''\n */\n readonly thySize = input<SelectControlSize>('');\n\n /**\n * 数据项\n * @type ThyCascaderOption[]\n */\n readonly thyOptions = input<ThyCascaderOption[] | null>([]);\n\n /**\n * 自定义选项\n * @type ThyCascaderOption[]\n */\n readonly thyCustomOptions = input<ThyCascaderOption[] | null>([]);\n\n /**\n * 点击父级菜单选项时,可通过该函数判断是否允许值的变化\n */\n readonly thyChangeOn = input<(option: ThyCascaderOption, level: number) => boolean>();\n\n /**\n * 点击项时,表单是否动态展示数据项\n * @type boolean\n */\n readonly thyChangeOnSelect = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 显示输入框\n * @type boolean\n */\n readonly thyShowInput = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 用户自定义选项模板\n * @type TemplateRef\n */\n readonly thyOptionRender = input<TemplateRef<SafeAny>>();\n\n /**\n * 用户自定义模板\n * @type TemplateRef\n */\n readonly thyLabelRender = input<TemplateRef<any>>();\n\n readonly isLabelRenderTemplate: Signal<boolean> = computed(() => {\n return this.thyLabelRender() instanceof TemplateRef;\n });\n\n /**\n /**\n * 用于动态加载选项\n */\n readonly thyLoadData =\n input<(node: ThyCascaderOption, index?: number) => PromiseLike<ThyCascaderOption> | Observable<ThyCascaderOption>>();\n\n /**\n * 控制触发状态, 支持 `click` | `hover`\n * @type ThyCascaderTriggerType | ThyCascaderTriggerType[]\n */\n readonly thyTriggerAction = input<ThyCascaderTriggerType | ThyCascaderTriggerType[]>(['click']);\n\n /**\n * 鼠标经过下方列表项时,是否自动展开列表,支持 `click` | `hover`\n * @type ThyCascaderExpandTrigger | ThyCascaderExpandTrigger[]\n */\n readonly thyExpandTriggerAction = input<ThyCascaderExpandTrigger | ThyCascaderExpandTrigger[]>(['click']);\n\n /**\n * 自定义浮层样式\n */\n readonly thyMenuStyle = input<{\n [key: string]: string;\n }>();\n\n /**\n * 自定义搜索样式\n */\n readonly thySearchListStyle = input<{\n [key: string]: string;\n }>();\n\n /**\n * 自定义浮层类名\n * @type string\n */\n readonly thyMenuClassName = input<string>();\n\n /**\n * 自定义浮层列类名\n * @type string\n */\n readonly thyColumnClassName = input<string>();\n\n readonly menuColumnCls = computed(() => {\n return {\n [`${this.prefixCls}-menu`]: true,\n [`${this.thyColumnClassName()}`]: this.thyColumnClassName()\n };\n });\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n /**\n * 空状态下的展示文字\n * @default 暂无可选项\n */\n\n readonly thyEmptyStateText = input<string>();\n\n /**\n * 是否多选\n * @type boolean\n */\n readonly thyMultiple = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制,'auto' 表示自动计算显示数量,默认值为 0\n */\n readonly thyMaxTagCount = input(0, {\n transform: (value: number | 'auto') => {\n if (value === 'auto') return 'auto';\n return numberAttribute(value, 0);\n }\n });\n\n /**\n * 是否仅允许选择叶子项\n * @default true\n */\n readonly thyIsOnlySelectLeaf = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 设置\n * @default 140\n */\n readonly thyWidth = input(140, {\n transform: (value: number) => {\n return numberAttribute(value, 140);\n }\n });\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n readonly thyLoadingDone = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 初始化时,是否展开面板\n */\n readonly thyAutoExpand = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否支持搜索\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 多选选中项的展示方式,默认为空,渲染文字模板,传入tag,渲染展示模板,\n */\n readonly thyPreset = input<string>('');\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 值发生变化时触发,返回选择项的值\n * @type EventEmitter<any[]>\n */\n readonly thyChange = output<any[]>();\n\n /**\n * 值发生变化时触发,返回选择项列表\n * @type EventEmitter<ThyCascaderOption[]>\n */\n readonly thySelectionChange = output<ThyCascaderOption[]>();\n\n /**\n * 选择选项时触发\n */\n readonly thySelect = output<{\n option: ThyCascaderOption;\n index: number;\n }>();\n\n /**\n * @private 暂无实现\n */\n readonly thyDeselect = output<{\n option: ThyCascaderOption;\n index: number;\n }>();\n\n /**\n * 清空选项时触发\n */\n readonly thyClear = output<void>();\n\n /**\n * 下拉选项展开和折叠状态事件\n */\n readonly thyExpandStatusChange = output<boolean>();\n\n /**\n * 搜索时回调\n */\n readonly thyOnSearch = output<string>();\n\n readonly cascaderOptions = viewChildren<ThyCascaderOptionComponent, ElementRef>('cascaderOptions', { read: ElementRef });\n\n readonly cascaderItems = viewChildren<ThyCascaderOptionComponent>(ThyCascaderOptionComponent);\n\n readonly cascaderOptionContainers = viewChildren('cascaderOptionContainers', { read: ElementRef });\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n readonly trigger = viewChild.required<ElementRef<any>>('trigger');\n\n readonly input = viewChild<ElementRef>('input');\n\n readonly menu = viewChild<ElementRef>('menu');\n\n readonly virtualScrollViewports = viewChildren(CdkVirtualScrollViewport);\n\n public dropDownPosition = 'bottom';\n\n public menuVisible = false;\n\n public triggerRect!: DOMRect;\n\n public menuCls!: { [name: string]: any };\n\n public labelCls!: { [name: string]: any };\n\n private prefixCls = 'thy-cascader';\n\n private readonly destroy$ = new Subject<void>();\n\n private hostRenderer = useHostRenderer();\n\n public positions!: ConnectionPositionPair[];\n\n get selected(): SelectOptionBase | SelectOptionBase[] {\n return this.thyMultiple() ? this.thyCascaderService.selectionModel!.selected : this.thyCascaderService.selectionModel!.selected[0];\n }\n\n public menuMinWidth = 122;\n\n private searchText$ = new BehaviorSubject('');\n\n public get searchResultList(): ThyCascaderSearchOption[] {\n return this.thyCascaderService.searchResultList;\n }\n\n public isShowSearchPanel: boolean = false;\n\n /**\n * 解决搜索&多选的情况下,点击搜索项会导致 panel 闪烁\n * 由于点击后,thySelectedOptions变化,导致 thySelectControl\n * 又会触发 searchFilter 函数,即 resetSearch 会执行\n * 会导致恢复级联状态再变为搜索状态\n */\n private isSelectingSearchState: boolean = false;\n\n public get isLoading() {\n return this.thyCascaderService?.isLoading;\n }\n\n public get columns() {\n return this.thyCascaderService.columns;\n }\n\n private afterChangeFn: null | (() => void) = null;\n\n private resizeSubscription: Subscription | null = null;\n\n constructor() {\n super();\n effect(() => {\n const options = this.thyOptions();\n const columns = options && options.length ? [options] : [];\n this.thyCascaderService.initColumns(columns);\n if (this.thyCascaderService.defaultValue && columns.length) {\n this.thyCascaderService.initOptions(0);\n }\n if (this.searchText$.getValue()) {\n // local search\n this.searchInLocal(this.searchText$.getValue());\n this.isShowSearchPanel = true;\n }\n });\n\n effect(() => {\n this.thyCascaderService.customOptions = (this.thyCustomOptions() || []).map(item => ({ ...item }));\n });\n\n effect(() => {\n this.setCascaderOptions();\n });\n\n effect(() => {\n this.setMenuClass();\n });\n\n effect(() => {\n if (this.cascaderItems().length > 0) {\n this.cascaderItems().forEach(item => item.markForCheck());\n }\n });\n }\n\n ngOnInit(): void {\n this.setClassMap();\n this.setLabelClass();\n this.initPosition();\n this.initSearch();\n this.setCascaderOptions();\n this.thyCascaderService.cascaderValueChange().subscribe(options => {\n if (!options.isValueEqual) {\n this.onChangeFn(options.value);\n if (options.isSelectionModelEmpty) {\n this.thyClear.emit();\n }\n this.thySelectionChange.emit(this.thyCascaderService.selectedOptions);\n this.thyChange.emit(options.value);\n if (this.afterChangeFn) {\n this.afterChangeFn();\n this.afterChangeFn = null;\n }\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (\n !this.elementRef.nativeElement.contains(event.target) &&\n !this.menu()?.nativeElement.contains(event.target as Node) &&\n this.menuVisible\n ) {\n this.ngZone.run(() => {\n this.closeMenu();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n ngAfterContentInit() {\n if (this.thyAutoExpand()) {\n timer(0).subscribe(() => {\n this.cdr.markForCheck();\n this.setMenuVisible(true);\n });\n }\n }\n\n private setCascaderOptions() {\n const options = {\n labelProperty: this.thyLabelProperty(),\n valueProperty: this.thyValueProperty(),\n isMultiple: this.thyMultiple(),\n isOnlySelectLeaf: this.thyIsOnlySelectLeaf(),\n isLabelRenderTemplate: this.isLabelRenderTemplate(),\n loadData: this.thyLoadData()\n };\n\n this.thyCascaderService.setCascaderOptions(options);\n }\n\n private initPosition() {\n const cascaderPosition: ConnectionPositionPair[] = EXPANDED_DROPDOWN_POSITIONS.map(item => {\n return { ...item };\n });\n this.positions = cascaderPosition;\n }\n\n writeValue(value: any): void {\n this.thyCascaderService.writeCascaderValue(value);\n if (this.thyMultiple()) {\n this.cdr.detectChanges();\n }\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public positionChange(position: ConnectedOverlayPositionChange): void {\n const newValue = position.connectionPair.originY === 'bottom' ? 'bottom' : 'top';\n if (this.dropDownPosition !== newValue) {\n this.dropDownPosition = newValue;\n this.cdr.detectChanges();\n }\n }\n\n public isActivatedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isActivatedOption(option, index);\n }\n\n public isHalfSelectedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isHalfSelectedOption(option, index);\n }\n\n public isSelectedOption(option: ThyCascaderOption, index: number): boolean {\n return this.thyCascaderService.isSelectedOption(option, index);\n }\n\n public attached(): void {\n this.cdr.detectChanges();\n this.cdkConnectedOverlay()!\n .positionChange.pipe(take(1), delay(50), takeUntil(this.destroy$))\n .subscribe(() => {\n this.scrollActiveElementIntoView();\n });\n }\n\n private scrollActiveElementIntoView() {\n if (!isEmpty(this.thyCascaderService.selectedOptions)) {\n for (let i = 0; i < this.virtualScrollViewports()?.length; i += 1) {\n for (let index = this.columns[i].length - 1; index > -1; index -= 1) {\n if (this.thyCascaderService.isActivatedOption(this.columns[i][index], i)) {\n this.virtualScrollViewports()[i]?.scrollToIndex(index);\n break;\n }\n }\n }\n }\n }\n\n public setMenuVisible(menuVisible: boolean): void {\n if (this.menuVisible !== menuVisible) {\n this.menuVisible = menuVisible;\n\n this.thyCascaderService.initActivatedOptions(this.menuVisible);\n this.setClassMap();\n this.setMenuClass();\n if (this.menuVisible) {\n this.triggerRect = this.trigger().nativeElement.getBoundingClientRect();\n this.subscribeTriggerResize();\n } else {\n this.unsubscribeTriggerResize();\n }\n this.thyExpandStatusChange.emit(menuVisible);\n }\n }\n\n private setMenuClass(): void {\n this.menuCls = {\n [`${this.prefixCls}-menus`]: true,\n [`${this.prefixCls}-menus-hidden`]: !this.menuVisible,\n [`${this.thyMenuClassName()}`]: this.thyMenuClassName(),\n [`w-100`]: this.columns.length === 0\n };\n }\n\n private setLabelClass(): void {\n this.labelCls = {\n [`${this.prefixCls}-picker-label`]: true,\n [`${this.prefixCls}-show-search`]: false,\n [`${this.prefixCls}-focused`]: false,\n 'text-truncate': true\n };\n }\n\n private setClassMap(): void {\n const classMap = {\n [`${this.prefixCls}`]: true,\n [`${this.prefixCls}-picker`]: true,\n [`${this.prefixCls}-${this.thySize()}`]: true,\n [`${this.prefixCls}-picker-disabled`]: this.disabled,\n [`${this.prefixCls}-picker-open`]: this.menuVisible\n };\n this.hostRenderer.updateClassByMap(classMap);\n }\n\n private isClickTriggerAction(): boolean {\n const thyTriggerAction = this.thyTriggerAction();\n if (typeof thyTriggerAction === 'string') {\n return thyTriggerAction === 'click';\n }\n return thyTriggerAction.indexOf('click') !== -1;\n }\n\n private isHoverTriggerAction(): boolean {\n const thyTriggerAction = this.thyTriggerAction();\n if (typeof thyTriggerAction === 'string') {\n return thyTriggerAction === 'hover';\n }\n return thyTriggerAction.indexOf('hover') !== -1;\n }\n\n private isHoverExpandTriggerAction(): boolean {\n const thyExpandTriggerAction = this.thyExpandTriggerAction();\n if (typeof thyExpandTriggerAction === 'string') {\n return thyExpandTriggerAction === 'hover';\n }\n return thyExpandTriggerAction.indexOf('hover') !== -1;\n }\n\n @HostListener('click', ['$event'])\n public toggleClick($event: Event) {\n if (this.disabled) {\n return;\n }\n if (this.isClickTriggerAction()) {\n this.setMenuVisible(!this.menuVisible);\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n public toggleMouseEnter(event: MouseEvent): void {\n if (this.disabled || !this.isHoverTriggerAction() || this.menuVisible) {\n return;\n }\n\n this.setMenuVisible(true);\n }\n\n @HostListener('mouseleave', ['$event'])\n public toggleMouseLeave(event: MouseEvent): void {\n if (this.disabled || !this.isHoverTriggerAction() || !this.menuVisible) {\n event.preventDefault();\n return;\n }\n\n const hostEl = this.elementRef.nativeElement;\n const mouseTarget = event.relatedTarget as HTMLElement;\n if (\n hostEl.contains(mouseTarget) ||\n mouseTarget?.classList.contains('cdk-overlay-pane') ||\n mouseTarget?.classList.contains('cdk-overlay-backdrop')\n ) {\n return;\n }\n\n this.setMenuVisible(false);\n }\n\n public clickCustomOption(option: ThyCascaderOption, index: number, event: Event | boolean): void {\n if (event === true) {\n this.thyCascaderService.clearSelection();\n }\n this.thyCascaderService.clickOption(option, index, event, this.selectOption);\n }\n\n public clickOption(option: ThyCascaderOption, index: number, event: Event | boolean): void {\n this.thyCascaderService.removeCustomOption();\n this.thyCascaderService.clickOption(option, index, event, this.selectOption);\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n // Make sure to calculate and update the position after the submenu is opened\n this.cdr.detectChanges();\n\n // Update the position to prevent the submenu from appearing off-screen\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n this.cdr.markForCheck();\n }\n }\n\n public mouseoverOption(option: ThyCascaderOption, index: number, event: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (option && option.disabled && !this.thyMultiple()) {\n return;\n }\n\n if (!this.isHoverExpandTriggerAction() && !(option && option.disabled && this.thyMultiple())) {\n return;\n }\n this.setActiveOption(option, index, false);\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-cascader-menus', 'thy-cascader'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n if (!elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-cascader-menus', 'thy-cascader'])) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n }\n\n public closeMenu(): void {\n if (this.menuVisible) {\n this.setMenuVisible(false);\n this.onTouchedFn();\n this.isShowSearchPanel = false;\n this.thyCascaderService.searchResultList = [];\n }\n }\n\n public setActiveOption(option: ThyCascaderOption, index: number, select: boolean, loadChildren: boolean = true): void {\n this.thyCascaderService.setActiveOption(option, index, select, loadChildren, this.selectOption);\n }\n\n private selectOption = (option: ThyCascaderOption, index: number) => {\n const isOnlySelectLeaf = this.thyIsOnlySelectLeaf();\n\n if ((option.isLeaf || !isOnlySelectLeaf) && !this.thyMultiple()) {\n this.afterChangeFn = () => {\n this.setMenuVisible(false);\n this.onTouchedFn();\n };\n }\n this.thySelect.emit({ option, index });\n const isOptionCanSelect = this.thyChangeOnSelect() && !this.thyMultiple();\n if (option.isLeaf || !isOnlySelectLeaf || isOptionCanSelect || this.shouldPerformSelection(option, index)) {\n this.thyCascaderService.selectOption(option, index);\n }\n };\n\n public removeSelectedItem(event: { item: SelectOptionBase; $eventOrigin: Event }) {\n event.$eventOrigin.stopPropagation();\n this.thyCascaderService.removeSelectedItem(event?.item);\n }\n\n private shouldPerformSelection(option: ThyCascaderOption, level: number): boolean {\n const thyChangeOn = this.thyChangeOn();\n return typeof thyChangeOn === 'function' ? thyChangeOn(option, level) === true : false;\n }\n\n public clearSelection($event: Event): void {\n if ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n this.afterChangeFn = () => {\n this.setMenuVisible(false);\n };\n this.thyCascaderService.clearSelection();\n }\n\n public trackByFn(index: number, item: ThyCascaderOption) {\n return item?.value || item?._id || index;\n }\n\n public searchFilter(searchText: string) {\n if (!searchText && !this.isSelectingSearchState) {\n this.resetSearch();\n }\n this.searchText$.next(searchText);\n }\n\n private initSearch() {\n this.searchText$\n .pipe(\n takeUntil(this.destroy$),\n DebounceTimeWrapper.debounceTime(200),\n distinctUntilChanged(),\n filter(text => text !== '')\n )\n .subscribe(searchText => {\n this.thyOnSearch.emit(searchText);\n this.resetSearch();\n\n // local search\n this.searchInLocal(searchText);\n this.isShowSearchPanel = true;\n this.cdr.markForCheck();\n });\n }\n\n private searchInLocal(searchText: string): void {\n this.thyCascaderService.searchInLocal(searchText);\n }\n\n private resetSearch() {\n this.isShowSearchPanel = false;\n this.thyCascaderService.resetSearch();\n this.scrollActiveElementIntoView();\n }\n\n public selectSearchResult(selectOptionData: ThyCascaderSearchOption): void {\n const { thyRowValue: selectedOptions } = selectOptionData;\n if (selectOptionData.selected) {\n if (!this.thyMultiple()) {\n this.closeMenu();\n }\n return;\n }\n selectedOptions.forEach((item: ThyCascaderOption, index: number) => {\n this.setActiveOption(item, index, index === selectedOptions.length - 1);\n });\n if (this.thyMultiple()) {\n this.isSelectingSearchState = true;\n selectOptionData.selected = true;\n const originSearchResultList = this.searchResultList;\n // 保持搜索选项\n setTimeout(() => {\n this.isShowSearchPanel = true;\n this.thyCascaderService.searchResultList = originSearchResultList;\n this.isSelectingSearchState = false;\n });\n } else {\n this.resetSearch();\n }\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(null);\n });\n resize.observe(this.trigger().nativeElement);\n return () => {\n resize.disconnect();\n };\n }).subscribe(() => {\n this.ngZone.run(() => {\n this.triggerRect = this.trigger().nativeElement.getBoundingClientRect();\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()!.overlayRef) {\n this.cdkConnectedOverlay()!.overlayRef.updatePosition();\n }\n this.cdr.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n @if (thyShowInput()) {\n <div\n thySelectControl\n [thyShowSearch]=\"thyShowSearch()\"\n [thySize]=\"thySize()\"\n [thyAllowClear]=\"true\"\n [thySelectedOptions]=\"selected\"\n [thyMaxTagCount]=\"thyMaxTagCount()\"\n (thyOnRemove)=\"removeSelectedItem($event)\"\n (thyOnClear)=\"clearSelection($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnSearch)=\"searchFilter($event)\"\n [thyDisabled]=\"disabled\"\n [thyIsMultiple]=\"thyMultiple()\"\n [thyPanelOpened]=\"menuVisible\"\n [thyPlaceholder]=\"thyPlaceholder()\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyPreset]=\"thyPreset()\">\n <ng-template #customDisplayTemplate let-value>\n @if (!isLabelRenderTemplate()) {\n <span [ngClass]=\"labelCls\">{{ value.labelText }}</span>\n } @else {\n <span [ngClass]=\"labelCls\">\n <ng-template [ngTemplateOutlet]=\"thyLabelRender()\" [ngTemplateOutletContext]=\"value.labelRenderContext\"></ng-template>\n </span>\n }\n </ng-template>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop()\"\n cdkConnectedOverlayBackdropClass=\"thy-cascader-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"menuMinWidth\"\n cdkConnectedOverlayTransformOriginOn=\".thy-cascader-menus\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n (attach)=\"attached()\"\n (positionChange)=\"positionChange($event)\"\n [cdkConnectedOverlayOpen]=\"menuVisible\">\n <div\n [attr.tabindex]=\"-1\"\n #menu\n [ngClass]=\"menuCls\"\n [ngStyle]=\"thyMenuStyle()\"\n (mouseleave)=\"toggleMouseLeave($event)\"\n [@scaleYMotion]=\"'enter'\"\n [class.thy-cascader-loading]=\"!thyLoadingDone()\">\n @if (thyLoadingDone()) {\n @if (!isShowSearchPanel) {\n @if (columns.length > 0) {\n @for (options of columns; track $index; let i = $index; let isFirst = $first) {\n <ul #cascaderOptionContainers [ngClass]=\"menuColumnCls()\" [ngStyle]=\"{ 'width.px': thyWidth() }\">\n @let allOptions = options | cascaderOptions: (isFirst ? thyCascaderService.customOptions : []);\n\n @if (allOptions.length > 0) {\n <cdk-virtual-scroll-viewport [itemSize]=\"36\" class=\"h-100\">\n <ng-container *cdkVirtualFor=\"let option of allOptions; let index = index; trackBy: trackByFn\">\n @if (\n thyCascaderService.customOptions &&\n thyCascaderService.customOptions.length > 0 &&\n isFirst &&\n index < thyCascaderService.customOptions.length\n ) {\n <li\n #cascaderOptions\n thy-cascader-option\n [option]=\"option\"\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [labelProperty]=\"thyLabelProperty()\"\n [active]=\"isActivatedOption(option, 0)\"\n [halfSelected]=\"isHalfSelectedOption(option, 0)\"\n [selected]=\"isSelectedOption(option, 0)\"\n (toggleSelectChange)=\"clickCustomOption(option, 0, $event)\"\n (click)=\"clickCustomOption(option, 0, $event)\"\n (mouseover)=\"mouseoverOption(option, 0, $event)\"></li>\n @if (index === thyCascaderService.customOptions.length - 1) {\n <thy-divider class=\"my-1 mx-4\"></thy-divider>\n }\n } @else {\n <li\n #cascaderOptions\n thy-cascader-option\n [option]=\"option\"\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [labelProperty]=\"thyLabelProperty()\"\n [active]=\"isActivatedOption(option, i)\"\n [halfSelected]=\"isHalfSelectedOption(option, i)\"\n [selected]=\"isSelectedOption(option, i)\"\n [optionRender]=\"thyOptionRender()\"\n (toggleSelectChange)=\"clickOption(option, i, $event)\"\n (click)=\"clickOption(option, i, $event)\"\n (mouseover)=\"mouseoverOption(option, i, $event)\"></li>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </ul>\n }\n } @else {\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"thyEmptyStateText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n </div>\n }\n }\n @if (isShowSearchPanel) {\n @if (searchResultList.length) {\n <ul class=\"thy-cascader-search-list py-3\" [ngStyle]=\"thySearchListStyle()\">\n @for (item of searchResultList; track $index) {\n <li\n thy-cascader-search-option\n [multiple]=\"thyMultiple()\"\n [isOnlySelectLeaf]=\"thyIsOnlySelectLeaf()\"\n [option]=\"item\"\n [active]=\"item.selected\"\n [optionRender]=\"thyOptionRender()\"\n (toggleSelectChange)=\"selectSearchResult($event)\"></li>\n }\n </ul>\n } @else {\n <div class=\"thy-cascader-empty-container\" [ngStyle]=\"{ 'width.px': triggerRect?.width }\">\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"thyEmptyStateText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n </div>\n }\n }\n } @else {\n <thy-loading [ngStyle]=\"{ 'width.px': thyWidth() }\" [thyDone]=\"thyLoadingDone()\" thySize=\"sm\"></thy-loading>\n }\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThySelectCommonModule } from 'ngx-tethys/shared';\nimport { ThyCascaderOptionComponent } from './cascader-li.component';\nimport { ThyCascaderSearchOptionComponent } from './cascader-search-option.component';\nimport { ThyCascader } from './cascader.component';\nimport { ThyCascaderOptionsPipe } from './cascader.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n ThyInputModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyCheckboxModule,\n ThyFlexibleTextModule,\n ThyCascader,\n ThyCascaderOptionComponent,\n ThyCascaderSearchOptionComponent,\n ThyCascaderOptionsPipe\n ],\n exports: [ThyCascader]\n})\nexport class ThyCascaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { isString, helpers } from 'ngx-tethys/util';
|
|
|
6
6
|
import { ThyAbstractMessageQueue, ThyAbstractMessageComponent, ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageContainerComponent, ThyAbstractMessageRef, ThyAbstractMessageService } from 'ngx-tethys/message';
|
|
7
7
|
import { ThyViewOutletDirective, ThySharedModule } from 'ngx-tethys/shared';
|
|
8
8
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
9
|
+
import { ThyAction } from 'ngx-tethys/action';
|
|
9
10
|
import { OverlayModule, Overlay } from '@angular/cdk/overlay';
|
|
10
11
|
import { PortalModule } from '@angular/cdk/portal';
|
|
11
12
|
import { injectLocale } from 'ngx-tethys/i18n';
|
|
@@ -70,6 +71,7 @@ class ThyNotify extends ThyAbstractMessageComponent {
|
|
|
70
71
|
const config = this.config();
|
|
71
72
|
return config?.placement || 'topRight';
|
|
72
73
|
}, ...(ngDevMode ? [{ debugName: "placement" }] : []));
|
|
74
|
+
this.actions = computed(() => this.config()?.actions || [], ...(ngDevMode ? [{ debugName: "actions" }] : []));
|
|
73
75
|
effect(() => {
|
|
74
76
|
const placement = this.placement();
|
|
75
77
|
if (placement === 'topLeft' || placement === 'bottomLeft') {
|
|
@@ -96,7 +98,7 @@ class ThyNotify extends ThyAbstractMessageComponent {
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyNotify, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyNotify, isStandalone: true, selector: "thy-notify", host: { properties: { "class": "'thy-notify thy-notify-' + config().type", "@flyInOut": "this.animationState" } }, usesInheritance: true, ngImport: i0, template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ThyViewOutletDirective, selector: "[thyViewOutlet]", inputs: ["thyViewOutlet", "thyViewOutletContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyNotify, isStandalone: true, selector: "thy-notify", host: { properties: { "class": "'thy-notify thy-notify-' + config().type", "@flyInOut": "this.animationState" } }, usesInheritance: true, ngImport: i0, template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail && !actions()?.length) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n\n @if (actions()?.length > 0) {\n <div class=\"thy-notify-actions ml-n2\">\n @for (action of actions(); track $index) {\n <a href=\"javascript:;\" thyAction thyTheme=\"lite\" [thyIcon]=\"action?.icon\" (click)=\"action?.onClick()\">\n {{ action?.text }}\n </a>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ThyViewOutletDirective, selector: "[thyViewOutlet]", inputs: ["thyViewOutlet", "thyViewOutletContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }], animations: [
|
|
100
102
|
trigger('flyInOut', [
|
|
101
103
|
state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),
|
|
102
104
|
transition('void => flyInOutRight', [
|
|
@@ -134,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
134
136
|
transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),
|
|
135
137
|
state('componentHide', style(HIDE_STYLE))
|
|
136
138
|
])
|
|
137
|
-
], imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet], template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n" }]
|
|
139
|
+
], imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet, ThyAction], template: "@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail && !actions()?.length) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n\n @if (actions()?.length > 0) {\n <div class=\"thy-notify-actions ml-n2\">\n @for (action of actions(); track $index) {\n <a href=\"javascript:;\" thyAction thyTheme=\"lite\" [thyIcon]=\"action?.icon\" (click)=\"action?.onClick()\">\n {{ action?.text }}\n </a>\n }\n </div>\n }\n </div>\n}\n" }]
|
|
138
140
|
}], ctorParameters: () => [], propDecorators: { animationState: [{
|
|
139
141
|
type: HostBinding,
|
|
140
142
|
args: ['@flyInOut']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject, computed } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'topLeft');\n });\n\n topRightQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'topRight');\n });\n\n bottomLeftQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'bottomLeft');\n });\n\n bottomRightQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'bottomRight');\n });\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, HostBinding, effect, signal, computed, inject } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n host: {\n '[class]': \"'thy-notify thy-notify-' + config().type\"\n },\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> {\n @HostBinding('@flyInOut') animationState?: string;\n\n extendContentClass = signal(false);\n\n isShowDetail = signal(false);\n\n readonly contentIsString = computed(() => isString(this.config()?.content));\n\n protected queue = inject(ThyNotifyQueue);\n\n private placement = computed<ThyNotifyPlacement>(() => {\n const config = this.config();\n return config?.placement || 'topRight';\n });\n\n constructor() {\n super();\n effect(() => {\n const placement = this.placement();\n if (placement === 'topLeft' || placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n });\n }\n\n extendContent() {\n this.extendContentClass.set(true);\n }\n\n showDetailToggle() {\n this.isShowDetail.set(!this.isShowDetail());\n }\n\n triggerDetail() {\n const config = this.config();\n if ( helpers.isFunction((config?.detail as ThyNotifyDetail).action)) {\n (config!.detail as ThyNotifyDetail)!.action!();\n }\n if ((config?.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n </div>\n}\n","import { Component, effect, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n imports: [ThyNotify],\n host: {\n class: 'thy-notify-container'\n }\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n public defaultConfig = (() => {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n return {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n };\n })();\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, Signal, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { injectLocale, ThyNotifyLocale } from 'ngx-tethys/i18n';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n public locale: Signal<ThyNotifyLocale> = injectLocale('notify');\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || this.locale().success,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || this.locale().info,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || this.locale().warning,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || this.locale().error,\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: `[${this.locale().detail}]`, content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\nexport interface ThyNotifyAction {\n text: string;\n icon?: string;\n onClick: () => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n\n /**\n * 通知操作按钮,text为按钮文本,icon为按钮图标,onClick为点击事件\n */\n actions?: ThyNotifyAction[];\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject, computed } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'topLeft');\n });\n\n topRightQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'topRight');\n });\n\n bottomLeftQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'bottomLeft');\n });\n\n bottomRightQueues = computed(() => {\n return this.queues().filter(item => item.config.placement === 'bottomRight');\n });\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, HostBinding, effect, signal, computed, inject } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyAction } from 'ngx-tethys/action';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n host: {\n '[class]': \"'thy-notify thy-notify-' + config().type\"\n },\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet, ThyAction]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> {\n @HostBinding('@flyInOut') animationState?: string;\n\n extendContentClass = signal(false);\n\n isShowDetail = signal(false);\n\n readonly contentIsString = computed(() => isString(this.config()?.content));\n\n protected queue = inject(ThyNotifyQueue);\n\n private placement = computed<ThyNotifyPlacement>(() => {\n const config = this.config();\n return config?.placement || 'topRight';\n });\n\n readonly actions = computed(() => this.config()?.actions || []);\n\n constructor() {\n super();\n effect(() => {\n const placement = this.placement();\n if (placement === 'topLeft' || placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n });\n }\n\n extendContent() {\n this.extendContentClass.set(true);\n }\n\n showDetailToggle() {\n this.isShowDetail.set(!this.isShowDetail());\n }\n\n triggerDetail() {\n const config = this.config();\n if ( helpers.isFunction((config?.detail as ThyNotifyDetail).action)) {\n (config!.detail as ThyNotifyDetail)!.action!();\n }\n if ((config?.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@let notifyConfig = config();\n\n@if (notifyConfig?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"notifyConfig?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ notifyConfig?.title }}</div>\n @if (notifyConfig?.detail || notifyConfig?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass() }\" (click)=\"extendContent()\">\n @if (notifyConfig?.content) {\n @if (contentIsString()) {\n {{ notifyConfig?.content }}\n } @else {\n <ng-container *thyViewOutlet=\"notifyConfig?.content; context: notifyConfig?.contentInitialState || {}\"></ng-container>\n }\n }\n @if (notifyConfig?.detail && !actions()?.length) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (notifyConfig?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail()) {\n <div class=\"thy-notify-detail\">{{ (notifyConfig?.detail)['content'] }}</div>\n }\n\n @if (actions()?.length > 0) {\n <div class=\"thy-notify-actions ml-n2\">\n @for (action of actions(); track $index) {\n <a href=\"javascript:;\" thyAction thyTheme=\"lite\" [thyIcon]=\"action?.icon\" (click)=\"action?.onClick()\">\n {{ action?.text }}\n </a>\n }\n </div>\n }\n </div>\n}\n","import { Component, effect, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n imports: [ThyNotify],\n host: {\n class: 'thy-notify-container'\n }\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n public defaultConfig = (() => {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n return {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n };\n })();\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues(); track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, Signal, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { injectLocale, ThyNotifyLocale } from 'ngx-tethys/i18n';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n public locale: Signal<ThyNotifyLocale> = injectLocale('notify');\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || this.locale().success,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || this.locale().info,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || this.locale().warning,\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || this.locale().error,\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: `[${this.locale().detail}]`, content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/fesm2022/ngx-tethys.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('20.0.
|
|
1
|
+
{"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('20.0.12');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS;;ACF5C;;AAEG;;;;"}
|
package/notify/index.d.ts
CHANGED
|
@@ -24,6 +24,11 @@ interface ThyNotifyDetail {
|
|
|
24
24
|
content?: string;
|
|
25
25
|
action?: (event?: Event) => void;
|
|
26
26
|
}
|
|
27
|
+
interface ThyNotifyAction {
|
|
28
|
+
text: string;
|
|
29
|
+
icon?: string;
|
|
30
|
+
onClick: () => void;
|
|
31
|
+
}
|
|
27
32
|
/**
|
|
28
33
|
* 打开notify通知的配置
|
|
29
34
|
* @public
|
|
@@ -55,6 +60,10 @@ interface ThyNotifyConfig extends ThyMessageBaseConfig {
|
|
|
55
60
|
* 自定义传入html模板
|
|
56
61
|
*/
|
|
57
62
|
html?: ElementRef;
|
|
63
|
+
/**
|
|
64
|
+
* 通知操作按钮,text为按钮文本,icon为按钮图标,onClick为点击事件
|
|
65
|
+
*/
|
|
66
|
+
actions?: ThyNotifyAction[];
|
|
58
67
|
}
|
|
59
68
|
declare const THY_NOTIFY_DEFAULT_CONFIG: InjectionToken<ThyGlobalNotifyConfig>;
|
|
60
69
|
declare const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig;
|
|
@@ -105,6 +114,7 @@ declare class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> {
|
|
|
105
114
|
readonly contentIsString: i0.Signal<boolean>;
|
|
106
115
|
protected queue: ThyNotifyQueue;
|
|
107
116
|
private placement;
|
|
117
|
+
readonly actions: i0.Signal<ngx_tethys_notify.ThyNotifyAction[]>;
|
|
108
118
|
constructor();
|
|
109
119
|
extendContent(): void;
|
|
110
120
|
showDetailToggle(): void;
|
|
@@ -155,4 +165,4 @@ declare class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContai
|
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
export { THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_PROVIDER, THY_NOTIFY_DEFAULT_CONFIG_VALUE, ThyNotify, ThyNotifyContainer, ThyNotifyModule, ThyNotifyQueue, ThyNotifyRef, ThyNotifyService };
|
|
158
|
-
export type { ThyGlobalNotifyConfig, ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement, ThyNotifyType };
|
|
168
|
+
export type { ThyGlobalNotifyConfig, ThyNotifyAction, ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement, ThyNotifyType };
|
package/package.json
CHANGED
package/schematics/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "20.0.
|
|
1
|
+
export declare const VERSION = "20.0.12";
|
package/schematics/version.js
CHANGED