@abp/ng.components 10.0.3 → 10.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/abp-ng.components-chart.js.mjs +7 -7
- package/fesm2022/abp-ng.components-chart.js.mjs.map +1 -1
- package/fesm2022/abp-ng.components-dynamic-form.mjs +635 -0
- package/fesm2022/abp-ng.components-dynamic-form.mjs.map +1 -0
- package/fesm2022/abp-ng.components-extensible.mjs +53 -53
- package/fesm2022/abp-ng.components-extensible.mjs.map +1 -1
- package/fesm2022/abp-ng.components-lookup.mjs +107 -0
- package/fesm2022/abp-ng.components-lookup.mjs.map +1 -0
- package/fesm2022/abp-ng.components-page.mjs +19 -19
- package/fesm2022/abp-ng.components-page.mjs.map +1 -1
- package/fesm2022/abp-ng.components-tree.mjs +14 -14
- package/fesm2022/abp-ng.components-tree.mjs.map +1 -1
- package/fesm2022/abp-ng.components.mjs.map +1 -1
- package/package.json +20 -12
- package/types/abp-ng.components-dynamic-form.d.ts +200 -0
- package/{extensible/index.d.ts → types/abp-ng.components-extensible.d.ts} +2 -2
- package/types/abp-ng.components-lookup.d.ts +46 -0
- /package/{chart.js/index.d.ts → types/abp-ng.components-chart.js.d.ts} +0 -0
- /package/{page/index.d.ts → types/abp-ng.components-page.d.ts} +0 -0
- /package/{tree/index.d.ts → types/abp-ng.components-tree.d.ts} +0 -0
- /package/{index.d.ts → types/abp-ng.components.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.components-tree.mjs","sources":["../tmp-esm2022/tree/lib/disable-tree-style-loading.token.js","../tmp-esm2022/tree/lib/templates/tree-node-template.directive.js","../tmp-esm2022/tree/lib/templates/expanded-icon-template.directive.js","../tmp-esm2022/tree/lib/components/tree.component.js","../tmp-esm2022/tree/lib/tree.module.js","../tmp-esm2022/tree/lib/utils/nz-tree-adapter.js","../tmp-esm2022/tree/abp-ng.components-tree.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const DISABLE_TREE_STYLE_LOADING_TOKEN = new InjectionToken('DISABLE_TREE_STYLE_LOADING_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS10cmVlLXN0eWxlLWxvYWRpbmcudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi9kaXNhYmxlLXRyZWUtc3R5bGUtbG9hZGluZy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksY0FBYyxDQUNoRSxrQ0FBa0MsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgRElTQUJMRV9UUkVFX1NUWUxFX0xPQURJTkdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oXHJcbiAgJ0RJU0FCTEVfVFJFRV9TVFlMRV9MT0FESU5HX1RPS0VOJyxcclxuKTtcclxuIl19","import { Directive, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TreeNodeTemplateDirective {\n constructor() {\n this.template = inject(TemplateRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeNodeTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: TreeNodeTemplateDirective, isStandalone: true, selector: \"[abpTreeNodeTemplate],[abp-tree-node-template]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeNodeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RlbXBsYXRlcy90cmVlLW5vZGUtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLL0QsTUFBTSxPQUFPLHlCQUF5QjtJQUh0QztRQUlFLGFBQVEsR0FBRyxNQUFNLENBQW1CLFdBQVcsQ0FBQyxDQUFDO0tBRWxEOzhHQUhZLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnREFBZ0Q7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thYnBUcmVlTm9kZVRlbXBsYXRlXSxbYWJwLXRyZWUtbm9kZS10ZW1wbGF0ZV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVUZW1wbGF0ZURpcmVjdGl2ZSB7XHIgIHRlbXBsYXRlID0gaW5qZWN0PFRlbXBsYXRlUmVmPGFueT4+KFRlbXBsYXRlUmVmKTtcblxufVxyXG4iXX0=","import { Directive, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ExpandedIconTemplateDirective {\n constructor() {\n this.template = inject(TemplateRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExpandedIconTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: ExpandedIconTemplateDirective, isStandalone: true, selector: \"[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExpandedIconTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90ZW1wbGF0ZXMvZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsvRCxNQUFNLE9BQU8sNkJBQTZCO0lBSDFDO1FBSUUsYUFBUSxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxDQUFDLENBQUM7S0FFbEQ7OEdBSFksNkJBQTZCO2tHQUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlFQUFpRTtpQkFDNUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FicFRyZWVFeHBhbmRlZEljb25UZW1wbGF0ZV0sW2FicC10cmVlLWV4cGFuZGVkLWljb24tdGVtcGxhdGVdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlIHtcciAgdGVtcGxhdGUgPSBpbmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4oVGVtcGxhdGVSZWYpO1xuXG59XHJcbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, inject, Input, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap';\nimport { NzTreeComponent, } from 'ng-zorro-antd/tree';\nimport { InitDirective, LazyLoadService, LOADING_STRATEGY, SubscriptionService, } from '@abp/ng.core';\nimport { of } from 'rxjs';\nimport { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.token';\nimport { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';\nimport { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i0 from \"@angular/core\";\nexport class TreeComponent {\n constructor() {\n this.lazyLoadService = inject(LazyLoadService);\n this.subscriptionService = inject(SubscriptionService);\n this.cdr = inject(ChangeDetectorRef);\n this.disableTreeStyleLoading = inject(DISABLE_TREE_STYLE_LOADING_TOKEN, { optional: true });\n this.dropdowns = {};\n this.checkedKeysChange = new EventEmitter();\n this.expandedKeysChange = new EventEmitter();\n this.selectedNodeChange = new EventEmitter();\n this.dropOver = new EventEmitter();\n this.nzExpandChange = new EventEmitter();\n this.noAnimation = true;\n this.checkedKeys = [];\n this.nodes = [];\n this.expandedKeys = [];\n this.isNodeSelected = node => this.selectedNode?.id === node.key;\n this.beforeDrop = (event) => {\n this.dropPosition = event.pos;\n return of(false);\n };\n }\n ngOnInit() {\n this.loadStyle();\n }\n loadStyle() {\n if (this.disableTreeStyleLoading) {\n return;\n }\n const loaded$ = this.lazyLoadService.load(LOADING_STRATEGY.AppendAnonymousStyleToHead('ng-zorro-antd-tree.css'));\n this.subscriptionService.addOne(loaded$);\n }\n findNode(target, nodes) {\n for (const node of nodes) {\n if (node.key === target.id) {\n return node;\n }\n if (node.children) {\n const res = this.findNode(target, node.children);\n if (res) {\n return res;\n }\n }\n }\n return null;\n }\n onSelectedNodeChange(node) {\n this.selectedNode = node.origin.entity;\n if (this.changeCheckboxWithNode) {\n let newVal;\n if (node.isChecked) {\n newVal = this.checkedKeys.filter(x => x !== node.key);\n }\n else {\n newVal = [...this.checkedKeys, node.key];\n }\n this.selectedNodeChange.emit(node);\n this.checkedKeys = newVal;\n this.checkedKeysChange.emit(newVal);\n }\n else {\n this.selectedNodeChange.emit(node.origin.entity);\n }\n }\n onCheckboxChange(event) {\n this.checkedKeys = [...event.keys];\n this.checkedKeysChange.emit(event.keys);\n }\n onExpandedKeysChange(event) {\n this.expandedKeys = [...event.keys];\n this.expandedKeysChange.emit(event.keys);\n this.nzExpandChange.emit(event);\n }\n onDrop(event) {\n event.event.stopPropagation();\n event.event.preventDefault();\n event.pos = this.dropPosition;\n this.dropOver.emit(event);\n }\n initDropdown(key, dropdown) {\n this.dropdowns[key] = dropdown;\n }\n onContextMenuChange(event) {\n const dropdownKey = event.node?.key;\n Object.entries(this.dropdowns).forEach(([key, dropdown]) => {\n if (key !== dropdownKey && dropdown?.isOpen()) {\n dropdown.close();\n }\n });\n this.dropdowns[dropdownKey]?.toggle();\n }\n setSelectedNode(node) {\n const newSelectedNode = this.findNode(node, this.nodes);\n this.selectedNode = { ...newSelectedNode };\n this.cdr.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: TreeComponent, isStandalone: true, selector: \"abp-tree\", inputs: { noAnimation: \"noAnimation\", draggable: \"draggable\", checkable: \"checkable\", checkStrictly: \"checkStrictly\", checkedKeys: \"checkedKeys\", nodes: \"nodes\", expandedKeys: \"expandedKeys\", selectedNode: \"selectedNode\", changeCheckboxWithNode: \"changeCheckboxWithNode\", isNodeSelected: \"isNodeSelected\", beforeDrop: \"beforeDrop\" }, outputs: { checkedKeysChange: \"checkedKeysChange\", expandedKeysChange: \"expandedKeysChange\", selectedNodeChange: \"selectedNodeChange\", dropOver: \"dropOver\", nzExpandChange: \"nzExpandChange\" }, providers: [SubscriptionService], queries: [{ propertyName: \"menu\", first: true, predicate: [\"menu\"], descendants: true }, { propertyName: \"customNodeTemplate\", first: true, predicate: TreeNodeTemplateDirective, descendants: true }, { propertyName: \"expandedIconTemplate\", first: true, predicate: ExpandedIconTemplateDirective, descendants: true }], ngImport: i0, template: \"<nz-tree\\r\\n [nzBeforeDrop]=\\\"beforeDrop\\\"\\r\\n [nzDraggable]=\\\"draggable\\\"\\r\\n [nzCheckStrictly]=\\\"checkStrictly\\\"\\r\\n [nzCheckable]=\\\"checkable\\\"\\r\\n [nzCheckedKeys]=\\\"checkedKeys\\\"\\r\\n [nzData]=\\\"nodes\\\"\\r\\n [nzTreeTemplate]=\\\"treeTemplate\\\"\\r\\n [nzExpandedKeys]=\\\"expandedKeys\\\"\\r\\n [nzExpandedIcon]=\\\"expandedIconTemplate?.template || defaultIconTemplate\\\"\\r\\n (nzExpandChange)=\\\"onExpandedKeysChange($event)\\\"\\r\\n (nzCheckboxChange)=\\\"onCheckboxChange($event)\\\"\\r\\n (nzOnDrop)=\\\"onDrop($event)\\\"\\r\\n [nzNoAnimation]=\\\"noAnimation\\\"\\r\\n (nzContextMenu)=\\\"onContextMenuChange($event)\\\"\\r\\n/>\\r\\n<ng-template #treeTemplate let-node>\\r\\n <div\\r\\n [class.selected]=\\\"isNodeSelected(node)\\\"\\r\\n [title]=\\\"node.title\\\"\\r\\n (click)=\\\"onSelectedNodeChange(node)\\\"\\r\\n >\\r\\n <ng-container *ngTemplateOutlet=\\\"nodeTemplate; context: { $implicit: node }\\\" />\\r\\n\\r\\n <ng-template #nodeTemplate let-node>\\r\\n <div class=\\\"d-inline-flex align-items-center abp-ellipsis-inline\\\">\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"\\r\\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\\r\\n context: { $implicit: node }\\r\\n \\\"\\r\\n />\\r\\n </div>\\r\\n\\r\\n @if (menu) {\\r\\n <div\\r\\n #dropdown=\\\"ngbDropdown\\\"\\r\\n class=\\\"d-inline-block ms-1\\\"\\r\\n ngbDropdown\\r\\n placement=\\\"bottom\\\"\\r\\n container=\\\"body\\\"\\r\\n (abpInit)=\\\"initDropdown(node.key, dropdown)\\\"\\r\\n >\\r\\n <i\\r\\n class=\\\"fas fa-caret-down text-muted\\\"\\r\\n ngbDropdownToggle\\r\\n [class.dropdown-toggle]=\\\"false\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n ></i>\\r\\n <div ngbDropdownMenu>\\r\\n <ng-template *ngTemplateOutlet=\\\"menu; context: { $implicit: node }\\\" />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n <ng-template #defaultNodeTemplate let-node>\\r\\n <span>{{ node.title }}</span>\\r\\n </ng-template>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #defaultIconTemplate let-node let-origin=\\\"origin\\\">\\r\\n <i aria-hidden=\\\"true\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"node.isExpanded ? minusIcon : plusIcon\\\"\\r\\n /></i>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #minusIcon>\\r\\n <svg\\r\\n width=\\\"15\\\"\\r\\n height=\\\"15\\\"\\r\\n viewBox=\\\"0 0 24 24\\\"\\r\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\r\\n fill-rule=\\\"evenodd\\\"\\r\\n clip-rule=\\\"evenodd\\\"\\r\\n >\\r\\n <path\\r\\n d=\\\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\\\"\\r\\n />\\r\\n </svg>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #plusIcon>\\r\\n <svg\\r\\n width=\\\"15\\\"\\r\\n height=\\\"15\\\"\\r\\n viewBox=\\\"0 0 24 24\\\"\\r\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\r\\n fill-rule=\\\"evenodd\\\"\\r\\n clip-rule=\\\"evenodd\\\"\\r\\n >\\r\\n <path\\r\\n d=\\\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\\\"\\r\\n />\\r\\n </svg>\\r\\n</ng-template>\\r\\n\", styles: [\"abp-tree .ant-tree{color:inherit}abp-tree .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}abp-tree .ant-tree .ant-tree-switcher{line-height:17px;align-items:center;justify-content:center;display:inline-flex}abp-tree .ant-tree .ant-tree-node-content-wrapper{width:100%;padding:0}abp-tree .ant-tree .ant-tree-node-content-wrapper>div{display:flex;padding-right:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}abp-tree .ant-tree .node-wrapper{width:100%;position:relative;display:inline-block;margin:0;line-height:30px;text-decoration:none;vertical-align:top;border-radius:2px;cursor:pointer;padding:0 5px 0 8px;border:1px solid transparent}abp-tree .ant-tree .ellipsis{position:absolute;right:8px;top:1px;cursor:pointer}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: NzTreeComponent, selector: \"nz-tree\", inputs: [\"nzShowIcon\", \"nzHideUnMatched\", \"nzBlockNode\", \"nzExpandAll\", \"nzSelectMode\", \"nzCheckStrictly\", \"nzShowExpand\", \"nzShowLine\", \"nzCheckable\", \"nzAsyncData\", \"nzDraggable\", \"nzMultiple\", \"nzExpandedIcon\", \"nzVirtualItemSize\", \"nzVirtualMaxBufferPx\", \"nzVirtualMinBufferPx\", \"nzVirtualHeight\", \"nzTreeTemplate\", \"nzBeforeDrop\", \"nzData\", \"nzExpandedKeys\", \"nzSelectedKeys\", \"nzCheckedKeys\", \"nzSearchValue\", \"nzSearchFunc\"], outputs: [\"nzExpandedKeysChange\", \"nzSelectedKeysChange\", \"nzCheckedKeysChange\", \"nzSearchValueChange\", \"nzClick\", \"nzDblClick\", \"nzContextMenu\", \"nzCheckboxChange\", \"nzExpandChange\", \"nzOnDragStart\", \"nzOnDragEnter\", \"nzOnDragOver\", \"nzOnDragLeave\", \"nzOnDrop\", \"nzOnDragEnd\"], exportAs: [\"nzTree\"] }, { kind: \"directive\", type: NgbDropdown, selector: \"[ngbDropdown]\", inputs: [\"autoClose\", \"dropdownClass\", \"open\", \"placement\", \"popperOptions\", \"container\", \"display\"], outputs: [\"openChange\"], exportAs: [\"ngbDropdown\"] }, { kind: \"directive\", type: NgbDropdownMenu, selector: \"[ngbDropdownMenu]\" }, { kind: \"directive\", type: NgbDropdownToggle, selector: \"[ngbDropdownToggle]\" }, { kind: \"directive\", type: InitDirective, selector: \"[abpInit]\", outputs: [\"abpInit\"] }, { kind: \"directive\", type: NzNoAnimationDirective, selector: \"[nzNoAnimation]\", inputs: [\"nzNoAnimation\"], exportAs: [\"nzNoAnimation\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'abp-tree', encapsulation: ViewEncapsulation.None, providers: [SubscriptionService], changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n NgTemplateOutlet,\n NzTreeComponent,\n NgbDropdown,\n NgbDropdownMenu,\n NgbDropdownToggle,\n InitDirective,\n NzNoAnimationDirective,\n ], template: \"<nz-tree\\r\\n [nzBeforeDrop]=\\\"beforeDrop\\\"\\r\\n [nzDraggable]=\\\"draggable\\\"\\r\\n [nzCheckStrictly]=\\\"checkStrictly\\\"\\r\\n [nzCheckable]=\\\"checkable\\\"\\r\\n [nzCheckedKeys]=\\\"checkedKeys\\\"\\r\\n [nzData]=\\\"nodes\\\"\\r\\n [nzTreeTemplate]=\\\"treeTemplate\\\"\\r\\n [nzExpandedKeys]=\\\"expandedKeys\\\"\\r\\n [nzExpandedIcon]=\\\"expandedIconTemplate?.template || defaultIconTemplate\\\"\\r\\n (nzExpandChange)=\\\"onExpandedKeysChange($event)\\\"\\r\\n (nzCheckboxChange)=\\\"onCheckboxChange($event)\\\"\\r\\n (nzOnDrop)=\\\"onDrop($event)\\\"\\r\\n [nzNoAnimation]=\\\"noAnimation\\\"\\r\\n (nzContextMenu)=\\\"onContextMenuChange($event)\\\"\\r\\n/>\\r\\n<ng-template #treeTemplate let-node>\\r\\n <div\\r\\n [class.selected]=\\\"isNodeSelected(node)\\\"\\r\\n [title]=\\\"node.title\\\"\\r\\n (click)=\\\"onSelectedNodeChange(node)\\\"\\r\\n >\\r\\n <ng-container *ngTemplateOutlet=\\\"nodeTemplate; context: { $implicit: node }\\\" />\\r\\n\\r\\n <ng-template #nodeTemplate let-node>\\r\\n <div class=\\\"d-inline-flex align-items-center abp-ellipsis-inline\\\">\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"\\r\\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\\r\\n context: { $implicit: node }\\r\\n \\\"\\r\\n />\\r\\n </div>\\r\\n\\r\\n @if (menu) {\\r\\n <div\\r\\n #dropdown=\\\"ngbDropdown\\\"\\r\\n class=\\\"d-inline-block ms-1\\\"\\r\\n ngbDropdown\\r\\n placement=\\\"bottom\\\"\\r\\n container=\\\"body\\\"\\r\\n (abpInit)=\\\"initDropdown(node.key, dropdown)\\\"\\r\\n >\\r\\n <i\\r\\n class=\\\"fas fa-caret-down text-muted\\\"\\r\\n ngbDropdownToggle\\r\\n [class.dropdown-toggle]=\\\"false\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n ></i>\\r\\n <div ngbDropdownMenu>\\r\\n <ng-template *ngTemplateOutlet=\\\"menu; context: { $implicit: node }\\\" />\\r\\n </div>\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n <ng-template #defaultNodeTemplate let-node>\\r\\n <span>{{ node.title }}</span>\\r\\n </ng-template>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #defaultIconTemplate let-node let-origin=\\\"origin\\\">\\r\\n <i aria-hidden=\\\"true\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"node.isExpanded ? minusIcon : plusIcon\\\"\\r\\n /></i>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #minusIcon>\\r\\n <svg\\r\\n width=\\\"15\\\"\\r\\n height=\\\"15\\\"\\r\\n viewBox=\\\"0 0 24 24\\\"\\r\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\r\\n fill-rule=\\\"evenodd\\\"\\r\\n clip-rule=\\\"evenodd\\\"\\r\\n >\\r\\n <path\\r\\n d=\\\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\\\"\\r\\n />\\r\\n </svg>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #plusIcon>\\r\\n <svg\\r\\n width=\\\"15\\\"\\r\\n height=\\\"15\\\"\\r\\n viewBox=\\\"0 0 24 24\\\"\\r\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\r\\n fill-rule=\\\"evenodd\\\"\\r\\n clip-rule=\\\"evenodd\\\"\\r\\n >\\r\\n <path\\r\\n d=\\\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\\\"\\r\\n />\\r\\n </svg>\\r\\n</ng-template>\\r\\n\", styles: [\"abp-tree .ant-tree{color:inherit}abp-tree .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}abp-tree .ant-tree .ant-tree-switcher{line-height:17px;align-items:center;justify-content:center;display:inline-flex}abp-tree .ant-tree .ant-tree-node-content-wrapper{width:100%;padding:0}abp-tree .ant-tree .ant-tree-node-content-wrapper>div{display:flex;padding-right:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}abp-tree .ant-tree .node-wrapper{width:100%;position:relative;display:inline-block;margin:0;line-height:30px;text-decoration:none;vertical-align:top;border-radius:2px;cursor:pointer;padding:0 5px 0 8px;border:1px solid transparent}abp-tree .ant-tree .ellipsis{position:absolute;right:8px;top:1px;cursor:pointer}\\n\"] }]\n }], propDecorators: { menu: [{\n type: ContentChild,\n args: ['menu']\n }], customNodeTemplate: [{\n type: ContentChild,\n args: [TreeNodeTemplateDirective]\n }], expandedIconTemplate: [{\n type: ContentChild,\n args: [ExpandedIconTemplateDirective]\n }], checkedKeysChange: [{\n type: Output\n }], expandedKeysChange: [{\n type: Output\n }], selectedNodeChange: [{\n type: Output\n }], dropOver: [{\n type: Output\n }], nzExpandChange: [{\n type: Output\n }], noAnimation: [{\n type: Input\n }], draggable: [{\n type: Input\n }], checkable: [{\n type: Input\n }], checkStrictly: [{\n type: Input\n }], checkedKeys: [{\n type: Input\n }], nodes: [{\n type: Input\n }], expandedKeys: [{\n type: Input\n }], selectedNode: [{\n type: Input\n }], changeCheckboxWithNode: [{\n type: Input\n }], isNodeSelected: [{\n type: Input\n }], beforeDrop: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90cmVlL3NyYy9saWIvY29tcG9uZW50cy90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBR0wsZUFBZSxHQUVoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFxQnpFLE1BQU0sT0FBTyxhQUFhO0lBakIxQjtRQWtCVSxvQkFBZSxHQUFH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QUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixzQkFBc0I7cUJBQ3ZCOzhCQVlxQixJQUFJO3NCQUF6QixZQUFZO3VCQUFDLE1BQU07Z0JBQ3FCLGtCQUFrQjtzQkFBMUQsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBQ00sb0JBQW9CO3NCQUFoRSxZQUFZO3VCQUFDLDZCQUE2QjtnQkFDeEIsaUJBQWlCO3NCQUFuQyxNQUFNO2dCQUNZLGtCQUFrQjtzQkFBcEMsTUFBTTtnQkFDWSxrQkFBa0I7c0JBQXBDLE1BQU07Z0JBQ1ksUUFBUTtzQkFBMUIsTUFBTTtnQkFDWSxjQUFjO3NCQUFoQyxNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JEcm9wZG93biwgTmdiRHJvcGRvd25NZW51LCBOZ2JEcm9wZG93blRvZ2dsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHtcclxuICBOekZvcm1hdEJlZm9yZURyb3BFdmVudCxcclxuICBOekZvcm1hdEVtaXRFdmVudCxcclxuICBOelRyZWVDb21wb25lbnQsXHJcbiAgTnpUcmVlTm9kZSxcclxufSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xyXG5pbXBvcnQge1xyXG4gIEluaXREaXJlY3RpdmUsXHJcbiAgTGF6eUxvYWRTZXJ2aWNlLFxyXG4gIExPQURJTkdfU1RSQVRFR1ksXHJcbiAgU3Vic2NyaXB0aW9uU2VydmljZSxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBESVNBQkxFX1RSRUVfU1RZTEVfTE9BRElOR19UT0tFTiB9IGZyb20gJy4uL2Rpc2FibGUtdHJlZS1zdHlsZS1sb2FkaW5nLnRva2VuJztcclxuaW1wb3J0IHsgVHJlZU5vZGVUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RlbXBsYXRlcy90cmVlLW5vZGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXhwYW5kZWRJY29uVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi90ZW1wbGF0ZXMvZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTnpOb0FuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9uby1hbmltYXRpb24nO1xyXG5cclxuZXhwb3J0IHR5cGUgRHJvcEV2ZW50ID0gTnpGb3JtYXRFbWl0RXZlbnQgJiB7IHBvczogbnVtYmVyIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC10cmVlJyxcclxuICB0ZW1wbGF0ZVVybDogJ3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWyd0cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTnpUcmVlQ29tcG9uZW50LFxyXG4gICAgTmdiRHJvcGRvd24sXHJcbiAgICBOZ2JEcm9wZG93bk1lbnUsXHJcbiAgICBOZ2JEcm9wZG93blRvZ2dsZSxcclxuICAgIEluaXREaXJlY3RpdmUsXHJcbiAgICBOek5vQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIGxhenlMb2FkU2VydmljZSA9IGluamVjdChMYXp5TG9hZFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2VydmljZSA9IGluamVjdChTdWJzY3JpcHRpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBkaXNhYmxlVHJlZVN0eWxlTG9hZGluZyA9IGluamVjdChESVNBQkxFX1RSRUVfU1RZTEVfTE9BRElOR19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgZHJvcFBvc2l0aW9uOiBudW1iZXI7XHJcblxyXG4gIGRyb3Bkb3ducyA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogTmdiRHJvcGRvd24gfTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnbWVudScpIG1lbnU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQENvbnRlbnRDaGlsZChUcmVlTm9kZVRlbXBsYXRlRGlyZWN0aXZlKSBjdXN0b21Ob2RlVGVtcGxhdGU6IFRyZWVOb2RlVGVtcGxhdGVEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChFeHBhbmRlZEljb25UZW1wbGF0ZURpcmVjdGl2ZSkgZXhwYW5kZWRJY29uVGVtcGxhdGU6IEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGVja2VkS2V5c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwYW5kZWRLZXlzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWROb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBkcm9wT3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBuekV4cGFuZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XHJcbiAgQElucHV0KCkgbm9BbmltYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja2FibGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tTdHJpY3RseTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja2VkS2V5cyA9IFtdO1xyXG4gIEBJbnB1dCgpIG5vZGVzID0gW107XHJcbiAgQElucHV0KCkgZXhwYW5kZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZTogYW55O1xyXG4gIEBJbnB1dCgpIGNoYW5nZUNoZWNrYm94V2l0aE5vZGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNOb2RlU2VsZWN0ZWQgPSBub2RlID0+IHRoaXMuc2VsZWN0ZWROb2RlPy5pZCA9PT0gbm9kZS5rZXk7XHJcbiAgQElucHV0KCkgYmVmb3JlRHJvcCA9IChldmVudDogTnpGb3JtYXRCZWZvcmVEcm9wRXZlbnQpID0+IHtcclxuICAgIHRoaXMuZHJvcFBvc2l0aW9uID0gZXZlbnQucG9zO1xyXG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubG9hZFN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRTdHlsZSgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVUcmVlU3R5bGVMb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGxvYWRlZCQgPSB0aGlzLmxhenlMb2FkU2VydmljZS5sb2FkKFxyXG4gICAgICBMT0FESU5HX1NUUkFURUdZLkFwcGVuZEFub255bW91c1N0eWxlVG9IZWFkKCduZy16b3Jyby1hbnRkLXRyZWUuY3NzJyksXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLmFkZE9uZShsb2FkZWQkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZE5vZGUodGFyZ2V0OiBhbnksIG5vZGVzOiBhbnlbXSkge1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgIGlmIChub2RlLmtleSA9PT0gdGFyZ2V0LmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmZpbmROb2RlKHRhcmdldCwgbm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZE5vZGVDaGFuZ2Uobm9kZTogTnpUcmVlTm9kZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlLm9yaWdpbi5lbnRpdHk7XHJcbiAgICBpZiAodGhpcy5jaGFuZ2VDaGVja2JveFdpdGhOb2RlKSB7XHJcbiAgICAgIGxldCBuZXdWYWw7XHJcbiAgICAgIGlmIChub2RlLmlzQ2hlY2tlZCkge1xyXG4gICAgICAgIG5ld1ZhbCA9IHRoaXMuY2hlY2tlZEtleXMuZmlsdGVyKHggPT4geCAhPT0gbm9kZS5rZXkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1ZhbCA9IFsuLi50aGlzLmNoZWNrZWRLZXlzLCBub2RlLmtleV07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVDaGFuZ2UuZW1pdChub2RlKTtcclxuICAgICAgdGhpcy5jaGVja2VkS2V5cyA9IG5ld1ZhbDtcclxuICAgICAgdGhpcy5jaGVja2VkS2V5c0NoYW5nZS5lbWl0KG5ld1ZhbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZUNoYW5nZS5lbWl0KG5vZGUub3JpZ2luLmVudGl0eSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50KSB7XHJcbiAgICB0aGlzLmNoZWNrZWRLZXlzID0gWy4uLmV2ZW50LmtleXNdO1xyXG4gICAgdGhpcy5jaGVja2VkS2V5c0NoYW5nZS5lbWl0KGV2ZW50LmtleXMpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRlZEtleXNDaGFuZ2UoZXZlbnQpIHtcclxuICAgIHRoaXMuZXhwYW5kZWRLZXlzID0gWy4uLmV2ZW50LmtleXNdO1xyXG4gICAgdGhpcy5leHBhbmRlZEtleXNDaGFuZ2UuZW1pdChldmVudC5rZXlzKTtcclxuICAgIHRoaXMubnpFeHBhbmRDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyb3BFdmVudCkge1xyXG4gICAgZXZlbnQuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQucG9zID0gdGhpcy5kcm9wUG9zaXRpb247XHJcblxyXG4gICAgdGhpcy5kcm9wT3Zlci5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGluaXREcm9wZG93bihrZXk6IHN0cmluZywgZHJvcGRvd246IE5nYkRyb3Bkb3duKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duc1trZXldID0gZHJvcGRvd247XHJcbiAgfVxyXG5cclxuICBvbkNvbnRleHRNZW51Q2hhbmdlKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xyXG4gICAgY29uc3QgZHJvcGRvd25LZXkgPSBldmVudC5ub2RlPy5rZXk7XHJcblxyXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5kcm9wZG93bnMpLmZvckVhY2goKFtrZXksIGRyb3Bkb3duXSkgPT4ge1xyXG4gICAgICBpZiAoa2V5ICE9PSBkcm9wZG93bktleSAmJiBkcm9wZG93bj8uaXNPcGVuKCkpIHtcclxuICAgICAgICBkcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZHJvcGRvd25zW2Ryb3Bkb3duS2V5XT8udG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZE5vZGUobm9kZTogYW55KSB7XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZE5vZGUgPSB0aGlzLmZpbmROb2RlKG5vZGUsIHRoaXMubm9kZXMpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSB7IC4uLm5ld1NlbGVjdGVkTm9kZSB9O1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuei10cmVlXHJcbiAgW256QmVmb3JlRHJvcF09XCJiZWZvcmVEcm9wXCJcclxuICBbbnpEcmFnZ2FibGVdPVwiZHJhZ2dhYmxlXCJcclxuICBbbnpDaGVja1N0cmljdGx5XT1cImNoZWNrU3RyaWN0bHlcIlxyXG4gIFtuekNoZWNrYWJsZV09XCJjaGVja2FibGVcIlxyXG4gIFtuekNoZWNrZWRLZXlzXT1cImNoZWNrZWRLZXlzXCJcclxuICBbbnpEYXRhXT1cIm5vZGVzXCJcclxuICBbbnpUcmVlVGVtcGxhdGVdPVwidHJlZVRlbXBsYXRlXCJcclxuICBbbnpFeHBhbmRlZEtleXNdPVwiZXhwYW5kZWRLZXlzXCJcclxuICBbbnpFeHBhbmRlZEljb25dPVwiZXhwYW5kZWRJY29uVGVtcGxhdGU/LnRlbXBsYXRlIHx8IGRlZmF1bHRJY29uVGVtcGxhdGVcIlxyXG4gIChuekV4cGFuZENoYW5nZSk9XCJvbkV4cGFuZGVkS2V5c0NoYW5nZSgkZXZlbnQpXCJcclxuICAobnpDaGVja2JveENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxyXG4gIChuek9uRHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgW256Tm9BbmltYXRpb25dPVwibm9BbmltYXRpb25cIlxyXG4gIChuekNvbnRleHRNZW51KT1cIm9uQ29udGV4dE1lbnVDaGFuZ2UoJGV2ZW50KVwiXHJcbi8+XHJcbjxuZy10ZW1wbGF0ZSAjdHJlZVRlbXBsYXRlIGxldC1ub2RlPlxyXG4gIDxkaXZcclxuICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc05vZGVTZWxlY3RlZChub2RlKVwiXHJcbiAgICBbdGl0bGVdPVwibm9kZS50aXRsZVwiXHJcbiAgICAoY2xpY2spPVwib25TZWxlY3RlZE5vZGVDaGFuZ2Uobm9kZSlcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cIiAvPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC1ub2RlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYWJwLWVsbGlwc2lzLWlubGluZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgIGN1c3RvbU5vZGVUZW1wbGF0ZSA/IGN1c3RvbU5vZGVUZW1wbGF0ZT8udGVtcGxhdGUgOiBkZWZhdWx0Tm9kZVRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSB9XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgQGlmIChtZW51KSB7XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgI2Ryb3Bkb3duPVwibmdiRHJvcGRvd25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBtcy0xXCJcclxuICAgICAgICAgIG5nYkRyb3Bkb3duXHJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAoYWJwSW5pdCk9XCJpbml0RHJvcGRvd24obm9kZS5rZXksIGRyb3Bkb3duKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtY2FyZXQtZG93biB0ZXh0LW11dGVkXCJcclxuICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcclxuICAgICAgICAgICAgW2NsYXNzLmRyb3Bkb3duLXRvZ2dsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRlbXBsYXRlIGxldC1ub2RlPlxyXG4gICAgICA8c3Bhbj57eyBub2RlLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb25UZW1wbGF0ZSBsZXQtbm9kZSBsZXQtb3JpZ2luPVwib3JpZ2luXCI+XHJcbiAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZS5pc0V4cGFuZGVkID8gbWludXNJY29uIDogcGx1c0ljb25cIlxyXG4gIC8+PC9pPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtaW51c0ljb24+XHJcbiAgPHN2Z1xyXG4gICAgd2lkdGg9XCIxNVwiXHJcbiAgICBoZWlnaHQ9XCIxNVwiXHJcbiAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICA+XHJcbiAgICA8cGF0aFxyXG4gICAgICBkPVwiTTExLjUgMGM2LjM0NyAwIDExLjUgNS4xNTMgMTEuNSAxMS41cy01LjE1MyAxMS41LTExLjUgMTEuNS0xMS41LTUuMTUzLTExLjUtMTEuNSA1LjE1My0xMS41IDExLjUtMTEuNXptMCAxYzUuNzk1IDAgMTAuNSA0LjcwNSAxMC41IDEwLjVzLTQuNzA1IDEwLjUtMTAuNSAxMC41LTEwLjUtNC43MDUtMTAuNS0xMC41IDQuNzA1LTEwLjUgMTAuNS0xMC41em0tNi41IDEwaDEzdjFoLTEzdi0xelwiXHJcbiAgICAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwbHVzSWNvbj5cclxuICA8c3ZnXHJcbiAgICB3aWR0aD1cIjE1XCJcclxuICAgIGhlaWdodD1cIjE1XCJcclxuICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gID5cclxuICAgIDxwYXRoXHJcbiAgICAgIGQ9XCJNMTEuNSAwYzYuMzQ3IDAgMTEuNSA1LjE1MyAxMS41IDExLjVzLTUuMTUzIDExLjUtMTEuNSAxMS41LTExLjUtNS4xNTMtMTEuNS0xMS41IDUuMTUzLTExLjUgMTEuNS0xMS41em0wIDFjNS43OTUgMCAxMC41IDQuNzA1IDEwLjUgMTAuNXMtNC43MDUgMTAuNS0xMC41IDEwLjUtMTAuNS00LjcwNS0xMC41LTEwLjUgNC43MDUtMTAuNSAxMC41LTEwLjV6bS41IDEwaDZ2MWgtNnY2aC0xdi02aC02di0xaDZ2LTZoMXY2elwiXHJcbiAgICAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=","import { NgModule } from '@angular/core';\nimport { TreeComponent } from './components/tree.component';\nimport { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';\nimport { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';\nimport * as i0 from \"@angular/core\";\nexport class TreeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeModule, imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective], exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeModule, imports: [TreeComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: TreeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\n exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\n declarations: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFPckYsTUFBTSxPQUFPLFVBQVU7OEdBQVYsVUFBVTsrR0FBVixVQUFVLFlBSlgsYUFBYSxFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixhQUN2RSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCOytHQUd0RSxVQUFVLFlBSlgsYUFBYTs7MkZBSVosVUFBVTtrQkFMdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ2xGLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDbEYsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvdHJlZS1ub2RlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtUcmVlQ29tcG9uZW50LCBUcmVlTm9kZVRlbXBsYXRlRGlyZWN0aXZlLCBFeHBhbmRlZEljb25UZW1wbGF0ZURpcmVjdGl2ZV0sXHJcbiAgZXhwb3J0czogW1RyZWVDb21wb25lbnQsIFRyZWVOb2RlVGVtcGxhdGVEaXJlY3RpdmUsIEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZU1vZHVsZSB7fVxyXG4iXX0=","export class BaseNode {\n constructor(id, parentId) {\n this.id = id;\n this.parentId = parentId;\n }\n}\nexport class TreeNode extends BaseNode {\n constructor(entity, nameResolver = ent => ent.displayName || ent.name) {\n super(entity.id, entity.parentId);\n this.entity = entity;\n this.nameResolver = nameResolver;\n this.icon = null;\n this.children = [];\n this.isLeaf = true;\n this.checked = false;\n this.selected = false;\n this.expanded = false;\n this.selectable = true;\n this.disabled = false;\n this.disableCheckbox = false;\n this.key = entity.id;\n this.title = nameResolver(entity);\n }\n}\nexport class TreeAdapter {\n constructor(list = []) {\n this.list = list;\n this.tree = createTreeFromList(this.list);\n }\n getList() {\n return this.list;\n }\n getTree() {\n return this.tree;\n }\n handleDrop({ key, parentNode }) {\n const index = this.list.findIndex(({ id }) => id === key);\n this.list[index].parentId = parentNode ? parentNode.key : null;\n this.tree = createTreeFromList(this.list);\n }\n handleRemove({ key }) {\n this.updateTreeFromList(this.list.filter(item => item.id !== key));\n }\n handleUpdate({ key, children }) {\n /**\n * When we need to update a node with new children, first we need to remove any descendant nodes.\n * If we remove immediate children and create a new tree, any other descendant nodes will be removed\n * and we won't need to recursively remove sub children.\n * Then, you simply add back the new children and create a new tree.\n */\n const listWithDescendantNodesRemoved = this.updateTreeFromList(this.list.filter(item => item.parentId !== key));\n this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));\n }\n updateTreeFromList(list) {\n this.tree = createTreeFromList(list);\n this.list = createListFromTree(this.tree);\n return this.list;\n }\n}\n// UTILITY FUNCTIONS\nfunction createTreeFromList(list) {\n const map = createMapFromList(list);\n const tree = [];\n list.forEach(row => {\n const parentId = row.parentId;\n const node = map.get(row.id);\n if (parentId) {\n const parent = map.get(parentId);\n if (!parent)\n return;\n parent.children.push(node);\n parent.isLeaf = false;\n }\n else {\n tree.push(node);\n }\n });\n return tree;\n}\nfunction createListFromTree(tree, list = []) {\n tree.forEach(node => {\n list.push({ ...node.entity, parentId: node.parentId });\n if (node.children)\n createListFromTree(node.children, list);\n });\n return list;\n}\nfunction createMapFromList(list, map = new Map()) {\n list.forEach(row => map.set(row.id, new TreeNode(row)));\n return map;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotdHJlZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90cmVlL3NyYy9saWIvdXRpbHMvbnotdHJlZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsUUFBUTtJQUk1QixZQUFtQixFQUFVLEVBQVMsUUFBdUI7UUFBMUMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBRyxDQUFDO0NBQ2xFO0FBRUQsTUFBTSxPQUFPLFFBQTZCLFNBQVEsUUFBUTtJQWN4RCxZQUFtQixNQUFTLEVBQVUsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLElBQUk7UUFDckYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRGpCLFdBQU0sR0FBTixNQUFNLENBQUc7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBcUM7UUFYdkYsU0FBSSxHQUFrQixJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFDN0IsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUt0QixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFBb0IsT0FB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LElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixJQUFTLEVBQ1QsTUFBTSxJQUFJLEdBQUcsRUFBdUI7SUFFcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VOb2RlIHtcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIHBhcmVudElkOiBzdHJpbmcgfCBudWxsKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVHJlZU5vZGU8VCBleHRlbmRzIEJhc2VOb2RlPiBleHRlbmRzIEJhc2VOb2RlIHtcclxuICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGNoaWxkcmVuOiBUcmVlTm9kZTxUPltdID0gW107XHJcbiAgaXNMZWFmID0gdHJ1ZTtcclxuICBjaGVja2VkID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICBleHBhbmRlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgZGlzYWJsZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgcGFyZW50Tm9kZT86IFRyZWVOb2RlPFQ+IHwgbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGVudGl0eTogVCwgcHJpdmF0ZSBuYW1lUmVzb2x2ZXIgPSBlbnQgPT4gZW50LmRpc3BsYXlOYW1lIHx8IGVudC5uYW1lKSB7XHJcbiAgICBzdXBlcihlbnRpdHkuaWQsIGVudGl0eS5wYXJlbnRJZCk7XHJcbiAgICB0aGlzLmtleSA9IGVudGl0eS5pZDtcclxuICAgIHRoaXMudGl0bGUgPSBuYW1lUmVzb2x2ZXIoZW50aXR5KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlQWRhcHRlcjxUIGV4dGVuZHMgQmFzZU5vZGUgPSBCYXNlTm9kZT4ge1xyXG4gIHByaXZhdGUgdHJlZTogVHJlZU5vZGU8VD5bXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsaXN0OiBUW10gPSBbXSkge1xyXG4gICAgdGhpcy50cmVlID0gY3JlYXRlVHJlZUZyb21MaXN0KHRoaXMubGlzdCk7XHJcbiAgfVxyXG5cclxuICBnZXRMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdDtcclxuICB9XHJcblxyXG4gIGdldFRyZWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRHJvcCh7IGtleSwgcGFyZW50Tm9kZSB9OiBUcmVlTm9kZTxUPikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3QuZmluZEluZGV4KCh7IGlkIH0pID0+IGlkID09PSBrZXkpO1xyXG4gICAgdGhpcy5saXN0W2luZGV4XS5wYXJlbnRJZCA9IHBhcmVudE5vZGUgPyBwYXJlbnROb2RlLmtleSA6IG51bGw7XHJcbiAgICB0aGlzLnRyZWUgPSBjcmVhdGVUcmVlRnJvbUxpc3QodGhpcy5saXN0KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlbW92ZSh7IGtleSB9OiBUcmVlTm9kZTxUPikge1xyXG4gICAgdGhpcy51cGRhdGVUcmVlRnJvbUxpc3QodGhpcy5saXN0LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IGtleSkpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlVXBkYXRlKHsga2V5LCBjaGlsZHJlbiB9OiB7IGtleTogc3RyaW5nOyBjaGlsZHJlbjogVFtdIH0pIHtcclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB3ZSBuZWVkIHRvIHVwZGF0ZSBhIG5vZGUgd2l0aCBuZXcgY2hpbGRyZW4sIGZpcnN0IHdlIG5lZWQgdG8gcmVtb3ZlIGFueSBkZXNjZW5kYW50IG5vZGVzLlxyXG4gICAgICogSWYgd2UgcmVtb3ZlIGltbWVkaWF0ZSBjaGlsZHJlbiBhbmQgY3JlYXRlIGEgbmV3IHRyZWUsIGFueSBvdGhlciBkZXNjZW5kYW50IG5vZGVzIHdpbGwgYmUgcmVtb3ZlZFxyXG4gICAgICogYW5kIHdlIHdvbid0IG5lZWQgdG8gcmVjdXJzaXZlbHkgcmVtb3ZlIHN1YiBjaGlsZHJlbi5cclxuICAgICAqIFRoZW4sIHlvdSBzaW1wbHkgYWRkIGJhY2sgdGhlIG5ldyBjaGlsZHJlbiBhbmQgY3JlYXRlIGEgbmV3IHRyZWUuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGxpc3RXaXRoRGVzY2VuZGFudE5vZGVzUmVtb3ZlZCA9IHRoaXMudXBkYXRlVHJlZUZyb21MaXN0KFxyXG4gICAgICB0aGlzLmxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wYXJlbnRJZCAhPT0ga2V5KSxcclxuICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZVRyZWVGcm9tTGlzdChsaXN0V2l0aERlc2NlbmRhbnROb2Rlc1JlbW92ZWQuY29uY2F0KGNoaWxkcmVuKSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmVlRnJvbUxpc3QobGlzdDogVFtdKSB7XHJcbiAgICB0aGlzLnRyZWUgPSBjcmVhdGVUcmVlRnJvbUxpc3QobGlzdCk7XHJcbiAgICB0aGlzLmxpc3QgPSBjcmVhdGVMaXN0RnJvbVRyZWUodGhpcy50cmVlKTtcclxuICAgIHJldHVybiB0aGlzLmxpc3Q7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBVVElMSVRZIEZVTkNUSU9OU1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlVHJlZUZyb21MaXN0PFQgZXh0ZW5kcyBCYXNlTm9kZT4obGlzdDogVFtdKTogVHJlZU5vZGU8VD5bXSB7XHJcbiAgY29uc3QgbWFwID0gY3JlYXRlTWFwRnJvbUxpc3QobGlzdCk7XHJcbiAgY29uc3QgdHJlZTogVHJlZU5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICBsaXN0LmZvckVhY2gocm93ID0+IHtcclxuICAgIGNvbnN0IHBhcmVudElkID0gcm93LnBhcmVudElkO1xyXG4gICAgY29uc3Qgbm9kZSA9IG1hcC5nZXQocm93LmlkKTtcclxuICAgIGlmIChwYXJlbnRJZCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBtYXAuZ2V0KHBhcmVudElkKTtcclxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVybjtcclxuICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XHJcbiAgICAgIHBhcmVudC5pc0xlYWYgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gdHJlZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlTGlzdEZyb21UcmVlPFQgZXh0ZW5kcyBCYXNlTm9kZT4odHJlZTogVHJlZU5vZGU8VD5bXSwgbGlzdDogVFtdID0gW10pOiBUW10ge1xyXG4gIHRyZWUuZm9yRWFjaChub2RlID0+IHtcclxuICAgIGxpc3QucHVzaCh7IC4uLm5vZGUuZW50aXR5LCBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCB9KTtcclxuICAgIGlmIChub2RlLmNoaWxkcmVuKSBjcmVhdGVMaXN0RnJvbVRyZWUobm9kZS5jaGlsZHJlbiwgbGlzdCk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBsaXN0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVNYXBGcm9tTGlzdDxUIGV4dGVuZHMgQmFzZU5vZGU+KFxyXG4gIGxpc3Q6IFRbXSxcclxuICBtYXAgPSBuZXcgTWFwPHN0cmluZywgVHJlZU5vZGU8VD4+KCksXHJcbik6IE1hcDxzdHJpbmcsIFRyZWVOb2RlPFQ+PiB7XHJcbiAgbGlzdC5mb3JFYWNoKHJvdyA9PiBtYXAuc2V0KHJvdy5pZCwgbmV3IFRyZWVOb2RlKHJvdykpKTtcclxuXHJcbiAgcmV0dXJuIG1hcDtcclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmNvbXBvbmVudHMtdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdHJlZS9zcmMvYWJwLW5nLmNvbXBvbmVudHMtdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abp-ng.components-tree.mjs","sources":["../../../../packages/components/tree/src/lib/disable-tree-style-loading.token.ts","../../../../packages/components/tree/src/lib/templates/tree-node-template.directive.ts","../../../../packages/components/tree/src/lib/templates/expanded-icon-template.directive.ts","../../../../packages/components/tree/src/lib/components/tree.component.ts","../../../../packages/components/tree/src/lib/components/tree.component.html","../../../../packages/components/tree/src/lib/tree.module.ts","../../../../packages/components/tree/src/lib/utils/nz-tree-adapter.ts","../../../../packages/components/tree/src/abp-ng.components-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DISABLE_TREE_STYLE_LOADING_TOKEN = new InjectionToken<boolean>(\r\n 'DISABLE_TREE_STYLE_LOADING_TOKEN',\r\n);\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',\r\n})\r\nexport class TreeNodeTemplateDirective {\r template = inject<TemplateRef<any>>(TemplateRef);\n\n}\r\n","import { Directive, TemplateRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',\r\n})\r\nexport class ExpandedIconTemplateDirective {\r template = inject<TemplateRef<any>>(TemplateRef);\n\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n NzFormatBeforeDropEvent,\r\n NzFormatEmitEvent,\r\n NzTreeComponent,\r\n NzTreeNode,\r\n} from 'ng-zorro-antd/tree';\r\nimport {\r\n InitDirective,\r\n LazyLoadService,\r\n LOADING_STRATEGY,\r\n SubscriptionService,\r\n} from '@abp/ng.core';\r\nimport { of } from 'rxjs';\r\nimport { DISABLE_TREE_STYLE_LOADING_TOKEN } from '../disable-tree-style-loading.token';\r\nimport { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';\r\nimport { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/animation';\r\n\r\nexport type DropEvent = NzFormatEmitEvent & { pos: number };\r\n\r\n@Component({\r\n selector: 'abp-tree',\r\n templateUrl: 'tree.component.html',\r\n styleUrls: ['tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [SubscriptionService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgTemplateOutlet,\r\n NzTreeComponent,\r\n NgbDropdown,\r\n NgbDropdownMenu,\r\n NgbDropdownToggle,\r\n InitDirective,\r\n NzNoAnimationDirective,\r\n ],\r\n})\r\nexport class TreeComponent implements OnInit {\r\n private lazyLoadService = inject(LazyLoadService);\r\n private subscriptionService = inject(SubscriptionService);\r\n private cdr = inject(ChangeDetectorRef);\r\n private disableTreeStyleLoading = inject(DISABLE_TREE_STYLE_LOADING_TOKEN, { optional: true });\r\n\r\n dropPosition: number;\r\n\r\n dropdowns = {} as { [key: string]: NgbDropdown };\r\n\r\n @ContentChild('menu') menu: TemplateRef<any>;\r\n @ContentChild(TreeNodeTemplateDirective) customNodeTemplate: TreeNodeTemplateDirective;\r\n @ContentChild(ExpandedIconTemplateDirective) expandedIconTemplate: ExpandedIconTemplateDirective;\r\n @Output() readonly checkedKeysChange = new EventEmitter();\r\n @Output() readonly expandedKeysChange = new EventEmitter<string[]>();\r\n @Output() readonly selectedNodeChange = new EventEmitter();\r\n @Output() readonly dropOver = new EventEmitter<DropEvent>();\r\n @Output() readonly nzExpandChange = new EventEmitter<NzFormatEmitEvent>();\r\n @Input() noAnimation = true;\r\n @Input() draggable: boolean;\r\n @Input() checkable: boolean;\r\n @Input() checkStrictly: boolean;\r\n @Input() checkedKeys = [];\r\n @Input() nodes = [];\r\n @Input() expandedKeys: string[] = [];\r\n @Input() selectedNode: any;\r\n @Input() changeCheckboxWithNode: boolean;\r\n @Input() isNodeSelected = node => this.selectedNode?.id === node.key;\r\n @Input() beforeDrop = (event: NzFormatBeforeDropEvent) => {\r\n this.dropPosition = event.pos;\r\n return of(false);\r\n };\r\n\r\n ngOnInit() {\r\n this.loadStyle();\r\n }\r\n\r\n private loadStyle() {\r\n if (this.disableTreeStyleLoading) {\r\n return;\r\n }\r\n const loaded$ = this.lazyLoadService.load(\r\n LOADING_STRATEGY.AppendAnonymousStyleToHead('ng-zorro-antd-tree.css'),\r\n );\r\n this.subscriptionService.addOne(loaded$);\r\n }\r\n\r\n private findNode(target: any, nodes: any[]) {\r\n for (const node of nodes) {\r\n if (node.key === target.id) {\r\n return node;\r\n }\r\n if (node.children) {\r\n const res = this.findNode(target, node.children);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onSelectedNodeChange(node: NzTreeNode) {\r\n this.selectedNode = node.origin.entity;\r\n if (this.changeCheckboxWithNode) {\r\n let newVal;\r\n if (node.isChecked) {\r\n newVal = this.checkedKeys.filter(x => x !== node.key);\r\n } else {\r\n newVal = [...this.checkedKeys, node.key];\r\n }\r\n this.selectedNodeChange.emit(node);\r\n this.checkedKeys = newVal;\r\n this.checkedKeysChange.emit(newVal);\r\n } else {\r\n this.selectedNodeChange.emit(node.origin.entity);\r\n }\r\n }\r\n\r\n onCheckboxChange(event) {\r\n this.checkedKeys = [...event.keys];\r\n this.checkedKeysChange.emit(event.keys);\r\n }\r\n\r\n onExpandedKeysChange(event) {\r\n this.expandedKeys = [...event.keys];\r\n this.expandedKeysChange.emit(event.keys);\r\n this.nzExpandChange.emit(event);\r\n }\r\n\r\n onDrop(event: DropEvent) {\r\n event.event.stopPropagation();\r\n event.event.preventDefault();\r\n event.pos = this.dropPosition;\r\n\r\n this.dropOver.emit(event);\r\n }\r\n\r\n initDropdown(key: string, dropdown: NgbDropdown) {\r\n this.dropdowns[key] = dropdown;\r\n }\r\n\r\n onContextMenuChange(event: NzFormatEmitEvent) {\r\n const dropdownKey = event.node?.key;\r\n\r\n Object.entries(this.dropdowns).forEach(([key, dropdown]) => {\r\n if (key !== dropdownKey && dropdown?.isOpen()) {\r\n dropdown.close();\r\n }\r\n });\r\n this.dropdowns[dropdownKey]?.toggle();\r\n }\r\n\r\n setSelectedNode(node: any) {\r\n const newSelectedNode = this.findNode(node, this.nodes);\r\n this.selectedNode = { ...newSelectedNode };\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<nz-tree\r\n [nzBeforeDrop]=\"beforeDrop\"\r\n [nzDraggable]=\"draggable\"\r\n [nzCheckStrictly]=\"checkStrictly\"\r\n [nzCheckable]=\"checkable\"\r\n [nzCheckedKeys]=\"checkedKeys\"\r\n [nzData]=\"nodes\"\r\n [nzTreeTemplate]=\"treeTemplate\"\r\n [nzExpandedKeys]=\"expandedKeys\"\r\n [nzExpandedIcon]=\"expandedIconTemplate?.template || defaultIconTemplate\"\r\n (nzExpandChange)=\"onExpandedKeysChange($event)\"\r\n (nzCheckboxChange)=\"onCheckboxChange($event)\"\r\n (nzOnDrop)=\"onDrop($event)\"\r\n [nzNoAnimation]=\"noAnimation\"\r\n (nzContextMenu)=\"onContextMenuChange($event)\"\r\n/>\r\n<ng-template #treeTemplate let-node>\r\n <div\r\n [class.selected]=\"isNodeSelected(node)\"\r\n [title]=\"node.title\"\r\n (click)=\"onSelectedNodeChange(node)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\" />\r\n\r\n <ng-template #nodeTemplate let-node>\r\n <div class=\"d-inline-flex align-items-center abp-ellipsis-inline\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\r\n context: { $implicit: node }\r\n \"\r\n />\r\n </div>\r\n\r\n @if (menu) {\r\n <div\r\n #dropdown=\"ngbDropdown\"\r\n class=\"d-inline-block ms-1\"\r\n ngbDropdown\r\n placement=\"bottom\"\r\n container=\"body\"\r\n (abpInit)=\"initDropdown(node.key, dropdown)\"\r\n >\r\n <i\r\n class=\"fas fa-caret-down text-muted\"\r\n ngbDropdownToggle\r\n [class.dropdown-toggle]=\"false\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n <div ngbDropdownMenu>\r\n <ng-template *ngTemplateOutlet=\"menu; context: { $implicit: node }\" />\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultNodeTemplate let-node>\r\n <span>{{ node.title }}</span>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\r\n <i aria-hidden=\"true\">\r\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"\r\n /></i>\r\n</ng-template>\r\n\r\n<ng-template #minusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #plusIcon>\r\n <svg\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n >\r\n <path\r\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\r\n />\r\n </svg>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { TreeComponent } from './components/tree.component';\r\nimport { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';\r\nimport { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';\r\n\r\n@NgModule({\r\n imports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n exports: [TreeComponent, TreeNodeTemplateDirective, ExpandedIconTemplateDirective],\r\n declarations: [],\r\n})\r\nexport class TreeModule {}\r\n","export abstract class BaseNode {\r\n name?: string;\r\n displayName?: string;\r\n\r\n constructor(public id: string, public parentId: string | null) {}\r\n}\r\n\r\nexport class TreeNode<T extends BaseNode> extends BaseNode {\r\n title: string | undefined;\r\n key: string;\r\n icon: string | null = null;\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n checked = false;\r\n selected = false;\r\n expanded = false;\r\n selectable = true;\r\n disabled = false;\r\n disableCheckbox = false;\r\n parentNode?: TreeNode<T> | null;\r\n\r\n constructor(public entity: T, private nameResolver = ent => ent.displayName || ent.name) {\r\n super(entity.id, entity.parentId);\r\n this.key = entity.id;\r\n this.title = nameResolver(entity);\r\n }\r\n}\r\n\r\nexport class TreeAdapter<T extends BaseNode = BaseNode> {\r\n private tree: TreeNode<T>[];\r\n\r\n constructor(private list: T[] = []) {\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n getList() {\r\n return this.list;\r\n }\r\n\r\n getTree() {\r\n return this.tree;\r\n }\r\n\r\n handleDrop({ key, parentNode }: TreeNode<T>) {\r\n const index = this.list.findIndex(({ id }) => id === key);\r\n this.list[index].parentId = parentNode ? parentNode.key : null;\r\n this.tree = createTreeFromList(this.list);\r\n }\r\n\r\n handleRemove({ key }: TreeNode<T>) {\r\n this.updateTreeFromList(this.list.filter(item => item.id !== key));\r\n }\r\n\r\n handleUpdate({ key, children }: { key: string; children: T[] }) {\r\n /**\r\n * When we need to update a node with new children, first we need to remove any descendant nodes.\r\n * If we remove immediate children and create a new tree, any other descendant nodes will be removed\r\n * and we won't need to recursively remove sub children.\r\n * Then, you simply add back the new children and create a new tree.\r\n */\r\n const listWithDescendantNodesRemoved = this.updateTreeFromList(\r\n this.list.filter(item => item.parentId !== key),\r\n );\r\n this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));\r\n }\r\n\r\n updateTreeFromList(list: T[]) {\r\n this.tree = createTreeFromList(list);\r\n this.list = createListFromTree(this.tree);\r\n return this.list;\r\n }\r\n}\r\n\r\n// UTILITY FUNCTIONS\r\n\r\nfunction createTreeFromList<T extends BaseNode>(list: T[]): TreeNode<T>[] {\r\n const map = createMapFromList(list);\r\n const tree: TreeNode<T>[] = [];\r\n\r\n list.forEach(row => {\r\n const parentId = row.parentId;\r\n const node = map.get(row.id);\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n parent.children.push(node);\r\n parent.isLeaf = false;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n return tree;\r\n}\r\n\r\nfunction createListFromTree<T extends BaseNode>(tree: TreeNode<T>[], list: T[] = []): T[] {\r\n tree.forEach(node => {\r\n list.push({ ...node.entity, parentId: node.parentId });\r\n if (node.children) createListFromTree(node.children, list);\r\n });\r\n\r\n return list;\r\n}\r\n\r\nfunction createMapFromList<T extends BaseNode>(\r\n list: T[],\r\n map = new Map<string, TreeNode<T>>(),\r\n): Map<string, TreeNode<T>> {\r\n list.forEach(row => map.set(row.id, new TreeNode(row)));\r\n\r\n return map;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.components.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"abp-ng.components.mjs","sources":["../../../../packages/components/src/public-api.ts","../../../../packages/components/src/abp-ng.components.ts"],"sourcesContent":["/*\r\n * Public API Surface of components\r\n */\r\n\r\nexport {};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;;ACFH;;AAEG"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abp/ng.components",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.1.0-rc.2",
|
|
4
4
|
"homepage": "https://abp.io",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/abpframework/abp.git"
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
|
-
"@abp/ng.core": ">=10.0.
|
|
11
|
-
"@abp/ng.theme.shared": ">=10.0.
|
|
10
|
+
"@abp/ng.core": ">=10.1.0-rc.2",
|
|
11
|
+
"@abp/ng.theme.shared": ">=10.1.0-rc.2"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"chart.js": "^3.5.1",
|
|
15
|
-
"ng-zorro-antd": "~
|
|
15
|
+
"ng-zorro-antd": "~21.0.0-next.1",
|
|
16
16
|
"@ctrl/tinycolor": "^4.0.0",
|
|
17
17
|
"tslib": "^2.0.0"
|
|
18
18
|
},
|
|
@@ -34,29 +34,37 @@
|
|
|
34
34
|
"webapp"
|
|
35
35
|
],
|
|
36
36
|
"module": "fesm2022/abp-ng.components.mjs",
|
|
37
|
-
"typings": "
|
|
37
|
+
"typings": "types/abp-ng.components.d.ts",
|
|
38
38
|
"exports": {
|
|
39
39
|
"./package.json": {
|
|
40
40
|
"default": "./package.json"
|
|
41
41
|
},
|
|
42
42
|
".": {
|
|
43
|
-
"types": "./
|
|
43
|
+
"types": "./types/abp-ng.components.d.ts",
|
|
44
44
|
"default": "./fesm2022/abp-ng.components.mjs"
|
|
45
45
|
},
|
|
46
|
+
"./chart.js": {
|
|
47
|
+
"types": "./types/abp-ng.components-chart.js.d.ts",
|
|
48
|
+
"default": "./fesm2022/abp-ng.components-chart.js.mjs"
|
|
49
|
+
},
|
|
50
|
+
"./dynamic-form": {
|
|
51
|
+
"types": "./types/abp-ng.components-dynamic-form.d.ts",
|
|
52
|
+
"default": "./fesm2022/abp-ng.components-dynamic-form.mjs"
|
|
53
|
+
},
|
|
46
54
|
"./extensible": {
|
|
47
|
-
"types": "./
|
|
55
|
+
"types": "./types/abp-ng.components-extensible.d.ts",
|
|
48
56
|
"default": "./fesm2022/abp-ng.components-extensible.mjs"
|
|
49
57
|
},
|
|
50
|
-
"./
|
|
51
|
-
"types": "./
|
|
52
|
-
"default": "./fesm2022/abp-ng.components-
|
|
58
|
+
"./lookup": {
|
|
59
|
+
"types": "./types/abp-ng.components-lookup.d.ts",
|
|
60
|
+
"default": "./fesm2022/abp-ng.components-lookup.mjs"
|
|
53
61
|
},
|
|
54
62
|
"./page": {
|
|
55
|
-
"types": "./
|
|
63
|
+
"types": "./types/abp-ng.components-page.d.ts",
|
|
56
64
|
"default": "./fesm2022/abp-ng.components-page.mjs"
|
|
57
65
|
},
|
|
58
66
|
"./tree": {
|
|
59
|
-
"types": "./
|
|
67
|
+
"types": "./types/abp-ng.components-tree.d.ts",
|
|
60
68
|
"default": "./fesm2022/abp-ng.components-tree.mjs"
|
|
61
69
|
}
|
|
62
70
|
},
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Type, OnInit, DestroyRef, ChangeDetectorRef, InjectionToken, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import * as _angular_forms from '@angular/forms';
|
|
4
|
+
import { ControlValueAccessor, FormGroup, FormControl, FormArray } from '@angular/forms';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
|
|
7
|
+
interface FormFieldConfig<T = any> {
|
|
8
|
+
key: string;
|
|
9
|
+
value?: any;
|
|
10
|
+
type: 'text' | 'email' | 'number' | 'select' | 'checkbox' | 'date' | 'textarea' | 'datetime-local' | 'time' | 'password' | 'tel' | 'url' | 'radio' | 'file' | 'range' | 'color' | 'group' | 'array';
|
|
11
|
+
label: string;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
options?: OptionProps<T>;
|
|
16
|
+
validators?: ValidatorConfig[];
|
|
17
|
+
conditionalLogic?: ConditionalRule[];
|
|
18
|
+
order?: number;
|
|
19
|
+
gridSize?: number;
|
|
20
|
+
component?: Type<ControlValueAccessor>;
|
|
21
|
+
min?: number | string;
|
|
22
|
+
max?: number | string;
|
|
23
|
+
step?: number | string;
|
|
24
|
+
minLength?: number;
|
|
25
|
+
maxLength?: number;
|
|
26
|
+
pattern?: string;
|
|
27
|
+
accept?: string;
|
|
28
|
+
multiple?: boolean;
|
|
29
|
+
children?: FormFieldConfig[];
|
|
30
|
+
minItems?: number;
|
|
31
|
+
maxItems?: number;
|
|
32
|
+
}
|
|
33
|
+
interface ValidatorConfig {
|
|
34
|
+
type: 'required' | 'email' | 'minLength' | 'maxLength' | 'pattern' | 'custom' | 'min' | 'max' | 'requiredTrue';
|
|
35
|
+
value?: any;
|
|
36
|
+
message: string;
|
|
37
|
+
}
|
|
38
|
+
interface ConditionalRule {
|
|
39
|
+
dependsOn: string;
|
|
40
|
+
condition: 'equals' | 'notEquals' | 'contains' | 'greaterThan' | 'lessThan';
|
|
41
|
+
value: any;
|
|
42
|
+
action: 'show' | 'hide' | 'enable' | 'disable';
|
|
43
|
+
}
|
|
44
|
+
declare enum ConditionalAction {
|
|
45
|
+
SHOW = "show",
|
|
46
|
+
HIDE = "hide",
|
|
47
|
+
ENABLE = "enable",
|
|
48
|
+
DISABLE = "disable"
|
|
49
|
+
}
|
|
50
|
+
interface OptionProps<T = any> {
|
|
51
|
+
defaultValues?: T[];
|
|
52
|
+
url?: string;
|
|
53
|
+
disabled?: (option: T) => boolean;
|
|
54
|
+
labelProp?: string;
|
|
55
|
+
valueProp?: string;
|
|
56
|
+
apiName?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
declare class DynamicFormComponent implements OnInit {
|
|
60
|
+
fields: _angular_core.InputSignal<FormFieldConfig<any>[]>;
|
|
61
|
+
values: _angular_core.InputSignal<Record<string, any>>;
|
|
62
|
+
submitButtonText: _angular_core.InputSignal<string>;
|
|
63
|
+
submitInProgress: _angular_core.InputSignal<boolean>;
|
|
64
|
+
showCancelButton: _angular_core.InputSignal<boolean>;
|
|
65
|
+
onSubmit: _angular_core.OutputEmitterRef<any>;
|
|
66
|
+
formCancel: _angular_core.OutputEmitterRef<void>;
|
|
67
|
+
private dynamicFormService;
|
|
68
|
+
readonly destroyRef: DestroyRef;
|
|
69
|
+
readonly changeDetectorRef: ChangeDetectorRef;
|
|
70
|
+
dynamicForm: FormGroup;
|
|
71
|
+
fieldVisibility: {
|
|
72
|
+
[key: string]: boolean;
|
|
73
|
+
};
|
|
74
|
+
ngOnInit(): void;
|
|
75
|
+
get sortedFields(): FormFieldConfig[];
|
|
76
|
+
submit(): void;
|
|
77
|
+
onCancel(): void;
|
|
78
|
+
onFieldChange(event: {
|
|
79
|
+
fieldKey: string;
|
|
80
|
+
value: any;
|
|
81
|
+
}): void;
|
|
82
|
+
isFieldVisible(field: FormFieldConfig): boolean;
|
|
83
|
+
getChildFormGroup(key: string): FormGroup;
|
|
84
|
+
resetForm(): void;
|
|
85
|
+
private initializeFieldVisibility;
|
|
86
|
+
private setupConditionalLogic;
|
|
87
|
+
private evaluateConditionalLogic;
|
|
88
|
+
private evaluateCondition;
|
|
89
|
+
private applyConditionalAction;
|
|
90
|
+
private setupFormAndLogic;
|
|
91
|
+
private markAllFieldsAsTouched;
|
|
92
|
+
private focusFirstInvalidField;
|
|
93
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormComponent, "abp-dynamic-form", ["abpDynamicForm"], { "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "submitButtonText": { "alias": "submitButtonText"; "required": false; "isSignal": true; }; "submitInProgress": { "alias": "submitInProgress"; "required": false; "isSignal": true; }; "showCancelButton": { "alias": "showCancelButton"; "required": false; "isSignal": true; }; }, { "onSubmit": "onSubmit"; "formCancel": "formCancel"; }, never, ["[actions]"], true, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
declare const ABP_DYNAMIC_FORM_FIELD: InjectionToken<DynamicFormFieldComponent>;
|
|
98
|
+
declare class DynamicFormFieldComponent implements OnInit, ControlValueAccessor {
|
|
99
|
+
field: _angular_core.InputSignal<FormFieldConfig<any>>;
|
|
100
|
+
visible: _angular_core.InputSignal<boolean>;
|
|
101
|
+
control: FormControl;
|
|
102
|
+
fieldFormGroup: FormGroup;
|
|
103
|
+
readonly changeDetectorRef: ChangeDetectorRef;
|
|
104
|
+
readonly destroyRef: DestroyRef;
|
|
105
|
+
private injector;
|
|
106
|
+
private formBuilder;
|
|
107
|
+
private dynamicFormService;
|
|
108
|
+
options$: Observable<{
|
|
109
|
+
key: string;
|
|
110
|
+
value: any;
|
|
111
|
+
}[]>;
|
|
112
|
+
get fieldId(): string;
|
|
113
|
+
get errorId(): string;
|
|
114
|
+
get helpTextId(): string;
|
|
115
|
+
constructor();
|
|
116
|
+
ngOnInit(): void;
|
|
117
|
+
writeValue(value: any[]): void;
|
|
118
|
+
registerOnChange(fn: any): void;
|
|
119
|
+
registerOnTouched(fn: any): void;
|
|
120
|
+
setDisabledState(isDisabled: boolean): void;
|
|
121
|
+
get isInvalid(): boolean;
|
|
122
|
+
get errors(): string[];
|
|
123
|
+
get value(): _angular_forms.AbstractControl<any, any, any>;
|
|
124
|
+
onFileChange(event: Event): void;
|
|
125
|
+
private onChange;
|
|
126
|
+
private onTouched;
|
|
127
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormFieldComponent, never>;
|
|
128
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormFieldComponent, "abp-dynamic-form-field", ["abpDynamicFormField"], { "field": { "alias": "field"; "required": true; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
declare class DynamicFieldHostComponent implements ControlValueAccessor {
|
|
132
|
+
component: _angular_core.InputSignal<Type<ControlValueAccessor>>;
|
|
133
|
+
inputs: _angular_core.InputSignal<Record<string, any>>;
|
|
134
|
+
viewContainerRef: ViewContainerRef;
|
|
135
|
+
private componentRef?;
|
|
136
|
+
private value;
|
|
137
|
+
private disabled;
|
|
138
|
+
private innerControl;
|
|
139
|
+
readonly destroyRef: DestroyRef;
|
|
140
|
+
constructor();
|
|
141
|
+
private createChild;
|
|
142
|
+
private applyInputs;
|
|
143
|
+
private isCVA;
|
|
144
|
+
writeValue(obj: any): void;
|
|
145
|
+
private onChange;
|
|
146
|
+
private onTouched;
|
|
147
|
+
registerOnChange(fn: any): void;
|
|
148
|
+
registerOnTouched(fn: any): void;
|
|
149
|
+
setDisabledState(isDisabled: boolean): void;
|
|
150
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFieldHostComponent, never>;
|
|
151
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFieldHostComponent, "abp-dynamic-form-field-host", never, { "component": { "alias": "component"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
declare class DynamicFormService {
|
|
155
|
+
private formBuilder;
|
|
156
|
+
private restService;
|
|
157
|
+
apiName: string;
|
|
158
|
+
createFormGroup(fields: FormFieldConfig[]): FormGroup;
|
|
159
|
+
createFormArray(arrayConfig: FormFieldConfig): FormArray;
|
|
160
|
+
getInitialValues(fields: FormFieldConfig[]): any;
|
|
161
|
+
getOptions(url: string, apiName?: string): any;
|
|
162
|
+
private buildValidators;
|
|
163
|
+
private getInitialValue;
|
|
164
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormService, never>;
|
|
165
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DynamicFormService>;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
declare class DynamicFormGroupComponent {
|
|
169
|
+
groupConfig: _angular_core.InputSignal<FormFieldConfig<any>>;
|
|
170
|
+
formGroup: _angular_core.InputSignal<FormGroup<any>>;
|
|
171
|
+
visible: _angular_core.InputSignal<boolean>;
|
|
172
|
+
get sortedChildren(): FormFieldConfig[];
|
|
173
|
+
getChildFormGroup(key: string): FormGroup;
|
|
174
|
+
getChildControl(key: string): _angular_forms.AbstractControl<any, any, any>;
|
|
175
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormGroupComponent, never>;
|
|
176
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormGroupComponent, "abp-dynamic-form-group", never, { "groupConfig": { "alias": "groupConfig"; "required": true; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
declare class DynamicFormArrayComponent {
|
|
180
|
+
arrayConfig: _angular_core.InputSignal<FormFieldConfig<any>>;
|
|
181
|
+
formGroup: _angular_core.InputSignal<FormGroup<any>>;
|
|
182
|
+
visible: _angular_core.InputSignal<boolean>;
|
|
183
|
+
private fb;
|
|
184
|
+
private dynamicFormService;
|
|
185
|
+
private cdr;
|
|
186
|
+
get formArray(): FormArray;
|
|
187
|
+
get sortedChildren(): FormFieldConfig[];
|
|
188
|
+
get canAddItem(): boolean;
|
|
189
|
+
get canRemoveItem(): boolean;
|
|
190
|
+
addItem(): void;
|
|
191
|
+
removeItem(index: number): void;
|
|
192
|
+
getItemFormGroup(index: number): FormGroup;
|
|
193
|
+
getNestedFormGroup(index: number, key: string): FormGroup;
|
|
194
|
+
trackByIndex(index: number): number;
|
|
195
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormArrayComponent, never>;
|
|
196
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormArrayComponent, "abp-dynamic-form-array", never, { "arrayConfig": { "alias": "arrayConfig"; "required": true; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export { ABP_DYNAMIC_FORM_FIELD, ConditionalAction, DynamicFieldHostComponent, DynamicFormArrayComponent, DynamicFormComponent, DynamicFormFieldComponent, DynamicFormGroupComponent, DynamicFormService };
|
|
200
|
+
export type { ConditionalRule, FormFieldConfig, OptionProps, ValidatorConfig };
|
|
@@ -157,8 +157,8 @@ declare class ExtensibleFormPropService {
|
|
|
157
157
|
#private;
|
|
158
158
|
meridian$: rxjs.Observable<boolean>;
|
|
159
159
|
isRequired(validator: ValidatorFn): boolean;
|
|
160
|
-
getComponent(prop: FormProp): "
|
|
161
|
-
getType(prop: FormProp): "email" | "hidden" | "number" | "
|
|
160
|
+
getComponent(prop: FormProp): "date" | "hidden" | "multiselect" | "passwordinputgroup" | "time" | "typeahead" | "template" | "checkbox" | "dateTime" | "textarea" | "select" | "input";
|
|
161
|
+
getType(prop: FormProp): "email" | "hidden" | "number" | "password" | "passwordinputgroup" | "text" | "checkbox";
|
|
162
162
|
calcAsterisks(validators: ValidatorFn[]): "" | "*";
|
|
163
163
|
static ɵfac: i0.ɵɵFactoryDeclaration<ExtensibleFormPropService, never>;
|
|
164
164
|
static ɵprov: i0.ɵɵInjectableDeclaration<ExtensibleFormPropService>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnInit, TemplateRef } from '@angular/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
|
|
5
|
+
interface LookupItem {
|
|
6
|
+
key: string;
|
|
7
|
+
displayName: string;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
type LookupSearchFn<T = LookupItem> = (filter: string) => Observable<T[]>;
|
|
11
|
+
declare class LookupSearchComponent<T extends LookupItem = LookupItem> implements OnInit {
|
|
12
|
+
private readonly destroyRef;
|
|
13
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
14
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
15
|
+
readonly debounceTime: _angular_core.InputSignal<number>;
|
|
16
|
+
readonly minSearchLength: _angular_core.InputSignal<number>;
|
|
17
|
+
readonly displayKey: _angular_core.InputSignal<keyof T>;
|
|
18
|
+
readonly valueKey: _angular_core.InputSignal<keyof T>;
|
|
19
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
20
|
+
readonly searchFn: _angular_core.InputSignal<LookupSearchFn<T>>;
|
|
21
|
+
readonly selectedValue: _angular_core.ModelSignal<string>;
|
|
22
|
+
readonly displayValue: _angular_core.ModelSignal<string>;
|
|
23
|
+
readonly itemSelected: _angular_core.OutputEmitterRef<T>;
|
|
24
|
+
readonly searchChanged: _angular_core.OutputEmitterRef<string>;
|
|
25
|
+
readonly itemTemplate: _angular_core.Signal<TemplateRef<{
|
|
26
|
+
$implicit: T;
|
|
27
|
+
}>>;
|
|
28
|
+
readonly noResultsTemplate: _angular_core.Signal<TemplateRef<void>>;
|
|
29
|
+
readonly searchResults: _angular_core.WritableSignal<T[]>;
|
|
30
|
+
readonly showDropdown: _angular_core.WritableSignal<boolean>;
|
|
31
|
+
readonly isLoading: _angular_core.WritableSignal<boolean>;
|
|
32
|
+
private readonly searchSubject;
|
|
33
|
+
ngOnInit(): void;
|
|
34
|
+
onSearchInput(filter: string): void;
|
|
35
|
+
onSearchFocus(): void;
|
|
36
|
+
onSearchBlur(event: FocusEvent): void;
|
|
37
|
+
selectItem(item: T): void;
|
|
38
|
+
clearSelection(): void;
|
|
39
|
+
private performSearch;
|
|
40
|
+
getDisplayValue(item: T): string;
|
|
41
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LookupSearchComponent<any>, never>;
|
|
42
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LookupSearchComponent<any>, "abp-lookup-search", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "minSearchLength": { "alias": "minSearchLength"; "required": false; "isSignal": true; }; "displayKey": { "alias": "displayKey"; "required": false; "isSignal": true; }; "valueKey": { "alias": "valueKey"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "selectedValue": { "alias": "selectedValue"; "required": false; "isSignal": true; }; "displayValue": { "alias": "displayValue"; "required": false; "isSignal": true; }; }, { "selectedValue": "selectedValueChange"; "displayValue": "displayValueChange"; "itemSelected": "itemSelected"; "searchChanged": "searchChanged"; }, ["itemTemplate", "noResultsTemplate"], never, true, never>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { LookupSearchComponent };
|
|
46
|
+
export type { LookupItem, LookupSearchFn };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|