ngx-tethys 19.1.0-next.6 → 19.1.0-next.8

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/color-picker/coordinates.directive.d.ts +1 -2
  3. package/date-picker/abstract-picker.component.d.ts +1 -1
  4. package/date-picker/base-picker.component.d.ts +1 -0
  5. package/date-picker/picker.component.d.ts +4 -5
  6. package/dropdown/dropdown-menu.component.d.ts +1 -1
  7. package/dropdown/dropdown.directive.d.ts +2 -2
  8. package/fesm2022/ngx-tethys-cascader.mjs +1 -1
  9. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  10. package/fesm2022/ngx-tethys-color-picker.mjs +4 -6
  11. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  12. package/fesm2022/ngx-tethys-copy.mjs +2 -2
  13. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  14. package/fesm2022/ngx-tethys-date-picker.mjs +32 -32
  15. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  16. package/fesm2022/ngx-tethys-dropdown.mjs +7 -10
  17. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  18. package/fesm2022/ngx-tethys-flexible-text.mjs +4 -5
  19. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  20. package/fesm2022/ngx-tethys-image.mjs +5 -7
  21. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  22. package/fesm2022/ngx-tethys-list.mjs +140 -160
  23. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  24. package/fesm2022/ngx-tethys-message.mjs +1 -2
  25. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  26. package/fesm2022/ngx-tethys-select.mjs +1 -1
  27. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  28. package/fesm2022/ngx-tethys-shared.mjs +97 -123
  29. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  30. package/fesm2022/ngx-tethys-skeleton.mjs +1 -2
  31. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  32. package/fesm2022/ngx-tethys-table.mjs +1 -2
  33. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  34. package/fesm2022/ngx-tethys-tooltip.mjs +109 -93
  35. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  36. package/fesm2022/ngx-tethys-tree-select.mjs +1 -1
  37. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys.mjs +1 -1
  39. package/fesm2022/ngx-tethys.mjs.map +1 -1
  40. package/image/preview/image-preview.component.d.ts +2 -2
  41. package/list/selection/selection-list.d.ts +33 -46
  42. package/package.json +54 -54
  43. package/schematics/version.d.ts +1 -1
  44. package/schematics/version.js +1 -1
  45. package/shared/directives/thy-contextmenu.directive.d.ts +2 -2
  46. package/shared/directives/thy-ctrl-enter.directive.d.ts +2 -2
  47. package/shared/directives/thy-enter.directive.d.ts +2 -2
  48. package/shared/directives/thy-show.d.ts +2 -2
  49. package/shared/option/list-option/list-option.component.d.ts +5 -5
  50. package/shared/option/option.token.d.ts +4 -3
  51. package/shared/select/select-control/select-control.component.d.ts +8 -7
  52. package/table/table-column.component.d.ts +15 -5
  53. package/tooltip/tooltip.directive.d.ts +20 -22
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-tree-select.mjs","sources":["../../../src/tree-select/tree-select.component.ts","../../../src/tree-select/tree-select.component.html","../../../src/tree-select/tree-select-nodes.component.html","../../../src/tree-select/module.ts","../../../src/tree-select/ngx-tethys-tree-select.ts"],"sourcesContent":["import {\n EXPANDED_DROPDOWN_POSITIONS,\n injectPanelEmptyIcon,\n scaleYMotion,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThySelectControl, ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTreeNode } from 'ngx-tethys/tree';\nimport { coerceBooleanProperty, elementMatchClosest, isArray, isObject, produce } from 'ngx-tethys/util';\nimport { Observable, of } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, ViewportRuler } from '@angular/cdk/overlay';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n Input,\n NgZone,\n PLATFORM_ID,\n TemplateRef,\n inject,\n Signal,\n output,\n input,\n effect,\n computed,\n signal,\n afterNextRender,\n DestroyRef,\n contentChild,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ThyTreeSelectNode, ThyTreeSelectType } from './tree-select.class';\nimport { injectLocale, ThyTreeSelectLocale } from 'ngx-tethys/i18n';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nexport function filterTreeData(treeNodes: ThyTreeSelectNode[], searchText: string, searchKey: string = 'name') {\n const filterNodes = (node: ThyTreeSelectNode, result: ThyTreeSelectNode[]) => {\n if (node[searchKey] && node[searchKey].indexOf(searchText) !== -1) {\n result.push(node);\n return result;\n }\n if (Array.isArray(node.children)) {\n const nodes = node.children.reduce((previous, current) => filterNodes(current, previous), [] as ThyTreeSelectNode[]);\n if (nodes.length) {\n const parentNode = { ...node, children: nodes, expand: true };\n result.push(parentNode);\n }\n }\n return result;\n };\n const treeData = treeNodes.reduce((previous, current) => filterNodes(current, previous), [] as ThyTreeSelectNode[]);\n return treeData;\n}\n\n/**\n * 树选择组件\n * @name thy-tree-select\n * @order 10\n */\n@Component({\n selector: 'thy-tree-select',\n templateUrl: './tree-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyTreeSelect),\n multi: true\n }\n ],\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n forwardRef(() => ThyTreeSelectNodes),\n ThyStopPropagationDirective\n ],\n host: {\n class: 'thy-select-custom thy-select',\n '[class.thy-select-custom--multiple]': 'thyMultiple()',\n '[class.menu-is-opened]': 'expandTreeSelectOptions()',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleYMotion]\n})\nexport class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor {\n elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private ref = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private viewportRuler = inject(ViewportRuler);\n private destroyRef = inject(DestroyRef);\n\n // 菜单是否展开\n public expandTreeSelectOptions = signal(false);\n\n public selectedValue = signal<any>(undefined);\n\n public selectedNode = signal<ThyTreeSelectNode>(null);\n\n public selectedNodes = signal<ThyTreeSelectNode[]>([]);\n\n public flattenTreeNodes = signal<ThyTreeSelectNode[]>([]);\n\n virtualTreeNodes = signal<ThyTreeSelectNode[]>([]);\n\n public cdkConnectOverlayWidth = signal(0);\n\n public expandedDropdownPositions: ConnectionPositionPair[] = EXPANDED_DROPDOWN_POSITIONS;\n\n public icons: { expand: string; collapse: string; gap?: number } = {\n expand: 'angle-down',\n collapse: 'angle-right',\n gap: 15\n };\n\n private locale: Signal<ThyTreeSelectLocale> = injectLocale('treeSelect');\n\n public valueIsObject = computed(() => {\n const selectedValue = this.selectedValue();\n if (this.thyMultiple()) {\n return selectedValue && (!selectedValue[0] || isObject(selectedValue[0]));\n } else {\n return isObject(selectedValue);\n }\n });\n\n public searchText = signal('');\n\n readonly thyTreeSelectTriggerDisplayRef = contentChild<TemplateRef<any>>('thyTreeSelectTriggerDisplay');\n\n readonly treeNodeTemplateRef = contentChild<TemplateRef<any>>('treeNodeTemplate');\n\n readonly cdkOverlayOrigin = viewChild(CdkOverlayOrigin);\n\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly customDisplayTemplate = viewChild<TemplateRef<any>>('customDisplayTemplate');\n\n /**\n * treeNodes 数据\n * @type ThyTreeSelectNode[]\n */\n readonly thyTreeNodes = input<ThyTreeSelectNode[]>([]);\n\n treeNodes = computed(() => {\n return filterTreeData(this.thyTreeNodes(), this.searchText(), this.thyShowKey());\n });\n\n /**\n * 开启虚拟滚动\n */\n readonly thyVirtualScroll = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 树节点的唯一标识\n * @type string\n */\n readonly thyPrimaryKey = input('_id');\n\n /**\n * 树节点的显示的字段 key\n * @type string\n */\n readonly thyShowKey = input('name');\n\n readonly thyChildCountKey = input('childCount');\n\n /**\n * 单选时,是否显示清除按钮,当为 true 时,显示清除按钮\n * @default false\n */\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否多选\n * @type boolean\n */\n readonly thyMultiple = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否禁用树选择器,当为 true 禁用树选择器\n * @type boolean\n */\n readonly thyDisable = input(false, { transform: coerceBooleanProperty });\n\n get thyDisabled(): boolean {\n return this.thyDisable();\n }\n\n /**\n * 树选择框默认文字\n * @type string\n */\n readonly thyPlaceholder = input(this.locale().placeholder);\n\n /**\n * 控制树选择的输入框大小\n * @type xs | sm | md | default | lg\n */\n readonly thySize = input<InputSize>(undefined);\n\n /**\n * 改变空选项的情况下的提示文本\n * @type string\n */\n readonly thyEmptyOptionsText = input(this.locale().empty);\n\n /**\n * 设置是否隐藏节点(不可进行任何操作),优先级高于 thyHiddenNodeFn\n * @type string\n */\n readonly thyHiddenNodeKey = input('hidden');\n\n /**\n * 设置是否禁用节点(不可进行任何操作),优先级高于 thyDisableNodeFn\n * @type string\n */\n readonly thyDisableNodeKey = input('disabled');\n\n /**\n * 是否异步加载节点的子节点(显示加载状态),当为 true 时,异步获取\n * @type boolean\n */\n readonly thyAsyncNode = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示全名\n * @type boolean\n */\n readonly thyShowWholeName = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示搜索\n * @type boolean\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 图标类型,支持 default | especial,已废弃\n * @deprecated\n */\n readonly thyIconType = input<ThyTreeSelectType>(undefined);\n\n /**\n * 设置是否隐藏节点(不可进行任何操作),优先级低于 thyHiddenNodeKey。\n * @default (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.hidden\n */\n @Input() thyHiddenNodeFn: (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.hidden;\n\n /**\n * 设置是否禁用节点(不可进行任何操作),优先级低于 thyDisableNodeKey。\n * @default (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.disabled\n */\n @Input() thyDisableNodeFn: (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.disabled;\n\n /**\n * 获取节点的子节点,返回 Observable<ThyTreeSelectNode>。\n * @default (node: ThyTreeSelectNode) => Observable<ThyTreeSelectNode> = (node: ThyTreeSelectNode) => of([])\n */\n @Input() thyGetNodeChildren: (node: ThyTreeSelectNode) => Observable<ThyTreeSelectNode> = (node: ThyTreeSelectNode) => of([]);\n\n /**\n * 树选择组件展开和折叠状态事件\n */\n readonly thyExpandStatusChange = output<boolean>();\n\n public buildFlattenTreeNodes() {\n this.virtualTreeNodes.set(this.getFlattenTreeNodes(this.treeNodes()));\n }\n\n private getFlattenTreeNodes(rootTrees: ThyTreeSelectNode[] = this.treeNodes()) {\n const forEachTree = (tree: ThyTreeSelectNode[], fn: any, result: ThyTreeSelectNode[] = []) => {\n tree.forEach(item => {\n result.push(item);\n if (item.children && fn(item)) {\n forEachTree(item.children, fn, result);\n }\n });\n return result;\n };\n return forEachTree(rootTrees, (node: ThyTreeSelectNode) => !!node.expand);\n }\n\n writeValue(value: any): void {\n this.selectedValue.set(value);\n }\n\n constructor() {\n super();\n\n this.bindClickEvent();\n this.bindResizeEvent();\n\n effect(() => {\n this.setSelectedNodes();\n });\n\n effect(() => {\n if (this.thyVirtualScroll()) {\n this.buildFlattenTreeNodes();\n }\n });\n\n effect(() => {\n this.flattenTreeNodes.set(this.flattenNodes(this.treeNodes(), []));\n });\n }\n\n private bindClickEvent() {\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n event.stopPropagation();\n if (!this.elementRef.nativeElement.contains(event.target) && this.expandTreeSelectOptions()) {\n this.ngZone.run(() => {\n this.close();\n });\n }\n });\n }\n }\n\n private bindResizeEvent() {\n this.viewportRuler\n .change()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.cdkConnectOverlayWidth.set(this.cdkOverlayOrigin().elementRef.nativeElement.getBoundingClientRect().width);\n });\n }\n\n onFocus($event: FocusEvent) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement?.focus();\n }\n\n onBlur($event: FocusEvent) {\n // 1. Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n // 2. 打开选择框后如果点击弹框内导致 input 失焦,无需触发 onTouchedFn\n if (elementMatchClosest($event?.relatedTarget as HTMLElement, ['thy-tree-select', 'thy-tree-select-nodes'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n public readonly selectedValueObject = computed(() => {\n return this.thyMultiple() ? this.selectedNodes() : this.selectedNode();\n });\n\n searchValue(searchText: string) {\n this.searchText.set(searchText.trim());\n }\n\n public setPosition() {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.cdkConnectedOverlay().overlayRef.updatePosition();\n });\n }\n\n private flattenNodes(nodes: ThyTreeSelectNode[] = [], parentPrimaryValue: string[] = []): ThyTreeSelectNode[] {\n let flattenedNodes: ThyTreeSelectNode[] = [];\n (nodes || []).forEach(item => {\n item.parentValues = parentPrimaryValue;\n item.level = item.parentValues.length;\n flattenedNodes.push(item);\n if (item.children && isArray(item.children)) {\n const childNodes = this.flattenNodes(item.children, [...parentPrimaryValue, item[this.thyPrimaryKey()]]);\n flattenedNodes = flattenedNodes.concat(childNodes);\n }\n });\n return flattenedNodes;\n }\n\n private _findTreeNode(value: string): ThyTreeSelectNode {\n return (this.flattenTreeNodes() || []).find(item => item[this.thyPrimaryKey()] === value);\n }\n\n private setSelectedNodes() {\n const isMultiple = this.thyMultiple();\n const primaryKey = this.thyPrimaryKey();\n const selectedValue = this.selectedValue();\n const valueIsObject = this.valueIsObject();\n if (selectedValue) {\n // 多选数据初始化\n if (isMultiple) {\n if (selectedValue.length > 0) {\n if (valueIsObject && Object.keys(selectedValue[0]).indexOf(primaryKey) >= 0) {\n this.selectedNodes.set(\n selectedValue.map((item: any) => {\n return this._findTreeNode(item[primaryKey]);\n })\n );\n } else {\n this.selectedNodes.set(\n selectedValue.map((item: any) => {\n return this._findTreeNode(item);\n })\n );\n }\n }\n } else {\n // 单选数据初始化\n if (valueIsObject) {\n if (Object.keys(selectedValue).indexOf(primaryKey) >= 0) {\n this.selectedNode.set(this._findTreeNode(selectedValue[primaryKey]));\n }\n } else {\n this.selectedNode.set(this._findTreeNode(selectedValue));\n }\n }\n } else {\n this.selectedNodes.set([]);\n this.selectedNode.set(null);\n }\n }\n\n openSelectPop() {\n if (this.thyDisable()) {\n return;\n }\n this.cdkConnectOverlayWidth.set(this.cdkOverlayOrigin().elementRef.nativeElement.getBoundingClientRect().width);\n this.expandTreeSelectOptions.set(!this.expandTreeSelectOptions());\n this.thyExpandStatusChange.emit(this.expandTreeSelectOptions());\n }\n\n close() {\n if (this.expandTreeSelectOptions()) {\n this.expandTreeSelectOptions.set(false);\n this.thyExpandStatusChange.emit(false);\n this.onTouchedFn();\n }\n }\n\n clearSelectedValue(event: Event) {\n event.stopPropagation();\n this.selectedValue.set(null);\n this.selectedNode.set(null);\n this.selectedNodes.set([]);\n this.onChangeFn(null);\n }\n\n private _changeSelectValue() {\n const selectedNodes = this.selectedNodes();\n const selectedNode = this.selectedNode();\n if (this.valueIsObject()) {\n this.selectedValue.set(this.thyMultiple() ? selectedNodes : selectedNode);\n } else {\n const value = this.thyMultiple() ? selectedNodes.map(item => item[this.thyPrimaryKey()]) : selectedNode[this.thyPrimaryKey()];\n this.selectedValue.set(value);\n }\n this.onChangeFn(this.selectedValue());\n if (!this.thyMultiple()) {\n this.onTouchedFn();\n }\n }\n\n removeMultipleSelectedNode(event: { item: ThyTreeSelectNode; $eventOrigin: Event }) {\n this.removeSelectedNode(event.item, event.$eventOrigin);\n }\n\n // thyMultiple = true 时,移除数据时调用\n removeSelectedNode(node: ThyTreeSelectNode, event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.thyDisable()) {\n return;\n }\n if (this.thyMultiple()) {\n this.selectedNodes.set(\n produce(this.selectedNodes()).remove((item: ThyTreeSelectNode) => {\n return item[this.thyPrimaryKey()] === node[this.thyPrimaryKey()];\n })\n );\n this._changeSelectValue();\n }\n }\n\n selectNode(node: ThyTreeSelectNode) {\n if (!this.thyMultiple()) {\n this.selectedNode.set(node);\n this.expandTreeSelectOptions.set(false);\n this.thyExpandStatusChange.emit(false);\n this._changeSelectValue();\n } else {\n if (\n this.selectedNodes().find(item => {\n return item[this.thyPrimaryKey()] === node[this.thyPrimaryKey()];\n })\n ) {\n this.removeSelectedNode(node);\n } else {\n this.selectedNodes.set(produce(this.selectedNodes()).add(node));\n this._changeSelectValue();\n }\n }\n }\n\n getNodeChildren(node: ThyTreeSelectNode) {\n const result = this.thyGetNodeChildren(node);\n if (result && result.subscribe) {\n result.subscribe((data: ThyTreeSelectNode[]) => {\n const flattenTreeNodes = this.flattenTreeNodes();\n const nodes = this.flattenNodes(data, [...node.parentValues, node[this.thyPrimaryKey()]]);\n const otherNodes = nodes.filter((item: ThyTreeNode) => {\n return !flattenTreeNodes.find(hasItem => {\n return hasItem[this.thyPrimaryKey()] === item[this.thyPrimaryKey() as keyof ThyTreeNode];\n });\n });\n this.flattenTreeNodes.set(flattenTreeNodes.concat(otherNodes));\n node.children = data;\n });\n return result;\n }\n }\n}\n\nconst DEFAULT_ITEM_SIZE = 40;\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-tree-select-nodes',\n templateUrl: './tree-select-nodes.component.html',\n imports: [\n NgTemplateOutlet,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ThyEmpty,\n NgClass,\n NgStyle,\n ThyIcon,\n ThyFlexibleText\n ],\n host: {\n '[attr.tabindex]': '-1',\n class: 'thy-tree-select-dropdown',\n '[class.thy-tree-select-dropdown-multiple]': 'isMultiple()'\n }\n})\nexport class ThyTreeSelectNodes {\n parent = inject(ThyTreeSelect);\n\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n readonly treeNodes = input<ThyTreeSelectNode[]>([]);\n\n readonly thyVirtualScroll = input<boolean>(false);\n\n public readonly isMultiple = computed(() => this.parent.thyMultiple());\n\n public readonly childCountKey = computed(() => this.parent.thyChildCountKey());\n\n public readonly treeNodeTemplateRef = computed(() => this.parent.treeNodeTemplateRef());\n\n public defaultItemSize = DEFAULT_ITEM_SIZE;\n\n public readonly thyPrimaryKey = computed(() => this.parent.thyPrimaryKey());\n\n public readonly selectedNodes = computed(() => this.parent.selectedNodes());\n\n public readonly selectedNode = computed(() => this.parent.selectedNode());\n\n public readonly hiddenNodeKey = computed(() => this.parent.thyHiddenNodeKey());\n\n public readonly disableNodeKey = computed(() => this.parent.thyDisableNodeKey());\n\n public readonly thyVirtualHeight = computed(() => {\n const treeSelectHeight = this.defaultItemSize * this.treeNodes().length;\n // 父级设置了max-height:300 & padding:10 0; 故此处最多设置280,否则将出现滚动条\n return treeSelectHeight > 300 ? '280px' : `${treeSelectHeight}px`;\n });\n\n public readonly hasNodeChildren = computed(() => {\n return this.treeNodes().every(item => !item.hasOwnProperty('children') || (!item?.children?.length && !item?.childCount));\n });\n\n treeNodeIsSelected(node: ThyTreeSelectNode) {\n const primaryKey = this.thyPrimaryKey();\n const isMultiple = this.isMultiple();\n if (isMultiple) {\n const selectedNodes = this.selectedNodes() || [];\n return selectedNodes.find(item => {\n return item[primaryKey] === node[primaryKey];\n });\n } else {\n return this.selectedNode() && this.selectedNode()[primaryKey] === node[primaryKey];\n }\n }\n\n treeNodeIsHidden(node: ThyTreeSelectNode) {\n const hiddenNodeKey = this.hiddenNodeKey();\n if (hiddenNodeKey) {\n return node[hiddenNodeKey];\n }\n const thyHiddenNodeFn = this.parent.thyHiddenNodeFn;\n if (thyHiddenNodeFn) {\n return thyHiddenNodeFn(node);\n }\n return false;\n }\n\n treeNodeIsDisable(node: ThyTreeSelectNode) {\n const disableNodeKey = this.disableNodeKey();\n if (disableNodeKey) {\n return node[disableNodeKey];\n }\n const thyDisableNodeFn = this.parent.thyDisableNodeFn;\n if (thyDisableNodeFn) {\n return thyDisableNodeFn(node);\n }\n return false;\n }\n\n treeNodeIsExpand(node: ThyTreeSelectNode) {\n const isMultiple = this.isMultiple();\n const primaryKey = this.thyPrimaryKey();\n let isSelectedNodeParent = false;\n if (isMultiple) {\n const selectedNodes = this.selectedNodes() || [];\n isSelectedNodeParent = !!selectedNodes.find(item => {\n return item.parentValues.indexOf(node[primaryKey]) > -1;\n });\n } else {\n isSelectedNodeParent = this.selectedNode() ? this.selectedNode().parentValues.indexOf(node[primaryKey]) > -1 : false;\n }\n const isExpand = node.expand || (Object.keys(node).indexOf('expand') < 0 && isSelectedNodeParent);\n node.expand = isExpand;\n return isExpand;\n }\n\n getNodeChildren(node: ThyTreeSelectNode) {\n return this.parent.getNodeChildren(node);\n }\n\n selectTreeNode(event: Event, node: ThyTreeSelectNode) {\n if (!this.treeNodeIsDisable(node)) {\n this.parent.selectNode(node);\n }\n }\n\n nodeExpandToggle(event: Event, node: ThyTreeSelectNode) {\n event.stopPropagation();\n if (Object.keys(node).indexOf('expand') > -1) {\n node.expand = !node.expand;\n } else {\n if (this.treeNodeIsExpand(node)) {\n node.expand = false;\n } else {\n node.expand = true;\n }\n }\n\n if (node.expand && this.parent.thyAsyncNode()) {\n this.getNodeChildren(node).subscribe(() => {\n this.parent.setPosition();\n });\n }\n // this.parent.setPosition();\n if (this.thyVirtualScroll()) {\n this.parent.buildFlattenTreeNodes();\n }\n }\n\n tabTrackBy(index: number, item: ThyTreeSelectNode) {\n return index;\n }\n}\n","<div\n cdkOverlayOrigin\n thySelectControl\n (click)=\"openSelectPop()\"\n #origin=\"cdkOverlayOrigin\"\n [thyPanelOpened]=\"expandTreeSelectOptions()\"\n [thySelectedOptions]=\"selectedValueObject()\"\n [thyIsMultiple]=\"thyMultiple()\"\n [thyAllowClear]=\"thyAllowClear()\"\n [thySize]=\"thySize()\"\n [thyPlaceholder]=\"thyPlaceholder()\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyShowSearch]=\"thyShowSearch()\"\n [thyDisabled]=\"thyDisable()\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnClear)=\"clearSelectedValue($event)\"\n (thyOnRemove)=\"removeMultipleSelectedNode($event)\"\n (thyOnSearch)=\"searchValue($event)\">\n <ng-template #customDisplayTemplate let-node>\n @if (thyTreeSelectTriggerDisplayRef()) {\n <ng-template [ngTemplateOutlet]=\"thyTreeSelectTriggerDisplayRef()\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n } @else {\n {{ node[thyShowKey()] }}\n }\n </ng-template>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayMinWidth]=\"cdkConnectOverlayWidth()\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayOpen]=\"expandTreeSelectOptions()\"\n cdkConnectedOverlayTransformOriginOn=\".thy-tree-select-dropdown\"\n [cdkConnectedOverlayPositions]=\"expandedDropdownPositions\"\n (detach)=\"close()\">\n <thy-tree-select-nodes\n thyStopPropagation\n [thyVirtualScroll]=\"thyVirtualScroll()\"\n [treeNodes]=\"thyVirtualScroll() ? virtualTreeNodes() : treeNodes()\"\n [@scaleYMotion]=\"'enter'\">\n </thy-tree-select-nodes>\n</ng-template>\n","@let nodeList = treeNodes();\n@let hasChildren = hasNodeChildren();\n@let virtualHeight = thyVirtualHeight();\n@let isVirtualScroll = thyVirtualScroll();\n@let showKey = this.parent.thyShowKey();\n\n@if (nodeList?.length > 0) {\n <div class=\"thy-tree-select-options\">\n <div class=\"thy-tree-select-node\">\n @if (!isVirtualScroll) {\n @for (node of nodeList; track $index) {\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n }\n }\n @if (isVirtualScroll) {\n <cdk-virtual-scroll-viewport #viewport [itemSize]=\"defaultItemSize\" [style.height]=\"virtualHeight\">\n <ng-container *cdkVirtualFor=\"let node of nodeList; trackBy: tabTrackBy\">\n <ng-template [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n </div>\n} @else {\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"parent.thyEmptyOptionsText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n}\n\n<ng-template #treeSelectNode let-node>\n <ng-container>\n @if (!treeNodeIsHidden(node)) {\n <a\n class=\"thy-option-item\"\n [ngClass]=\"{ active: treeNodeIsSelected(node), 'pl-0': hasChildren }\"\n [class.disabled]=\"treeNodeIsDisable(node)\"\n [ngStyle]=\"{ 'padding-left.px': 20 * node.level + parent.icons.gap }\"\n (click)=\"selectTreeNode($event, node)\">\n <span\n class=\"thy-tree-select-option-icon\"\n [class.invisible]=\"!(node.children?.length > 0 || (node[childCountKey()] && node[childCountKey()] > 0))\"\n (click)=\"nodeExpandToggle($event, node)\">\n <thy-icon\n class=\"node-expand-icon\"\n [thyIconName]=\"treeNodeIsExpand(node) ? parent.icons.expand : parent.icons.collapse\"></thy-icon>\n </span>\n <span class=\"thy-tree-select-option-text\" [ngClass]=\"{ 'ml-1': hasChildren }\">\n @if (treeNodeTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"treeNodeTemplateRef()\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n } @else {\n <span thyFlexibleText [thyTooltipContent]=\"node[showKey]\">{{ node[showKey] }}</span>\n }\n </span>\n @if (isMultiple()) {\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n }\n </a>\n }\n @if (!isVirtualScroll && treeNodeIsExpand(node) && node.children?.length > 0) {\n @for (node of node.children; track $index) {\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n }\n }\n </ng-container>\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 { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyTreeSelect, ThyTreeSelectNodes } from './tree-select.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n ThyListModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThySharedModule,\n ThyTreeSelect,\n ThyTreeSelectNodes\n ],\n exports: [ThyTreeSelect, ThyTreeSelectNodes]\n})\nexport class ThyTreeSelectModule {}\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-tree-select.mjs","sources":["../../../src/tree-select/tree-select.component.ts","../../../src/tree-select/tree-select.component.html","../../../src/tree-select/tree-select-nodes.component.html","../../../src/tree-select/module.ts","../../../src/tree-select/ngx-tethys-tree-select.ts"],"sourcesContent":["import {\n EXPANDED_DROPDOWN_POSITIONS,\n injectPanelEmptyIcon,\n scaleYMotion,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThySelectControl, ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTreeNode } from 'ngx-tethys/tree';\nimport { coerceBooleanProperty, elementMatchClosest, isArray, isObject, produce } from 'ngx-tethys/util';\nimport { Observable, of } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, ViewportRuler } from '@angular/cdk/overlay';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n Input,\n NgZone,\n PLATFORM_ID,\n TemplateRef,\n inject,\n Signal,\n output,\n input,\n effect,\n computed,\n signal,\n afterNextRender,\n DestroyRef,\n contentChild,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ThyTreeSelectNode, ThyTreeSelectType } from './tree-select.class';\nimport { injectLocale, ThyTreeSelectLocale } from 'ngx-tethys/i18n';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\ntype InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nexport function filterTreeData(treeNodes: ThyTreeSelectNode[], searchText: string, searchKey: string = 'name') {\n const filterNodes = (node: ThyTreeSelectNode, result: ThyTreeSelectNode[]) => {\n if (node[searchKey] && node[searchKey].indexOf(searchText) !== -1) {\n result.push(node);\n return result;\n }\n if (Array.isArray(node.children)) {\n const nodes = node.children.reduce((previous, current) => filterNodes(current, previous), [] as ThyTreeSelectNode[]);\n if (nodes.length) {\n const parentNode = { ...node, children: nodes, expand: true };\n result.push(parentNode);\n }\n }\n return result;\n };\n const treeData = treeNodes.reduce((previous, current) => filterNodes(current, previous), [] as ThyTreeSelectNode[]);\n return treeData;\n}\n\n/**\n * 树选择组件\n * @name thy-tree-select\n * @order 10\n */\n@Component({\n selector: 'thy-tree-select',\n templateUrl: './tree-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyTreeSelect),\n multi: true\n }\n ],\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n forwardRef(() => ThyTreeSelectNodes),\n ThyStopPropagationDirective\n ],\n host: {\n class: 'thy-select-custom thy-select',\n '[class.thy-select-custom--multiple]': 'thyMultiple()',\n '[class.menu-is-opened]': 'expandTreeSelectOptions()',\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleYMotion]\n})\nexport class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor {\n elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private ref = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private viewportRuler = inject(ViewportRuler);\n private destroyRef = inject(DestroyRef);\n\n // 菜单是否展开\n public expandTreeSelectOptions = signal(false);\n\n public selectedValue = signal<any>(undefined);\n\n public selectedNode = signal<ThyTreeSelectNode>(null);\n\n public selectedNodes = signal<ThyTreeSelectNode[]>([]);\n\n public flattenTreeNodes = signal<ThyTreeSelectNode[]>([]);\n\n virtualTreeNodes = signal<ThyTreeSelectNode[]>([]);\n\n public cdkConnectOverlayWidth = signal(0);\n\n public expandedDropdownPositions: ConnectionPositionPair[] = EXPANDED_DROPDOWN_POSITIONS;\n\n public icons: { expand: string; collapse: string; gap?: number } = {\n expand: 'angle-down',\n collapse: 'angle-right',\n gap: 15\n };\n\n private locale: Signal<ThyTreeSelectLocale> = injectLocale('treeSelect');\n\n public valueIsObject = computed(() => {\n const selectedValue = this.selectedValue();\n if (this.thyMultiple()) {\n return selectedValue && (!selectedValue[0] || isObject(selectedValue[0]));\n } else {\n return isObject(selectedValue);\n }\n });\n\n public searchText = signal('');\n\n readonly thyTreeSelectTriggerDisplayRef = contentChild<TemplateRef<any>>('thyTreeSelectTriggerDisplay');\n\n readonly treeNodeTemplateRef = contentChild<TemplateRef<any>>('treeNodeTemplate');\n\n readonly cdkOverlayOrigin = viewChild(CdkOverlayOrigin);\n\n readonly cdkConnectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly customDisplayTemplate = viewChild<TemplateRef<any>>('customDisplayTemplate');\n\n /**\n * treeNodes 数据\n * @type ThyTreeSelectNode[]\n */\n readonly thyTreeNodes = input<ThyTreeSelectNode[]>([]);\n\n treeNodes = computed(() => {\n return filterTreeData(this.thyTreeNodes(), this.searchText(), this.thyShowKey());\n });\n\n /**\n * 开启虚拟滚动\n */\n readonly thyVirtualScroll = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 树节点的唯一标识\n * @type string\n */\n readonly thyPrimaryKey = input('_id');\n\n /**\n * 树节点的显示的字段 key\n * @type string\n */\n readonly thyShowKey = input('name');\n\n readonly thyChildCountKey = input('childCount');\n\n /**\n * 单选时,是否显示清除按钮,当为 true 时,显示清除按钮\n * @default false\n */\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否多选\n * @type boolean\n */\n readonly thyMultiple = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否禁用树选择器,当为 true 禁用树选择器\n * @type boolean\n */\n readonly thyDisable = input(false, { transform: coerceBooleanProperty });\n\n get thyDisabled(): boolean {\n return this.thyDisable();\n }\n\n /**\n * 树选择框默认文字\n * @type string\n */\n readonly thyPlaceholder = input(this.locale().placeholder);\n\n /**\n * 控制树选择的输入框大小\n * @type xs | sm | md | default | lg\n */\n readonly thySize = input<InputSize>(undefined);\n\n /**\n * 改变空选项的情况下的提示文本\n * @type string\n */\n readonly thyEmptyOptionsText = input(this.locale().empty);\n\n /**\n * 设置是否隐藏节点(不可进行任何操作),优先级高于 thyHiddenNodeFn\n * @type string\n */\n readonly thyHiddenNodeKey = input('hidden');\n\n /**\n * 设置是否禁用节点(不可进行任何操作),优先级高于 thyDisableNodeFn\n * @type string\n */\n readonly thyDisableNodeKey = input('disabled');\n\n /**\n * 是否异步加载节点的子节点(显示加载状态),当为 true 时,异步获取\n * @type boolean\n */\n readonly thyAsyncNode = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示全名\n * @type boolean\n */\n readonly thyShowWholeName = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示搜索\n * @type boolean\n */\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 图标类型,支持 default | especial,已废弃\n * @deprecated\n */\n readonly thyIconType = input<ThyTreeSelectType>(undefined);\n\n /**\n * 设置是否隐藏节点(不可进行任何操作),优先级低于 thyHiddenNodeKey。\n * @default (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.hidden\n */\n @Input() thyHiddenNodeFn: (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.hidden;\n\n /**\n * 设置是否禁用节点(不可进行任何操作),优先级低于 thyDisableNodeKey。\n * @default (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.disabled\n */\n @Input() thyDisableNodeFn: (node: ThyTreeSelectNode) => boolean = (node: ThyTreeSelectNode) => node.disabled;\n\n /**\n * 获取节点的子节点,返回 Observable<ThyTreeSelectNode>。\n * @default (node: ThyTreeSelectNode) => Observable<ThyTreeSelectNode> = (node: ThyTreeSelectNode) => of([])\n */\n @Input() thyGetNodeChildren: (node: ThyTreeSelectNode) => Observable<ThyTreeSelectNode> = (node: ThyTreeSelectNode) => of([]);\n\n /**\n * 树选择组件展开和折叠状态事件\n */\n readonly thyExpandStatusChange = output<boolean>();\n\n public buildFlattenTreeNodes() {\n this.virtualTreeNodes.set(this.getFlattenTreeNodes(this.treeNodes()));\n }\n\n private getFlattenTreeNodes(rootTrees: ThyTreeSelectNode[] = this.treeNodes()) {\n const forEachTree = (tree: ThyTreeSelectNode[], fn: any, result: ThyTreeSelectNode[] = []) => {\n tree.forEach(item => {\n result.push(item);\n if (item.children && fn(item)) {\n forEachTree(item.children, fn, result);\n }\n });\n return result;\n };\n return forEachTree(rootTrees, (node: ThyTreeSelectNode) => !!node.expand);\n }\n\n writeValue(value: any): void {\n this.selectedValue.set(value);\n }\n\n constructor() {\n super();\n\n this.bindClickEvent();\n this.bindResizeEvent();\n\n effect(() => {\n this.setSelectedNodes();\n });\n\n effect(() => {\n if (this.thyVirtualScroll()) {\n this.buildFlattenTreeNodes();\n }\n });\n\n effect(() => {\n this.flattenTreeNodes.set(this.flattenNodes(this.treeNodes(), []));\n });\n }\n\n private bindClickEvent() {\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n event.stopPropagation();\n if (!this.elementRef.nativeElement.contains(event.target) && this.expandTreeSelectOptions()) {\n this.ngZone.run(() => {\n this.close();\n });\n }\n });\n }\n }\n\n private bindResizeEvent() {\n this.viewportRuler\n .change()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.cdkConnectOverlayWidth.set(this.cdkOverlayOrigin().elementRef.nativeElement.getBoundingClientRect().width);\n });\n }\n\n onFocus($event: FocusEvent) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement?.focus();\n }\n\n onBlur($event: FocusEvent) {\n // 1. Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n // 2. 打开选择框后如果点击弹框内导致 input 失焦,无需触发 onTouchedFn\n if (elementMatchClosest($event?.relatedTarget as HTMLElement, ['thy-tree-select', 'thy-tree-select-nodes'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n public readonly selectedValueObject = computed(() => {\n return this.thyMultiple() ? this.selectedNodes() : this.selectedNode();\n });\n\n searchValue(searchText: string) {\n this.searchText.set(searchText.trim());\n }\n\n public setPosition() {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.cdkConnectedOverlay().overlayRef.updatePosition();\n });\n }\n\n private flattenNodes(nodes: ThyTreeSelectNode[] = [], parentPrimaryValue: string[] = []): ThyTreeSelectNode[] {\n let flattenedNodes: ThyTreeSelectNode[] = [];\n (nodes || []).forEach(item => {\n item.parentValues = parentPrimaryValue;\n item.level = item.parentValues.length;\n flattenedNodes.push(item);\n if (item.children && isArray(item.children)) {\n const childNodes = this.flattenNodes(item.children, [...parentPrimaryValue, item[this.thyPrimaryKey()]]);\n flattenedNodes = flattenedNodes.concat(childNodes);\n }\n });\n return flattenedNodes;\n }\n\n private _findTreeNode(value: string): ThyTreeSelectNode {\n return (this.flattenTreeNodes() || []).find(item => item[this.thyPrimaryKey()] === value);\n }\n\n private setSelectedNodes() {\n const isMultiple = this.thyMultiple();\n const primaryKey = this.thyPrimaryKey();\n const selectedValue = this.selectedValue();\n const valueIsObject = this.valueIsObject();\n if (selectedValue) {\n // 多选数据初始化\n if (isMultiple) {\n if (selectedValue.length > 0) {\n if (valueIsObject && Object.keys(selectedValue[0]).indexOf(primaryKey) >= 0) {\n this.selectedNodes.set(\n selectedValue.map((item: any) => {\n return this._findTreeNode(item[primaryKey]);\n })\n );\n } else {\n this.selectedNodes.set(\n selectedValue.map((item: any) => {\n return this._findTreeNode(item);\n })\n );\n }\n }\n } else {\n // 单选数据初始化\n if (valueIsObject) {\n if (Object.keys(selectedValue).indexOf(primaryKey) >= 0) {\n this.selectedNode.set(this._findTreeNode(selectedValue[primaryKey]));\n }\n } else {\n this.selectedNode.set(this._findTreeNode(selectedValue));\n }\n }\n } else {\n this.selectedNodes.set([]);\n this.selectedNode.set(null);\n }\n }\n\n openSelectPop() {\n if (this.thyDisable()) {\n return;\n }\n this.cdkConnectOverlayWidth.set(this.cdkOverlayOrigin().elementRef.nativeElement.getBoundingClientRect().width);\n this.expandTreeSelectOptions.set(!this.expandTreeSelectOptions());\n this.thyExpandStatusChange.emit(this.expandTreeSelectOptions());\n }\n\n close() {\n if (this.expandTreeSelectOptions()) {\n this.expandTreeSelectOptions.set(false);\n this.thyExpandStatusChange.emit(false);\n this.onTouchedFn();\n }\n }\n\n clearSelectedValue(event: Event) {\n event.stopPropagation();\n this.selectedValue.set(null);\n this.selectedNode.set(null);\n this.selectedNodes.set([]);\n this.onChangeFn(null);\n }\n\n private _changeSelectValue() {\n const selectedNodes = this.selectedNodes();\n const selectedNode = this.selectedNode();\n if (this.valueIsObject()) {\n this.selectedValue.set(this.thyMultiple() ? selectedNodes : selectedNode);\n } else {\n const value = this.thyMultiple() ? selectedNodes.map(item => item[this.thyPrimaryKey()]) : selectedNode[this.thyPrimaryKey()];\n this.selectedValue.set(value);\n }\n this.onChangeFn(this.selectedValue());\n if (!this.thyMultiple()) {\n this.onTouchedFn();\n }\n }\n\n removeMultipleSelectedNode(event: { item: ThyTreeSelectNode; $eventOrigin: Event }) {\n this.removeSelectedNode(event.item, event.$eventOrigin);\n }\n\n // thyMultiple = true 时,移除数据时调用\n removeSelectedNode(node: ThyTreeSelectNode, event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.thyDisable()) {\n return;\n }\n if (this.thyMultiple()) {\n this.selectedNodes.set(\n produce(this.selectedNodes()).remove((item: ThyTreeSelectNode) => {\n return item[this.thyPrimaryKey()] === node[this.thyPrimaryKey()];\n })\n );\n this._changeSelectValue();\n }\n }\n\n selectNode(node: ThyTreeSelectNode) {\n if (!this.thyMultiple()) {\n this.selectedNode.set(node);\n this.expandTreeSelectOptions.set(false);\n this.thyExpandStatusChange.emit(false);\n this._changeSelectValue();\n } else {\n if (\n this.selectedNodes().find(item => {\n return item[this.thyPrimaryKey()] === node[this.thyPrimaryKey()];\n })\n ) {\n this.removeSelectedNode(node);\n } else {\n this.selectedNodes.set(produce(this.selectedNodes()).add(node));\n this._changeSelectValue();\n }\n }\n }\n\n getNodeChildren(node: ThyTreeSelectNode) {\n const result = this.thyGetNodeChildren(node);\n if (result && result.subscribe) {\n result.subscribe((data: ThyTreeSelectNode[]) => {\n const flattenTreeNodes = this.flattenTreeNodes();\n const nodes = this.flattenNodes(data, [...node.parentValues, node[this.thyPrimaryKey()]]);\n const otherNodes = nodes.filter((item: ThyTreeNode) => {\n return !flattenTreeNodes.find(hasItem => {\n return hasItem[this.thyPrimaryKey()] === item[this.thyPrimaryKey() as keyof ThyTreeNode];\n });\n });\n this.flattenTreeNodes.set(flattenTreeNodes.concat(otherNodes));\n node.children = data;\n });\n return result;\n }\n }\n}\n\nconst DEFAULT_ITEM_SIZE = 40;\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-tree-select-nodes',\n templateUrl: './tree-select-nodes.component.html',\n imports: [\n NgTemplateOutlet,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ThyEmpty,\n NgClass,\n NgStyle,\n ThyIcon,\n ThyFlexibleText\n ],\n host: {\n '[attr.tabindex]': '-1',\n class: 'thy-tree-select-dropdown',\n '[class.thy-tree-select-dropdown-multiple]': 'isMultiple()'\n }\n})\nexport class ThyTreeSelectNodes {\n parent = inject(ThyTreeSelect);\n\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n readonly treeNodes = input<ThyTreeSelectNode[]>([]);\n\n readonly thyVirtualScroll = input<boolean>(false);\n\n public readonly isMultiple = computed(() => this.parent.thyMultiple());\n\n public readonly childCountKey = computed(() => this.parent.thyChildCountKey());\n\n public readonly treeNodeTemplateRef = computed(() => this.parent.treeNodeTemplateRef());\n\n public defaultItemSize = DEFAULT_ITEM_SIZE;\n\n public readonly thyPrimaryKey = computed(() => this.parent.thyPrimaryKey());\n\n public readonly selectedNodes = computed(() => this.parent.selectedNodes());\n\n public readonly selectedNode = computed(() => this.parent.selectedNode());\n\n public readonly hiddenNodeKey = computed(() => this.parent.thyHiddenNodeKey());\n\n public readonly disableNodeKey = computed(() => this.parent.thyDisableNodeKey());\n\n public readonly thyVirtualHeight = computed(() => {\n const treeSelectHeight = this.defaultItemSize * this.treeNodes().length;\n // 父级设置了max-height:300 & padding:10 0; 故此处最多设置280,否则将出现滚动条\n return treeSelectHeight > 300 ? '280px' : `${treeSelectHeight}px`;\n });\n\n public readonly hasNodeChildren = computed(() => {\n return this.treeNodes().every(item => !item.hasOwnProperty('children') || (!item?.children?.length && !item?.childCount));\n });\n\n treeNodeIsSelected(node: ThyTreeSelectNode) {\n const primaryKey = this.thyPrimaryKey();\n const isMultiple = this.isMultiple();\n if (isMultiple) {\n const selectedNodes = this.selectedNodes() || [];\n return selectedNodes.find(item => {\n return item[primaryKey] === node[primaryKey];\n });\n } else {\n return this.selectedNode() && this.selectedNode()[primaryKey] === node[primaryKey];\n }\n }\n\n treeNodeIsHidden(node: ThyTreeSelectNode) {\n const hiddenNodeKey = this.hiddenNodeKey();\n if (hiddenNodeKey) {\n return node[hiddenNodeKey];\n }\n const thyHiddenNodeFn = this.parent.thyHiddenNodeFn;\n if (thyHiddenNodeFn) {\n return thyHiddenNodeFn(node);\n }\n return false;\n }\n\n treeNodeIsDisable(node: ThyTreeSelectNode) {\n const disableNodeKey = this.disableNodeKey();\n if (disableNodeKey) {\n return node[disableNodeKey];\n }\n const thyDisableNodeFn = this.parent.thyDisableNodeFn;\n if (thyDisableNodeFn) {\n return thyDisableNodeFn(node);\n }\n return false;\n }\n\n treeNodeIsExpand(node: ThyTreeSelectNode) {\n const isMultiple = this.isMultiple();\n const primaryKey = this.thyPrimaryKey();\n let isSelectedNodeParent = false;\n if (isMultiple) {\n const selectedNodes = this.selectedNodes() || [];\n isSelectedNodeParent = !!selectedNodes.find(item => {\n return item.parentValues.indexOf(node[primaryKey]) > -1;\n });\n } else {\n isSelectedNodeParent = this.selectedNode() ? this.selectedNode().parentValues.indexOf(node[primaryKey]) > -1 : false;\n }\n const isExpand = node.expand || (Object.keys(node).indexOf('expand') < 0 && isSelectedNodeParent);\n node.expand = isExpand;\n return isExpand;\n }\n\n getNodeChildren(node: ThyTreeSelectNode) {\n return this.parent.getNodeChildren(node);\n }\n\n selectTreeNode(event: Event, node: ThyTreeSelectNode) {\n if (!this.treeNodeIsDisable(node)) {\n this.parent.selectNode(node);\n }\n }\n\n nodeExpandToggle(event: Event, node: ThyTreeSelectNode) {\n event.stopPropagation();\n if (Object.keys(node).indexOf('expand') > -1) {\n node.expand = !node.expand;\n } else {\n if (this.treeNodeIsExpand(node)) {\n node.expand = false;\n } else {\n node.expand = true;\n }\n }\n\n if (node.expand && this.parent.thyAsyncNode()) {\n this.getNodeChildren(node).subscribe(() => {\n this.parent.setPosition();\n });\n }\n // this.parent.setPosition();\n if (this.thyVirtualScroll()) {\n this.parent.buildFlattenTreeNodes();\n }\n }\n\n tabTrackBy(index: number, item: ThyTreeSelectNode) {\n return index;\n }\n}\n","<div\n cdkOverlayOrigin\n thySelectControl\n (click)=\"openSelectPop()\"\n #origin=\"cdkOverlayOrigin\"\n [thyPanelOpened]=\"expandTreeSelectOptions()\"\n [thySelectedOptions]=\"selectedValueObject()\"\n [thyIsMultiple]=\"thyMultiple()\"\n [thyAllowClear]=\"thyAllowClear()\"\n [thySize]=\"thySize()\"\n [thyPlaceholder]=\"thyPlaceholder()\"\n [customDisplayTemplate]=\"customDisplayTemplate\"\n [thyShowSearch]=\"thyShowSearch()\"\n [thyDisabled]=\"thyDisable()\"\n (thyOnBlur)=\"onBlur($event)\"\n (thyOnClear)=\"clearSelectedValue($event)\"\n (thyOnRemove)=\"removeMultipleSelectedNode($event)\"\n (thyOnSearch)=\"searchValue($event)\">\n <ng-template #customDisplayTemplate let-node>\n @if (thyTreeSelectTriggerDisplayRef()) {\n <ng-template [ngTemplateOutlet]=\"thyTreeSelectTriggerDisplayRef()\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n } @else {\n {{ node[thyShowKey()] }}\n }\n </ng-template>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayMinWidth]=\"cdkConnectOverlayWidth()\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayOpen]=\"expandTreeSelectOptions()\"\n cdkConnectedOverlayTransformOriginOn=\".thy-tree-select-dropdown\"\n [cdkConnectedOverlayPositions]=\"expandedDropdownPositions\"\n (detach)=\"close()\">\n <thy-tree-select-nodes\n thyStopPropagation\n [thyVirtualScroll]=\"thyVirtualScroll()\"\n [treeNodes]=\"thyVirtualScroll() ? virtualTreeNodes() : treeNodes()\"\n [@scaleYMotion]=\"'enter'\">\n </thy-tree-select-nodes>\n</ng-template>\n","@let nodeList = treeNodes();\n@let hasChildren = hasNodeChildren();\n@let virtualHeight = thyVirtualHeight();\n@let isVirtualScroll = thyVirtualScroll();\n@let showKey = this.parent.thyShowKey();\n\n@if (nodeList?.length > 0) {\n <div class=\"thy-tree-select-options\">\n <div class=\"thy-tree-select-node\">\n @if (!isVirtualScroll) {\n @for (node of nodeList; track $index) {\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n }\n }\n @if (isVirtualScroll) {\n <cdk-virtual-scroll-viewport #viewport [itemSize]=\"defaultItemSize\" [style.height]=\"virtualHeight\">\n <ng-container *cdkVirtualFor=\"let node of nodeList; trackBy: tabTrackBy\">\n <ng-template [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n </div>\n} @else {\n <thy-empty\n class=\"thy-select-empty-content\"\n thySize=\"sm\"\n [thyMessage]=\"parent.thyEmptyOptionsText()\"\n [thyIconName]=\"emptyIcon()\"></thy-empty>\n}\n\n<ng-template #treeSelectNode let-node>\n <ng-container>\n @if (!treeNodeIsHidden(node)) {\n <a\n class=\"thy-option-item\"\n [ngClass]=\"{ active: treeNodeIsSelected(node), 'pl-0': hasChildren }\"\n [class.disabled]=\"treeNodeIsDisable(node)\"\n [ngStyle]=\"{ 'padding-left.px': 20 * node.level + parent.icons.gap }\"\n (click)=\"selectTreeNode($event, node)\">\n <span\n class=\"thy-tree-select-option-icon\"\n [class.invisible]=\"!(node.children?.length > 0 || (node[childCountKey()] && node[childCountKey()] > 0))\"\n (click)=\"nodeExpandToggle($event, node)\">\n <thy-icon\n class=\"node-expand-icon\"\n [thyIconName]=\"treeNodeIsExpand(node) ? parent.icons.expand : parent.icons.collapse\"></thy-icon>\n </span>\n <span class=\"thy-tree-select-option-text\" [ngClass]=\"{ 'ml-1': hasChildren }\">\n @if (treeNodeTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"treeNodeTemplateRef()\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n } @else {\n <span thyFlexibleText [thyTooltipContent]=\"node[showKey]\">{{ node[showKey] }}</span>\n }\n </span>\n @if (isMultiple()) {\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n }\n </a>\n }\n @if (!isVirtualScroll && treeNodeIsExpand(node) && node.children?.length > 0) {\n @for (node of node.children; track $index) {\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n }\n }\n </ng-container>\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 { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyTreeSelect, ThyTreeSelectNodes } from './tree-select.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n ThyListModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThySharedModule,\n ThyTreeSelect,\n ThyTreeSelectNodes\n ],\n exports: [ThyTreeSelect, ThyTreeSelectNodes]\n})\nexport class ThyTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('19.1.0-next.6');
3
+ const VERSION = new Version('19.1.0-next.8');
4
4
 
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
@@ -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('19.1.0-next.6');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe;;ACFlD;;AAEG;;;;"}
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('19.1.0-next.8');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe;;ACFlD;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter, OnInit, Signal } from '@angular/core';
1
+ import { ElementRef, OnInit, Signal } from '@angular/core';
2
2
  import { ThyCopyEvent } from 'ngx-tethys/copy';
3
3
  import { ThyDialog } from 'ngx-tethys/dialog';
4
4
  import { ThyFullscreen } from 'ngx-tethys/fullscreen';
@@ -20,7 +20,7 @@ export declare class ThyImagePreview implements OnInit {
20
20
  private host;
21
21
  private sanitizer;
22
22
  locale: Signal<ThyImageLocale>;
23
- downloadClicked: EventEmitter<ThyImageInfo>;
23
+ readonly downloadClicked: import("@angular/core").OutputEmitterRef<ThyImageInfo>;
24
24
  private readonly destroyRef;
25
25
  images: InternalImageInfo[];
26
26
  previewIndex: number;
@@ -1,11 +1,10 @@
1
1
  import { IThyListOptionParentComponent, ThyListOption } from 'ngx-tethys/shared';
2
2
  import { SelectionModel } from '@angular/cdk/collections';
3
- import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
3
+ import { AfterContentInit, ElementRef, OnDestroy, OnInit, QueryList } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { ThyListLayout } from 'ngx-tethys/shared';
6
6
  import { ThySelectionListChange } from './selection.interface';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "ngx-tethys/util";
9
8
  export type ThyListSize = 'sm' | 'md' | 'lg';
10
9
  /**
11
10
  * @name thy-selection-list,[thy-selection-list]
@@ -16,93 +15,84 @@ export declare class ThySelectionList implements OnInit, OnDestroy, AfterContent
16
15
  private elementRef;
17
16
  private ngZone;
18
17
  private changeDetectorRef;
19
- private _keyManager;
20
- private _selectionChangesUnsubscribe$;
21
- private _bindKeyEventUnsubscribe;
22
- private _modelValues;
18
+ private keyManager;
19
+ private bindKeyEventUnsubscribe;
20
+ private modelValues;
23
21
  private hostRenderer;
24
22
  /** The currently selected options. */
25
23
  selectionModel: SelectionModel<any>;
26
24
  disabled: boolean;
27
- layout: ThyListLayout;
28
- _isList: boolean;
29
- _isSelectionList: boolean;
30
- multiple: boolean;
31
- isLayoutGrid: boolean;
32
25
  /**
33
26
  * @internal
34
27
  */
35
28
  options: QueryList<ThyListOption>;
36
29
  /**
37
30
  * 改变 grid item 的选择模式,使其支持多选
38
- * @default true
39
31
  */
40
- set thyMultiple(value: boolean);
32
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
41
33
  /**
42
34
  * 绑定键盘事件的容器
43
35
  * @type HTMLElement | ElementRef | string
44
36
  * @default thy-selection-list 组件绑定的元素
45
37
  */
46
- thyBindKeyEventContainer: HTMLElement | ElementRef | string;
38
+ readonly thyBindKeyEventContainer: import("@angular/core").InputSignal<string | HTMLElement | ElementRef<any>>;
47
39
  /**
48
40
  * 出现滚动条的容器
49
41
  * @type HTMLElement | ElementRef | string
50
42
  * @default thy-selection-list 组件绑定的元素
51
43
  */
52
- thyScrollContainer: HTMLElement | ElementRef | string;
44
+ readonly thyScrollContainer: import("@angular/core").InputSignal<string | HTMLElement | ElementRef<any>>;
53
45
  /**
54
46
  * 键盘事件触发 Before 调用,如果返回 false 则停止继续执行
55
47
  */
56
- thyBeforeKeydown: (event?: KeyboardEvent) => boolean;
48
+ readonly thyBeforeKeydown: import("@angular/core").InputSignal<(event?: KeyboardEvent) => boolean>;
57
49
  /**
58
50
  * Option Value 唯一的 Key,用于存储哪些选择被选中的唯一值,只有 Option 的 thyValue 是对象的时才可以传入该选项
59
51
  */
60
- thyUniqueKey: string;
52
+ readonly thyUniqueKey: import("@angular/core").InputSignal<string>;
61
53
  /**
62
54
  * 比较2个选项的 Value 是否相同
63
55
  */
64
- thyCompareWith: (o1: any, o2: any) => boolean;
56
+ readonly thyCompareWith: import("@angular/core").InputSignal<(o1: any, o2: any) => boolean>;
65
57
  /**
66
58
  * grid item 的展示样式
67
59
  * @type list | grid
68
- * @default list
69
60
  */
70
- set thyLayout(value: ThyListLayout);
61
+ readonly layout: import("@angular/core").InputSignal<ThyListLayout>;
62
+ readonly isLayoutGrid: import("@angular/core").Signal<boolean>;
71
63
  /**
72
64
  * 是否自动激活第一项
73
65
  */
74
- set thyAutoActiveFirstItem(value: boolean);
66
+ readonly thyAutoActiveFirstItem: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
75
67
  /**
76
68
  * 改变 grid item 的大小,支持默认以及 sm 两种大小
77
69
  * @type sm | md | lg
78
70
  */
79
- set thySize(value: ThyListSize);
80
- private spaceEnabled;
71
+ readonly thySize: import("@angular/core").InputSignal<ThyListSize>;
81
72
  /**
82
73
  * 是否按下空格切换聚焦选项
83
74
  */
84
- set thySpaceKeyEnabled(value: boolean);
75
+ readonly thySpaceKeyEnabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
85
76
  /**
86
77
  * 每当选项的选定状态发生更改时,都会触发更改事件
87
- * @type EventEmitter<ThySelectionListChange>
88
78
  */
89
- readonly thySelectionChange: EventEmitter<ThySelectionListChange>;
90
- private autoActiveFirstItem;
91
- private _onTouched;
92
- private _onChange;
93
- private _emitChangeEvent;
94
- private _emitModelValueChange;
95
- private _toggleFocusedOption;
96
- private _initializeFocusKeyManager;
97
- private _instanceSelectionModel;
98
- private _getElementBySelector;
99
- private _compareValue;
100
- private _getOptionSelectionValue;
101
- private _setSelectionByValues;
102
- private _setAllOptionsSelected;
103
- private _getOptionByValue;
104
- private _getActiveOption;
105
- private _setListSize;
79
+ readonly thySelectionChange: import("@angular/core").OutputEmitterRef<ThySelectionListChange<any>>;
80
+ private onTouched;
81
+ private onChange;
82
+ constructor();
83
+ private emitChangeEvent;
84
+ private emitModelValueChange;
85
+ private toggleFocusedOption;
86
+ private initializeFocusKeyManager;
87
+ private instanceSelectionModel;
88
+ private getElementBySelector;
89
+ private compareValue;
90
+ private getOptionSelectionValue;
91
+ private setSelectionByValues;
92
+ private setAllOptionsSelected;
93
+ private getOptionByValue;
94
+ private getActiveOption;
95
+ private setListSize;
106
96
  ngOnInit(): void;
107
97
  writeValue(value: any[] | any): void;
108
98
  registerOnChange(fn: any): void;
@@ -122,8 +112,5 @@ export declare class ThySelectionList implements OnInit, OnDestroy, AfterContent
122
112
  ngAfterContentInit(): void;
123
113
  ngOnDestroy(): void;
124
114
  static ɵfac: i0.ɵɵFactoryDeclaration<ThySelectionList, never>;
125
- static ɵcmp: i0.ɵɵComponentDeclaration<ThySelectionList, "thy-selection-list,[thy-selection-list]", never, { "thyMultiple": { "alias": "thyMultiple"; "required": false; }; "thyBindKeyEventContainer": { "alias": "thyBindKeyEventContainer"; "required": false; }; "thyScrollContainer": { "alias": "thyScrollContainer"; "required": false; }; "thyBeforeKeydown": { "alias": "thyBeforeKeydown"; "required": false; }; "thyUniqueKey": { "alias": "thyUniqueKey"; "required": false; }; "thyCompareWith": { "alias": "thyCompareWith"; "required": false; }; "thyLayout": { "alias": "thyLayout"; "required": false; }; "thyAutoActiveFirstItem": { "alias": "thyAutoActiveFirstItem"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thySpaceKeyEnabled": { "alias": "thySpaceKeyEnabled"; "required": false; }; }, { "thySelectionChange": "thySelectionChange"; }, ["options"], ["*"], true, never>;
126
- static ngAcceptInputType_thyMultiple: i1.ThyBooleanInput;
127
- static ngAcceptInputType_thyAutoActiveFirstItem: i1.ThyBooleanInput;
128
- static ngAcceptInputType_thySpaceKeyEnabled: i1.ThyBooleanInput;
115
+ static ɵcmp: i0.ɵɵComponentDeclaration<ThySelectionList, "thy-selection-list,[thy-selection-list]", never, { "multiple": { "alias": "thyMultiple"; "required": false; "isSignal": true; }; "thyBindKeyEventContainer": { "alias": "thyBindKeyEventContainer"; "required": false; "isSignal": true; }; "thyScrollContainer": { "alias": "thyScrollContainer"; "required": false; "isSignal": true; }; "thyBeforeKeydown": { "alias": "thyBeforeKeydown"; "required": false; "isSignal": true; }; "thyUniqueKey": { "alias": "thyUniqueKey"; "required": false; "isSignal": true; }; "thyCompareWith": { "alias": "thyCompareWith"; "required": false; "isSignal": true; }; "layout": { "alias": "thyLayout"; "required": false; "isSignal": true; }; "thyAutoActiveFirstItem": { "alias": "thyAutoActiveFirstItem"; "required": false; "isSignal": true; }; "thySize": { "alias": "thySize"; "required": false; "isSignal": true; }; "thySpaceKeyEnabled": { "alias": "thySpaceKeyEnabled"; "required": false; "isSignal": true; }; }, { "thySelectionChange": "thySelectionChange"; }, ["options"], ["*"], true, never>;
129
116
  }