Browse Source

Merge pull request #5384 from abpframework/feat/5381

feat: add custom node template for tree component
pull/5397/head
Bunyamin Coskuner 6 years ago
committed by GitHub
parent
commit
24b94d5779
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      npm/ng-packs/packages/components/tree/src/lib/components/tree.component.html
  2. 4
      npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts
  3. 8
      npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts
  4. 8
      npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts
  5. 12
      npm/ng-packs/packages/components/tree/src/lib/tree.module.ts
  6. 2
      npm/ng-packs/packages/components/tree/src/public-api.ts

12
npm/ng-packs/packages/components/tree/src/lib/components/tree.component.html

@ -7,6 +7,7 @@
[nzData]="nodes" [nzData]="nodes"
[nzTreeTemplate]="treeTemplate" [nzTreeTemplate]="treeTemplate"
[nzExpandedKeys]="expandedKeys" [nzExpandedKeys]="expandedKeys"
[nzExpandedIcon]="expandedIconTemplate?.template"
(nzExpandChange)="onExpandedKeysChange($event)" (nzExpandChange)="onExpandedKeysChange($event)"
(nzCheckBoxChange)="onCheckboxChange($event)" (nzCheckBoxChange)="onCheckboxChange($event)"
(nzOnDrop)="onDrop($event)" (nzOnDrop)="onDrop($event)"
@ -18,7 +19,16 @@
[title]="node.title" [title]="node.title"
(click)="onSelectedNodeChange(node)" (click)="onSelectedNodeChange(node)"
> >
<span>{{ node.title }}</span> <ng-container
*ngTemplateOutlet="
customNodeTemplate?.template || defaultNodeTemplate;
context: { $implicit: node }
"
></ng-container>
<ng-template #defaultNodeTemplate>
<span>{{ node.title }}</span>
</ng-template>
<div *ngIf="menu" class="ellipsis" ngbDropdown placement="bottom" container="body"> <div *ngIf="menu" class="ellipsis" ngbDropdown placement="bottom" container="body">
<i class="fas fa-ellipsis-h" ngbDropdownToggle [class.dropdown-toggle]="false"></i> <i class="fas fa-ellipsis-h" ngbDropdownToggle [class.dropdown-toggle]="false"></i>

4
npm/ng-packs/packages/components/tree/src/lib/components/tree.component.ts

@ -9,6 +9,8 @@ import {
} from '@angular/core'; } from '@angular/core';
import { NzFormatEmitEvent, NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree'; import { NzFormatEmitEvent, NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';
import { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';
export type DropEvent = NzFormatEmitEvent & { pos: number }; export type DropEvent = NzFormatEmitEvent & { pos: number };
@ -25,6 +27,8 @@ export class TreeComponent {
dropPosition: number; dropPosition: number;
@ContentChild('menu') menu: TemplateRef<any>; @ContentChild('menu') menu: TemplateRef<any>;
@ContentChild(TreeNodeTemplateDirective) customNodeTemplate: TreeNodeTemplateDirective;
@ContentChild(ExpandedIconTemplateDirective) expandedIconTemplate: ExpandedIconTemplateDirective;
@Output() readonly checkedKeysChange = new EventEmitter(); @Output() readonly checkedKeysChange = new EventEmitter();
@Output() readonly expandedKeysChange = new EventEmitter<string[]>(); @Output() readonly expandedKeysChange = new EventEmitter<string[]>();
@Output() readonly selectedNodeChange = new EventEmitter(); @Output() readonly selectedNodeChange = new EventEmitter();

8
npm/ng-packs/packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts

@ -0,0 +1,8 @@
import { Directive, TemplateRef } from '@angular/core';
@Directive({
selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',
})
export class ExpandedIconTemplateDirective {
constructor(public template: TemplateRef<any>) {}
}

8
npm/ng-packs/packages/components/tree/src/lib/templates/tree-node-template.directive.ts

@ -0,0 +1,8 @@
import { Directive, TemplateRef } from '@angular/core';
@Directive({
selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',
})
export class TreeNodeTemplateDirective {
constructor(public template: TemplateRef<any>) {}
}

12
npm/ng-packs/packages/components/tree/src/lib/tree.module.ts

@ -1,12 +1,18 @@
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NzTreeModule } from 'ng-zorro-antd/tree'; import { NzTreeModule } from 'ng-zorro-antd/tree';
import { TreeComponent } from './components/tree.component'; import { TreeComponent } from './components/tree.component';
import { CommonModule } from '@angular/common'; import { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';
import { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';
const templates = [TreeNodeTemplateDirective, ExpandedIconTemplateDirective];
const exported = [...templates, TreeComponent];
@NgModule({ @NgModule({
imports: [CommonModule, NzTreeModule, NgbDropdownModule], imports: [CommonModule, NzTreeModule, NgbDropdownModule],
exports: [TreeComponent], exports: [...exported],
declarations: [TreeComponent], declarations: [...exported],
}) })
export class TreeModule {} export class TreeModule {}

2
npm/ng-packs/packages/components/tree/src/public-api.ts

@ -1,3 +1,5 @@
export * from './lib/tree.module'; export * from './lib/tree.module';
export * from './lib/components/tree.component'; export * from './lib/components/tree.component';
export * from './lib/utils/nz-tree-adapter'; export * from './lib/utils/nz-tree-adapter';
export * from './lib/templates/tree-node-template.directive';
export * from './lib/templates/expanded-icon-template.directive';

Loading…
Cancel
Save