ng-zorro-antd-cascader.mjs.map 118 KB

1
  1. {"version":3,"file":"ng-zorro-antd-cascader.mjs","sources":["../../components/cascader/typings.ts","../../components/cascader/utils.ts","../../components/cascader/cascader-option.component.ts","../../components/cascader/cascader-tree.service.ts","../../components/cascader/cascader.service.ts","../../components/cascader/cascader.component.ts","../../components/cascader/cascader.module.ts","../../components/cascader/public-api.ts","../../components/cascader/ng-zorro-antd-cascader.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Observable } from 'rxjs';\n\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny, NzSizeLDSType } from 'ng-zorro-antd/core/types';\n\nimport { NzCascaderTreeService } from './cascader-tree.service';\n\nexport type NzCascaderExpandTrigger = 'click' | 'hover';\nexport type NzCascaderTriggerType = 'click' | 'hover';\nexport type NzCascaderSize = NzSizeLDSType;\n\nexport type NzCascaderFilter = (searchValue: string, path: NzCascaderOption[]) => boolean;\nexport type NzCascaderSorter = (a: NzCascaderOption[], b: NzCascaderOption[], inputValue: string) => number;\nexport type NzCascaderPlacement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n\nexport interface NzCascaderOption {\n value?: NzSafeAny;\n label?: string;\n title?: string;\n disabled?: boolean;\n loading?: boolean;\n isLeaf?: boolean;\n children?: NzCascaderOption[];\n disableCheckbox?: boolean;\n\n [key: string]: NzSafeAny;\n}\n\nexport interface NzShowSearchOptions {\n filter?: NzCascaderFilter;\n sorter?: NzCascaderSorter;\n}\n\nexport function isShowSearchObject(options: NzShowSearchOptions | boolean): options is NzShowSearchOptions {\n return typeof options !== 'boolean';\n}\n\n/**\n * To avoid circular dependency, provide an interface of `NzCascaderComponent`\n * for `NzCascaderService`.\n */\nexport interface NzCascaderComponentAsSource {\n inputValue: string;\n nzShowSearch: NzShowSearchOptions | boolean;\n nzLabelProperty: string;\n nzValueProperty: string;\n nzChangeOnSelect: boolean;\n selectedNodes: NzTreeNode[];\n\n get treeService(): NzCascaderTreeService;\n\n coerceTreeNodes(value: NzSafeAny[]): NzTreeNode[];\n\n updateSelectedNodes(): void;\n\n nzChangeOn?(option: NzCascaderOption, level: number): boolean;\n\n nzLoadData?(node: NzCascaderOption, index: number): PromiseLike<NzSafeAny> | Observable<NzSafeAny>;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\n\nexport function isChildNode(node: NzTreeNode): boolean {\n return node.isLeaf || !node.children || !node.children.length;\n}\n\nexport function isParentNode(node: NzTreeNode): boolean {\n return !!node.children && !!node.children.length && !node.isLeaf;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\n\nimport { NzHighlightModule } from 'ng-zorro-antd/core/highlight';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzCascaderOption } from './typings';\n\n@Component({\n selector: '[nz-cascader-option]',\n exportAs: 'nzCascaderOption',\n imports: [NgTemplateOutlet, NzHighlightModule, NzIconModule, NzOutletModule],\n template: `\n @if (checkable) {\n <span\n class=\"ant-cascader-checkbox\"\n [class.ant-cascader-checkbox-checked]=\"checked\"\n [class.ant-cascader-checkbox-indeterminate]=\"halfChecked\"\n [class.ant-cascader-checkbox-disabled]=\"disabled\"\n (click)=\"onCheckboxClick($event)\"\n >\n <span class=\"ant-cascader-checkbox-inner\"></span>\n </span>\n }\n\n @if (optionTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: node.origin, index: columnIndex }\"\n />\n } @else {\n <div\n class=\"ant-cascader-menu-item-content\"\n [innerHTML]=\"node.title | nzHighlight: highlightText : 'g' : 'ant-cascader-menu-item-keyword'\"\n ></div>\n }\n\n @if (!node.isLeaf || node.children?.length || node.isLoading) {\n <div class=\"ant-cascader-menu-item-expand-icon\">\n @if (node.isLoading) {\n <nz-icon nzType=\"loading\" />\n } @else {\n <ng-container *nzStringTemplateOutlet=\"expandIcon\">\n <nz-icon [nzType]=\"$any(expandIcon)\" />\n </ng-container>\n }\n </div>\n }\n `,\n host: {\n class: 'ant-cascader-menu-item ant-cascader-menu-item-expanded',\n '[attr.title]': 'node.title',\n '[class.ant-cascader-menu-item-active]': 'activated',\n '[class.ant-cascader-menu-item-expand]': '!node.isLeaf',\n '[class.ant-cascader-menu-item-disabled]': 'node.isDisabled'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NzCascaderOptionComponent implements OnInit {\n @Input() optionTemplate: TemplateRef<NzCascaderOption> | null = null;\n @Input() node!: NzTreeNode;\n @Input() activated = false;\n @Input() highlightText!: string;\n @Input() nzLabelProperty = 'label';\n @Input({ transform: numberAttribute }) columnIndex!: number;\n @Input() expandIcon: string | TemplateRef<void> = '';\n @Input() dir: Direction = 'ltr';\n @Input({ transform: booleanAttribute }) checkable?: boolean = false;\n\n @Output() readonly check = new EventEmitter<void>();\n\n public readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.expandIcon === '' && this.dir === 'rtl') {\n this.expandIcon = 'left';\n } else if (this.expandIcon === '') {\n this.expandIcon = 'right';\n }\n }\n\n get checked(): boolean {\n return this.node.isChecked;\n }\n\n get halfChecked(): boolean {\n return this.node.isHalfChecked;\n }\n\n get disabled(): boolean {\n return this.node.isDisabled || this.node.isDisableCheckbox;\n }\n\n markForCheck(): void {\n this.cdr.markForCheck();\n }\n\n onCheckboxClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.checkable) {\n return;\n }\n this.check.emit();\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NzTreeBaseService, NzTreeNode, NzTreeNodeKey } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { arraysEqual, isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { NzCascaderOption } from './typings';\n\ninterface InternalFieldNames {\n label: string;\n value: string;\n}\n\n@Injectable()\nexport class NzCascaderTreeService extends NzTreeBaseService {\n fieldNames: InternalFieldNames = {\n label: 'label',\n value: 'value'\n };\n missingNodeList: NzTreeNode[] = [];\n\n override treeNodePostProcessor = (node: NzTreeNode): void => {\n node.key = this.getOptionValue(node);\n node.title = this.getOptionLabel(node);\n };\n\n getOptionValue(node: NzTreeNode): NzSafeAny {\n return node.origin[this.fieldNames.value || 'value'];\n }\n\n getOptionLabel(node: NzTreeNode): string {\n return node.origin[this.fieldNames.label || 'label'];\n }\n\n get children(): NzTreeNode[] {\n return this.rootNodes;\n }\n\n set children(value: Array<NzTreeNode | NzSafeAny>) {\n this.rootNodes = value.map(v => (v instanceof NzTreeNode ? v : new NzTreeNode(v, null)));\n }\n\n constructor() {\n super();\n }\n\n /**\n * Map list of nodes to list of option\n */\n toOptions(nodes: NzTreeNode[]): NzCascaderOption[] {\n return nodes.map(node => node.origin);\n }\n\n getAncestorNodeList(node: NzTreeNode | null): NzTreeNode[] {\n if (!node) {\n return [];\n }\n if (node.parentNode) {\n return [...this.getAncestorNodeList(node.parentNode), node];\n }\n return [node];\n }\n\n /**\n * Render by nzCheckedKeys\n * When keys equals null, just render with checkStrictly\n *\n * @param paths\n * @param checkStrictly\n */\n conductCheckPaths(paths: NzTreeNodeKey[][] | null, checkStrictly: boolean): void {\n this.checkedNodeList = [];\n this.halfCheckedNodeList = [];\n this.missingNodeList = [];\n const existsPathList: NzTreeNodeKey[][] = [];\n const calc = (nodes: NzTreeNode[]): void => {\n nodes.forEach(node => {\n if (paths === null) {\n // render tree if no default checked keys found\n node.isChecked = !!node.origin.checked;\n } else {\n // if node is in checked path\n const nodePath = this.getAncestorNodeList(node).map(n => this.getOptionValue(n));\n if (paths.some(keys => arraysEqual(nodePath, keys))) {\n node.isChecked = true;\n node.isHalfChecked = false;\n existsPathList.push(nodePath);\n } else {\n node.isChecked = false;\n node.isHalfChecked = false;\n }\n }\n if (node.children.length > 0) {\n calc(node.children);\n }\n });\n };\n calc(this.rootNodes);\n this.refreshCheckState(checkStrictly);\n this.missingNodeList = this.getMissingNodeList(paths, existsPathList);\n }\n\n conductSelectedPaths(paths: NzTreeNodeKey[][], isMulti: boolean): void {\n this.selectedNodeList.forEach(node => (node.isSelected = false));\n this.selectedNodeList = [];\n this.missingNodeList = [];\n const existsPathList: NzTreeNodeKey[][] = [];\n const calc = (nodes: NzTreeNode[]): boolean =>\n nodes.every(node => {\n // if node is in selected path\n const nodePath = this.getAncestorNodeList(node).map(n => this.getOptionValue(n));\n if (paths.some(keys => arraysEqual(nodePath, keys))) {\n node.isSelected = true;\n this.setSelectedNodeList(node);\n existsPathList.push(nodePath);\n if (!isMulti) {\n // if not support multi select\n return false;\n }\n } else {\n node.isSelected = false;\n }\n if (node.children.length > 0) {\n // Recursion\n return calc(node.children);\n }\n return true;\n });\n calc(this.rootNodes);\n this.missingNodeList = this.getMissingNodeList(paths, existsPathList);\n }\n\n private getMissingNodeList(paths: NzTreeNodeKey[][] | null, existsPathList: NzTreeNodeKey[][]): NzTreeNode[] {\n if (!paths) {\n return [];\n }\n return paths\n .filter(path => !existsPathList.some(keys => arraysEqual(path, keys)))\n .map(path => this.createMissingNode(path))\n .filter(isNotNil);\n }\n\n private createMissingNode(path: NzTreeNodeKey[]): NzTreeNode | null {\n if (!path?.length) {\n return null;\n }\n\n const createOption = (key: NzTreeNodeKey): NzSafeAny => {\n return {\n [this.fieldNames.value || 'value']: key,\n [this.fieldNames.label || 'label']: key\n };\n };\n\n let node = new NzTreeNode(createOption(path[0]), null, this);\n\n for (let i = 1; i < path.length; i++) {\n const childNode = new NzTreeNode(createOption(path[i]));\n node.addChildren([childNode]);\n node = childNode;\n }\n\n return node;\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, from, Subject } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nimport { isShowSearchObject, NzCascaderComponentAsSource, NzCascaderFilter, NzCascaderOption } from './typings';\nimport { isChildNode, isParentNode } from './utils';\n\n/**\n * All data is stored and parsed in NzCascaderService.\n */\n@Injectable()\nexport class NzCascaderService implements OnDestroy {\n /** Activated options in each column. */\n activatedNodes: NzTreeNode[] = [];\n\n /** An array to store cascader items arranged in different layers. */\n columns: NzTreeNode[][] = [];\n\n /** If user has entered searching mode. */\n inSearchingMode = false;\n\n values: NzSafeAny[] = [];\n\n /**\n * Emit an event when loading state changes.\n * Emit true if nzOptions is loading by `nzLoadData`.\n */\n readonly $loading = new BehaviorSubject<boolean>(false);\n\n /**\n * Emit an event to notify cascader it needs to redraw because activated or\n * selected options are changed.\n */\n readonly $redraw = new Subject<void>();\n\n /**\n * Emit an event when an option gets selected.\n * Emit true if a leaf options is selected.\n */\n readonly $nodeSelected = new Subject<NzTreeNode | null>();\n\n /**\n * Emit an event to notify cascader it needs to quit searching mode.\n * Only emit when user do select a searching option.\n */\n readonly $quitSearching = new Subject<void>();\n\n /** To hold columns before entering searching mode. */\n private columnSnapshot: NzTreeNode[][] = [[]];\n\n private cascaderComponent!: NzCascaderComponentAsSource;\n\n private searchOptionPathMap = new Map<NzTreeNode, NzCascaderOption[]>();\n\n /** Return cascader options in the first layer. */\n get nzOptions(): NzCascaderOption[] {\n return this.cascaderComponent.treeService.toOptions(this.columns[0] || []);\n }\n\n ngOnDestroy(): void {\n this.$redraw.complete();\n this.$quitSearching.complete();\n this.$nodeSelected.complete();\n this.$loading.complete();\n this.searchOptionPathMap.clear();\n }\n\n /**\n * Bind cascader component so this service could use inputs.\n */\n withComponent(cascaderComponent: NzCascaderComponentAsSource): void {\n this.cascaderComponent = cascaderComponent;\n }\n\n /**\n * Try to set an option as activated.\n *\n * @param node Cascader option node\n * @param columnIndex Of which column this option is in\n * @param performSelect Select\n * @param multiple Multiple mode\n * @param loadingChildren Try to load children asynchronously.\n */\n setNodeActivated(\n node: NzTreeNode,\n columnIndex: number,\n performSelect: boolean = false,\n multiple: boolean = false,\n loadingChildren: boolean = true\n ): void {\n if (node.isDisabled) {\n return;\n }\n\n this.activatedNodes[columnIndex] = node;\n this.trackAncestorActivatedNodes(columnIndex);\n this.dropBehindActivatedNodes(columnIndex);\n\n if (isParentNode(node)) {\n // Parent option that has children.\n this.setColumnData(node.children!, columnIndex + 1);\n } else if (!node.isLeaf && loadingChildren) {\n // Parent option that should try to load children asynchronously.\n this.loadChildren(node, columnIndex);\n } else if (node.isLeaf) {\n // Leaf option.\n this.dropBehindColumns(columnIndex);\n }\n\n // Actually perform selection to make an options not only activated but also selected.\n if (performSelect && node.isSelectable) {\n this.setNodeSelected(node, columnIndex, multiple);\n }\n\n this.$redraw.next();\n }\n\n /**\n * Set an option as selected.\n * @param node\n * @param index\n * @param multiple\n */\n setNodeSelected(node: NzTreeNode, index: number, multiple: boolean = false): void {\n const changeOn = this.cascaderComponent.nzChangeOn;\n const shouldPerformSelection = (o: NzCascaderOption, i: number): boolean =>\n typeof changeOn === 'function' ? changeOn(o, i) : false;\n\n if (\n multiple ||\n node.isLeaf ||\n this.cascaderComponent.nzChangeOnSelect ||\n shouldPerformSelection(node.origin, index)\n ) {\n node.isSelected = true;\n this.cascaderComponent.treeService.setSelectedNodeList(node, multiple);\n this.cascaderComponent.updateSelectedNodes();\n this.$redraw.next();\n this.$nodeSelected.next(node);\n }\n }\n\n setNodeDeactivatedSinceColumn(column: number): void {\n this.dropBehindActivatedNodes(column - 1);\n this.dropBehindColumns(column);\n this.$redraw.next();\n }\n\n /**\n * Set a searching option as selected, finishing up things.\n *\n * @param node\n * @param multiple\n */\n setSearchOptionSelected(node: NzTreeNode, multiple = false): void {\n this.setNodeSelected(node, node.level, multiple);\n\n setTimeout(() => {\n // Reset data and tell UI only to remove input and reset dropdown width style.\n this.$quitSearching.next();\n this.$redraw.next();\n }, 200);\n }\n\n /**\n * Reset node's `title` and `disabled` status and clear `searchOptionPathMap`.\n */\n private clearSearchOptions(): void {\n for (const node of this.searchOptionPathMap.keys()) {\n node.isDisabled = node.origin.disabled || false;\n node.title = this.getOptionLabel(node.origin);\n }\n this.searchOptionPathMap.clear();\n }\n\n /**\n * Filter cascader options to reset `columns`.\n *\n * @param searchValue The string user wants to search.\n */\n prepareSearchOptions(searchValue: string): void {\n const results: NzTreeNode[] = []; // Search results only have one layer.\n const path: NzTreeNode[] = [];\n const defaultFilter: NzCascaderFilter = (i, p) =>\n p.some(o => {\n const label = this.getOptionLabel(o);\n return !!label && label.indexOf(i) !== -1;\n });\n const showSearch = this.cascaderComponent.nzShowSearch;\n const filter = isShowSearchObject(showSearch) && showSearch.filter ? showSearch.filter : defaultFilter;\n const sorter = isShowSearchObject(showSearch) && showSearch.sorter ? showSearch.sorter : null;\n const loopChild = (node: NzTreeNode, forceDisabled = false): void => {\n path.push(node);\n const cPath = this.cascaderComponent.treeService.toOptions(path);\n if (filter(searchValue, cPath)) {\n this.searchOptionPathMap.set(node, cPath);\n node.isDisabled = forceDisabled || node.isDisabled;\n node.title = cPath.map(p => this.getOptionLabel(p)).join(' / ');\n results.push(node);\n }\n path.pop();\n };\n const loopParent = (node: NzTreeNode, forceDisabled = false): void => {\n const disabled = forceDisabled || node.isDisabled;\n path.push(node);\n node.children!.forEach(sNode => {\n if (!sNode.isLeaf) {\n loopParent(sNode, disabled);\n }\n if (sNode.isLeaf || !sNode.children || !sNode.children.length) {\n loopChild(sNode, disabled);\n }\n });\n path.pop();\n };\n\n if (!this.columnSnapshot.length) {\n this.columns = [[]];\n return;\n }\n\n this.columnSnapshot[0].forEach(o => (isChildNode(o) ? loopChild(o) : loopParent(o)));\n\n if (sorter) {\n results.sort((a, b) => sorter(this.searchOptionPathMap.get(a)!, this.searchOptionPathMap.get(b)!, searchValue));\n }\n\n this.columns = [results];\n this.$redraw.next(); // Search results may be empty, so should redraw.\n }\n\n /**\n * Set searching mode by UI. It deals with things not directly related to UI.\n *\n * @param toSearching If this cascader is entering searching mode\n */\n setSearchingMode(toSearching: boolean): void {\n this.inSearchingMode = toSearching;\n\n if (toSearching) {\n this.clearSearchOptions(); // if reset nzOptions when searching, should clear searchOptionPathMap\n this.columnSnapshot = [...this.columns];\n this.activatedNodes = [];\n } else {\n // User quit searching mode without selecting an option.\n this.clearSearchOptions();\n this.activatedNodes = [];\n\n setTimeout(() => {\n this.columns = [...this.columnSnapshot];\n if (this.cascaderComponent.selectedNodes.length) {\n const activatedNode = this.cascaderComponent.selectedNodes[0];\n const columnIndex = activatedNode.level;\n this.activatedNodes[columnIndex] = activatedNode;\n this.trackAncestorActivatedNodes(columnIndex);\n this.trackAncestorColumnData(columnIndex);\n }\n this.$redraw.next();\n });\n }\n\n this.$redraw.next();\n }\n\n /**\n * Clear selected options.\n */\n clear(): void {\n this.values = [];\n this.activatedNodes = [];\n this.dropBehindColumns(0);\n this.$redraw.next();\n this.$nodeSelected.next(null);\n }\n\n getOptionLabel(o: NzCascaderOption): string {\n return o[this.cascaderComponent.nzLabelProperty || 'label'] as string;\n }\n\n getOptionValue(o: NzCascaderOption): NzSafeAny {\n return o[this.cascaderComponent.nzValueProperty || 'value'];\n }\n\n /**\n * Try to insert options into a column.\n *\n * @param nodes Options to insert\n * @param columnIndex Position\n */\n setColumnData(nodes: NzTreeNode[], columnIndex: number): void {\n this.columns[columnIndex] = nodes;\n this.dropBehindColumns(columnIndex);\n }\n\n /**\n * Set all columns data according to activate option's path\n */\n private trackAncestorColumnData(startIndex: number): void {\n const node = this.activatedNodes[startIndex];\n if (!node) {\n return;\n }\n\n this.dropBehindColumns(startIndex);\n for (let i = 0; i < startIndex; i++) {\n this.columns[i + 1] = this.activatedNodes[i].children;\n }\n }\n\n /**\n * Set all ancestor options as activated.\n */\n private trackAncestorActivatedNodes(startIndex: number): void {\n for (let i = startIndex - 1; i >= 0; i--) {\n if (!this.activatedNodes[i]) {\n this.activatedNodes[i] = this.activatedNodes[i + 1].parentNode!;\n }\n }\n }\n\n private dropBehindActivatedNodes(lastReserveIndex: number): void {\n this.activatedNodes = this.activatedNodes.splice(0, lastReserveIndex + 1);\n }\n\n dropBehindColumns(lastReserveIndex: number): void {\n if (lastReserveIndex < this.columns.length - 1) {\n this.columns = this.columns.slice(0, lastReserveIndex + 1);\n }\n }\n\n /**\n * Load children of an option asynchronously.\n */\n loadChildren(node: NzTreeNode | null, columnIndex: number, onLoaded?: (options: NzCascaderOption[]) => void): void {\n const isRoot = columnIndex < 0 || !isNotNil(node);\n const option: NzCascaderOption = node?.origin || {};\n const loadFn = this.cascaderComponent.nzLoadData;\n\n if (loadFn) {\n // If there isn't any option in columns.\n this.$loading.next(isRoot);\n\n if (node) {\n node.isLoading = true;\n }\n\n from(loadFn(option, columnIndex))\n .pipe(\n finalize(() => {\n node && (node.isLoading = false);\n this.$loading.next(false);\n this.$redraw.next();\n })\n )\n .subscribe({\n next: () => {\n if (option.children) {\n if (!isRoot) {\n const nodes = option.children.map(o => new NzTreeNode(o as NzTreeNodeOptions, node));\n node.children = nodes;\n this.setColumnData(nodes, columnIndex + 1);\n } else {\n // If it's root node, we should initialize the tree.\n const nodes = this.cascaderComponent.coerceTreeNodes(option.children);\n this.cascaderComponent.treeService.initTree(nodes);\n this.setColumnData(nodes, 0);\n }\n onLoaded?.(option.children);\n }\n },\n error: () => {\n node && (node.isLeaf = true);\n }\n });\n }\n }\n\n isLoaded(index: number): boolean {\n return !!this.columns[index] && this.columns[index].length > 0;\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { BACKSPACE, DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n CdkConnectedOverlay,\n ConnectedOverlayPositionChange,\n ConnectionPositionPair,\n OverlayModule\n} from '@angular/cdk/overlay';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { SlicePipe } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n signal,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzFormItemFeedbackIconComponent, NzFormNoStatusService, NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport {\n DEFAULT_CASCADER_POSITIONS,\n getPlacementName,\n NzOverlayModule,\n POSITION_MAP,\n POSITION_TYPE\n} from 'ng-zorro-antd/core/overlay';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { NzTreeBase, NzTreeNode } from 'ng-zorro-antd/core/tree';\nimport {\n NgClassInterface,\n NgStyleInterface,\n NzSafeAny,\n NzSizeLDSType,\n NzStatus,\n NzValidateStatus\n} from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, getStatusClassNames, isNotNil, toArray } from 'ng-zorro-antd/core/util';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzCascaderI18nInterface, NzI18nService } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport {\n NzSelectClearComponent,\n NzSelectItemComponent,\n NzSelectPlaceholderComponent,\n NzSelectPlacementType,\n NzSelectSearchComponent\n} from 'ng-zorro-antd/select';\nimport { NZ_SPACE_COMPACT_ITEM_TYPE, NZ_SPACE_COMPACT_SIZE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space';\n\nimport { NzCascaderOptionComponent } from './cascader-option.component';\nimport { NzCascaderTreeService } from './cascader-tree.service';\nimport { NzCascaderService } from './cascader.service';\nimport {\n NzCascaderComponentAsSource,\n NzCascaderExpandTrigger,\n NzCascaderOption,\n NzCascaderPlacement,\n NzCascaderSize,\n NzCascaderTriggerType,\n NzShowSearchOptions\n} from './typings';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'cascader';\nconst defaultDisplayRender = (labels: string[]): string => labels.join(' / ');\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-cascader, [nz-cascader]',\n exportAs: 'nzCascader',\n preserveWhitespaces: false,\n template: `\n @if (nzShowInput) {\n <div #selectContainer class=\"ant-select-selector\">\n @if (nzMultiple) {\n @for (node of selectedNodes | slice: 0 : nzMaxTagCount; track node) {\n <nz-select-item\n [deletable]=\"true\"\n [disabled]=\"nzDisabled\"\n [label]=\"nzDisplayWith(getAncestorOptionList(node))\"\n (delete)=\"removeSelected(node)\"\n ></nz-select-item>\n }\n @if (selectedNodes.length > nzMaxTagCount) {\n <nz-select-item\n [deletable]=\"false\"\n [disabled]=\"false\"\n [label]=\"'+ ' + (selectedNodes.length - nzMaxTagCount) + ' ...'\"\n ></nz-select-item>\n }\n }\n\n <nz-select-search\n [showInput]=\"!!nzShowSearch\"\n (isComposingChange)=\"isComposingChange($event)\"\n [value]=\"inputValue\"\n (valueChange)=\"inputValue = $event\"\n [mirrorSync]=\"nzMultiple\"\n [disabled]=\"nzDisabled\"\n [autofocus]=\"nzAutoFocus\"\n [focusTrigger]=\"menuVisible\"\n ></nz-select-search>\n\n @if (showPlaceholder) {\n <nz-select-placeholder\n [placeholder]=\"nzPlaceHolder || locale?.placeholder!\"\n [style.display]=\"inputValue || isComposing ? 'none' : 'block'\"\n ></nz-select-placeholder>\n }\n\n @if (showLabelRender) {\n <nz-select-item\n [deletable]=\"false\"\n [disabled]=\"nzDisabled\"\n [label]=\"labelRenderText\"\n [contentTemplateOutlet]=\"isLabelRenderTemplate ? nzLabelRender : null\"\n [contentTemplateOutletContext]=\"labelRenderContext\"\n ></nz-select-item>\n }\n </div>\n\n @if (nzShowArrow) {\n <span class=\"ant-select-arrow\" [class.ant-select-arrow-loading]=\"isLoading\">\n @if (!isLoading) {\n <nz-icon [nzType]=\"$any(nzSuffixIcon)\" [class.ant-cascader-picker-arrow-expand]=\"menuVisible\" />\n } @else {\n <nz-icon nzType=\"loading\" />\n }\n\n @if (hasFeedback && !!status) {\n <nz-form-item-feedback-icon [status]=\"status\" />\n }\n </span>\n }\n @if (clearIconVisible) {\n <nz-select-clear (clear)=\"clearSelection($event)\"></nz-select-clear>\n }\n }\n <ng-content></ng-content>\n\n <ng-template\n cdkConnectedOverlay\n nzConnectedOverlay\n [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayTransformOriginOn]=\"'.ant-cascader-dropdown'\"\n [cdkConnectedOverlayOpen]=\"menuVisible\"\n (overlayOutsideClick)=\"onClickOutside($event)\"\n (detach)=\"closeMenu()\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div\n class=\"ant-select-dropdown ant-cascader-dropdown\"\n [class.ant-select-dropdown-placement-bottomLeft]=\"dropdownPosition === 'bottomLeft'\"\n [class.ant-select-dropdown-placement-bottomRight]=\"dropdownPosition === 'bottomRight'\"\n [class.ant-select-dropdown-placement-topLeft]=\"dropdownPosition === 'topLeft'\"\n [class.ant-select-dropdown-placement-topRight]=\"dropdownPosition === 'topRight'\"\n [class.ant-cascader-dropdown-rtl]=\"dir === 'rtl'\"\n [@slideMotion]=\"'enter'\"\n [@.disabled]=\"!!noAnimation?.nzNoAnimation\"\n [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n (mouseenter)=\"onTriggerMouseEnter()\"\n (mouseleave)=\"onTriggerMouseLeave($event)\"\n >\n <div\n #menu\n class=\"ant-cascader-menus\"\n [class.ant-cascader-rtl]=\"dir === 'rtl'\"\n [class.ant-cascader-menus-hidden]=\"!menuVisible\"\n [class.ant-cascader-menu-empty]=\"shouldShowEmpty\"\n [class]=\"nzMenuClassName\"\n [style]=\"nzMenuStyle\"\n >\n @if (shouldShowEmpty) {\n <ul class=\"ant-cascader-menu\" [style.width]=\"dropdownWidthStyle\" [style.height]=\"dropdownHeightStyle\">\n <li class=\"ant-cascader-menu-item ant-cascader-menu-item-disabled\">\n <nz-embed-empty\n class=\"ant-cascader-menu-item-content\"\n [nzComponentName]=\"'cascader'\"\n [specificContent]=\"nzNotFoundContent\"\n />\n </li>\n </ul>\n } @else {\n @for (options of cascaderService.columns; track options; let i = $index) {\n <ul\n class=\"ant-cascader-menu\"\n role=\"menuitemcheckbox\"\n [class]=\"nzColumnClassName\"\n [style.height]=\"dropdownHeightStyle\"\n >\n @for (option of options; track option) {\n <li\n nz-cascader-option\n [expandIcon]=\"nzExpandIcon\"\n [columnIndex]=\"i\"\n [nzLabelProperty]=\"nzLabelProperty\"\n [optionTemplate]=\"nzOptionRender\"\n [activated]=\"isOptionActivated(option, i)\"\n [highlightText]=\"inSearchingMode ? inputValue : ''\"\n [node]=\"option\"\n [dir]=\"dir\"\n [checkable]=\"nzMultiple\"\n (mouseenter)=\"onOptionMouseEnter(option, i, $event)\"\n (mouseleave)=\"onOptionMouseLeave(option, i, $event)\"\n (click)=\"onOptionClick(option, i, $event)\"\n (check)=\"onOptionCheck(option, i)\"\n ></li>\n }\n </ul>\n }\n }\n </div>\n </div>\n </ng-template>\n `,\n animations: [slideMotion],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzCascaderComponent),\n multi: true\n },\n { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'select' },\n NzCascaderService,\n NzDestroyService,\n NzCascaderTreeService\n ],\n host: {\n '[attr.tabIndex]': '\"0\"',\n '[class.ant-select-in-form-item]': '!!nzFormStatusService',\n '[class.ant-select-lg]': 'finalSize() === \"large\"',\n '[class.ant-select-sm]': 'finalSize() === \"small\"',\n '[class.ant-select-allow-clear]': 'nzAllowClear',\n '[class.ant-select-show-arrow]': 'nzShowArrow',\n '[class.ant-select-show-search]': '!!nzShowSearch',\n '[class.ant-select-disabled]': 'nzDisabled',\n '[class.ant-select-open]': 'menuVisible',\n '[class.ant-select-focused]': 'isFocused',\n '[class.ant-select-multiple]': 'nzMultiple',\n '[class.ant-select-single]': '!nzMultiple',\n '[class.ant-select-rtl]': `dir === 'rtl'`\n },\n hostDirectives: [NzSpaceCompactItemDirective],\n imports: [\n SlicePipe,\n OverlayModule,\n FormsModule,\n NzIconModule,\n NzEmptyModule,\n NzFormItemFeedbackIconComponent,\n NzOverlayModule,\n NzNoAnimationDirective,\n NzSelectClearComponent,\n NzSelectItemComponent,\n NzSelectPlaceholderComponent,\n NzSelectSearchComponent,\n NzCascaderOptionComponent\n ]\n})\nexport class NzCascaderComponent\n extends NzTreeBase\n implements NzCascaderComponentAsSource, OnInit, OnDestroy, OnChanges, ControlValueAccessor\n{\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n @ViewChild('selectContainer', { static: false }) selectContainer!: ElementRef;\n\n @ViewChild(NzSelectSearchComponent)\n set input(inputComponent: NzSelectSearchComponent | undefined) {\n this.input$.next(inputComponent?.inputElement);\n }\n\n get input(): ElementRef<HTMLInputElement> | undefined {\n return this.input$.getValue();\n }\n\n /** Used to store the native `<input type=\"search\" />` element since it might be set asynchronously. */\n private input$ = new BehaviorSubject<ElementRef<HTMLInputElement> | undefined>(undefined);\n\n @ViewChild('menu', { static: false }) menu!: ElementRef;\n @ViewChild(CdkConnectedOverlay, { static: false }) overlay!: CdkConnectedOverlay;\n @ViewChildren(NzCascaderOptionComponent) cascaderItems!: QueryList<NzCascaderOptionComponent>;\n\n @Input() nzOptionRender: TemplateRef<{ $implicit: NzCascaderOption; index: number }> | null = null;\n @Input({ transform: booleanAttribute }) nzShowInput = true;\n @Input({ transform: booleanAttribute }) nzShowArrow = true;\n @Input({ transform: booleanAttribute }) nzAllowClear = true;\n @Input({ transform: booleanAttribute }) nzAutoFocus = false;\n @Input({ transform: booleanAttribute }) nzChangeOnSelect = false;\n @Input({ transform: booleanAttribute }) nzDisabled = false;\n @Input() nzColumnClassName?: string;\n @Input() nzExpandTrigger: NzCascaderExpandTrigger = 'click';\n @Input() nzValueProperty: string = 'value';\n @Input() nzLabelProperty: string = 'label';\n @Input() nzLabelRender: TemplateRef<typeof this.labelRenderContext> | null = null;\n @Input() nzNotFoundContent?: string | TemplateRef<void>;\n @Input() @WithConfig() nzSize: NzCascaderSize = 'default';\n @Input() @WithConfig() nzBackdrop = false;\n @Input() nzShowSearch: boolean | NzShowSearchOptions = false;\n @Input() nzPlaceHolder: string = '';\n @Input() nzMenuClassName?: string;\n @Input() nzMenuStyle: NgStyleInterface | null = null;\n /**\n * Duration in milliseconds before opening the menu when the mouse enters the trigger.\n * @default 150\n */\n @Input({ transform: numberAttribute }) nzMouseLeaveDelay: number = 150;\n /**\n * Duration in milliseconds before closing the menu when the mouse leaves the trigger.\n * @default 150\n */\n @Input({ transform: numberAttribute }) nzMouseEnterDelay: number = 150;\n @Input() nzStatus: NzStatus = '';\n @Input({ transform: booleanAttribute }) nzMultiple: boolean = false;\n @Input() nzMaxTagCount: number = Infinity;\n @Input() nzPlacement: NzCascaderPlacement = 'bottomLeft';\n\n @Input() nzTriggerAction: NzCascaderTriggerType | NzCascaderTriggerType[] = ['click'] as NzCascaderTriggerType[];\n @Input() nzChangeOn?: (option: NzCascaderOption, level: number) => boolean;\n @Input() nzLoadData?: (node: NzCascaderOption, index: number) => PromiseLike<NzSafeAny> | Observable<NzSafeAny>;\n @Input() nzDisplayWith: (nodes: NzCascaderOption[]) => string | undefined = (nodes: NzCascaderOption[]) => {\n return defaultDisplayRender(nodes.map(n => this.cascaderService.getOptionLabel(n!)));\n };\n // TODO: RTL\n @Input() nzSuffixIcon: string | TemplateRef<void> = 'down';\n @Input() nzExpandIcon: string | TemplateRef<void> = '';\n\n @Input()\n get nzOptions(): NzCascaderOption[] | null {\n return this.cascaderService.nzOptions;\n }\n\n set nzOptions(options: NzCascaderOption[] | null) {\n const nodes = this.coerceTreeNodes(options || []);\n this.treeService.initTree(nodes);\n this.cascaderService.columns = [nodes];\n this.updateSelectedNodes(true);\n\n if (this.inSearchingMode) {\n this.cascaderService.setSearchingMode(this.inSearchingMode);\n this.cascaderService.prepareSearchOptions(this.inputValue);\n }\n }\n\n get treeService(): NzCascaderTreeService {\n return this.nzTreeService as NzCascaderTreeService;\n }\n\n @Output() readonly nzVisibleChange = new EventEmitter<boolean>();\n @Output() readonly nzSelectionChange = new EventEmitter<NzCascaderOption[]>();\n @Output() readonly nzRemoved = new EventEmitter<NzCascaderOption>();\n @Output() readonly nzClear = new EventEmitter<void>();\n\n prefixCls: string = 'ant-select';\n statusCls: NgClassInterface = {};\n status: NzValidateStatus = '';\n hasFeedback: boolean = false;\n\n /**\n * If the dropdown should show the empty content.\n * `true` if there's no options.\n */\n shouldShowEmpty: boolean = false;\n\n el: HTMLElement;\n menuVisible = false;\n isLoading = false;\n labelRenderText?: string;\n labelRenderContext = {};\n onChange = Function.prototype;\n onTouched = Function.prototype;\n positions: ConnectionPositionPair[] = [...DEFAULT_CASCADER_POSITIONS];\n\n /**\n * Dropdown width in pixel.\n */\n dropdownWidthStyle?: string;\n dropdownHeightStyle: 'auto' | '' = '';\n dropdownPosition: NzCascaderPlacement = 'bottomLeft';\n isFocused = false;\n\n locale!: NzCascaderI18nInterface;\n dir: Direction = 'ltr';\n\n isComposing = false;\n\n protected get overlayOrigin(): ElementRef {\n return this.elementRef;\n }\n\n protected finalSize = computed(() => {\n if (this.compactSize) {\n return this.compactSize();\n }\n return this.size();\n });\n\n private size = signal<NzSizeLDSType>(this.nzSize);\n private compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true });\n private inputString = '';\n private isOpening = false;\n private delayMenuTimer?: ReturnType<typeof setTimeout>;\n private delaySelectTimer?: ReturnType<typeof setTimeout>;\n private isNzDisableFirstChange: boolean = true;\n selectedNodes: NzTreeNode[] = [];\n\n get inSearchingMode(): boolean {\n return this.cascaderService.inSearchingMode;\n }\n\n set inputValue(inputValue: string) {\n this.inputString = inputValue;\n this.toggleSearchingMode(!!inputValue);\n }\n\n get inputValue(): string {\n return this.inputString;\n }\n\n private get hasInput(): boolean {\n return !!this.inputValue;\n }\n\n private get hasValue(): boolean {\n return this.cascaderService.values && this.cascaderService.values.length > 0;\n }\n\n get showLabelRender(): boolean {\n return !this.hasInput && !this.nzMultiple && !!this.selectedNodes.length;\n }\n\n get showPlaceholder(): boolean {\n return !(this.hasInput || this.hasValue);\n }\n\n get clearIconVisible(): boolean {\n return this.nzAllowClear && !this.nzDisabled && (this.hasValue || this.hasInput);\n }\n\n get isLabelRenderTemplate(): boolean {\n return !!this.nzLabelRender;\n }\n\n noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true });\n nzFormStatusService = inject(NzFormStatusService, { optional: true });\n private nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n private nzConfigService = inject(NzConfigService);\n public cascaderService = inject(NzCascaderService);\n\n constructor(\n treeService: NzCascaderTreeService,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n private i18nService: NzI18nService,\n private destroy$: NzDestroyService,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private directionality: Directionality\n ) {\n super(treeService);\n this.el = elementRef.nativeElement;\n this.cascaderService.withComponent(this);\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-select');\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-cascader');\n }\n\n ngOnInit(): void {\n this.nzFormStatusService?.formStatusChanges\n .pipe(\n distinctUntilChanged((pre, cur) => pre.status === cur.status && pre.hasFeedback === cur.hasFeedback),\n withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : of(false)),\n map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })),\n takeUntil(this.destroy$)\n )\n .subscribe(({ status, hasFeedback }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n\n const srv = this.cascaderService;\n\n srv.$redraw.pipe(takeUntil(this.destroy$)).subscribe(() => {\n // These operations would not mutate data.\n this.checkChildren();\n this.setDisplayLabel();\n this.cdr.detectChanges();\n this.reposition();\n this.setDropdownStyles();\n });\n\n srv.$loading.pipe(takeUntil(this.destroy$)).subscribe(loading => {\n this.isLoading = loading;\n });\n\n srv.$nodeSelected.pipe(takeUntil(this.destroy$)).subscribe(node => {\n if (!node) {\n this.emitValue([]);\n this.nzSelectionChange.emit([]);\n } else {\n const shouldClose =\n // keep menu opened if multiple mode\n !this.nzMultiple && (node.isLeaf || (this.nzChangeOnSelect && this.nzExpandTrigger === 'hover'));\n if (shouldClose) {\n this.delaySetMenuVisible(false);\n }\n this.nzSelectionChange.emit(this.getAncestorOptionList(node));\n this.cdr.markForCheck();\n }\n });\n\n srv.$quitSearching.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.inputValue = '';\n this.dropdownWidthStyle = '';\n });\n\n this.i18nService.localeChange.pipe(startWith(), takeUntil(this.destroy$)).subscribe(() => {\n this.setLocale();\n });\n\n this.size.set(this.nzSize);\n this.nzConfigService\n .getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.size.set(this.nzSize);\n this.cdr.markForCheck();\n });\n\n this.dir = this.directionality.value;\n this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.dir = this.directionality.value;\n srv.$redraw.next();\n });\n\n this.setupSelectionChangeListener();\n this.setupChangeListener();\n this.setupKeydownListener();\n this.setupFocusListener();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzStatus, nzSize, nzPlacement } = changes;\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n if (nzSize) {\n this.size.set(nzSize.currentValue);\n }\n if (nzPlacement) {\n const { currentValue } = nzPlacement;\n this.dropdownPosition = currentValue as NzCascaderPlacement;\n const listOfPlacement = ['bottomLeft', 'topLeft', 'bottomRight', 'topRight'];\n if (currentValue && listOfPlacement.includes(currentValue)) {\n this.positions = [POSITION_MAP[currentValue as POSITION_TYPE]];\n } else {\n this.positions = listOfPlacement.map(e => POSITION_MAP[e as POSITION_TYPE]);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.clearDelayMenuTimer();\n this.clearDelaySelectTimer();\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n writeValue(value: NzSafeAny): void {\n if (isNotNil(value)) {\n if (this.nzMultiple) {\n this.cascaderService.values = toArray(value);\n } else {\n this.cascaderService.values = [toArray(value)];\n }\n // need clear selected nodes when user set value before updating\n this.clearSelectedNodes();\n this.updateSelectedNodes(true, false);\n } else {\n this.cascaderService.values = [];\n this.clearSelectedNodes();\n this.selectedNodes = [];\n this.cascaderService.$redraw.next();\n }\n }\n\n private setupSelectionChangeListener(): void {\n merge(this.nzSelectionChange, this.nzRemoved, this.nzClear)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateSelectedNodes();\n this.emitValue(this.cascaderService.values);\n this.cascaderService.$redraw.next();\n });\n }\n\n delaySetMenuVisible(visible: boolean, delay: number = 100, setOpening: boolean = false): void {\n this.clearDelayMenuTimer();\n if (delay) {\n if (visible && setOpening) {\n this.isOpening = true;\n }\n this.delayMenuTimer = setTimeout(() => {\n this.setMenuVisible(visible);\n this.cdr.detectChanges();\n this.clearDelayMenuTimer();\n if (visible) {\n setTimeout(() => {\n this.isOpening = false;\n }, 100);\n }\n }, delay);\n } else {\n this.setMenuVisible(visible);\n }\n }\n\n setMenuVisible(visible: boolean): void {\n if (this.nzDisabled || this.menuVisible === visible) {\n return;\n }\n if (visible) {\n this.cascaderService.$redraw.next();\n this.updateSelectedNodes(!!this.nzLoadData);\n this.scrollToActivatedOptions();\n } else {\n this.inputValue = '';\n }\n\n this.menuVisible = visible;\n this.nzVisibleChange.emit(visible);\n this.cdr.detectChanges();\n }\n\n private clearDelayMenuTimer(): void {\n if (this.delayMenuTimer) {\n clearTimeout(this.delayMenuTimer);\n this.delayMenuTimer = undefined;\n }\n }\n\n clearSelection(event?: Event): void {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.clearSelectedNodes();\n this.labelRenderText = '';\n this.labelRenderContext = {};\n this.inputValue = '';\n this.setMenuVisible(false);\n this.cascaderService.clear();\n this.nzClear.emit();\n }\n\n clearSelectedNodes(): void {\n this.selectedNodes.forEach(node => {\n this.removeSelected(node, false);\n });\n }\n\n emitValue(values: NzSafeAny[] | null): void {\n if (this.nzMultiple) {\n this.onChange(values);\n } else {\n this.onChange(values?.length ? values[0] : []);\n }\n }\n\n /**\n * @internal\n */\n getSubmitValue(): NzSafeAny[] {\n if (this.nzMultiple) {\n return this.cascaderService.values;\n } else {\n return this.cascaderService.values?.length ? this.cascaderService.values[0] : [];\n }\n }\n\n focus(): void {\n if (!this.isFocused) {\n (this.input?.nativeElement || this.el).focus();\n this.isFocused = true;\n }\n }\n\n blur(): void {\n if (this.isFocused) {\n (this.input?.nativeElement || this.el).blur();\n this.isFocused = false;\n }\n }\n\n handleInputBlur(): void {\n this.menuVisible ? this.focus() : this.blur();\n }\n\n handleInputFocus(): void {\n this.focus();\n }\n\n isComposingChange(isComposing: boolean): void {\n this.isComposing = isComposing;\n }\n\n @HostListener('click')\n onTriggerClick(): void {\n if (this.nzDisabled) {\n return;\n }\n if (this.nzShowSearch) {\n this.focus();\n }\n if (this.isActionTrigger('click')) {\n this.delaySetMenuVisible(!this.menuVisible, 100);\n }\n this.onTouched();\n }\n\n @HostListener('mouseenter')\n onTriggerMouseEnter(): void {\n if (this.nzDisabled || !this.isActionTrigger('hover')) {\n return;\n }\n\n this.delaySetMenuVisible(true, this.nzMouseEnterDelay, true);\n }\n\n @HostListener('mouseleave', ['$event'])\n onTriggerMouseLeave(event: MouseEvent): void {\n if (this.nzDisabled || !this.menuVisible || this.isOpening || !this.isActionTrigger('hover')) {\n event.preventDefault();\n return;\n }\n const mouseTarget = event.relatedTarget as HTMLElement;\n const hostEl = this.el;\n const menuEl = this.menu && (this.menu.nativeElement as HTMLElement);\n if (hostEl.contains(mouseTarget) || (menuEl && menuEl.contains(mouseTarget))) {\n return;\n }\n this.delaySetMenuVisible(false, this.nzMouseLeaveDelay);\n }\n\n onOptionMouseEnter(node: NzTreeNode, columnIndex: number, event: Event): void {\n event.preventDefault();\n if (this.nzExpandTrigger === 'hover') {\n if (!node.isLeaf) {\n this.delaySetOptionActivated(node, columnIndex, false);\n } else {\n this.cascaderService.setNodeDeactivatedSinceColumn(columnIndex);\n }\n }\n }\n\n onOptionMouseLeave(node: NzTreeNode, _columnIndex: number, event: Event): void {\n event.preventDefault();\n if (this.nzExpandTrigger === 'hover' && !node.isLeaf) {\n this.clearDelaySelectTimer();\n }\n }\n\n /**\n * Get ancestor options of a node\n */\n protected getAncestorOptionList(node: NzTreeNode | null): NzCascaderOption[] {\n const ancestors = this.treeService.getAncestorNodeList(node);\n return this.treeService.toOptions(ancestors);\n }\n\n updateSelectedNodes(init: boolean = false, updateValue = true): void {\n const value = this.cascaderService.values;\n const multiple = this.nzMultiple;\n\n /**\n * Update selected nodes and emit value\n * @param shouldUpdateValue if false, only update selected nodes\n */\n const updateNodesAndValue = (shouldUpdateValue: boolean): void => {\n this.selectedNodes = [\n ...this.treeService.missingNodeList,\n ...(this.nzMultiple ? this.getCheckedNodeList() : this.getSelectedNodeList())\n ].sort((a, b) => {\n const indexA = value.indexOf(a.key);\n const indexB = value.indexOf(b.key);\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB;\n }\n if (indexA !== -1) {\n return -1;\n }\n if (indexB !== -1) {\n return 1;\n }\n return 0;\n });\n if (shouldUpdateValue) {\n this.cascaderService.values = this.selectedNodes.map(node =>\n this.getAncestorOptionList(node).map(o => this.cascaderService.getOptionValue(o))\n );\n }\n this.cascaderService.$redraw.next();\n };\n\n if (init) {\n const defaultValue = value[0];\n const lastColumnIndex = defaultValue?.length ? defaultValue.length - 1 : 0;\n this.treeService.fieldNames = {\n value: this.nzValueProperty,\n label: this.nzLabelProperty\n };\n this.treeService.isMultiple = multiple;\n this.treeService.isCheckStrictly = false;\n\n /**\n * check whether the node is checked or selected according to the value\n */\n const checkNodeStates = (): void => {\n if (multiple) {\n this.treeService.conductCheckPaths(value, this.treeService.isCheckStrictly);\n } else {\n this.treeService.conductSelectedPaths(value, multiple);\n }\n };\n\n const initColumnWithIndex = (columnIndex = 0): void => {\n const activatedOptionSetter = (): void => {\n const currentValue = defaultValue?.[columnIndex];\n\n if (!isNotNil(currentValue)) {\n this.cascaderService.$redraw.next();\n return;\n }\n\n const node =\n this.cascaderService.columns[columnIndex].find(\n n => this.cascaderService.getOptionValue(n.origin) === currentValue\n ) || null;\n\n if (isNotNil(node)) {\n this.cascaderService.setNodeActivated(node, columnIndex, false, multiple, false);\n\n // Load next level options till leaf node\n if (columnIndex < lastColumnIndex) {\n initColumnWithIndex(columnIndex + 1);\n }\n }\n\n checkNodeStates();\n updateNodesAndValue(false);\n };\n\n if (this.cascaderService.isLoaded(columnIndex) || !this.nzLoadData) {\n activatedOptionSetter();\n } else {\n const node = this.cascaderService.activatedNodes[columnIndex - 1];\n this.cascaderService.loadChildren(node, columnIndex - 1, activatedOptionSetter);\n }\n };\n\n // if nzLoadData set, load first level data asynchronously\n if (this.nzLoadData) {\n initColumnWithIndex();\n } else {\n const nodes = this.coerceTreeNodes(this.nzOptions || []);\n this.treeService.initTree(nodes);\n this.cascaderService.setColumnData(nodes, 0);\n initColumnWithIndex();\n }\n }\n\n updateNodesAndValue(updateValue);\n }\n\n onOptionClick(node: NzTreeNode, columnIndex: number, event: Event): void {\n if (event) {\n event.preventDefault();\n }\n if (node && node.isDisabled) {\n return;\n }\n\n this.el.focus();\n\n // for multiple mode, click the leaf node can be seen as check action\n if (this.nzMultiple && node.isLeaf) {\n this.onOptionCheck(node, columnIndex, true);\n } else {\n this.inSearchingMode\n ? this.cascaderService.setSearchOptionSelected(node, this.nzMultiple)\n : this.cascaderService.setNodeActivated(node, columnIndex, !this.nzMultiple);\n }\n }\n\n onOptionCheck(node: NzTreeNode, columnIndex: number, performActivate = false): void {\n if (!this.nzMultiple || node.isDisabled || node.isDisableCheckbox) {\n return;\n }\n\n node.isChecked = !node.isChecked;\n node.isHalfChecked = false;\n this.treeService.setCheckedNodeList(node);\n this.treeService.conduct(node, this.treeService.isCheckStrictly);\n\n if (this.inSearchingMode) {\n this.cascaderService.setSearchOptionSelected(node, true);\n } else if (performActivate) {\n this.cascaderService.setNodeActivated(node, columnIndex, true, true);\n } else {\n // only update selected nodes and not set node activated by default\n this.cascaderService.setNodeSelected(node, columnIndex, true);\n }\n }\n\n removeSelected(node: NzTreeNode, emitEvent = true): void {\n node.isSelected = false;\n node.isChecked = false;\n if (this.nzMultiple) {\n this.treeService.conduct(node, this.treeService.isCheckStrictly);\n }\n this.treeService.setSelectedNodeList(node, this.nzMultiple);\n if (emitEvent) {\n this.nzRemoved.emit(node.origin);\n }\n }\n\n onClickOutside(event: MouseEvent): void {\n const target = _getEventTarget(event);\n if (!this.el.contains(target as Node)) {\n this.closeMenu();\n }\n }\n\n onPositionChange(position: ConnectedOverlayPositionChange): void {\n const placement = getPlacementName(position);\n this.dropdownPosition = placement as NzSelectPlacementType;\n }\n\n private isActionTrigger(action: 'click' | 'hover'): boolean {\n return typeof this.nzTriggerAction === 'string'\n ? this.nzTriggerAction === action\n : this.nzTriggerAction.indexOf(action) !== -1;\n }\n\n private onEnter(): void {\n const columnIndex = Math.max(this.cascaderService.activatedNodes.length - 1, 0);\n const node = this.cascaderService.activatedNodes[columnIndex];\n if (node && !node.isDisabled) {\n this.inSearchingMode\n ? this.cascaderService.setSearchOptionSelected(node)\n : this.cascaderService.setNodeActivated(node, columnIndex, true);\n }\n }\n\n private moveUpOrDown(isUp: boolean): void {\n const columnIndex = Math.max(this.cascaderService.activatedNodes.length - 1, 0);\n const activatedNode = this.cascaderService.activatedNodes[columnIndex];\n const options = this.cascaderService.columns[columnIndex] || [];\n const length = options.length;\n let nextIndex = -1;\n if (!activatedNode) {\n // Not selected options in this column\n nextIndex = isUp ? length : -1;\n } else {\n nextIndex = options.indexOf(activatedNode);\n }\n\n while (true) {\n nextIndex = isUp ? nextIndex - 1 : nextIndex + 1;\n if (nextIndex < 0 || nextIndex >= length) {\n break;\n }\n const nextOption = options[nextIndex];\n if (!nextOption || nextOption.isDisabled) {\n continue;\n }\n this.cascaderService.setNodeActivated(nextOption, columnIndex);\n break;\n }\n }\n\n private moveLeft(): void {\n const options = this.cascaderService.activatedNodes;\n if (options.length) {\n options.pop(); // Remove the last one\n this.cascaderService.setNodeDeactivatedSinceColumn(options.length); // collapse menu\n }\n }\n\n private moveRight(): void {\n const length = this.cascaderService.activatedNodes.length;\n const options = this.cascaderService.columns[length];\n if (options && options.length) {\n const nextOpt = options.find(o => !o.isDisabled);\n if (nextOpt) {\n this.cascaderService.setNodeActivated(nextOpt, length);\n }\n }\n }\n\n private clearDelaySelectTimer(): void {\n if (this.delaySelectTimer) {\n clearTimeout(this.delaySelectTimer);\n this.delaySelectTimer = undefined;\n }\n }\n\n private delaySetOptionActivated(node: NzTreeNode, columnIndex: number, performSelect: boolean): void {\n this.clearDelaySelectTimer();\n this.delaySelectTimer = setTimeout(() => {\n this.cascaderService.setNodeActivated(node, columnIndex, performSelect, this.nzMultiple);\n this.delaySelectTimer = undefined;\n }, 150);\n }\n\n private toggleSearchingMode(toSearching: boolean): void {\n if (this.inSearchingMode !== toSearching) {\n this.cascaderService.setSearchingMode(toSearching);\n }\n\n if (this.inSearchingMode) {\n this.cascaderService.prepareSearchOptions(this.inputValue);\n }\n }\n\n isOptionActivated(node: NzTreeNode, index: number): boolean {\n return this.cascaderService.activatedNodes[index] === node;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || isDisabled;\n this.isNzDisableFirstChange = false;\n if (this.nzDisabled) {\n this.closeMenu();\n }\n }\n\n closeMenu(): void {\n this.blur();\n this.clearDelayMenuTimer();\n this.setMenuVisible(false);\n // if select none, clear previous state\n if (!this.hasValue && this.cascaderService.columns.length) {\n this.cascaderService.dropBehindColumns(0);\n }\n }\n\n /**\n * Reposition the cascader panel. When a menu opens, the cascader expands\n * and may exceed the boundary of browser's window.\n */\n private reposition(): void {\n if (this.overlay && this.overlay.overlayRef && this.menuVisible) {\n Promise.resolve().then(() => {\n this.overlay.overlayRef.updatePosition();\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * When a cascader options is changed, a child needs to know that it should re-render.\n */\n private checkChildren(): void {\n if (this.cascaderItems) {\n this.cascaderItems.forEach(item => item.markForCheck());\n }\n }\n\n private setDisplayLabel(): void {\n if (this.nzMultiple) {\n return;\n }\n\n const node = this.selectedNodes.length ? this.selectedNodes[0] : null;\n const selectedOptions = this.getAncestorOptionList(node);\n const labels: string[] = selectedOptions.map(o => this.cascaderService.getOptionLabel(o));\n\n if (this.isLabelRenderTemplate) {\n this.labelRenderContext = { labels, selectedOptions };\n }\n this.labelRenderText = defaultDisplayRender.call(this, labels);\n }\n\n private setDropdownStyles(): void {\n const firstColumn = this.cascaderService.columns[0];\n\n this.shouldShowEmpty =\n (this.inSearchingMode && (!firstColumn || !firstColumn.length)) || // Should show empty when there's no searching result\n (!(this.nzOptions && this.nzOptions.length) && !this.nzLoadData); // Should show when there's no options and developer does not use nzLoadData\n this.dropdownHeightStyle = this.shouldShowEmpty ? 'auto' : '';\n\n if (this.input) {\n this.dropdownWidthStyle =\n this.inSearchingMode || this.shouldShowEmpty ? `${this.selectContainer.nativeElement.offsetWidth}px` : '';\n }\n }\n\n private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.cdr.markForCheck();\n // render status if nzStatus is set\n this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n Object.keys(this.statusCls).forEach(status => {\n if (this.statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n\n private setLocale(): void {\n this.locale = this.i18nService.getLocaleData('global');\n this.cdr.markForCheck();\n }\n\n private scrollToActivatedOptions(): void {\n // The `scrollIntoView` is a native DOM API, which doesn't require Angular to run\n // a change detection when a promise microtask is resolved.\n this.ngZone.runOutsideAngular(() => {\n Promise.resolve().then(() => {\n // scroll only until option menu view is ready\n this.cascaderItems\n .toArray()\n .filter(e => e.activated)\n .forEach(e => {\n e.nativeElement.scrollIntoView({ block: 'start', inline: 'nearest' });\n });\n });\n });\n }\n\n private setupChangeListener(): void {\n this.input$\n .pipe(\n switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'change')),\n takeUntil(this.destroy$)\n )\n .subscribe(event => event.stopPropagation());\n }\n\n private setupFocusListener(): void {\n this.input$\n .pipe(\n switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'focus')),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.handleInputFocus());\n\n this.input$\n .pipe(\n switchMap(input => fromEventOutsideAngular(input?.nativeElement, 'blur')),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.handleInputBlur());\n }\n\n private setupKeydownListener(): void {\n fromEventOutsideAngular<KeyboardEvent>(this.el, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n const keyCode = event.keyCode;\n\n if (\n keyCode !== DOWN_ARROW &&\n keyCode !== UP_ARROW &&\n keyCode !== LEFT_ARROW &&\n keyCode !== RIGHT_ARROW &&\n keyCode !== ENTER &&\n keyCode !== BACKSPACE &&\n keyCode !== ESCAPE\n ) {\n return;\n }\n\n // Press any keys above to reopen menu.\n if (!this.menuVisible && keyCode !== BACKSPACE && keyCode !== ESCAPE) {\n // The `setMenuVisible` runs `detectChanges()`, so we don't need to run `markForCheck()` additionally.\n return this.ngZone.run(() => this.setMenuVisible(true));\n }\n\n // Make these keys work as default in searching mode.\n if (this.inSearchingMode && (keyCode === BACKSPACE || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW)) {\n return;\n }\n\n if (!this.menuVisible) {\n return;\n }\n\n event.preventDefault();\n\n this.ngZone.run(() => {\n // Interact with the component.\n if (keyCode === DOWN_ARROW) {\n this.moveUpOrDown(false);\n } else if (keyCode === UP_ARROW) {\n this.moveUpOrDown(true);\n } else if (keyCode === LEFT_ARROW) {\n this.moveLeft();\n } else if (keyCode === RIGHT_ARROW) {\n this.moveRight();\n } else if (keyCode === ENTER) {\n this.onEnter();\n }\n // `@HostListener`s run `markForCheck()` internally before calling the actual handler so\n // we call `markForCheck()` to be backwards-compatible.\n this.cdr.markForCheck();\n });\n });\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzCascaderComponent } from './cascader.component';\n\n@NgModule({\n imports: [NzCascaderComponent],\n exports: [NzCascaderComponent]\n})\nexport class NzCascaderModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './typings';\nexport * from './utils';\nexport * from './cascader.component';\nexport * from './cascader.module';\nexport * from './cascader.service';\nexport * from './cascader-option.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NzCascaderTreeService","i2","i3","i7"],"mappings":"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"}