Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@samotics/ngx-treeview

Package Overview
Dependencies
Maintainers
4
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@samotics/ngx-treeview - npm Package Compare versions

Comparing version
19.0.1
to
20.0.0
+50
-50
fesm2022/samotics-ngx-treeview.mjs

@@ -48,6 +48,6 @@ import * as i0 from '@angular/core';

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: DropdownDirective, isStandalone: false, selector: "[ngxDropdown]", inputs: { internalOpen: ["open", "internalOpen"] }, outputs: { openChange: "openChange" }, host: { listeners: { "keyup.esc": "onKeyupEsc()", "document:click": "onDocumentClick($event)" }, properties: { "class.show": "this.isOpen" } }, exportAs: ["ngxDropdown"], ngImport: i0 }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: DropdownDirective, isStandalone: false, selector: "[ngxDropdown]", inputs: { internalOpen: ["open", "internalOpen"] }, outputs: { openChange: "openChange" }, host: { listeners: { "keyup.esc": "onKeyupEsc()", "document:click": "onDocumentClick($event)" }, properties: { "class.show": "this.isOpen" } }, exportAs: ["ngxDropdown"], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownDirective, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownDirective, decorators: [{
type: Directive,

@@ -79,6 +79,6 @@ args: [{

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownMenuDirective, deps: [{ token: DropdownDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: DropdownMenuDirective, isStandalone: false, selector: "[ngxDropdownMenu]", host: { properties: { "class.dropdown-menu": "true", "class.show": "dropdown.isOpen" } }, ngImport: i0 }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownMenuDirective, deps: [{ token: DropdownDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: DropdownMenuDirective, isStandalone: false, selector: "[ngxDropdownMenu]", host: { properties: { "class.dropdown-menu": "true", "class.show": "dropdown.isOpen" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownMenuDirective, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownMenuDirective, decorators: [{
type: Directive,

@@ -100,6 +100,6 @@ args: [{

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownToggleDirective, deps: [{ token: DropdownDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: DropdownToggleDirective, isStandalone: false, selector: "[ngxDropdownToggle]", host: { attributes: { "aria-haspopup": "true" }, listeners: { "click": "dropdown.toggle()" }, properties: { "attr.aria-expanded": "dropdown.isOpen" }, classAttribute: "dropdown-toggle" }, ngImport: i0 }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownToggleDirective, deps: [{ token: DropdownDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: DropdownToggleDirective, isStandalone: false, selector: "[ngxDropdownToggle]", host: { attributes: { "aria-haspopup": "true" }, listeners: { "click": "dropdown.toggle()" }, properties: { "attr.aria-expanded": "dropdown.isOpen" }, classAttribute: "dropdown-toggle" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownToggleDirective, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownToggleDirective, decorators: [{
type: Directive,

@@ -353,6 +353,6 @@ args: [{

class TreeviewI18n {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewI18n }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewI18n }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewI18n, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewI18n, decorators: [{
type: Injectable

@@ -390,6 +390,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewI18n, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewI18n }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewI18n, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewI18n }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewI18n, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewI18n, decorators: [{
type: Injectable

@@ -414,6 +414,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewConfig }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewConfig }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewConfig, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewConfig, decorators: [{
type: Injectable

@@ -423,6 +423,6 @@ }] });

class TreeviewEventParser {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewEventParser, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewEventParser }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewEventParser, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewEventParser }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewEventParser, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewEventParser, decorators: [{
type: Injectable

@@ -438,6 +438,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewEventParser }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewEventParser }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DefaultTreeviewEventParser, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DefaultTreeviewEventParser, decorators: [{
type: Injectable

@@ -483,6 +483,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DownlineTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DownlineTreeviewEventParser }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DownlineTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DownlineTreeviewEventParser }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DownlineTreeviewEventParser, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DownlineTreeviewEventParser, decorators: [{
type: Injectable

@@ -521,6 +521,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: OrderDownlineTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: OrderDownlineTreeviewEventParser }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OrderDownlineTreeviewEventParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OrderDownlineTreeviewEventParser }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: OrderDownlineTreeviewEventParser, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OrderDownlineTreeviewEventParser, decorators: [{
type: Injectable

@@ -566,6 +566,6 @@ }] });

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewItemComponent, deps: [{ token: TreeviewConfig }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: TreeviewItemComponent, isStandalone: false, selector: "ngx-treeview-item", inputs: { config: "config", template: "template", item: "item" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n", styles: [":host{display:block}:host .treeview-item{white-space:nowrap}:host .treeview-item .treeview-item{margin-left:2rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TreeviewItemComponent, selector: "ngx-treeview-item", inputs: ["config", "template", "item"], outputs: ["checkedChange"] }] }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewItemComponent, deps: [{ token: TreeviewConfig }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TreeviewItemComponent, isStandalone: false, selector: "ngx-treeview-item", inputs: { config: "config", template: "template", item: "item" }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: "<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n", styles: [":host{display:block}:host .treeview-item{white-space:nowrap}:host .treeview-item .treeview-item{margin-left:2rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TreeviewItemComponent, selector: "ngx-treeview-item", inputs: ["config", "template", "item"], outputs: ["checkedChange"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewItemComponent, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewItemComponent, decorators: [{
type: Component,

@@ -764,6 +764,6 @@ args: [{ selector: 'ngx-treeview-item', standalone: false, template: "<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n", styles: [":host{display:block}:host .treeview-item{white-space:nowrap}:host .treeview-item .treeview-item{margin-left:2rem}\n"] }]

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewComponent, deps: [{ token: TreeviewI18n }, { token: TreeviewConfig }, { token: TreeviewEventParser }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: TreeviewComponent, isStandalone: false, selector: "ngx-treeview", inputs: { headerTemplate: "headerTemplate", itemTemplate: "itemTemplate", items: "items", config: "config" }, outputs: { selectedChange: "selectedChange", filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n", styles: [":host .treeview-header .row-filter{margin-bottom:.5rem}:host .treeview-header .row-all .bi{cursor:pointer}:host .treeview-container .row-item{margin-bottom:.3rem;flex-wrap:nowrap}:host .treeview-container .row-item .bi{cursor:pointer;margin-right:.3rem}.treeview-container{overflow-y:auto;padding-right:.3rem}.treeview-text{padding:.3rem 0;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: TreeviewItemComponent, selector: "ngx-treeview-item", inputs: ["config", "template", "item"], outputs: ["checkedChange"] }] }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewComponent, deps: [{ token: TreeviewI18n }, { token: TreeviewConfig }, { token: TreeviewEventParser }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TreeviewComponent, isStandalone: false, selector: "ngx-treeview", inputs: { headerTemplate: "headerTemplate", itemTemplate: "itemTemplate", items: "items", config: "config" }, outputs: { selectedChange: "selectedChange", filterChange: "filterChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n", styles: [":host .treeview-header .row-filter{margin-bottom:.5rem}:host .treeview-header .row-all .bi{cursor:pointer}:host .treeview-container .row-item{margin-bottom:.3rem;flex-wrap:nowrap}:host .treeview-container .row-item .bi{cursor:pointer;margin-right:.3rem}.treeview-container{overflow-y:auto;padding-right:.3rem}.treeview-text{padding:.3rem 0;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: TreeviewItemComponent, selector: "ngx-treeview-item", inputs: ["config", "template", "item"], outputs: ["checkedChange"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewComponent, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewComponent, decorators: [{
type: Component,

@@ -793,5 +793,5 @@ args: [{ selector: 'ngx-treeview', standalone: false, template: "<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n", styles: [":host .treeview-header .row-filter{margin-bottom:.5rem}:host .treeview-header .row-all .bi{cursor:pointer}:host .treeview-container .row-item{margin-bottom:.3rem;flex-wrap:nowrap}:host .treeview-container .row-item .bi{cursor:pointer;margin-right:.3rem}.treeview-container{overflow-y:auto;padding-right:.3rem}.treeview-text{padding:.3rem 0;white-space:nowrap}\n"] }]

// Modern Angular 19: Use viewChild signal instead of @ViewChild
this.treeviewComponent = viewChild(TreeviewComponent);
this.treeviewComponent = viewChild(TreeviewComponent, ...(ngDevMode ? [{ debugName: "treeviewComponent" }] : []));
// Use a signal to track when selection changes (since TreeviewComponent.selection is not a signal)
this.selectionVersion = signal(0);
this.selectionVersion = signal(0, ...(ngDevMode ? [{ debugName: "selectionVersion" }] : []));
// Computed signal that reacts to both treeviewComponent and selectionVersion changes

@@ -806,3 +806,3 @@ this.buttonLabel = computed(() => {

return '';
});
}, ...(ngDevMode ? [{ debugName: "buttonLabel" }] : []));
this.config = this.defaultConfig;

@@ -823,6 +823,6 @@ }

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownTreeviewComponent, deps: [{ token: TreeviewI18n }, { token: TreeviewConfig }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.17", type: DropdownTreeviewComponent, isStandalone: false, selector: "ngx-dropdown-treeview", inputs: { buttonClass: "buttonClass", headerTemplate: "headerTemplate", itemTemplate: "itemTemplate", items: "items", config: "config" }, outputs: { selectedChange: "selectedChange", filterChange: "filterChange" }, viewQueries: [{ propertyName: "treeviewComponent", first: true, predicate: TreeviewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"dropdown\" ngxDropdown>\n <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n {{buttonLabel()}}\n </button>\n <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown-container\">\n <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n </ngx-treeview>\n </div>\n </div>\n</div>\n", styles: [".dropdown{width:100%;display:inline-block}.dropdown button{width:100%;margin-right:.9rem;text-align:left;overflow:hidden;padding-right:30px;text-overflow:ellipsis}.dropdown button:after{position:absolute;right:.6rem;margin-top:.6rem}.dropdown .dropdown-menu .dropdown-container{padding:0 .6rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TreeviewComponent, selector: "ngx-treeview", inputs: ["headerTemplate", "itemTemplate", "items", "config"], outputs: ["selectedChange", "filterChange"] }, { kind: "directive", type: DropdownDirective, selector: "[ngxDropdown]", inputs: ["open"], outputs: ["openChange"], exportAs: ["ngxDropdown"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[ngxDropdownMenu]" }, { kind: "directive", type: DropdownToggleDirective, selector: "[ngxDropdownToggle]" }] }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownTreeviewComponent, deps: [{ token: TreeviewI18n }, { token: TreeviewConfig }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", type: DropdownTreeviewComponent, isStandalone: false, selector: "ngx-dropdown-treeview", inputs: { buttonClass: "buttonClass", headerTemplate: "headerTemplate", itemTemplate: "itemTemplate", items: "items", config: "config" }, outputs: { selectedChange: "selectedChange", filterChange: "filterChange" }, viewQueries: [{ propertyName: "treeviewComponent", first: true, predicate: TreeviewComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"dropdown\" ngxDropdown>\n <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n {{buttonLabel()}}\n </button>\n <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown-container\">\n <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n </ngx-treeview>\n </div>\n </div>\n</div>\n", styles: [".dropdown{width:100%;display:inline-block}.dropdown button{width:100%;margin-right:.9rem;text-align:left;overflow:hidden;padding-right:30px;text-overflow:ellipsis}.dropdown button:after{position:absolute;right:.6rem;margin-top:.6rem}.dropdown .dropdown-menu .dropdown-container{padding:0 .6rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TreeviewComponent, selector: "ngx-treeview", inputs: ["headerTemplate", "itemTemplate", "items", "config"], outputs: ["selectedChange", "filterChange"] }, { kind: "directive", type: DropdownDirective, selector: "[ngxDropdown]", inputs: ["open"], outputs: ["openChange"], exportAs: ["ngxDropdown"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[ngxDropdownMenu]" }, { kind: "directive", type: DropdownToggleDirective, selector: "[ngxDropdownToggle]" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DropdownTreeviewComponent, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownTreeviewComponent, decorators: [{
type: Component,

@@ -844,3 +844,3 @@ args: [{ selector: 'ngx-dropdown-treeview', standalone: false, template: "<div class=\"dropdown\" ngxDropdown>\n <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n {{buttonLabel()}}\n </button>\n <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown-container\">\n <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n </ngx-treeview>\n </div>\n </div>\n</div>\n", styles: [".dropdown{width:100%;display:inline-block}.dropdown button{width:100%;margin-right:.9rem;text-align:left;overflow:hidden;padding-right:30px;text-overflow:ellipsis}.dropdown button:after{position:absolute;right:.6rem;margin-top:.6rem}.dropdown .dropdown-menu .dropdown-container{padding:0 .6rem}\n"] }]

type: Output
}] } });
}], treeviewComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TreeviewComponent), { isSignal: true }] }] } });

@@ -854,6 +854,6 @@ class TreeviewPipe {

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TreeviewPipe, isStandalone: false, name: "ngxTreeview" }); }
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: TreeviewPipe, isStandalone: false, name: "ngxTreeview" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewPipe, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewPipe, decorators: [{
type: Pipe,

@@ -877,4 +877,4 @@ args: [{

}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TreeviewModule, declarations: [TreeviewComponent,
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: TreeviewModule, declarations: [TreeviewComponent,
TreeviewItemComponent,

@@ -889,6 +889,6 @@ TreeviewPipe,

DropdownTreeviewComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewModule, imports: [FormsModule,
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewModule, imports: [FormsModule,
CommonModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TreeviewModule, decorators: [{
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TreeviewModule, decorators: [{
type: NgModule,

@@ -895,0 +895,0 @@ args: [{

@@ -1,1 +0,1 @@

{"version":3,"file":"samotics-ngx-treeview.mjs","sources":["../../../projects/ngx-treeview/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-menu.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-toggle.directive.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-helper.ts","../../../projects/ngx-treeview/src/lib/models/treeview-item.ts","../../../projects/ngx-treeview/src/lib/models/treeview-i18n.ts","../../../projects/ngx-treeview/src/lib/models/treeview-config.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-event-parser.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.html","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.html","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.html","../../../projects/ngx-treeview/src/lib/pipes/treeview.pipe.ts","../../../projects/ngx-treeview/src/lib/treeview.module.ts","../../../projects/ngx-treeview/src/public-api.ts","../../../projects/ngx-treeview/src/samotics-ngx-treeview.ts"],"sourcesContent":["import { Directive, Input, Output, HostBinding, HostListener, EventEmitter } from '@angular/core';\nimport { isNil } from 'lodash';\n\n@Directive({\n selector: '[ngxDropdown]',\n exportAs: 'ngxDropdown',\n standalone: false\n})\nexport class DropdownDirective {\n toggleElement: any;\n @Input('open') internalOpen = false;\n @Output() openChange = new EventEmitter<boolean>();\n\n @HostBinding('class.show') get isOpen(): boolean {\n return this.internalOpen;\n }\n\n @HostListener('keyup.esc')\n onKeyupEsc(): void {\n this.close();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (event.button !== 2 && !this.isEventFromToggle(event)) {\n this.close();\n }\n }\n\n open(): void {\n if (!this.internalOpen) {\n this.internalOpen = true;\n this.openChange.emit(true);\n }\n }\n\n close(): void {\n if (this.internalOpen) {\n this.internalOpen = false;\n this.openChange.emit(false);\n }\n }\n\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private isEventFromToggle(event: MouseEvent): boolean {\n return !isNil(this.toggleElement) && this.toggleElement.contains(event.target);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n selector: '[ngxDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen'\n },\n standalone: false\n})\nexport class DropdownMenuDirective {\n constructor(\n public dropdown: DropdownDirective\n ) { }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n selector: '[ngxDropdownToggle]',\n host: {\n class: 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen',\n '(click)': 'dropdown.toggle()'\n },\n standalone: false\n})\nexport class DropdownToggleDirective {\n constructor(\n public dropdown: DropdownDirective,\n elementRef: ElementRef\n ) {\n dropdown.toggleElement = elementRef.nativeElement;\n }\n}\n","import { concat, isNil, pull } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\nexport const TreeviewHelper = {\n findItem,\n findItemInList,\n findParent,\n removeItem,\n concatSelection\n};\n\nfunction findItem(root: TreeviewItem, value: any): TreeviewItem {\n if (isNil(root)) {\n return undefined;\n }\n\n if (root.value === value) {\n return root;\n }\n\n if (root.children) {\n for (const child of root.children) {\n const foundItem = findItem(child, value);\n if (foundItem) {\n return foundItem;\n }\n }\n }\n\n return undefined;\n}\n\nfunction findItemInList(list: TreeviewItem[], value: any): TreeviewItem {\n if (isNil(list)) {\n return undefined;\n }\n\n for (const item of list) {\n const foundItem = findItem(item, value);\n if (foundItem) {\n return foundItem;\n }\n }\n\n return undefined;\n}\n\nfunction findParent(root: TreeviewItem, item: TreeviewItem): TreeviewItem {\n if (isNil(root) || isNil(root.children)) {\n return undefined;\n }\n\n for (const child of root.children) {\n if (child === item) {\n return root;\n } else {\n const parent = findParent(child, item);\n if (parent) {\n return parent;\n }\n }\n }\n\n return undefined;\n}\n\nfunction removeItem(root: TreeviewItem, item: TreeviewItem): boolean {\n const parent = findParent(root, item);\n if (parent) {\n pull(parent.children, item);\n if (parent.children.length === 0) {\n parent.children = undefined;\n } else {\n parent.correctChecked();\n }\n return true;\n }\n\n return false;\n}\n\nfunction concatSelection(items: TreeviewItem[], checked: TreeviewItem[], unchecked: TreeviewItem[]): { [k: string]: TreeviewItem[] } {\n let checkedItems = [...checked];\n let uncheckedItems = [...unchecked];\n for (const item of items) {\n const selection = item.getSelection();\n checkedItems = concat(checkedItems, selection.checkedItems);\n uncheckedItems = concat(uncheckedItems, selection.uncheckedItems);\n }\n return {\n checked: checkedItems,\n unchecked: uncheckedItems\n };\n}\n","import { isBoolean, isNil, isString } from 'lodash';\nimport { TreeviewHelper } from '../helpers/treeview-helper';\n\nexport interface TreeviewSelection {\n checkedItems: TreeviewItem[];\n uncheckedItems: TreeviewItem[];\n}\n\nexport interface TreeItem {\n text: string;\n value: any;\n disabled?: boolean;\n checked?: boolean;\n collapsed?: boolean;\n children?: TreeItem[];\n}\n\nexport class TreeviewItem {\n private internalDisabled = false;\n private internalChecked = true;\n private internalCollapsed = false;\n private internalChildren: TreeviewItem[];\n text: string;\n value: any;\n\n constructor(item: TreeItem, autoCorrectChecked = false) {\n if (isNil(item)) {\n throw new Error('Item must be defined');\n }\n if (isString(item.text)) {\n this.text = item.text;\n } else {\n throw new Error('A text of item must be string object');\n }\n this.value = item.value;\n if (isBoolean(item.checked)) {\n this.checked = item.checked;\n }\n if (isBoolean(item.collapsed)) {\n this.collapsed = item.collapsed;\n }\n if (isBoolean(item.disabled)) {\n this.disabled = item.disabled;\n }\n if (!isNil(item.children) && item.children.length > 0) {\n this.children = item.children.map(child => {\n if (this.disabled === true) {\n child.disabled = true;\n }\n\n return new TreeviewItem(child);\n });\n }\n\n if (autoCorrectChecked) {\n this.correctChecked();\n }\n }\n\n get checked(): boolean {\n return this.internalChecked;\n }\n\n set checked(value: boolean) {\n if (!this.internalDisabled) {\n if (this.internalChecked !== value) {\n this.internalChecked = value;\n }\n }\n }\n\n get indeterminate(): boolean {\n return this.checked === undefined;\n }\n\n setCheckedRecursive(value: boolean): void {\n if (!this.internalDisabled) {\n this.internalChecked = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.setCheckedRecursive(value));\n }\n }\n }\n\n get disabled(): boolean {\n return this.internalDisabled;\n }\n\n set disabled(value: boolean) {\n if (this.internalDisabled !== value) {\n this.internalDisabled = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.disabled = value);\n }\n }\n }\n\n get collapsed(): boolean {\n return this.internalCollapsed;\n }\n\n set collapsed(value: boolean) {\n if (this.internalCollapsed !== value) {\n this.internalCollapsed = value;\n }\n }\n\n setCollapsedRecursive(value: boolean): void {\n this.internalCollapsed = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.setCollapsedRecursive(value));\n }\n }\n\n get children(): TreeviewItem[] {\n return this.internalChildren;\n }\n\n set children(value: TreeviewItem[]) {\n if (this.internalChildren !== value) {\n if (!isNil(value) && value.length === 0) {\n throw new Error('Children must be not an empty array');\n }\n this.internalChildren = value;\n if (!isNil(this.internalChildren)) {\n let checked = null;\n this.internalChildren.forEach(child => {\n if (checked === null) {\n checked = child.checked;\n } else {\n if (child.checked !== checked) {\n checked = undefined;\n return;\n }\n }\n });\n this.internalChecked = checked;\n }\n }\n }\n\n getSelection(): TreeviewSelection {\n let checkedItems: TreeviewItem[] = [];\n let uncheckedItems: TreeviewItem[] = [];\n if (isNil(this.internalChildren)) {\n if (this.internalChecked) {\n checkedItems.push(this);\n } else {\n uncheckedItems.push(this);\n }\n } else {\n const selection = TreeviewHelper.concatSelection(this.internalChildren, checkedItems, uncheckedItems);\n checkedItems = selection.checked;\n uncheckedItems = selection.unchecked;\n }\n\n return {\n checkedItems,\n uncheckedItems\n };\n }\n\n correctChecked(): void {\n this.internalChecked = this.getCorrectChecked();\n }\n\n private getCorrectChecked(): boolean {\n let checked: boolean = null;\n if (!isNil(this.internalChildren)) {\n for (const child of this.internalChildren) {\n child.internalChecked = child.getCorrectChecked();\n if (checked === null) {\n checked = child.internalChecked;\n } else if (checked !== child.internalChecked) {\n checked = undefined;\n break;\n }\n }\n } else {\n checked = this.checked;\n }\n\n return checked;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TreeviewSelection } from './treeview-item';\n\n@Injectable()\nexport abstract class TreeviewI18n {\n abstract getText(selection: TreeviewSelection): string;\n abstract getAllCheckboxText(): string;\n abstract getFilterPlaceholder(): string;\n abstract getFilterNoItemsFoundText(): string;\n abstract getTooltipCollapseExpandText(isCollapse: boolean): string;\n}\n\n@Injectable()\nexport class DefaultTreeviewI18n extends TreeviewI18n {\n getText(selection: TreeviewSelection): string {\n const uncheckedItems = selection.uncheckedItems;\n const checkedItems = selection.checkedItems;\n \n // If uncheckedItems exists and is empty, everything is checked\n if (uncheckedItems && uncheckedItems.length === 0) {\n return this.getAllCheckboxText();\n }\n\n // If no checkedItems or empty, show appropriate message\n if (!checkedItems || checkedItems.length === 0) {\n return 'Select options';\n }\n\n // Show single item text or count\n if (checkedItems.length === 1) {\n return checkedItems[0].text;\n }\n \n return `${checkedItems.length} options selected`;\n }\n\n getAllCheckboxText(): string {\n return 'All';\n }\n\n getFilterPlaceholder(): string {\n return 'Filter';\n }\n\n getFilterNoItemsFoundText(): string {\n return 'No items found';\n }\n\n getTooltipCollapseExpandText(isCollapse: boolean): string {\n return isCollapse ? 'Expand' : 'Collapse';\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TreeviewConfig {\n hasAllCheckBox = true;\n hasFilter = false;\n hasCollapseExpand = false;\n decoupleChildFromParent = false;\n maxHeight = 500;\n\n get hasDivider(): boolean {\n return this.hasFilter || this.hasAllCheckBox || this.hasCollapseExpand;\n }\n\n public static create(fields?: {\n hasAllCheckBox?: boolean,\n hasFilter?: boolean,\n hasCollapseExpand?: boolean,\n decoupleChildFromParent?: boolean\n maxHeight?: number,\n }): TreeviewConfig {\n const config = new TreeviewConfig();\n Object.assign(config, fields);\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\nimport { TreeviewComponent } from '../components/treeview/treeview.component';\n\n@Injectable()\nexport abstract class TreeviewEventParser {\n abstract getSelectedChange(component: TreeviewComponent): any[];\n}\n\n@Injectable()\nexport class DefaultTreeviewEventParser extends TreeviewEventParser {\n getSelectedChange(component: TreeviewComponent): any[] {\n const checkedItems = component.selection.checkedItems;\n if (!isNil(checkedItems)) {\n return checkedItems.map(item => item.value);\n }\n\n return [];\n }\n}\n\nexport interface DownlineTreeviewItem {\n item: TreeviewItem;\n parent: DownlineTreeviewItem;\n}\n\n@Injectable()\nexport class DownlineTreeviewEventParser extends TreeviewEventParser {\n getSelectedChange(component: TreeviewComponent): any[] {\n const items = component.items;\n if (!isNil(items)) {\n let result: DownlineTreeviewItem[] = [];\n items.forEach(item => {\n const links = this.getLinks(item, null);\n if (!isNil(links)) {\n result = result.concat(links);\n }\n });\n\n return result;\n }\n\n return [];\n }\n\n private getLinks(item: TreeviewItem, parent: DownlineTreeviewItem): DownlineTreeviewItem[] {\n if (!isNil(item.children)) {\n const link = {\n item,\n parent\n };\n let result: DownlineTreeviewItem[] = [];\n item.children.forEach(child => {\n const links = this.getLinks(child, link);\n if (!isNil(links)) {\n result = result.concat(links);\n }\n });\n\n return result;\n }\n\n if (item.checked) {\n return [{\n item,\n parent\n }];\n }\n\n return null;\n }\n}\n\n@Injectable()\nexport class OrderDownlineTreeviewEventParser extends TreeviewEventParser {\n private currentDownlines: DownlineTreeviewItem[] = [];\n private parser = new DownlineTreeviewEventParser();\n\n getSelectedChange(component: TreeviewComponent): any[] {\n const newDownlines: DownlineTreeviewItem[] = this.parser.getSelectedChange(component);\n if (this.currentDownlines.length === 0) {\n this.currentDownlines = newDownlines;\n } else {\n const intersectDownlines: DownlineTreeviewItem[] = [];\n this.currentDownlines.forEach(downline => {\n let foundIndex = -1;\n const length = newDownlines.length;\n for (let i = 0; i < length; i++) {\n if (downline.item.value === newDownlines[i].item.value) {\n foundIndex = i;\n break;\n }\n }\n\n if (foundIndex !== -1) {\n intersectDownlines.push(newDownlines[foundIndex]);\n newDownlines.splice(foundIndex, 1);\n }\n });\n\n this.currentDownlines = intersectDownlines.concat(newDownlines);\n }\n\n return this.currentDownlines;\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n selector: 'ngx-treeview-item',\n templateUrl: './treeview-item.component.html',\n styleUrls: ['./treeview-item.component.scss'],\n standalone: false\n})\nexport class TreeviewItemComponent {\n @Input() config: TreeviewConfig;\n @Input() template: TemplateRef<TreeviewItemTemplateContext>;\n @Input() item: TreeviewItem;\n @Output() checkedChange = new EventEmitter<boolean>();\n\n constructor(\n private defaultConfig: TreeviewConfig\n ) {\n this.config = this.defaultConfig;\n }\n\n onCollapseExpand = () => {\n this.item.collapsed = !this.item.collapsed;\n }\n\n onCheckedChange = () => {\n const checked = this.item.checked;\n if (!isNil(this.item.children) && !this.config.decoupleChildFromParent) {\n this.item.children.forEach(child => child.setCheckedRecursive(checked));\n }\n this.checkedChange.emit(checked);\n }\n\n onChildCheckedChange(child: TreeviewItem, checked: boolean): void {\n if (!this.config.decoupleChildFromParent) {\n let itemChecked: boolean = null;\n for (const childItem of this.item.children) {\n if (itemChecked === null) {\n itemChecked = childItem.checked;\n } else if (itemChecked !== childItem.checked) {\n itemChecked = undefined;\n break;\n }\n }\n\n if (itemChecked === null) {\n itemChecked = false;\n }\n\n if (this.item.checked !== itemChecked) {\n this.item.checked = itemChecked;\n }\n\n }\n\n this.checkedChange.emit(checked);\n }\n}\n","<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, SimpleChanges, OnChanges, TemplateRef, OnInit } from '@angular/core';\nimport { isNil, includes } from 'lodash';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem, TreeviewSelection } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\nimport { TreeviewHelper } from '../../helpers/treeview-helper';\nimport { TreeviewEventParser } from '../../helpers/treeview-event-parser';\n\nclass FilterTreeviewItem extends TreeviewItem {\n private readonly refItem: TreeviewItem;\n constructor(item: TreeviewItem) {\n super({\n text: item.text,\n value: item.value,\n disabled: item.disabled,\n checked: item.checked,\n collapsed: item.collapsed,\n children: item.children\n });\n this.refItem = item;\n }\n\n updateRefChecked(): void {\n this.children.forEach(child => {\n if (child instanceof FilterTreeviewItem) {\n child.updateRefChecked();\n }\n });\n\n let refChecked = this.checked;\n if (refChecked) {\n for (const refChild of this.refItem.children) {\n if (!refChild.checked) {\n refChecked = false;\n break;\n }\n }\n }\n this.refItem.checked = refChecked;\n }\n}\n\n@Component({\n selector: 'ngx-treeview',\n templateUrl: './treeview.component.html',\n styleUrls: ['./treeview.component.scss'],\n standalone: false\n})\nexport class TreeviewComponent implements OnChanges, OnInit {\n @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n @Input() items: TreeviewItem[];\n @Input() config: TreeviewConfig;\n @Output() selectedChange = new EventEmitter<any[]>();\n @Output() filterChange = new EventEmitter<string>();\n headerTemplateContext: TreeviewHeaderTemplateContext;\n allItem: TreeviewItem;\n filterText = '';\n filterItems: TreeviewItem[];\n selection: TreeviewSelection;\n\n constructor(\n public i18n: TreeviewI18n,\n private defaultConfig: TreeviewConfig,\n private eventParser: TreeviewEventParser\n ) {\n this.config = this.defaultConfig;\n this.allItem = new TreeviewItem({ text: 'All', value: undefined });\n }\n\n get hasFilterItems(): boolean {\n return !isNil(this.filterItems) && this.filterItems.length > 0;\n }\n\n get maxHeight(): string {\n return `${this.config.maxHeight}`;\n }\n\n ngOnInit(): void {\n this.createHeaderTemplateContext();\n this.generateSelection();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const itemsSimpleChange = changes.items;\n if (!isNil(itemsSimpleChange) && !isNil(this.items)) {\n this.updateFilterItems();\n this.updateCollapsedOfAll();\n this.raiseSelectedChange();\n }\n }\n\n onAllCollapseExpand(): void {\n this.allItem.collapsed = !this.allItem.collapsed;\n this.filterItems.forEach(item => item.setCollapsedRecursive(this.allItem.collapsed));\n }\n\n onFilterTextChange(text: string): void {\n this.filterText = text;\n this.filterChange.emit(text);\n this.updateFilterItems();\n }\n\n onAllCheckedChange(): void {\n const checked = this.allItem.checked;\n this.filterItems.forEach(item => {\n item.setCheckedRecursive(checked);\n if (item instanceof FilterTreeviewItem) {\n item.updateRefChecked();\n }\n });\n\n this.raiseSelectedChange();\n }\n\n onItemCheckedChange(item: TreeviewItem, checked: boolean): void {\n if (item instanceof FilterTreeviewItem) {\n item.updateRefChecked();\n }\n\n this.updateCheckedOfAll();\n this.raiseSelectedChange();\n }\n\n raiseSelectedChange(): void {\n this.generateSelection();\n const values = this.eventParser.getSelectedChange(this);\n setTimeout(() => {\n this.selectedChange.emit(values);\n });\n }\n\n private createHeaderTemplateContext(): void {\n this.headerTemplateContext = {\n config: this.config,\n item: this.allItem,\n onCheckedChange: () => this.onAllCheckedChange(),\n onCollapseExpand: () => this.onAllCollapseExpand(),\n onFilterTextChange: (text) => this.onFilterTextChange(text)\n };\n }\n\n private generateSelection(): void {\n let checkedItems: TreeviewItem[] = [];\n let uncheckedItems: TreeviewItem[] = [];\n if (!isNil(this.items)) {\n const selection = TreeviewHelper.concatSelection(this.items, checkedItems, uncheckedItems);\n checkedItems = selection.checked;\n uncheckedItems = selection.unchecked;\n }\n\n this.selection = {\n checkedItems,\n uncheckedItems\n };\n }\n\n private updateFilterItems(): void {\n if (this.filterText !== '') {\n const filterItems: TreeviewItem[] = [];\n const filterText = this.filterText.toLowerCase();\n this.items.forEach(item => {\n const newItem = this.filterItem(item, filterText);\n if (!isNil(newItem)) {\n filterItems.push(newItem);\n }\n });\n this.filterItems = filterItems;\n } else {\n this.filterItems = this.items;\n }\n\n this.updateCheckedOfAll();\n }\n\n private filterItem(item: TreeviewItem, filterText: string): TreeviewItem {\n const isMatch = includes(item.text.toLowerCase(), filterText);\n if (isMatch) {\n return item;\n } else {\n if (!isNil(item.children)) {\n const children: TreeviewItem[] = [];\n item.children.forEach(child => {\n const newChild = this.filterItem(child, filterText);\n if (!isNil(newChild)) {\n children.push(newChild);\n }\n });\n if (children.length > 0) {\n const newItem = new FilterTreeviewItem(item);\n newItem.collapsed = false;\n newItem.children = children;\n return newItem;\n }\n }\n }\n\n return undefined;\n }\n\n private updateCheckedOfAll(): void {\n let itemChecked: boolean = null;\n for (const filterItem of this.filterItems) {\n if (itemChecked === null) {\n itemChecked = filterItem.checked;\n } else if (itemChecked !== filterItem.checked) {\n itemChecked = undefined;\n break;\n }\n }\n\n if (itemChecked === null) {\n itemChecked = false;\n }\n\n this.allItem.checked = itemChecked;\n }\n\n private updateCollapsedOfAll(): void {\n let hasItemExpanded = false;\n for (const filterItem of this.filterItems) {\n if (!filterItem.collapsed) {\n hasItemExpanded = true;\n break;\n }\n }\n\n this.allItem.collapsed = !hasItemExpanded;\n }\n}\n","<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, viewChild, TemplateRef, signal, computed, AfterViewInit } from '@angular/core';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewComponent } from '../treeview/treeview.component';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n selector: 'ngx-dropdown-treeview',\n templateUrl: './dropdown-treeview.component.html',\n styleUrls: ['./dropdown-treeview.component.scss'],\n standalone: false\n})\nexport class DropdownTreeviewComponent implements AfterViewInit {\n @Input() buttonClass = 'btn-outline-secondary';\n @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n @Input() items: TreeviewItem[];\n @Input() config: TreeviewConfig;\n @Output() selectedChange = new EventEmitter<any[]>(true);\n @Output() filterChange = new EventEmitter<string>();\n \n // Modern Angular 19: Use viewChild signal instead of @ViewChild\n treeviewComponent = viewChild<TreeviewComponent>(TreeviewComponent);\n \n // Use a signal to track when selection changes (since TreeviewComponent.selection is not a signal)\n private selectionVersion = signal(0);\n \n // Computed signal that reacts to both treeviewComponent and selectionVersion changes\n buttonLabel = computed(() => {\n // Read selectionVersion to make this computed signal reactive to selection changes\n this.selectionVersion();\n const treeview = this.treeviewComponent();\n if (treeview?.selection) {\n return this.i18n.getText(treeview.selection);\n }\n return '';\n });\n\n constructor(\n public i18n: TreeviewI18n,\n private defaultConfig: TreeviewConfig\n ) {\n this.config = this.defaultConfig;\n }\n\n ngAfterViewInit(): void {\n // Initialize button label after view is ready\n // This triggers the computed signal to evaluate with the initialized treeview\n this.selectionVersion.update(v => v + 1);\n }\n\n onSelectedChange(values: any[]): void {\n // Update the version signal to trigger computed signal re-evaluation\n this.selectionVersion.update(v => v + 1);\n this.selectedChange.emit(values);\n }\n\n onFilterChange(text: string): void {\n this.filterChange.emit(text);\n }\n}\n","<div class=\"dropdown\" ngxDropdown>\n <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n {{buttonLabel()}}\n </button>\n <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown-container\">\n <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n </ngx-treeview>\n </div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\n@Pipe({\n name: 'ngxTreeview',\n standalone: false\n})\nexport class TreeviewPipe implements PipeTransform {\n transform(objects: any[], textField: string): TreeviewItem[] {\n if (isNil(objects)) {\n return undefined;\n }\n\n return objects.map(object => new TreeviewItem({ text: object[textField], value: object }));\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DropdownDirective } from './directives/dropdown.directive';\nimport { DropdownMenuDirective } from './directives/dropdown-menu.directive';\nimport { DropdownToggleDirective } from './directives/dropdown-toggle.directive';\nimport { DropdownTreeviewComponent } from './components/dropdown-treeview/dropdown-treeview.component';\nimport { TreeviewComponent } from './components/treeview/treeview.component';\nimport { TreeviewItemComponent } from './components/treeview-item/treeview-item.component';\nimport { TreeviewPipe } from './pipes/treeview.pipe';\nimport { TreeviewI18n, DefaultTreeviewI18n } from './models/treeview-i18n';\nimport { TreeviewConfig } from './models/treeview-config';\nimport { TreeviewEventParser, DefaultTreeviewEventParser } from './helpers/treeview-event-parser';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule\n ],\n declarations: [\n TreeviewComponent,\n TreeviewItemComponent,\n TreeviewPipe,\n DropdownDirective,\n DropdownMenuDirective,\n DropdownToggleDirective,\n DropdownTreeviewComponent\n ], exports: [\n TreeviewComponent,\n TreeviewPipe,\n DropdownTreeviewComponent\n ]\n})\nexport class TreeviewModule {\n static forRoot(): ModuleWithProviders<TreeviewModule> {\n return {\n ngModule: TreeviewModule,\n providers: [\n TreeviewConfig,\n { provide: TreeviewI18n, useClass: DefaultTreeviewI18n },\n { provide: TreeviewEventParser, useClass: DefaultTreeviewEventParser }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-treeview\n */\n\nexport * from './lib/treeview.module';\nexport * from './lib/components/treeview/treeview.component';\nexport * from './lib/components/dropdown-treeview/dropdown-treeview.component';\nexport * from './lib/pipes/treeview.pipe';\nexport * from './lib/directives/dropdown-toggle.directive';\nexport * from './lib/directives/dropdown.directive';\nexport * from './lib/models/treeview-item';\nexport * from './lib/models/treeview-config';\nexport * from './lib/models/treeview-i18n';\nexport * from './lib/models/treeview-item-template-context';\nexport * from './lib/helpers/treeview-event-parser';\nexport * from './lib/helpers/treeview-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DropdownDirective","i1.TreeviewConfig","i2","i1.TreeviewI18n","i2.TreeviewConfig","i3.TreeviewEventParser","i6.TreeviewItemComponent","i3","i4.TreeviewComponent","i5.DropdownDirective","i6.DropdownMenuDirective","i7.DropdownToggleDirective"],"mappings":"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"}
{"version":3,"file":"samotics-ngx-treeview.mjs","sources":["../../../projects/ngx-treeview/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-menu.directive.ts","../../../projects/ngx-treeview/src/lib/directives/dropdown-toggle.directive.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-helper.ts","../../../projects/ngx-treeview/src/lib/models/treeview-item.ts","../../../projects/ngx-treeview/src/lib/models/treeview-i18n.ts","../../../projects/ngx-treeview/src/lib/models/treeview-config.ts","../../../projects/ngx-treeview/src/lib/helpers/treeview-event-parser.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview-item/treeview-item.component.html","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/treeview/treeview.component.html","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.ts","../../../projects/ngx-treeview/src/lib/components/dropdown-treeview/dropdown-treeview.component.html","../../../projects/ngx-treeview/src/lib/pipes/treeview.pipe.ts","../../../projects/ngx-treeview/src/lib/treeview.module.ts","../../../projects/ngx-treeview/src/public-api.ts","../../../projects/ngx-treeview/src/samotics-ngx-treeview.ts"],"sourcesContent":["import { Directive, Input, Output, HostBinding, HostListener, EventEmitter } from '@angular/core';\nimport { isNil } from 'lodash';\n\n@Directive({\n selector: '[ngxDropdown]',\n exportAs: 'ngxDropdown',\n standalone: false\n})\nexport class DropdownDirective {\n toggleElement: any;\n @Input('open') internalOpen = false;\n @Output() openChange = new EventEmitter<boolean>();\n\n @HostBinding('class.show') get isOpen(): boolean {\n return this.internalOpen;\n }\n\n @HostListener('keyup.esc')\n onKeyupEsc(): void {\n this.close();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (event.button !== 2 && !this.isEventFromToggle(event)) {\n this.close();\n }\n }\n\n open(): void {\n if (!this.internalOpen) {\n this.internalOpen = true;\n this.openChange.emit(true);\n }\n }\n\n close(): void {\n if (this.internalOpen) {\n this.internalOpen = false;\n this.openChange.emit(false);\n }\n }\n\n toggle(): void {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private isEventFromToggle(event: MouseEvent): boolean {\n return !isNil(this.toggleElement) && this.toggleElement.contains(event.target);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n selector: '[ngxDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen'\n },\n standalone: false\n})\nexport class DropdownMenuDirective {\n constructor(\n public dropdown: DropdownDirective\n ) { }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { DropdownDirective } from './dropdown.directive';\n\n@Directive({\n selector: '[ngxDropdownToggle]',\n host: {\n class: 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen',\n '(click)': 'dropdown.toggle()'\n },\n standalone: false\n})\nexport class DropdownToggleDirective {\n constructor(\n public dropdown: DropdownDirective,\n elementRef: ElementRef\n ) {\n dropdown.toggleElement = elementRef.nativeElement;\n }\n}\n","import { concat, isNil, pull } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\nexport const TreeviewHelper = {\n findItem,\n findItemInList,\n findParent,\n removeItem,\n concatSelection\n};\n\nfunction findItem(root: TreeviewItem, value: any): TreeviewItem {\n if (isNil(root)) {\n return undefined;\n }\n\n if (root.value === value) {\n return root;\n }\n\n if (root.children) {\n for (const child of root.children) {\n const foundItem = findItem(child, value);\n if (foundItem) {\n return foundItem;\n }\n }\n }\n\n return undefined;\n}\n\nfunction findItemInList(list: TreeviewItem[], value: any): TreeviewItem {\n if (isNil(list)) {\n return undefined;\n }\n\n for (const item of list) {\n const foundItem = findItem(item, value);\n if (foundItem) {\n return foundItem;\n }\n }\n\n return undefined;\n}\n\nfunction findParent(root: TreeviewItem, item: TreeviewItem): TreeviewItem {\n if (isNil(root) || isNil(root.children)) {\n return undefined;\n }\n\n for (const child of root.children) {\n if (child === item) {\n return root;\n } else {\n const parent = findParent(child, item);\n if (parent) {\n return parent;\n }\n }\n }\n\n return undefined;\n}\n\nfunction removeItem(root: TreeviewItem, item: TreeviewItem): boolean {\n const parent = findParent(root, item);\n if (parent) {\n pull(parent.children, item);\n if (parent.children.length === 0) {\n parent.children = undefined;\n } else {\n parent.correctChecked();\n }\n return true;\n }\n\n return false;\n}\n\nfunction concatSelection(items: TreeviewItem[], checked: TreeviewItem[], unchecked: TreeviewItem[]): { [k: string]: TreeviewItem[] } {\n let checkedItems = [...checked];\n let uncheckedItems = [...unchecked];\n for (const item of items) {\n const selection = item.getSelection();\n checkedItems = concat(checkedItems, selection.checkedItems);\n uncheckedItems = concat(uncheckedItems, selection.uncheckedItems);\n }\n return {\n checked: checkedItems,\n unchecked: uncheckedItems\n };\n}\n","import { isBoolean, isNil, isString } from 'lodash';\nimport { TreeviewHelper } from '../helpers/treeview-helper';\n\nexport interface TreeviewSelection {\n checkedItems: TreeviewItem[];\n uncheckedItems: TreeviewItem[];\n}\n\nexport interface TreeItem {\n text: string;\n value: any;\n disabled?: boolean;\n checked?: boolean;\n collapsed?: boolean;\n children?: TreeItem[];\n}\n\nexport class TreeviewItem {\n private internalDisabled = false;\n private internalChecked = true;\n private internalCollapsed = false;\n private internalChildren: TreeviewItem[];\n text: string;\n value: any;\n\n constructor(item: TreeItem, autoCorrectChecked = false) {\n if (isNil(item)) {\n throw new Error('Item must be defined');\n }\n if (isString(item.text)) {\n this.text = item.text;\n } else {\n throw new Error('A text of item must be string object');\n }\n this.value = item.value;\n if (isBoolean(item.checked)) {\n this.checked = item.checked;\n }\n if (isBoolean(item.collapsed)) {\n this.collapsed = item.collapsed;\n }\n if (isBoolean(item.disabled)) {\n this.disabled = item.disabled;\n }\n if (!isNil(item.children) && item.children.length > 0) {\n this.children = item.children.map(child => {\n if (this.disabled === true) {\n child.disabled = true;\n }\n\n return new TreeviewItem(child);\n });\n }\n\n if (autoCorrectChecked) {\n this.correctChecked();\n }\n }\n\n get checked(): boolean {\n return this.internalChecked;\n }\n\n set checked(value: boolean) {\n if (!this.internalDisabled) {\n if (this.internalChecked !== value) {\n this.internalChecked = value;\n }\n }\n }\n\n get indeterminate(): boolean {\n return this.checked === undefined;\n }\n\n setCheckedRecursive(value: boolean): void {\n if (!this.internalDisabled) {\n this.internalChecked = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.setCheckedRecursive(value));\n }\n }\n }\n\n get disabled(): boolean {\n return this.internalDisabled;\n }\n\n set disabled(value: boolean) {\n if (this.internalDisabled !== value) {\n this.internalDisabled = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.disabled = value);\n }\n }\n }\n\n get collapsed(): boolean {\n return this.internalCollapsed;\n }\n\n set collapsed(value: boolean) {\n if (this.internalCollapsed !== value) {\n this.internalCollapsed = value;\n }\n }\n\n setCollapsedRecursive(value: boolean): void {\n this.internalCollapsed = value;\n if (!isNil(this.internalChildren)) {\n this.internalChildren.forEach(child => child.setCollapsedRecursive(value));\n }\n }\n\n get children(): TreeviewItem[] {\n return this.internalChildren;\n }\n\n set children(value: TreeviewItem[]) {\n if (this.internalChildren !== value) {\n if (!isNil(value) && value.length === 0) {\n throw new Error('Children must be not an empty array');\n }\n this.internalChildren = value;\n if (!isNil(this.internalChildren)) {\n let checked = null;\n this.internalChildren.forEach(child => {\n if (checked === null) {\n checked = child.checked;\n } else {\n if (child.checked !== checked) {\n checked = undefined;\n return;\n }\n }\n });\n this.internalChecked = checked;\n }\n }\n }\n\n getSelection(): TreeviewSelection {\n let checkedItems: TreeviewItem[] = [];\n let uncheckedItems: TreeviewItem[] = [];\n if (isNil(this.internalChildren)) {\n if (this.internalChecked) {\n checkedItems.push(this);\n } else {\n uncheckedItems.push(this);\n }\n } else {\n const selection = TreeviewHelper.concatSelection(this.internalChildren, checkedItems, uncheckedItems);\n checkedItems = selection.checked;\n uncheckedItems = selection.unchecked;\n }\n\n return {\n checkedItems,\n uncheckedItems\n };\n }\n\n correctChecked(): void {\n this.internalChecked = this.getCorrectChecked();\n }\n\n private getCorrectChecked(): boolean {\n let checked: boolean = null;\n if (!isNil(this.internalChildren)) {\n for (const child of this.internalChildren) {\n child.internalChecked = child.getCorrectChecked();\n if (checked === null) {\n checked = child.internalChecked;\n } else if (checked !== child.internalChecked) {\n checked = undefined;\n break;\n }\n }\n } else {\n checked = this.checked;\n }\n\n return checked;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TreeviewSelection } from './treeview-item';\n\n@Injectable()\nexport abstract class TreeviewI18n {\n abstract getText(selection: TreeviewSelection): string;\n abstract getAllCheckboxText(): string;\n abstract getFilterPlaceholder(): string;\n abstract getFilterNoItemsFoundText(): string;\n abstract getTooltipCollapseExpandText(isCollapse: boolean): string;\n}\n\n@Injectable()\nexport class DefaultTreeviewI18n extends TreeviewI18n {\n getText(selection: TreeviewSelection): string {\n const uncheckedItems = selection.uncheckedItems;\n const checkedItems = selection.checkedItems;\n \n // If uncheckedItems exists and is empty, everything is checked\n if (uncheckedItems && uncheckedItems.length === 0) {\n return this.getAllCheckboxText();\n }\n\n // If no checkedItems or empty, show appropriate message\n if (!checkedItems || checkedItems.length === 0) {\n return 'Select options';\n }\n\n // Show single item text or count\n if (checkedItems.length === 1) {\n return checkedItems[0].text;\n }\n \n return `${checkedItems.length} options selected`;\n }\n\n getAllCheckboxText(): string {\n return 'All';\n }\n\n getFilterPlaceholder(): string {\n return 'Filter';\n }\n\n getFilterNoItemsFoundText(): string {\n return 'No items found';\n }\n\n getTooltipCollapseExpandText(isCollapse: boolean): string {\n return isCollapse ? 'Expand' : 'Collapse';\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TreeviewConfig {\n hasAllCheckBox = true;\n hasFilter = false;\n hasCollapseExpand = false;\n decoupleChildFromParent = false;\n maxHeight = 500;\n\n get hasDivider(): boolean {\n return this.hasFilter || this.hasAllCheckBox || this.hasCollapseExpand;\n }\n\n public static create(fields?: {\n hasAllCheckBox?: boolean,\n hasFilter?: boolean,\n hasCollapseExpand?: boolean,\n decoupleChildFromParent?: boolean\n maxHeight?: number,\n }): TreeviewConfig {\n const config = new TreeviewConfig();\n Object.assign(config, fields);\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\nimport { TreeviewComponent } from '../components/treeview/treeview.component';\n\n@Injectable()\nexport abstract class TreeviewEventParser {\n abstract getSelectedChange(component: TreeviewComponent): any[];\n}\n\n@Injectable()\nexport class DefaultTreeviewEventParser extends TreeviewEventParser {\n getSelectedChange(component: TreeviewComponent): any[] {\n const checkedItems = component.selection.checkedItems;\n if (!isNil(checkedItems)) {\n return checkedItems.map(item => item.value);\n }\n\n return [];\n }\n}\n\nexport interface DownlineTreeviewItem {\n item: TreeviewItem;\n parent: DownlineTreeviewItem;\n}\n\n@Injectable()\nexport class DownlineTreeviewEventParser extends TreeviewEventParser {\n getSelectedChange(component: TreeviewComponent): any[] {\n const items = component.items;\n if (!isNil(items)) {\n let result: DownlineTreeviewItem[] = [];\n items.forEach(item => {\n const links = this.getLinks(item, null);\n if (!isNil(links)) {\n result = result.concat(links);\n }\n });\n\n return result;\n }\n\n return [];\n }\n\n private getLinks(item: TreeviewItem, parent: DownlineTreeviewItem): DownlineTreeviewItem[] {\n if (!isNil(item.children)) {\n const link = {\n item,\n parent\n };\n let result: DownlineTreeviewItem[] = [];\n item.children.forEach(child => {\n const links = this.getLinks(child, link);\n if (!isNil(links)) {\n result = result.concat(links);\n }\n });\n\n return result;\n }\n\n if (item.checked) {\n return [{\n item,\n parent\n }];\n }\n\n return null;\n }\n}\n\n@Injectable()\nexport class OrderDownlineTreeviewEventParser extends TreeviewEventParser {\n private currentDownlines: DownlineTreeviewItem[] = [];\n private parser = new DownlineTreeviewEventParser();\n\n getSelectedChange(component: TreeviewComponent): any[] {\n const newDownlines: DownlineTreeviewItem[] = this.parser.getSelectedChange(component);\n if (this.currentDownlines.length === 0) {\n this.currentDownlines = newDownlines;\n } else {\n const intersectDownlines: DownlineTreeviewItem[] = [];\n this.currentDownlines.forEach(downline => {\n let foundIndex = -1;\n const length = newDownlines.length;\n for (let i = 0; i < length; i++) {\n if (downline.item.value === newDownlines[i].item.value) {\n foundIndex = i;\n break;\n }\n }\n\n if (foundIndex !== -1) {\n intersectDownlines.push(newDownlines[foundIndex]);\n newDownlines.splice(foundIndex, 1);\n }\n });\n\n this.currentDownlines = intersectDownlines.concat(newDownlines);\n }\n\n return this.currentDownlines;\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n selector: 'ngx-treeview-item',\n templateUrl: './treeview-item.component.html',\n styleUrls: ['./treeview-item.component.scss'],\n standalone: false\n})\nexport class TreeviewItemComponent {\n @Input() config: TreeviewConfig;\n @Input() template: TemplateRef<TreeviewItemTemplateContext>;\n @Input() item: TreeviewItem;\n @Output() checkedChange = new EventEmitter<boolean>();\n\n constructor(\n private defaultConfig: TreeviewConfig\n ) {\n this.config = this.defaultConfig;\n }\n\n onCollapseExpand = () => {\n this.item.collapsed = !this.item.collapsed;\n }\n\n onCheckedChange = () => {\n const checked = this.item.checked;\n if (!isNil(this.item.children) && !this.config.decoupleChildFromParent) {\n this.item.children.forEach(child => child.setCheckedRecursive(checked));\n }\n this.checkedChange.emit(checked);\n }\n\n onChildCheckedChange(child: TreeviewItem, checked: boolean): void {\n if (!this.config.decoupleChildFromParent) {\n let itemChecked: boolean = null;\n for (const childItem of this.item.children) {\n if (itemChecked === null) {\n itemChecked = childItem.checked;\n } else if (itemChecked !== childItem.checked) {\n itemChecked = undefined;\n break;\n }\n }\n\n if (itemChecked === null) {\n itemChecked = false;\n }\n\n if (this.item.checked !== itemChecked) {\n this.item.checked = itemChecked;\n }\n\n }\n\n this.checkedChange.emit(checked);\n }\n}\n","<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange}\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item [config]=\"config\" *ngFor=\"let child of item.children\" [item]=\"child\" [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, SimpleChanges, OnChanges, TemplateRef, OnInit } from '@angular/core';\nimport { isNil, includes } from 'lodash';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem, TreeviewSelection } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\nimport { TreeviewHelper } from '../../helpers/treeview-helper';\nimport { TreeviewEventParser } from '../../helpers/treeview-event-parser';\n\nclass FilterTreeviewItem extends TreeviewItem {\n private readonly refItem: TreeviewItem;\n constructor(item: TreeviewItem) {\n super({\n text: item.text,\n value: item.value,\n disabled: item.disabled,\n checked: item.checked,\n collapsed: item.collapsed,\n children: item.children\n });\n this.refItem = item;\n }\n\n updateRefChecked(): void {\n this.children.forEach(child => {\n if (child instanceof FilterTreeviewItem) {\n child.updateRefChecked();\n }\n });\n\n let refChecked = this.checked;\n if (refChecked) {\n for (const refChild of this.refItem.children) {\n if (!refChild.checked) {\n refChecked = false;\n break;\n }\n }\n }\n this.refItem.checked = refChecked;\n }\n}\n\n@Component({\n selector: 'ngx-treeview',\n templateUrl: './treeview.component.html',\n styleUrls: ['./treeview.component.scss'],\n standalone: false\n})\nexport class TreeviewComponent implements OnChanges, OnInit {\n @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n @Input() items: TreeviewItem[];\n @Input() config: TreeviewConfig;\n @Output() selectedChange = new EventEmitter<any[]>();\n @Output() filterChange = new EventEmitter<string>();\n headerTemplateContext: TreeviewHeaderTemplateContext;\n allItem: TreeviewItem;\n filterText = '';\n filterItems: TreeviewItem[];\n selection: TreeviewSelection;\n\n constructor(\n public i18n: TreeviewI18n,\n private defaultConfig: TreeviewConfig,\n private eventParser: TreeviewEventParser\n ) {\n this.config = this.defaultConfig;\n this.allItem = new TreeviewItem({ text: 'All', value: undefined });\n }\n\n get hasFilterItems(): boolean {\n return !isNil(this.filterItems) && this.filterItems.length > 0;\n }\n\n get maxHeight(): string {\n return `${this.config.maxHeight}`;\n }\n\n ngOnInit(): void {\n this.createHeaderTemplateContext();\n this.generateSelection();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const itemsSimpleChange = changes.items;\n if (!isNil(itemsSimpleChange) && !isNil(this.items)) {\n this.updateFilterItems();\n this.updateCollapsedOfAll();\n this.raiseSelectedChange();\n }\n }\n\n onAllCollapseExpand(): void {\n this.allItem.collapsed = !this.allItem.collapsed;\n this.filterItems.forEach(item => item.setCollapsedRecursive(this.allItem.collapsed));\n }\n\n onFilterTextChange(text: string): void {\n this.filterText = text;\n this.filterChange.emit(text);\n this.updateFilterItems();\n }\n\n onAllCheckedChange(): void {\n const checked = this.allItem.checked;\n this.filterItems.forEach(item => {\n item.setCheckedRecursive(checked);\n if (item instanceof FilterTreeviewItem) {\n item.updateRefChecked();\n }\n });\n\n this.raiseSelectedChange();\n }\n\n onItemCheckedChange(item: TreeviewItem, checked: boolean): void {\n if (item instanceof FilterTreeviewItem) {\n item.updateRefChecked();\n }\n\n this.updateCheckedOfAll();\n this.raiseSelectedChange();\n }\n\n raiseSelectedChange(): void {\n this.generateSelection();\n const values = this.eventParser.getSelectedChange(this);\n setTimeout(() => {\n this.selectedChange.emit(values);\n });\n }\n\n private createHeaderTemplateContext(): void {\n this.headerTemplateContext = {\n config: this.config,\n item: this.allItem,\n onCheckedChange: () => this.onAllCheckedChange(),\n onCollapseExpand: () => this.onAllCollapseExpand(),\n onFilterTextChange: (text) => this.onFilterTextChange(text)\n };\n }\n\n private generateSelection(): void {\n let checkedItems: TreeviewItem[] = [];\n let uncheckedItems: TreeviewItem[] = [];\n if (!isNil(this.items)) {\n const selection = TreeviewHelper.concatSelection(this.items, checkedItems, uncheckedItems);\n checkedItems = selection.checked;\n uncheckedItems = selection.unchecked;\n }\n\n this.selection = {\n checkedItems,\n uncheckedItems\n };\n }\n\n private updateFilterItems(): void {\n if (this.filterText !== '') {\n const filterItems: TreeviewItem[] = [];\n const filterText = this.filterText.toLowerCase();\n this.items.forEach(item => {\n const newItem = this.filterItem(item, filterText);\n if (!isNil(newItem)) {\n filterItems.push(newItem);\n }\n });\n this.filterItems = filterItems;\n } else {\n this.filterItems = this.items;\n }\n\n this.updateCheckedOfAll();\n }\n\n private filterItem(item: TreeviewItem, filterText: string): TreeviewItem {\n const isMatch = includes(item.text.toLowerCase(), filterText);\n if (isMatch) {\n return item;\n } else {\n if (!isNil(item.children)) {\n const children: TreeviewItem[] = [];\n item.children.forEach(child => {\n const newChild = this.filterItem(child, filterText);\n if (!isNil(newChild)) {\n children.push(newChild);\n }\n });\n if (children.length > 0) {\n const newItem = new FilterTreeviewItem(item);\n newItem.collapsed = false;\n newItem.children = children;\n return newItem;\n }\n }\n }\n\n return undefined;\n }\n\n private updateCheckedOfAll(): void {\n let itemChecked: boolean = null;\n for (const filterItem of this.filterItems) {\n if (itemChecked === null) {\n itemChecked = filterItem.checked;\n } else if (itemChecked !== filterItem.checked) {\n itemChecked = undefined;\n break;\n }\n }\n\n if (itemChecked === null) {\n itemChecked = false;\n }\n\n this.allItem.checked = itemChecked;\n }\n\n private updateCollapsedOfAll(): void {\n let hasItemExpanded = false;\n for (const filterItem of this.filterItems) {\n if (!filterItem.collapsed) {\n hasItemExpanded = true;\n break;\n }\n }\n\n this.allItem.collapsed = !hasItemExpanded;\n }\n}\n","<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"0.8rem\" height=\"0.8rem\" viewBox=\"0 0 16 16\" class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\" [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{item.text}}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template #defaultHeaderTemplate let-config=\"config\" let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\" let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input class=\"form-control\" type=\"text\" [placeholder]=\"i18n.getFilterPlaceholder()\" [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input type=\"checkbox\" class=\"form-check-input\" [(ngModel)]=\"item.checked\" (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{i18n.getAllCheckboxText()}}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg *ngSwitchCase=\"true\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg *ngSwitchCase=\"false\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\"\n [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item *ngFor=\"let item of filterItems\" [config]=\"config\" [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\" (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{i18n.getFilterNoItemsFoundText()}}\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, viewChild, TemplateRef, signal, computed, AfterViewInit } from '@angular/core';\nimport { TreeviewI18n } from '../../models/treeview-i18n';\nimport { TreeviewItem } from '../../models/treeview-item';\nimport { TreeviewConfig } from '../../models/treeview-config';\nimport { TreeviewComponent } from '../treeview/treeview.component';\nimport { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';\nimport { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';\n\n@Component({\n selector: 'ngx-dropdown-treeview',\n templateUrl: './dropdown-treeview.component.html',\n styleUrls: ['./dropdown-treeview.component.scss'],\n standalone: false\n})\nexport class DropdownTreeviewComponent implements AfterViewInit {\n @Input() buttonClass = 'btn-outline-secondary';\n @Input() headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;\n @Input() itemTemplate: TemplateRef<TreeviewItemTemplateContext>;\n @Input() items: TreeviewItem[];\n @Input() config: TreeviewConfig;\n @Output() selectedChange = new EventEmitter<any[]>(true);\n @Output() filterChange = new EventEmitter<string>();\n \n // Modern Angular 19: Use viewChild signal instead of @ViewChild\n treeviewComponent = viewChild<TreeviewComponent>(TreeviewComponent);\n \n // Use a signal to track when selection changes (since TreeviewComponent.selection is not a signal)\n private selectionVersion = signal(0);\n \n // Computed signal that reacts to both treeviewComponent and selectionVersion changes\n buttonLabel = computed(() => {\n // Read selectionVersion to make this computed signal reactive to selection changes\n this.selectionVersion();\n const treeview = this.treeviewComponent();\n if (treeview?.selection) {\n return this.i18n.getText(treeview.selection);\n }\n return '';\n });\n\n constructor(\n public i18n: TreeviewI18n,\n private defaultConfig: TreeviewConfig\n ) {\n this.config = this.defaultConfig;\n }\n\n ngAfterViewInit(): void {\n // Initialize button label after view is ready\n // This triggers the computed signal to evaluate with the initialized treeview\n this.selectionVersion.update(v => v + 1);\n }\n\n onSelectedChange(values: any[]): void {\n // Update the version signal to trigger computed signal re-evaluation\n this.selectionVersion.update(v => v + 1);\n this.selectedChange.emit(values);\n }\n\n onFilterChange(text: string): void {\n this.filterChange.emit(text);\n }\n}\n","<div class=\"dropdown\" ngxDropdown>\n <button class=\"btn\" [ngClass]=\"buttonClass\" type=\"button\" role=\"button\" ngxDropdownToggle>\n {{buttonLabel()}}\n </button>\n <div ngxDropdownMenu aria-labelledby=\"dropdownMenu\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown-container\">\n <ngx-treeview [config]=\"config\" [headerTemplate]=\"headerTemplate\" [items]=\"items\" [itemTemplate]=\"itemTemplate\"\n (selectedChange)=\"onSelectedChange($event)\" (filterChange)=\"onFilterChange($event)\">\n </ngx-treeview>\n </div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { TreeviewItem } from '../models/treeview-item';\n\n@Pipe({\n name: 'ngxTreeview',\n standalone: false\n})\nexport class TreeviewPipe implements PipeTransform {\n transform(objects: any[], textField: string): TreeviewItem[] {\n if (isNil(objects)) {\n return undefined;\n }\n\n return objects.map(object => new TreeviewItem({ text: object[textField], value: object }));\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DropdownDirective } from './directives/dropdown.directive';\nimport { DropdownMenuDirective } from './directives/dropdown-menu.directive';\nimport { DropdownToggleDirective } from './directives/dropdown-toggle.directive';\nimport { DropdownTreeviewComponent } from './components/dropdown-treeview/dropdown-treeview.component';\nimport { TreeviewComponent } from './components/treeview/treeview.component';\nimport { TreeviewItemComponent } from './components/treeview-item/treeview-item.component';\nimport { TreeviewPipe } from './pipes/treeview.pipe';\nimport { TreeviewI18n, DefaultTreeviewI18n } from './models/treeview-i18n';\nimport { TreeviewConfig } from './models/treeview-config';\nimport { TreeviewEventParser, DefaultTreeviewEventParser } from './helpers/treeview-event-parser';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule\n ],\n declarations: [\n TreeviewComponent,\n TreeviewItemComponent,\n TreeviewPipe,\n DropdownDirective,\n DropdownMenuDirective,\n DropdownToggleDirective,\n DropdownTreeviewComponent\n ], exports: [\n TreeviewComponent,\n TreeviewPipe,\n DropdownTreeviewComponent\n ]\n})\nexport class TreeviewModule {\n static forRoot(): ModuleWithProviders<TreeviewModule> {\n return {\n ngModule: TreeviewModule,\n providers: [\n TreeviewConfig,\n { provide: TreeviewI18n, useClass: DefaultTreeviewI18n },\n { provide: TreeviewEventParser, useClass: DefaultTreeviewEventParser }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-treeview\n */\n\nexport * from './lib/treeview.module';\nexport * from './lib/components/treeview/treeview.component';\nexport * from './lib/components/dropdown-treeview/dropdown-treeview.component';\nexport * from './lib/pipes/treeview.pipe';\nexport * from './lib/directives/dropdown-toggle.directive';\nexport * from './lib/directives/dropdown.directive';\nexport * from './lib/models/treeview-item';\nexport * from './lib/models/treeview-config';\nexport * from './lib/models/treeview-i18n';\nexport * from './lib/models/treeview-item-template-context';\nexport * from './lib/helpers/treeview-event-parser';\nexport * from './lib/helpers/treeview-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DropdownDirective","i1.TreeviewConfig","i2","i1.TreeviewI18n","i2.TreeviewConfig","i3.TreeviewEventParser","i6.TreeviewItemComponent","i3","i4.TreeviewComponent","i5.DropdownDirective","i6.DropdownMenuDirective","i7.DropdownToggleDirective"],"mappings":"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"}

@@ -1,5 +0,249 @@

/**
* Generated bundle index. Do not edit.
*/
/// <amd-module name="@samotics/ngx-treeview" />
export * from './public-api';
import * as i0 from '@angular/core';
import { OnChanges, OnInit, TemplateRef, EventEmitter, SimpleChanges, PipeTransform, ElementRef, AfterViewInit, ModuleWithProviders } from '@angular/core';
import * as i8 from '@angular/forms';
import * as i9 from '@angular/common';
interface TreeviewSelection {
checkedItems: TreeviewItem[];
uncheckedItems: TreeviewItem[];
}
interface TreeItem {
text: string;
value: any;
disabled?: boolean;
checked?: boolean;
collapsed?: boolean;
children?: TreeItem[];
}
declare class TreeviewItem {
private internalDisabled;
private internalChecked;
private internalCollapsed;
private internalChildren;
text: string;
value: any;
constructor(item: TreeItem, autoCorrectChecked?: boolean);
get checked(): boolean;
set checked(value: boolean);
get indeterminate(): boolean;
setCheckedRecursive(value: boolean): void;
get disabled(): boolean;
set disabled(value: boolean);
get collapsed(): boolean;
set collapsed(value: boolean);
setCollapsedRecursive(value: boolean): void;
get children(): TreeviewItem[];
set children(value: TreeviewItem[]);
getSelection(): TreeviewSelection;
correctChecked(): void;
private getCorrectChecked;
}
declare abstract class TreeviewI18n {
abstract getText(selection: TreeviewSelection): string;
abstract getAllCheckboxText(): string;
abstract getFilterPlaceholder(): string;
abstract getFilterNoItemsFoundText(): string;
abstract getTooltipCollapseExpandText(isCollapse: boolean): string;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewI18n, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewI18n>;
}
declare class DefaultTreeviewI18n extends TreeviewI18n {
getText(selection: TreeviewSelection): string;
getAllCheckboxText(): string;
getFilterPlaceholder(): string;
getFilterNoItemsFoundText(): string;
getTooltipCollapseExpandText(isCollapse: boolean): string;
static ɵfac: i0.ɵɵFactoryDeclaration<DefaultTreeviewI18n, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DefaultTreeviewI18n>;
}
declare class TreeviewConfig {
hasAllCheckBox: boolean;
hasFilter: boolean;
hasCollapseExpand: boolean;
decoupleChildFromParent: boolean;
maxHeight: number;
get hasDivider(): boolean;
static create(fields?: {
hasAllCheckBox?: boolean;
hasFilter?: boolean;
hasCollapseExpand?: boolean;
decoupleChildFromParent?: boolean;
maxHeight?: number;
}): TreeviewConfig;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewConfig, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewConfig>;
}
interface TreeviewHeaderTemplateContext {
config: TreeviewConfig;
item: TreeviewItem;
onCollapseExpand: () => void;
onCheckedChange: (checked: boolean) => void;
onFilterTextChange: (text: string) => void;
}
interface TreeviewItemTemplateContext {
item: TreeviewItem;
onCollapseExpand: () => void;
onCheckedChange: () => void;
}
declare abstract class TreeviewEventParser {
abstract getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewEventParser>;
}
declare class DefaultTreeviewEventParser extends TreeviewEventParser {
getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<DefaultTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DefaultTreeviewEventParser>;
}
interface DownlineTreeviewItem {
item: TreeviewItem;
parent: DownlineTreeviewItem;
}
declare class DownlineTreeviewEventParser extends TreeviewEventParser {
getSelectedChange(component: TreeviewComponent): any[];
private getLinks;
static ɵfac: i0.ɵɵFactoryDeclaration<DownlineTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DownlineTreeviewEventParser>;
}
declare class OrderDownlineTreeviewEventParser extends TreeviewEventParser {
private currentDownlines;
private parser;
getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<OrderDownlineTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<OrderDownlineTreeviewEventParser>;
}
declare class TreeviewComponent implements OnChanges, OnInit {
i18n: TreeviewI18n;
private defaultConfig;
private eventParser;
headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;
itemTemplate: TemplateRef<TreeviewItemTemplateContext>;
items: TreeviewItem[];
config: TreeviewConfig;
selectedChange: EventEmitter<any[]>;
filterChange: EventEmitter<string>;
headerTemplateContext: TreeviewHeaderTemplateContext;
allItem: TreeviewItem;
filterText: string;
filterItems: TreeviewItem[];
selection: TreeviewSelection;
constructor(i18n: TreeviewI18n, defaultConfig: TreeviewConfig, eventParser: TreeviewEventParser);
get hasFilterItems(): boolean;
get maxHeight(): string;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
onAllCollapseExpand(): void;
onFilterTextChange(text: string): void;
onAllCheckedChange(): void;
onItemCheckedChange(item: TreeviewItem, checked: boolean): void;
raiseSelectedChange(): void;
private createHeaderTemplateContext;
private generateSelection;
private updateFilterItems;
private filterItem;
private updateCheckedOfAll;
private updateCollapsedOfAll;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TreeviewComponent, "ngx-treeview", never, { "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "selectedChange": "selectedChange"; "filterChange": "filterChange"; }, never, never, false, never>;
}
declare class TreeviewItemComponent {
private defaultConfig;
config: TreeviewConfig;
template: TemplateRef<TreeviewItemTemplateContext>;
item: TreeviewItem;
checkedChange: EventEmitter<boolean>;
constructor(defaultConfig: TreeviewConfig);
onCollapseExpand: () => void;
onCheckedChange: () => void;
onChildCheckedChange(child: TreeviewItem, checked: boolean): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewItemComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TreeviewItemComponent, "ngx-treeview-item", never, { "config": { "alias": "config"; "required": false; }; "template": { "alias": "template"; "required": false; }; "item": { "alias": "item"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, false, never>;
}
declare class TreeviewPipe implements PipeTransform {
transform(objects: any[], textField: string): TreeviewItem[];
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewPipe, never>;
static ɵpipe: i0.ɵɵPipeDeclaration<TreeviewPipe, "ngxTreeview", false>;
}
declare class DropdownDirective {
toggleElement: any;
internalOpen: boolean;
openChange: EventEmitter<boolean>;
get isOpen(): boolean;
onKeyupEsc(): void;
onDocumentClick(event: MouseEvent): void;
open(): void;
close(): void;
toggle(): void;
private isEventFromToggle;
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownDirective, "[ngxDropdown]", ["ngxDropdown"], { "internalOpen": { "alias": "open"; "required": false; }; }, { "openChange": "openChange"; }, never, never, false, never>;
}
declare class DropdownMenuDirective {
dropdown: DropdownDirective;
constructor(dropdown: DropdownDirective);
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownMenuDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownMenuDirective, "[ngxDropdownMenu]", never, {}, {}, never, never, false, never>;
}
declare class DropdownToggleDirective {
dropdown: DropdownDirective;
constructor(dropdown: DropdownDirective, elementRef: ElementRef);
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownToggleDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownToggleDirective, "[ngxDropdownToggle]", never, {}, {}, never, never, false, never>;
}
declare class DropdownTreeviewComponent implements AfterViewInit {
i18n: TreeviewI18n;
private defaultConfig;
buttonClass: string;
headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;
itemTemplate: TemplateRef<TreeviewItemTemplateContext>;
items: TreeviewItem[];
config: TreeviewConfig;
selectedChange: EventEmitter<any[]>;
filterChange: EventEmitter<string>;
treeviewComponent: i0.Signal<TreeviewComponent>;
private selectionVersion;
buttonLabel: i0.Signal<string>;
constructor(i18n: TreeviewI18n, defaultConfig: TreeviewConfig);
ngAfterViewInit(): void;
onSelectedChange(values: any[]): void;
onFilterChange(text: string): void;
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownTreeviewComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownTreeviewComponent, "ngx-dropdown-treeview", never, { "buttonClass": { "alias": "buttonClass"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "selectedChange": "selectedChange"; "filterChange": "filterChange"; }, never, never, false, never>;
}
declare class TreeviewModule {
static forRoot(): ModuleWithProviders<TreeviewModule>;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<TreeviewModule, [typeof TreeviewComponent, typeof TreeviewItemComponent, typeof TreeviewPipe, typeof DropdownDirective, typeof DropdownMenuDirective, typeof DropdownToggleDirective, typeof DropdownTreeviewComponent], [typeof i8.FormsModule, typeof i9.CommonModule], [typeof TreeviewComponent, typeof TreeviewPipe, typeof DropdownTreeviewComponent]>;
static ɵinj: i0.ɵɵInjectorDeclaration<TreeviewModule>;
}
declare const TreeviewHelper: {
findItem: typeof findItem;
findItemInList: typeof findItemInList;
findParent: typeof findParent;
removeItem: typeof removeItem;
concatSelection: typeof concatSelection;
};
declare function findItem(root: TreeviewItem, value: any): TreeviewItem;
declare function findItemInList(list: TreeviewItem[], value: any): TreeviewItem;
declare function findParent(root: TreeviewItem, item: TreeviewItem): TreeviewItem;
declare function removeItem(root: TreeviewItem, item: TreeviewItem): boolean;
declare function concatSelection(items: TreeviewItem[], checked: TreeviewItem[], unchecked: TreeviewItem[]): {
[k: string]: TreeviewItem[];
};
export { DefaultTreeviewEventParser, DefaultTreeviewI18n, DownlineTreeviewEventParser, DropdownDirective, DropdownToggleDirective, DropdownTreeviewComponent, OrderDownlineTreeviewEventParser, TreeviewComponent, TreeviewConfig, TreeviewEventParser, TreeviewHelper, TreeviewI18n, TreeviewItem, TreeviewModule, TreeviewPipe };
export type { DownlineTreeviewItem, TreeItem, TreeviewItemTemplateContext, TreeviewSelection };
{
"name": "@samotics/ngx-treeview",
"version": "19.0.1",
"version": "20.0.0",
"license": "MIT",

@@ -28,4 +28,4 @@ "description": "An Angular treeview component with checkbox",

"peerDependencies": {
"@angular/common": "^19.0.0",
"@angular/core": "^19.0.0",
"@angular/common": "^20.0.0",
"@angular/core": "^20.0.0",
"lodash": "^4.17.21"

@@ -32,0 +32,0 @@ },

import { EventEmitter, TemplateRef, AfterViewInit } from '@angular/core';
import { TreeviewI18n } from '../../models/treeview-i18n';
import { TreeviewItem } from '../../models/treeview-item';
import { TreeviewConfig } from '../../models/treeview-config';
import { TreeviewComponent } from '../treeview/treeview.component';
import { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';
import { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';
import * as i0 from "@angular/core";
export declare class DropdownTreeviewComponent implements AfterViewInit {
i18n: TreeviewI18n;
private defaultConfig;
buttonClass: string;
headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;
itemTemplate: TemplateRef<TreeviewItemTemplateContext>;
items: TreeviewItem[];
config: TreeviewConfig;
selectedChange: EventEmitter<any[]>;
filterChange: EventEmitter<string>;
treeviewComponent: import("@angular/core").Signal<TreeviewComponent>;
private selectionVersion;
buttonLabel: import("@angular/core").Signal<string>;
constructor(i18n: TreeviewI18n, defaultConfig: TreeviewConfig);
ngAfterViewInit(): void;
onSelectedChange(values: any[]): void;
onFilterChange(text: string): void;
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownTreeviewComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownTreeviewComponent, "ngx-dropdown-treeview", never, { "buttonClass": { "alias": "buttonClass"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "selectedChange": "selectedChange"; "filterChange": "filterChange"; }, never, never, false, never>;
}
import { EventEmitter, TemplateRef } from '@angular/core';
import { TreeviewItem } from '../../models/treeview-item';
import { TreeviewConfig } from '../../models/treeview-config';
import { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';
import * as i0 from "@angular/core";
export declare class TreeviewItemComponent {
private defaultConfig;
config: TreeviewConfig;
template: TemplateRef<TreeviewItemTemplateContext>;
item: TreeviewItem;
checkedChange: EventEmitter<boolean>;
constructor(defaultConfig: TreeviewConfig);
onCollapseExpand: () => void;
onCheckedChange: () => void;
onChildCheckedChange(child: TreeviewItem, checked: boolean): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewItemComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TreeviewItemComponent, "ngx-treeview-item", never, { "config": { "alias": "config"; "required": false; }; "template": { "alias": "template"; "required": false; }; "item": { "alias": "item"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, false, never>;
}
import { EventEmitter, SimpleChanges, OnChanges, TemplateRef, OnInit } from '@angular/core';
import { TreeviewI18n } from '../../models/treeview-i18n';
import { TreeviewItem, TreeviewSelection } from '../../models/treeview-item';
import { TreeviewConfig } from '../../models/treeview-config';
import { TreeviewHeaderTemplateContext } from '../../models/treeview-header-template-context';
import { TreeviewItemTemplateContext } from '../../models/treeview-item-template-context';
import { TreeviewEventParser } from '../../helpers/treeview-event-parser';
import * as i0 from "@angular/core";
export declare class TreeviewComponent implements OnChanges, OnInit {
i18n: TreeviewI18n;
private defaultConfig;
private eventParser;
headerTemplate: TemplateRef<TreeviewHeaderTemplateContext>;
itemTemplate: TemplateRef<TreeviewItemTemplateContext>;
items: TreeviewItem[];
config: TreeviewConfig;
selectedChange: EventEmitter<any[]>;
filterChange: EventEmitter<string>;
headerTemplateContext: TreeviewHeaderTemplateContext;
allItem: TreeviewItem;
filterText: string;
filterItems: TreeviewItem[];
selection: TreeviewSelection;
constructor(i18n: TreeviewI18n, defaultConfig: TreeviewConfig, eventParser: TreeviewEventParser);
get hasFilterItems(): boolean;
get maxHeight(): string;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
onAllCollapseExpand(): void;
onFilterTextChange(text: string): void;
onAllCheckedChange(): void;
onItemCheckedChange(item: TreeviewItem, checked: boolean): void;
raiseSelectedChange(): void;
private createHeaderTemplateContext;
private generateSelection;
private updateFilterItems;
private filterItem;
private updateCheckedOfAll;
private updateCollapsedOfAll;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TreeviewComponent, "ngx-treeview", never, { "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "selectedChange": "selectedChange"; "filterChange": "filterChange"; }, never, never, false, never>;
}
import { DropdownDirective } from './dropdown.directive';
import * as i0 from "@angular/core";
export declare class DropdownMenuDirective {
dropdown: DropdownDirective;
constructor(dropdown: DropdownDirective);
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownMenuDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownMenuDirective, "[ngxDropdownMenu]", never, {}, {}, never, never, false, never>;
}
import { ElementRef } from '@angular/core';
import { DropdownDirective } from './dropdown.directive';
import * as i0 from "@angular/core";
export declare class DropdownToggleDirective {
dropdown: DropdownDirective;
constructor(dropdown: DropdownDirective, elementRef: ElementRef);
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownToggleDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownToggleDirective, "[ngxDropdownToggle]", never, {}, {}, never, never, false, never>;
}
import { EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
export declare class DropdownDirective {
toggleElement: any;
internalOpen: boolean;
openChange: EventEmitter<boolean>;
get isOpen(): boolean;
onKeyupEsc(): void;
onDocumentClick(event: MouseEvent): void;
open(): void;
close(): void;
toggle(): void;
private isEventFromToggle;
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownDirective, "[ngxDropdown]", ["ngxDropdown"], { "internalOpen": { "alias": "open"; "required": false; }; }, { "openChange": "openChange"; }, never, never, false, never>;
}
import { TreeviewItem } from '../models/treeview-item';
import { TreeviewComponent } from '../components/treeview/treeview.component';
import * as i0 from "@angular/core";
export declare abstract class TreeviewEventParser {
abstract getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewEventParser>;
}
export declare class DefaultTreeviewEventParser extends TreeviewEventParser {
getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<DefaultTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DefaultTreeviewEventParser>;
}
export interface DownlineTreeviewItem {
item: TreeviewItem;
parent: DownlineTreeviewItem;
}
export declare class DownlineTreeviewEventParser extends TreeviewEventParser {
getSelectedChange(component: TreeviewComponent): any[];
private getLinks;
static ɵfac: i0.ɵɵFactoryDeclaration<DownlineTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DownlineTreeviewEventParser>;
}
export declare class OrderDownlineTreeviewEventParser extends TreeviewEventParser {
private currentDownlines;
private parser;
getSelectedChange(component: TreeviewComponent): any[];
static ɵfac: i0.ɵɵFactoryDeclaration<OrderDownlineTreeviewEventParser, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<OrderDownlineTreeviewEventParser>;
}
import { TreeviewItem } from '../models/treeview-item';
export declare const TreeviewHelper: {
findItem: typeof findItem;
findItemInList: typeof findItemInList;
findParent: typeof findParent;
removeItem: typeof removeItem;
concatSelection: typeof concatSelection;
};
declare function findItem(root: TreeviewItem, value: any): TreeviewItem;
declare function findItemInList(list: TreeviewItem[], value: any): TreeviewItem;
declare function findParent(root: TreeviewItem, item: TreeviewItem): TreeviewItem;
declare function removeItem(root: TreeviewItem, item: TreeviewItem): boolean;
declare function concatSelection(items: TreeviewItem[], checked: TreeviewItem[], unchecked: TreeviewItem[]): {
[k: string]: TreeviewItem[];
};
export {};
import * as i0 from "@angular/core";
export declare class TreeviewConfig {
hasAllCheckBox: boolean;
hasFilter: boolean;
hasCollapseExpand: boolean;
decoupleChildFromParent: boolean;
maxHeight: number;
get hasDivider(): boolean;
static create(fields?: {
hasAllCheckBox?: boolean;
hasFilter?: boolean;
hasCollapseExpand?: boolean;
decoupleChildFromParent?: boolean;
maxHeight?: number;
}): TreeviewConfig;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewConfig, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewConfig>;
}
import { TreeviewItem } from './treeview-item';
import { TreeviewConfig } from './treeview-config';
export interface TreeviewHeaderTemplateContext {
config: TreeviewConfig;
item: TreeviewItem;
onCollapseExpand: () => void;
onCheckedChange: (checked: boolean) => void;
onFilterTextChange: (text: string) => void;
}
import { TreeviewSelection } from './treeview-item';
import * as i0 from "@angular/core";
export declare abstract class TreeviewI18n {
abstract getText(selection: TreeviewSelection): string;
abstract getAllCheckboxText(): string;
abstract getFilterPlaceholder(): string;
abstract getFilterNoItemsFoundText(): string;
abstract getTooltipCollapseExpandText(isCollapse: boolean): string;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewI18n, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TreeviewI18n>;
}
export declare class DefaultTreeviewI18n extends TreeviewI18n {
getText(selection: TreeviewSelection): string;
getAllCheckboxText(): string;
getFilterPlaceholder(): string;
getFilterNoItemsFoundText(): string;
getTooltipCollapseExpandText(isCollapse: boolean): string;
static ɵfac: i0.ɵɵFactoryDeclaration<DefaultTreeviewI18n, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DefaultTreeviewI18n>;
}
import { TreeviewItem } from './treeview-item';
export interface TreeviewItemTemplateContext {
item: TreeviewItem;
onCollapseExpand: () => void;
onCheckedChange: () => void;
}
export interface TreeviewSelection {
checkedItems: TreeviewItem[];
uncheckedItems: TreeviewItem[];
}
export interface TreeItem {
text: string;
value: any;
disabled?: boolean;
checked?: boolean;
collapsed?: boolean;
children?: TreeItem[];
}
export declare class TreeviewItem {
private internalDisabled;
private internalChecked;
private internalCollapsed;
private internalChildren;
text: string;
value: any;
constructor(item: TreeItem, autoCorrectChecked?: boolean);
get checked(): boolean;
set checked(value: boolean);
get indeterminate(): boolean;
setCheckedRecursive(value: boolean): void;
get disabled(): boolean;
set disabled(value: boolean);
get collapsed(): boolean;
set collapsed(value: boolean);
setCollapsedRecursive(value: boolean): void;
get children(): TreeviewItem[];
set children(value: TreeviewItem[]);
getSelection(): TreeviewSelection;
correctChecked(): void;
private getCorrectChecked;
}
import { PipeTransform } from '@angular/core';
import { TreeviewItem } from '../models/treeview-item';
import * as i0 from "@angular/core";
export declare class TreeviewPipe implements PipeTransform {
transform(objects: any[], textField: string): TreeviewItem[];
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewPipe, never>;
static ɵpipe: i0.ɵɵPipeDeclaration<TreeviewPipe, "ngxTreeview", false>;
}
import { ModuleWithProviders } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./components/treeview/treeview.component";
import * as i2 from "./components/treeview-item/treeview-item.component";
import * as i3 from "./pipes/treeview.pipe";
import * as i4 from "./directives/dropdown.directive";
import * as i5 from "./directives/dropdown-menu.directive";
import * as i6 from "./directives/dropdown-toggle.directive";
import * as i7 from "./components/dropdown-treeview/dropdown-treeview.component";
import * as i8 from "@angular/forms";
import * as i9 from "@angular/common";
export declare class TreeviewModule {
static forRoot(): ModuleWithProviders<TreeviewModule>;
static ɵfac: i0.ɵɵFactoryDeclaration<TreeviewModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<TreeviewModule, [typeof i1.TreeviewComponent, typeof i2.TreeviewItemComponent, typeof i3.TreeviewPipe, typeof i4.DropdownDirective, typeof i5.DropdownMenuDirective, typeof i6.DropdownToggleDirective, typeof i7.DropdownTreeviewComponent], [typeof i8.FormsModule, typeof i9.CommonModule], [typeof i1.TreeviewComponent, typeof i3.TreeviewPipe, typeof i7.DropdownTreeviewComponent]>;
static ɵinj: i0.ɵɵInjectorDeclaration<TreeviewModule>;
}
export * from './lib/treeview.module';
export * from './lib/components/treeview/treeview.component';
export * from './lib/components/dropdown-treeview/dropdown-treeview.component';
export * from './lib/pipes/treeview.pipe';
export * from './lib/directives/dropdown-toggle.directive';
export * from './lib/directives/dropdown.directive';
export * from './lib/models/treeview-item';
export * from './lib/models/treeview-config';
export * from './lib/models/treeview-i18n';
export * from './lib/models/treeview-item-template-context';
export * from './lib/helpers/treeview-event-parser';
export * from './lib/helpers/treeview-helper';