UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

1,016 lines (1,008 loc) 80.5 kB
import * as i3$1 from '@angular/cdk/bidi'; import { BidiModule } from '@angular/cdk/bidi'; import * as i5 from '@angular/cdk/scrolling'; import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling'; import * as i7 from '@angular/common'; import { CommonModule } from '@angular/common'; import * as i0 from '@angular/core'; import { Component, ChangeDetectionStrategy, Input, EventEmitter, Host, Optional, Output, Injectable, SkipSelf, forwardRef, ContentChild, ViewChild, NgModule } from '@angular/core'; import * as i4 from 'ng-zorro-antd/core/highlight'; import { NzHighlightModule } from 'ng-zorro-antd/core/highlight'; import * as i4$1 from 'ng-zorro-antd/core/no-animation'; import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation'; import * as i2 from 'ng-zorro-antd/core/outlet'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import * as i3 from 'ng-zorro-antd/icon'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { __decorate } from 'tslib'; import { Subject, fromEvent } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import * as i1 from 'ng-zorro-antd/core/tree'; import { NzTreeBaseService, NzTreeBase, flattenTreeData, NzTreeHigherOrderServiceToken } from 'ng-zorro-antd/core/tree'; export { NzTreeNode } from 'ng-zorro-antd/core/tree'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { treeCollapseMotion } from 'ng-zorro-antd/core/animation'; import * as i2$1 from 'ng-zorro-antd/core/config'; import { WithConfig } from 'ng-zorro-antd/core/config'; /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeDropIndicatorComponent { constructor(cdr) { this.cdr = cdr; this.level = 1; this.direction = 'ltr'; this.style = {}; } ngOnChanges(_changes) { this.renderIndicator(this.dropPosition, this.direction); } renderIndicator(dropPosition, direction = 'ltr') { const offset = 4; const startPosition = direction === 'ltr' ? 'left' : 'right'; const endPosition = direction === 'ltr' ? 'right' : 'left'; const style = { [startPosition]: `${offset}px`, [endPosition]: '0px' }; switch (dropPosition) { case -1: style.top = `${-3}px`; break; case 1: style.bottom = `${-3}px`; break; case 0: // dropPosition === 0 style.bottom = `${-3}px`; style[startPosition] = `${offset + 24}px`; break; default: style.display = 'none'; break; } this.style = style; this.cdr.markForCheck(); } } NzTreeDropIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeDropIndicatorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); NzTreeDropIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeDropIndicatorComponent, selector: "nz-tree-drop-indicator", inputs: { dropPosition: "dropPosition", level: "level", direction: "direction" }, host: { properties: { "class.ant-tree-drop-indicator": "true", "style": "style" } }, exportAs: ["NzTreeDropIndicator"], usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeDropIndicatorComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-drop-indicator', exportAs: 'NzTreeDropIndicator', template: ``, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[class.ant-tree-drop-indicator]': 'true', '[style]': 'style' } }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { dropPosition: [{ type: Input }], level: [{ type: Input }], direction: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeIndentComponent { constructor() { this.nzTreeLevel = 0; this.nzIsStart = []; this.nzIsEnd = []; this.nzSelectMode = false; this.listOfUnit = []; } ngOnChanges(changes) { const { nzTreeLevel } = changes; if (nzTreeLevel) { this.listOfUnit = [...new Array(nzTreeLevel.currentValue || 0)]; } } } NzTreeIndentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeIndentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NzTreeIndentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeIndentComponent, selector: "nz-tree-indent", inputs: { nzTreeLevel: "nzTreeLevel", nzIsStart: "nzIsStart", nzIsEnd: "nzIsEnd", nzSelectMode: "nzSelectMode" }, host: { properties: { "attr.aria-hidden": "true", "class.ant-tree-indent": "!nzSelectMode", "class.ant-select-tree-indent": "nzSelectMode" } }, exportAs: ["nzTreeIndent"], usesOnChanges: true, ngImport: i0, template: ` <span [class.ant-tree-indent-unit]="!nzSelectMode" [class.ant-select-tree-indent-unit]="nzSelectMode" [class.ant-select-tree-indent-unit-start]="nzSelectMode && nzIsStart[i]" [class.ant-tree-indent-unit-start]="!nzSelectMode && nzIsStart[i]" [class.ant-select-tree-indent-unit-end]="nzSelectMode && nzIsEnd[i]" [class.ant-tree-indent-unit-end]="!nzSelectMode && nzIsEnd[i]" *ngFor="let _ of listOfUnit; let i = index" ></span> `, isInline: true, directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeIndentComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-indent', exportAs: 'nzTreeIndent', template: ` <span [class.ant-tree-indent-unit]="!nzSelectMode" [class.ant-select-tree-indent-unit]="nzSelectMode" [class.ant-select-tree-indent-unit-start]="nzSelectMode && nzIsStart[i]" [class.ant-tree-indent-unit-start]="!nzSelectMode && nzIsStart[i]" [class.ant-select-tree-indent-unit-end]="nzSelectMode && nzIsEnd[i]" [class.ant-tree-indent-unit-end]="!nzSelectMode && nzIsEnd[i]" *ngFor="let _ of listOfUnit; let i = index" ></span> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[attr.aria-hidden]': 'true', '[class.ant-tree-indent]': '!nzSelectMode', '[class.ant-select-tree-indent]': 'nzSelectMode' } }] }], propDecorators: { nzTreeLevel: [{ type: Input }], nzIsStart: [{ type: Input }], nzIsEnd: [{ type: Input }], nzSelectMode: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeNodeBuiltinCheckboxComponent { constructor() { this.nzSelectMode = false; } } NzTreeNodeBuiltinCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeBuiltinCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NzTreeNodeBuiltinCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeNodeBuiltinCheckboxComponent, selector: "nz-tree-node-checkbox[builtin]", inputs: { nzSelectMode: "nzSelectMode", isChecked: "isChecked", isHalfChecked: "isHalfChecked", isDisabled: "isDisabled", isDisableCheckbox: "isDisableCheckbox" }, host: { properties: { "class.ant-select-tree-checkbox": "nzSelectMode", "class.ant-select-tree-checkbox-checked": "nzSelectMode && isChecked", "class.ant-select-tree-checkbox-indeterminate": "nzSelectMode && isHalfChecked", "class.ant-select-tree-checkbox-disabled": "nzSelectMode && (isDisabled || isDisableCheckbox)", "class.ant-tree-checkbox": "!nzSelectMode", "class.ant-tree-checkbox-checked": "!nzSelectMode && isChecked", "class.ant-tree-checkbox-indeterminate": "!nzSelectMode && isHalfChecked", "class.ant-tree-checkbox-disabled": "!nzSelectMode && (isDisabled || isDisableCheckbox)" } }, ngImport: i0, template: ` <span [class.ant-tree-checkbox-inner]="!nzSelectMode" [class.ant-select-tree-checkbox-inner]="nzSelectMode"></span> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeBuiltinCheckboxComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node-checkbox[builtin]', template: ` <span [class.ant-tree-checkbox-inner]="!nzSelectMode" [class.ant-select-tree-checkbox-inner]="nzSelectMode"></span> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[class.ant-select-tree-checkbox]': `nzSelectMode`, '[class.ant-select-tree-checkbox-checked]': `nzSelectMode && isChecked`, '[class.ant-select-tree-checkbox-indeterminate]': `nzSelectMode && isHalfChecked`, '[class.ant-select-tree-checkbox-disabled]': `nzSelectMode && (isDisabled || isDisableCheckbox)`, '[class.ant-tree-checkbox]': `!nzSelectMode`, '[class.ant-tree-checkbox-checked]': `!nzSelectMode && isChecked`, '[class.ant-tree-checkbox-indeterminate]': `!nzSelectMode && isHalfChecked`, '[class.ant-tree-checkbox-disabled]': `!nzSelectMode && (isDisabled || isDisableCheckbox)` } }] }], propDecorators: { nzSelectMode: [{ type: Input }], isChecked: [{ type: Input }], isHalfChecked: [{ type: Input }], isDisabled: [{ type: Input }], isDisableCheckbox: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeNodeSwitcherComponent { constructor() { this.nzSelectMode = false; } get isShowLineIcon() { return !this.isLeaf && !!this.nzShowLine; } get isShowSwitchIcon() { return !this.isLeaf && !this.nzShowLine; } get isSwitcherOpen() { return !!this.isExpanded && !this.isLeaf; } get isSwitcherClose() { return !this.isExpanded && !this.isLeaf; } } NzTreeNodeSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NzTreeNodeSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeNodeSwitcherComponent, selector: "nz-tree-node-switcher", inputs: { nzShowExpand: "nzShowExpand", nzShowLine: "nzShowLine", nzExpandedIcon: "nzExpandedIcon", nzSelectMode: "nzSelectMode", context: "context", isLeaf: "isLeaf", isLoading: "isLoading", isExpanded: "isExpanded" }, host: { properties: { "class.ant-select-tree-switcher": "nzSelectMode", "class.ant-select-tree-switcher-noop": "nzSelectMode && isLeaf", "class.ant-select-tree-switcher_open": "nzSelectMode && isSwitcherOpen", "class.ant-select-tree-switcher_close": "nzSelectMode && isSwitcherClose", "class.ant-tree-switcher": "!nzSelectMode", "class.ant-tree-switcher-noop": "!nzSelectMode && isLeaf", "class.ant-tree-switcher_open": "!nzSelectMode && isSwitcherOpen", "class.ant-tree-switcher_close": "!nzSelectMode && isSwitcherClose" } }, ngImport: i0, template: ` <ng-container *ngIf="isShowSwitchIcon"> <ng-container *ngIf="!isLoading; else loadingTemplate"> <ng-container *nzStringTemplateOutlet="nzExpandedIcon; context: { $implicit: context, origin: context.origin }"> <i nz-icon nzType="caret-down" [class.ant-select-tree-switcher-icon]="nzSelectMode" [class.ant-tree-switcher-icon]="!nzSelectMode" ></i> </ng-container> </ng-container> </ng-container> <ng-container *ngIf="nzShowLine"> <ng-container *ngIf="!isLoading; else loadingTemplate"> <ng-container *nzStringTemplateOutlet="nzExpandedIcon; context: { $implicit: context, origin: context.origin }"> <i *ngIf="isShowLineIcon" nz-icon [nzType]="isSwitcherOpen ? 'minus-square' : 'plus-square'" class="ant-tree-switcher-line-icon" ></i> <i *ngIf="!isShowLineIcon" nz-icon nzType="file" class="ant-tree-switcher-line-icon"></i> </ng-container> </ng-container> </ng-container> <ng-template #loadingTemplate> <i nz-icon nzType="loading" [nzSpin]="true" class="ant-tree-switcher-loading-icon"></i> </ng-template> `, isInline: true, directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeSwitcherComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node-switcher', template: ` <ng-container *ngIf="isShowSwitchIcon"> <ng-container *ngIf="!isLoading; else loadingTemplate"> <ng-container *nzStringTemplateOutlet="nzExpandedIcon; context: { $implicit: context, origin: context.origin }"> <i nz-icon nzType="caret-down" [class.ant-select-tree-switcher-icon]="nzSelectMode" [class.ant-tree-switcher-icon]="!nzSelectMode" ></i> </ng-container> </ng-container> </ng-container> <ng-container *ngIf="nzShowLine"> <ng-container *ngIf="!isLoading; else loadingTemplate"> <ng-container *nzStringTemplateOutlet="nzExpandedIcon; context: { $implicit: context, origin: context.origin }"> <i *ngIf="isShowLineIcon" nz-icon [nzType]="isSwitcherOpen ? 'minus-square' : 'plus-square'" class="ant-tree-switcher-line-icon" ></i> <i *ngIf="!isShowLineIcon" nz-icon nzType="file" class="ant-tree-switcher-line-icon"></i> </ng-container> </ng-container> </ng-container> <ng-template #loadingTemplate> <i nz-icon nzType="loading" [nzSpin]="true" class="ant-tree-switcher-loading-icon"></i> </ng-template> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[class.ant-select-tree-switcher]': 'nzSelectMode', '[class.ant-select-tree-switcher-noop]': 'nzSelectMode && isLeaf', '[class.ant-select-tree-switcher_open]': 'nzSelectMode && isSwitcherOpen', '[class.ant-select-tree-switcher_close]': 'nzSelectMode && isSwitcherClose', '[class.ant-tree-switcher]': '!nzSelectMode', '[class.ant-tree-switcher-noop]': '!nzSelectMode && isLeaf', '[class.ant-tree-switcher_open]': '!nzSelectMode && isSwitcherOpen', '[class.ant-tree-switcher_close]': '!nzSelectMode && isSwitcherClose' } }] }], propDecorators: { nzShowExpand: [{ type: Input }], nzShowLine: [{ type: Input }], nzExpandedIcon: [{ type: Input }], nzSelectMode: [{ type: Input }], context: [{ type: Input }], isLeaf: [{ type: Input }], isLoading: [{ type: Input }], isExpanded: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeNodeTitleComponent { constructor(cdr) { this.cdr = cdr; this.treeTemplate = null; this.selectMode = false; // Drag indicator this.showIndicator = true; } get canDraggable() { return this.draggable && !this.isDisabled ? true : null; } get matchedValue() { return this.isMatched ? this.searchValue : ''; } get isSwitcherOpen() { return this.isExpanded && !this.isLeaf; } get isSwitcherClose() { return !this.isExpanded && !this.isLeaf; } ngOnChanges(changes) { const { showIndicator, dragPosition } = changes; if (showIndicator || dragPosition) { this.cdr.markForCheck(); } } } NzTreeNodeTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeTitleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); NzTreeNodeTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeNodeTitleComponent, selector: "nz-tree-node-title", inputs: { searchValue: "searchValue", treeTemplate: "treeTemplate", draggable: "draggable", showIcon: "showIcon", selectMode: "selectMode", context: "context", icon: "icon", title: "title", isLoading: "isLoading", isSelected: "isSelected", isDisabled: "isDisabled", isMatched: "isMatched", isExpanded: "isExpanded", isLeaf: "isLeaf", showIndicator: "showIndicator", dragPosition: "dragPosition" }, host: { properties: { "attr.title": "title", "attr.draggable": "canDraggable", "attr.aria-grabbed": "canDraggable", "class.draggable": "canDraggable", "class.ant-select-tree-node-content-wrapper": "selectMode", "class.ant-select-tree-node-content-wrapper-open": "selectMode && isSwitcherOpen", "class.ant-select-tree-node-content-wrapper-close": "selectMode && isSwitcherClose", "class.ant-select-tree-node-selected": "selectMode && isSelected", "class.ant-tree-node-content-wrapper": "!selectMode", "class.ant-tree-node-content-wrapper-open": "!selectMode && isSwitcherOpen", "class.ant-tree-node-content-wrapper-close": "!selectMode && isSwitcherClose", "class.ant-tree-node-selected": "!selectMode && isSelected" } }, usesOnChanges: true, ngImport: i0, template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <i nz-icon *ngIf="icon" [nzType]="icon"></i> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue:'i':'font-highlight'"></span> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> </ng-container> `, isInline: true, components: [{ type: NzTreeDropIndicatorComponent, selector: "nz-tree-drop-indicator", inputs: ["dropPosition", "level", "direction"], exportAs: ["NzTreeDropIndicator"] }], directives: [{ type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], pipes: { "nzHighlight": i4.NzHighlightPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeTitleComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node-title', template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <i nz-icon *ngIf="icon" [nzType]="icon"></i> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue:'i':'font-highlight'"></span> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> </ng-container> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[attr.title]': 'title', '[attr.draggable]': 'canDraggable', '[attr.aria-grabbed]': 'canDraggable', '[class.draggable]': 'canDraggable', '[class.ant-select-tree-node-content-wrapper]': `selectMode`, '[class.ant-select-tree-node-content-wrapper-open]': `selectMode && isSwitcherOpen`, '[class.ant-select-tree-node-content-wrapper-close]': `selectMode && isSwitcherClose`, '[class.ant-select-tree-node-selected]': `selectMode && isSelected`, '[class.ant-tree-node-content-wrapper]': `!selectMode`, '[class.ant-tree-node-content-wrapper-open]': `!selectMode && isSwitcherOpen`, '[class.ant-tree-node-content-wrapper-close]': `!selectMode && isSwitcherClose`, '[class.ant-tree-node-selected]': `!selectMode && isSelected` } }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { searchValue: [{ type: Input }], treeTemplate: [{ type: Input }], draggable: [{ type: Input }], showIcon: [{ type: Input }], selectMode: [{ type: Input }], context: [{ type: Input }], icon: [{ type: Input }], title: [{ type: Input }], isLoading: [{ type: Input }], isSelected: [{ type: Input }], isDisabled: [{ type: Input }], isMatched: [{ type: Input }], isExpanded: [{ type: Input }], isLeaf: [{ type: Input }], showIndicator: [{ type: Input }], dragPosition: [{ type: Input }] } }); class NzTreeNodeBuiltinComponent { constructor(nzTreeService, ngZone, renderer, elementRef, cdr, noAnimation) { this.nzTreeService = nzTreeService; this.ngZone = ngZone; this.renderer = renderer; this.elementRef = elementRef; this.cdr = cdr; this.noAnimation = noAnimation; /** * for global property */ this.icon = ''; this.title = ''; this.isLoading = false; this.isSelected = false; this.isDisabled = false; this.isMatched = false; this.isStart = []; this.isEnd = []; this.nzHideUnMatched = false; this.nzNoAnimation = false; this.nzSelectMode = false; this.nzShowIcon = false; this.nzTreeTemplate = null; this.nzSearchValue = ''; this.nzDraggable = false; this.nzClick = new EventEmitter(); this.nzDblClick = new EventEmitter(); this.nzContextMenu = new EventEmitter(); this.nzCheckBoxChange = new EventEmitter(); this.nzExpandChange = new EventEmitter(); this.nzOnDragStart = new EventEmitter(); this.nzOnDragEnter = new EventEmitter(); this.nzOnDragOver = new EventEmitter(); this.nzOnDragLeave = new EventEmitter(); this.nzOnDrop = new EventEmitter(); this.nzOnDragEnd = new EventEmitter(); /** * drag var */ this.destroy$ = new Subject(); this.dragPos = 2; this.dragPosClass = { 0: 'drag-over', 1: 'drag-over-gap-bottom', '-1': 'drag-over-gap-top' }; this.draggingKey = null; this.showIndicator = false; } /** * default set */ get displayStyle() { // to hide unmatched nodes return this.nzSearchValue && this.nzHideUnMatched && !this.isMatched && !this.isExpanded && this.canHide ? 'none' : ''; } get isSwitcherOpen() { return this.isExpanded && !this.isLeaf; } get isSwitcherClose() { return !this.isExpanded && !this.isLeaf; } /** * collapse node * * @param event */ clickExpand(event) { event.preventDefault(); if (!this.isLoading && !this.isLeaf) { // set async state if (this.nzAsyncData && this.nzTreeNode.children.length === 0 && !this.isExpanded) { this.nzTreeNode.isLoading = true; } this.nzTreeNode.setExpanded(!this.isExpanded); } this.nzTreeService.setExpandedNodeList(this.nzTreeNode); const eventNext = this.nzTreeService.formatEvent('expand', this.nzTreeNode, event); this.nzExpandChange.emit(eventNext); } clickSelect(event) { event.preventDefault(); if (this.isSelectable && !this.isDisabled) { this.nzTreeNode.isSelected = !this.nzTreeNode.isSelected; } this.nzTreeService.setSelectedNodeList(this.nzTreeNode); const eventNext = this.nzTreeService.formatEvent('click', this.nzTreeNode, event); this.nzClick.emit(eventNext); } dblClick(event) { event.preventDefault(); const eventNext = this.nzTreeService.formatEvent('dblclick', this.nzTreeNode, event); this.nzDblClick.emit(eventNext); } contextMenu(event) { event.preventDefault(); const eventNext = this.nzTreeService.formatEvent('contextmenu', this.nzTreeNode, event); this.nzContextMenu.emit(eventNext); } /** * check node * * @param event */ clickCheckBox(event) { event.preventDefault(); // return if node is disabled if (this.isDisabled || this.isDisableCheckbox) { return; } this.nzTreeNode.isChecked = !this.nzTreeNode.isChecked; this.nzTreeNode.isHalfChecked = false; this.nzTreeService.setCheckedNodeList(this.nzTreeNode); const eventNext = this.nzTreeService.formatEvent('check', this.nzTreeNode, event); this.nzCheckBoxChange.emit(eventNext); } clearDragClass() { const dragClass = ['drag-over-gap-top', 'drag-over-gap-bottom', 'drag-over', 'drop-target']; dragClass.forEach(e => { this.renderer.removeClass(this.elementRef.nativeElement, e); }); } /** * drag event * * @param e */ handleDragStart(e) { try { // ie throw error // firefox-need-it e.dataTransfer.setData('text/plain', this.nzTreeNode.key); } catch (error) { // empty } this.nzTreeService.setSelectedNode(this.nzTreeNode); this.draggingKey = this.nzTreeNode.key; const eventNext = this.nzTreeService.formatEvent('dragstart', this.nzTreeNode, e); this.nzOnDragStart.emit(eventNext); } handleDragEnter(e) { e.preventDefault(); // reset position this.showIndicator = this.nzTreeNode.key !== this.nzTreeService.getSelectedNode()?.key; this.renderIndicator(2); this.ngZone.run(() => { const eventNext = this.nzTreeService.formatEvent('dragenter', this.nzTreeNode, e); this.nzOnDragEnter.emit(eventNext); }); } handleDragOver(e) { e.preventDefault(); const dropPosition = this.nzTreeService.calcDropPosition(e); if (this.dragPos !== dropPosition) { this.clearDragClass(); this.renderIndicator(dropPosition); // leaf node will pass if (!(this.dragPos === 0 && this.isLeaf)) { this.renderer.addClass(this.elementRef.nativeElement, this.dragPosClass[this.dragPos]); this.renderer.addClass(this.elementRef.nativeElement, 'drop-target'); } } const eventNext = this.nzTreeService.formatEvent('dragover', this.nzTreeNode, e); this.nzOnDragOver.emit(eventNext); } handleDragLeave(e) { e.preventDefault(); this.renderIndicator(2); this.clearDragClass(); const eventNext = this.nzTreeService.formatEvent('dragleave', this.nzTreeNode, e); this.nzOnDragLeave.emit(eventNext); } handleDragDrop(e) { e.preventDefault(); e.stopPropagation(); this.ngZone.run(() => { this.showIndicator = false; this.clearDragClass(); const node = this.nzTreeService.getSelectedNode(); if (!node || (node && node.key === this.nzTreeNode.key) || (this.dragPos === 0 && this.isLeaf)) { return; } // pass if node is leafNo const dropEvent = this.nzTreeService.formatEvent('drop', this.nzTreeNode, e); const dragEndEvent = this.nzTreeService.formatEvent('dragend', this.nzTreeNode, e); if (this.nzBeforeDrop) { this.nzBeforeDrop({ dragNode: this.nzTreeService.getSelectedNode(), node: this.nzTreeNode, pos: this.dragPos }).subscribe((canDrop) => { if (canDrop) { this.nzTreeService.dropAndApply(this.nzTreeNode, this.dragPos); } this.nzOnDrop.emit(dropEvent); this.nzOnDragEnd.emit(dragEndEvent); }); } else if (this.nzTreeNode) { this.nzTreeService.dropAndApply(this.nzTreeNode, this.dragPos); this.nzOnDrop.emit(dropEvent); } }); } handleDragEnd(e) { e.preventDefault(); this.ngZone.run(() => { // if user do not custom beforeDrop if (!this.nzBeforeDrop) { // clear dragging state this.draggingKey = null; const eventNext = this.nzTreeService.formatEvent('dragend', this.nzTreeNode, e); this.nzOnDragEnd.emit(eventNext); } }); } /** * Listening to dragging events. */ handDragEvent() { this.ngZone.runOutsideAngular(() => { if (this.nzDraggable) { const nativeElement = this.elementRef.nativeElement; this.destroy$ = new Subject(); fromEvent(nativeElement, 'dragstart') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragStart(e)); fromEvent(nativeElement, 'dragenter') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragEnter(e)); fromEvent(nativeElement, 'dragover') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragOver(e)); fromEvent(nativeElement, 'dragleave') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragLeave(e)); fromEvent(nativeElement, 'drop') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragDrop(e)); fromEvent(nativeElement, 'dragend') .pipe(takeUntil(this.destroy$)) .subscribe((e) => this.handleDragEnd(e)); } else { this.destroy$.next(); this.destroy$.complete(); } }); } markForCheck() { this.cdr.markForCheck(); } ngOnInit() { this.nzTreeNode.component = this; this.ngZone.runOutsideAngular(() => { fromEvent(this.elementRef.nativeElement, 'mousedown') .pipe(takeUntil(this.destroy$)) .subscribe(event => { if (this.nzSelectMode) { event.preventDefault(); } }); }); } ngOnChanges(changes) { const { nzDraggable } = changes; if (nzDraggable) { this.handDragEvent(); } } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } renderIndicator(dropPosition) { this.ngZone.run(() => { this.showIndicator = dropPosition !== 2; if (this.nzTreeNode.key === this.nzTreeService.getSelectedNode()?.key || (dropPosition === 0 && this.isLeaf)) { return; } this.dragPos = dropPosition; this.cdr.markForCheck(); }); } } NzTreeNodeBuiltinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeBuiltinComponent, deps: [{ token: i1.NzTreeBaseService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i4$1.NzNoAnimationDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); NzTreeNodeBuiltinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzTreeNodeBuiltinComponent, selector: "nz-tree-node[builtin]", inputs: { icon: "icon", title: "title", isLoading: "isLoading", isSelected: "isSelected", isDisabled: "isDisabled", isMatched: "isMatched", isExpanded: "isExpanded", isLeaf: "isLeaf", isChecked: "isChecked", isHalfChecked: "isHalfChecked", isDisableCheckbox: "isDisableCheckbox", isSelectable: "isSelectable", canHide: "canHide", isStart: "isStart", isEnd: "isEnd", nzTreeNode: "nzTreeNode", nzShowLine: "nzShowLine", nzShowExpand: "nzShowExpand", nzCheckable: "nzCheckable", nzAsyncData: "nzAsyncData", nzHideUnMatched: "nzHideUnMatched", nzNoAnimation: "nzNoAnimation", nzSelectMode: "nzSelectMode", nzShowIcon: "nzShowIcon", nzExpandedIcon: "nzExpandedIcon", nzTreeTemplate: "nzTreeTemplate", nzBeforeDrop: "nzBeforeDrop", nzSearchValue: "nzSearchValue", nzDraggable: "nzDraggable" }, outputs: { nzClick: "nzClick", nzDblClick: "nzDblClick", nzContextMenu: "nzContextMenu", nzCheckBoxChange: "nzCheckBoxChange", nzExpandChange: "nzExpandChange", nzOnDragStart: "nzOnDragStart", nzOnDragEnter: "nzOnDragEnter", nzOnDragOver: "nzOnDragOver", nzOnDragLeave: "nzOnDragLeave", nzOnDrop: "nzOnDrop", nzOnDragEnd: "nzOnDragEnd" }, host: { properties: { "class.ant-select-tree-treenode": "nzSelectMode", "class.ant-select-tree-treenode-disabled": "nzSelectMode && isDisabled", "class.ant-select-tree-treenode-switcher-open": "nzSelectMode && isSwitcherOpen", "class.ant-select-tree-treenode-switcher-close": "nzSelectMode && isSwitcherClose", "class.ant-select-tree-treenode-checkbox-checked": "nzSelectMode && isChecked", "class.ant-select-tree-treenode-checkbox-indeterminate": "nzSelectMode && isHalfChecked", "class.ant-select-tree-treenode-selected": "nzSelectMode && isSelected", "class.ant-select-tree-treenode-loading": "nzSelectMode && isLoading", "class.ant-tree-treenode": "!nzSelectMode", "class.ant-tree-treenode-disabled": "!nzSelectMode && isDisabled", "class.ant-tree-treenode-switcher-open": "!nzSelectMode && isSwitcherOpen", "class.ant-tree-treenode-switcher-close": "!nzSelectMode && isSwitcherClose", "class.ant-tree-treenode-checkbox-checked": "!nzSelectMode && isChecked", "class.ant-tree-treenode-checkbox-indeterminate": "!nzSelectMode && isHalfChecked", "class.ant-tree-treenode-selected": "!nzSelectMode && isSelected", "class.ant-tree-treenode-loading": "!nzSelectMode && isLoading", "class.dragging": "draggingKey === nzTreeNode.key", "style.display": "displayStyle" } }, exportAs: ["nzTreeBuiltinNode"], usesOnChanges: true, ngImport: i0, template: ` <nz-tree-indent [nzTreeLevel]="nzTreeNode.level" [nzSelectMode]="nzSelectMode" [nzIsStart]="isStart" [nzIsEnd]="isEnd" ></nz-tree-indent> <nz-tree-node-switcher *ngIf="nzShowExpand" [nzShowExpand]="nzShowExpand" [nzShowLine]="nzShowLine" [nzExpandedIcon]="nzExpandedIcon" [nzSelectMode]="nzSelectMode" [context]="nzTreeNode" [isLeaf]="isLeaf" [isExpanded]="isExpanded" [isLoading]="isLoading" (click)="clickExpand($event)" ></nz-tree-node-switcher> <nz-tree-node-checkbox builtin *ngIf="nzCheckable" (click)="clickCheckBox($event)" [nzSelectMode]="nzSelectMode" [isChecked]="isChecked" [isHalfChecked]="isHalfChecked" [isDisabled]="isDisabled" [isDisableCheckbox]="isDisableCheckbox" ></nz-tree-node-checkbox> <nz-tree-node-title [icon]="icon" [title]="title" [isLoading]="isLoading" [isSelected]="isSelected" [isDisabled]="isDisabled" [isMatched]="isMatched" [isExpanded]="isExpanded" [isLeaf]="isLeaf" [searchValue]="nzSearchValue" [treeTemplate]="nzTreeTemplate" [draggable]="nzDraggable" [showIcon]="nzShowIcon" [selectMode]="nzSelectMode" [context]="nzTreeNode" [showIndicator]="showIndicator" [dragPosition]="dragPos" (dblclick)="dblClick($event)" (click)="clickSelect($event)" (contextmenu)="contextMenu($event)" ></nz-tree-node-title> `, isInline: true, components: [{ type: NzTreeIndentComponent, selector: "nz-tree-indent", inputs: ["nzTreeLevel", "nzIsStart", "nzIsEnd", "nzSelectMode"], exportAs: ["nzTreeIndent"] }, { type: NzTreeNodeSwitcherComponent, selector: "nz-tree-node-switcher", inputs: ["nzShowExpand", "nzShowLine", "nzExpandedIcon", "nzSelectMode", "context", "isLeaf", "isLoading", "isExpanded"] }, { type: NzTreeNodeBuiltinCheckboxComponent, selector: "nz-tree-node-checkbox[builtin]", inputs: ["nzSelectMode", "isChecked", "isHalfChecked", "isDisabled", "isDisableCheckbox"] }, { type: NzTreeNodeTitleComponent, selector: "nz-tree-node-title", inputs: ["searchValue", "treeTemplate", "draggable", "showIcon", "selectMode", "context", "icon", "title", "isLoading", "isSelected", "isDisabled", "isMatched", "isExpanded", "isLeaf", "showIndicator", "dragPosition"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzShowLine", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzShowExpand", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzCheckable", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzAsyncData", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzHideUnMatched", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzNoAnimation", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzSelectMode", void 0); __decorate([ InputBoolean() ], NzTreeNodeBuiltinComponent.prototype, "nzShowIcon", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeNodeBuiltinComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node[builtin]', exportAs: 'nzTreeBuiltinNode', template: ` <nz-tree-indent [nzTreeLevel]="nzTreeNode.level" [nzSelectMode]="nzSelectMode" [nzIsStart]="isStart" [nzIsEnd]="isEnd" ></nz-tree-indent> <nz-tree-node-switcher *ngIf="nzShowExpand" [nzShowExpand]="nzShowExpand" [nzShowLine]="nzShowLine" [nzExpandedIcon]="nzExpandedIcon" [nzSelectMode]="nzSelectMode" [context]="nzTreeNode" [isLeaf]="isLeaf" [isExpanded]="isExpanded" [isLoading]="isLoading" (click)="clickExpand($event)" ></nz-tree-node-switcher> <nz-tree-node-checkbox builtin *ngIf="nzCheckable" (click)="clickCheckBox($event)" [nzSelectMode]="nzSelectMode" [isChecked]="isChecked" [isHalfChecked]="isHalfChecked" [isDisabled]="isDisabled" [isDisableCheckbox]="isDisableCheckbox" ></nz-tree-node-checkbox> <nz-tree-node-title [icon]="icon" [title]="title" [isLoading]="isLoading" [isSelected]="isSelected" [isDisabled]="isDisabled" [isMatched]="isMatched" [isExpanded]="isExpanded" [isLeaf]="isLeaf" [searchValue]="nzSearchValue" [treeTemplate]="nzTreeTemplate" [draggable]="nzDraggable" [showIcon]="nzShowIcon" [selectMode]="nzSelectMode" [context]="nzTreeNode" [showIndicator]="showIndicator" [dragPosition]="dragPos" (dblclick)="dblClick($event)" (click)="clickSelect($event)" (contextmenu)="contextMenu($event)" ></nz-tree-node-title> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[class.ant-select-tree-treenode]': `nzSelectMode`, '[class.ant-select-tree-treenode-disabled]': `nzSelectMode && isDisabled`, '[class.ant-select-tree-treenode-switcher-open]': `nzSelectMode && isSwitcherOpen`, '[class.ant-select-tree-treenode-switcher-close]': `nzSelectMode && isSwitcherClose`, '[class.ant-select-tree-treenode-checkbox-checked]': `nzSelectMode && isChecked`, '[class.ant-select-tree-treenode-checkbox-indeterminate]': `nzSelectMode && isHalfChecked`, '[class.ant-select-tree-treenode-selected]': `nzSelectMode && isSelected`, '[class.ant-select-tree-treenode-loading]': `nzSelectMode && isLoading`, '[class.ant-tree-treenode]': `!nzSelectMode`, '[class.ant-tree-treenode-disabled]': `!nzSelectMode && isDisabled`, '[class.ant-tree-treenode-switcher-open]': `!nzSelectMode && isSwitcherOpen`, '[class.ant-tree-treenode-switcher-close]': `!nzSelectMode && isSwitcherClose`, '[class.ant-tree-treenode-checkbox-checked]': `!nzSelectMode && isChecked`, '[class.ant-tree-treenode-checkbox-indeterminate]': `!nzSelectMode && isHalfChecked`, '[class.ant-tree-treenode-selected]': `!nzSelectMode && isSelected`, '[class.ant-tree-treenode-loading]': `!nzSelectMode && isLoading`, '[class.dragging]': `draggingKey === nzTreeNode.key`, '[style.display]': 'displayStyle' } }] }], ctorParameters: function () { return [{ type: i1.NzTreeBaseService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i4$1.NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] }]; }, propDecorators: { icon: [{ type: Input }], title: [{ type: Input }], isLoading: [{ type: Input }], isSelected: [{ type: Input }], isDisabled: [{ type: Input }], isMatched: [{ type: Input }], isExpanded: [{ type: Input }], isLeaf: [{ type: Input }], isChecked: [{ type: Input }], isHalfChecked: [{ type: Input }], isDisableCheckbox: [{ type: Input }], isSelectable: [{ type: Input }], canHide: [{ type: Input }], isStart: [{ type: Input }], isEnd: [{ type: Input }], nzTreeNode: [{ type: Input }], nzShowLine: [{ type: Input }], nzShowExpand: [{ type: Input }], nzCheckable: [{ type: Input }], nzAsyncData: [{ type: Input }], nzHideUnMatched: [{ type: Input }], nzNoAnimation: [{ type: Input }], nzSelectMode: [{ type: Input }], nzShowIcon: [{ type: Input }], nzExpandedIcon: [{ type: Input }], nzTreeTemplate: [{ type: Input }], nzBeforeDrop: [{ type: Input }], nzSearchValue: [{ type: Input }], nzDraggable: [{ type: Input }], nzClick: [{ type: Output }], nzDblClick: [{ type: Output }], nzContextMenu: [{ type: Output }], nzCheckBoxChange: [{ type: Output }], nzExpandChange: [{ type: Output }], nzOnDragStart: [{ type: Output }], nzOnDragEnter: [{ type: Output }], nzOnDragOver: [{ type: Output }], nzOnDragLeave: [{ type: Output }], nzOnDrop: [{ type: Output }], nzOnDragEnd: [{ type: Output }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzTreeService extends NzTreeBaseService { constructor() { super(); } } NzTreeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); NzTreeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzTreeService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); function NzTreeServiceFactory(higherOrderService, treeService) { return higherOrderService ? higherOrderSe