@ng-nest/ui 20.2.7 → 20.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -38,6 +38,11 @@ class XProgressProperty extends XPropertyFunction(X_PROGRESS_CONFIG_NAME) {
|
|
|
38
38
|
* @en_US Status
|
|
39
39
|
*/
|
|
40
40
|
this.status = input('normal', ...(ngDevMode ? [{ debugName: "status" }] : []));
|
|
41
|
+
/**
|
|
42
|
+
* @zh_CN 自定义显示文字/图标
|
|
43
|
+
* @en_US Custom display info/icon
|
|
44
|
+
*/
|
|
45
|
+
this.infoTpl = input(...(ngDevMode ? [undefined, { debugName: "infoTpl" }] : []));
|
|
41
46
|
/**
|
|
42
47
|
* @zh_CN 是否显示百分比文本信息
|
|
43
48
|
* @en_US Whether to display percentage text
|
|
@@ -110,12 +115,12 @@ class XProgressProperty extends XPropertyFunction(X_PROGRESS_CONFIG_NAME) {
|
|
|
110
115
|
this.subsection = input(false, ...(ngDevMode ? [{ debugName: "subsection", transform: XToBoolean }] : [{ transform: XToBoolean }]));
|
|
111
116
|
}
|
|
112
117
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XProgressProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XProgressProperty, isStandalone: true, selector: "x-progress-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, percent: { classPropertyName: "percent", publicName: "percent", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, infoWidth: { classPropertyName: "infoWidth", publicName: "infoWidth", isSignal: true, isRequired: false, transformFunction: null }, inside: { classPropertyName: "inside", publicName: "inside", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, railColor: { classPropertyName: "railColor", publicName: "railColor", isSignal: true, isRequired: false, transformFunction: null }, gradient: { classPropertyName: "gradient", publicName: "gradient", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, stepWidth: { classPropertyName: "stepWidth", publicName: "stepWidth", isSignal: true, isRequired: false, transformFunction: null }, stepFlex: { classPropertyName: "stepFlex", publicName: "stepFlex", isSignal: true, isRequired: false, transformFunction: null }, thickness: { classPropertyName: "thickness", publicName: "thickness", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, notchAngle: { classPropertyName: "notchAngle", publicName: "notchAngle", isSignal: true, isRequired: false, transformFunction: null }, subsection: { classPropertyName: "subsection", publicName: "subsection", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
118
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.5", type: XProgressProperty, isStandalone: true, selector: "x-progress-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, percent: { classPropertyName: "percent", publicName: "percent", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, infoTpl: { classPropertyName: "infoTpl", publicName: "infoTpl", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null }, infoWidth: { classPropertyName: "infoWidth", publicName: "infoWidth", isSignal: true, isRequired: false, transformFunction: null }, inside: { classPropertyName: "inside", publicName: "inside", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, railColor: { classPropertyName: "railColor", publicName: "railColor", isSignal: true, isRequired: false, transformFunction: null }, gradient: { classPropertyName: "gradient", publicName: "gradient", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, stepWidth: { classPropertyName: "stepWidth", publicName: "stepWidth", isSignal: true, isRequired: false, transformFunction: null }, stepFlex: { classPropertyName: "stepFlex", publicName: "stepFlex", isSignal: true, isRequired: false, transformFunction: null }, thickness: { classPropertyName: "thickness", publicName: "thickness", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, notchAngle: { classPropertyName: "notchAngle", publicName: "notchAngle", isSignal: true, isRequired: false, transformFunction: null }, subsection: { classPropertyName: "subsection", publicName: "subsection", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
114
119
|
}
|
|
115
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XProgressProperty, decorators: [{
|
|
116
121
|
type: Component,
|
|
117
122
|
args: [{ selector: `${XProgressPrefix}-property`, template: '' }]
|
|
118
|
-
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], percent: [{ type: i0.Input, args: [{ isSignal: true, alias: "percent", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], info: [{ type: i0.Input, args: [{ isSignal: true, alias: "info", required: false }] }], infoWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoWidth", required: false }] }], inside: [{ type: i0.Input, args: [{ isSignal: true, alias: "inside", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], railColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "railColor", required: false }] }], gradient: [{ type: i0.Input, args: [{ isSignal: true, alias: "gradient", required: false }] }], steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }], stepWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepWidth", required: false }] }], stepFlex: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepFlex", required: false }] }], thickness: [{ type: i0.Input, args: [{ isSignal: true, alias: "thickness", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], notchAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "notchAngle", required: false }] }], subsection: [{ type: i0.Input, args: [{ isSignal: true, alias: "subsection", required: false }] }] } });
|
|
123
|
+
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], percent: [{ type: i0.Input, args: [{ isSignal: true, alias: "percent", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], infoTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoTpl", required: false }] }], info: [{ type: i0.Input, args: [{ isSignal: true, alias: "info", required: false }] }], infoWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "infoWidth", required: false }] }], inside: [{ type: i0.Input, args: [{ isSignal: true, alias: "inside", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], railColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "railColor", required: false }] }], gradient: [{ type: i0.Input, args: [{ isSignal: true, alias: "gradient", required: false }] }], steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }], stepWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepWidth", required: false }] }], stepFlex: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepFlex", required: false }] }], thickness: [{ type: i0.Input, args: [{ isSignal: true, alias: "thickness", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], notchAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "notchAngle", required: false }] }], subsection: [{ type: i0.Input, args: [{ isSignal: true, alias: "subsection", required: false }] }] } });
|
|
119
124
|
|
|
120
125
|
class XProgressComponent extends XProgressProperty {
|
|
121
126
|
constructor() {
|
|
@@ -343,11 +348,11 @@ class XProgressComponent extends XProgressProperty {
|
|
|
343
348
|
return '';
|
|
344
349
|
}
|
|
345
350
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XProgressComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
346
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XProgressComponent, isStandalone: true, selector: "x-progress", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @
|
|
351
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.5", type: XProgressComponent, isStandalone: true, selector: "x-progress", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @if (infoTpl()) {\r\n <ng-container *ngTemplateOutlet=\"infoTpl()!; context: { $status: status(), $percent: percent() }\"> </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"fto-check-circle\"></x-icon>\r\n }\r\n @case ('exception') {\r\n <x-icon type=\"fto-x-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"fto-help-circle\"></x-icon>\r\n }\r\n @default {\r\n @if (format()) {\r\n {{ format()!(percent()) }}\r\n } @else {\r\n {{ percent() }}%\r\n }\r\n }\r\n }\r\n }\r\n </span>\r\n</ng-template>\r\n", styles: ["@keyframes x-progress-active{0%{width:0;opacity:.1}20%{width:0;opacity:.5}to{width:100%;opacity:0}}x-progress{display:initial}.x-progress{margin:0;padding:0}.x-progress{display:inline-flex;align-items:center;width:100%}.x-progress-track{flex:1;display:inline-flex;align-items:center}.x-progress-rail{position:relative;display:inline-flex;width:100%;overflow:hidden;vertical-align:middle;background-color:var(--x-border-100);border-radius:var(--x-border-radius)}.x-progress-bg{position:relative;background-color:var(--x-primary);transition:width .3s cubic-bezier(.08,.82,.17,1) 0s;border-radius:var(--x-border-radius);text-align:right;color:#fff}.x-progress-bg>span{margin:0 .325rem}.x-progress-circle,.x-progress-dashboard,.x-progress-steps:not(.x-progress-steps-flex){width:initial}.x-progress-ring{position:relative;display:inline-flex;align-items:center;justify-content:center}.x-progress-ring-rail{position:absolute;width:100%;height:100%;border-style:solid;border-color:var(--x-border-100);border-radius:100%}.x-progress-ring-bg{position:absolute;width:100%;height:100%;border-style:solid;border-color:var(--x-primary);border-radius:100%;transition:clip-path .3s cubic-bezier(.08,.82,.17,1) 0s}.x-progress-ring .x-progress-text{margin-left:0;justify-content:center;font-size:var(--x-font-size-large)}.x-progress-mask .x-progress-bg{background:transparent}.x-progress-bg-mask{transition:width .3s cubic-bezier(.08,.82,.17,1) 0s;background-color:var(--x-border-100);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-progress-step{background-color:var(--x-border-100);border-radius:var(--x-border-radius)}.x-progress-step:not(:first-child){margin-left:.125rem}.x-progress-step-active{background-color:var(--x-primary)}.x-progress-text{margin-left:.5rem;display:inline-flex;align-items:center;white-space:nowrap}.x-progress-text x-icon{font-size:1.25rem}.x-progress-active .x-progress-bg:before{position:absolute;inset:0;background:var(--x-background-100);border-radius:var(--x-border-radius);opacity:0;animation:x-progress-active 2s cubic-bezier(.23,1,.32,1) infinite;content:\"\"}.x-progress-exception .x-progress-text{color:var(--x-danger)}.x-progress-exception .x-progress-bg,.x-progress-exception .x-progress-step-active{background-color:var(--x-danger)}.x-progress-exception .x-progress-ring-bg{border-color:var(--x-danger)}.x-progress-success .x-progress-text{color:var(--x-success)}.x-progress-success .x-progress-bg,.x-progress-success .x-progress-step-active{background-color:var(--x-success)}.x-progress-success .x-progress-ring-bg{border-color:var(--x-success)}.x-progress-warning .x-progress-text{color:var(--x-warning)}.x-progress-warning .x-progress-bg,.x-progress-warning .x-progress-step-active{background-color:var(--x-warning)}.x-progress-warning .x-progress-ring-bg{border-color:var(--x-warning)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
347
352
|
}
|
|
348
353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XProgressComponent, decorators: [{
|
|
349
354
|
type: Component,
|
|
350
|
-
args: [{ selector: `${XProgressPrefix}`, imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @
|
|
355
|
+
args: [{ selector: `${XProgressPrefix}`, imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @if (infoTpl()) {\r\n <ng-container *ngTemplateOutlet=\"infoTpl()!; context: { $status: status(), $percent: percent() }\"> </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"fto-check-circle\"></x-icon>\r\n }\r\n @case ('exception') {\r\n <x-icon type=\"fto-x-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"fto-help-circle\"></x-icon>\r\n }\r\n @default {\r\n @if (format()) {\r\n {{ format()!(percent()) }}\r\n } @else {\r\n {{ percent() }}%\r\n }\r\n }\r\n }\r\n }\r\n </span>\r\n</ng-template>\r\n", styles: ["@keyframes x-progress-active{0%{width:0;opacity:.1}20%{width:0;opacity:.5}to{width:100%;opacity:0}}x-progress{display:initial}.x-progress{margin:0;padding:0}.x-progress{display:inline-flex;align-items:center;width:100%}.x-progress-track{flex:1;display:inline-flex;align-items:center}.x-progress-rail{position:relative;display:inline-flex;width:100%;overflow:hidden;vertical-align:middle;background-color:var(--x-border-100);border-radius:var(--x-border-radius)}.x-progress-bg{position:relative;background-color:var(--x-primary);transition:width .3s cubic-bezier(.08,.82,.17,1) 0s;border-radius:var(--x-border-radius);text-align:right;color:#fff}.x-progress-bg>span{margin:0 .325rem}.x-progress-circle,.x-progress-dashboard,.x-progress-steps:not(.x-progress-steps-flex){width:initial}.x-progress-ring{position:relative;display:inline-flex;align-items:center;justify-content:center}.x-progress-ring-rail{position:absolute;width:100%;height:100%;border-style:solid;border-color:var(--x-border-100);border-radius:100%}.x-progress-ring-bg{position:absolute;width:100%;height:100%;border-style:solid;border-color:var(--x-primary);border-radius:100%;transition:clip-path .3s cubic-bezier(.08,.82,.17,1) 0s}.x-progress-ring .x-progress-text{margin-left:0;justify-content:center;font-size:var(--x-font-size-large)}.x-progress-mask .x-progress-bg{background:transparent}.x-progress-bg-mask{transition:width .3s cubic-bezier(.08,.82,.17,1) 0s;background-color:var(--x-border-100);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-progress-step{background-color:var(--x-border-100);border-radius:var(--x-border-radius)}.x-progress-step:not(:first-child){margin-left:.125rem}.x-progress-step-active{background-color:var(--x-primary)}.x-progress-text{margin-left:.5rem;display:inline-flex;align-items:center;white-space:nowrap}.x-progress-text x-icon{font-size:1.25rem}.x-progress-active .x-progress-bg:before{position:absolute;inset:0;background:var(--x-background-100);border-radius:var(--x-border-radius);opacity:0;animation:x-progress-active 2s cubic-bezier(.23,1,.32,1) infinite;content:\"\"}.x-progress-exception .x-progress-text{color:var(--x-danger)}.x-progress-exception .x-progress-bg,.x-progress-exception .x-progress-step-active{background-color:var(--x-danger)}.x-progress-exception .x-progress-ring-bg{border-color:var(--x-danger)}.x-progress-success .x-progress-text{color:var(--x-success)}.x-progress-success .x-progress-bg,.x-progress-success .x-progress-step-active{background-color:var(--x-success)}.x-progress-success .x-progress-ring-bg{border-color:var(--x-success)}.x-progress-warning .x-progress-text{color:var(--x-warning)}.x-progress-warning .x-progress-bg,.x-progress-warning .x-progress-step-active{background-color:var(--x-warning)}.x-progress-warning .x-progress-ring-bg{border-color:var(--x-warning)}\n"] }]
|
|
351
356
|
}] });
|
|
352
357
|
|
|
353
358
|
class XProgressModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-progress.mjs","sources":["../../../../lib/ng-nest/ui/progress/progress.property.ts","../../../../lib/ng-nest/ui/progress/progress.component.ts","../../../../lib/ng-nest/ui/progress/progress.component.html","../../../../lib/ng-nest/ui/progress/progress.module.ts","../../../../lib/ng-nest/ui/progress/ng-nest-ui-progress.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Progress\r\n * @selector x-progress\r\n * @decorator component\r\n */\r\nexport const XProgressPrefix = 'x-progress';\r\nconst X_PROGRESS_CONFIG_NAME = 'progress';\r\n\r\n/**\r\n * Progress Property\r\n */\r\n@Component({ selector: `${XProgressPrefix}-property`, template: '' })\r\nexport class XProgressProperty extends XPropertyFunction(X_PROGRESS_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 进度条类型\r\n * @en_US Progress bar type\r\n */\r\n readonly type = input<XProgressType>('line');\r\n /**\r\n * @zh_CN 显示进度 0-100\r\n * @en_US Show progress 0-100\r\n */\r\n readonly percent = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 进度条高度\r\n * @en_US Height of progress bar\r\n */\r\n readonly height = input<string, XNumber>(this.config?.height ?? '1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\n readonly status = input<XProgressStatus>('normal');\r\n /**\r\n * @zh_CN 是否显示百分比文本信息\r\n * @en_US Whether to display percentage text\r\n */\r\n readonly info = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 文本信息宽度\r\n * @en_US The width of the text information\r\n */\r\n readonly infoWidth = input<string, XNumber>('3.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 百分比文本是否显示在进度条里面\r\n * @en_US Whether the percentage text is displayed in the progress bar\r\n */\r\n readonly inside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义百分比文本内容\r\n * @en_US Custom percentage text content\r\n */\r\n readonly format = input<(percent: number) => string>();\r\n /**\r\n * @zh_CN 自定义颜色\r\n * @en_US Custom color\r\n */\r\n readonly color = input<XProgressColor>();\r\n /**\r\n * @zh_CN 自定义轨道颜色\r\n * @en_US Custom rail color\r\n */\r\n readonly railColor = input<XProgressColor>();\r\n /**\r\n * @zh_CN 渐变颜色\r\n * @en_US Gradient color\r\n */\r\n readonly gradient = input<XProgressGradient>();\r\n /**\r\n * @zh_CN 步骤进度条\r\n * @en_US Steps progress bar\r\n */\r\n readonly steps = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 单个步骤的宽度\r\n * @en_US Single step width\r\n */\r\n readonly stepWidth = input<string, XNumber>('2rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 单个步骤的宽度自适应\r\n * @en_US Single step width flex\r\n */\r\n readonly stepFlex = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 圆环/仪表盘厚度\r\n * @en_US Ring thickness\r\n */\r\n readonly thickness = input<string, XNumber>('1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 圆环/仪表盘尺寸\r\n * @en_US Ring size\r\n */\r\n readonly size = input<string, XNumber>('8rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 仪表盘缺口角度 0~300\r\n * @en_US Dashboard notch angle\r\n */\r\n readonly notchAngle = input<number, XNumber>(80, { transform: XToNumber });\r\n /**\r\n * @zh_CN 分段显示颜色,只适用 type = 'line'\r\n * @en_US Segmentation display color, only use of type = 'line'\r\n */\r\n readonly subsection = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 进度条类型\r\n * @en_US Progress bar type\r\n */\r\nexport type XProgressType = 'line' | 'circle' | 'dashboard';\r\n\r\n/**\r\n * @zh_CN 进度条颜色\r\n * @en_US Progress bar color\r\n */\r\nexport type XProgressColor = string | XProgressColorNode[] | Function;\r\n\r\n/**\r\n * @zh_CN 进度条节点颜色\r\n * @en_US Progress bar node color\r\n */\r\nexport interface XProgressColorNode {\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n color: string;\r\n /**\r\n * @zh_CN 百分比\r\n * @en_US Percent\r\n */\r\n percent: number;\r\n}\r\n/**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\nexport type XProgressStatus = 'normal' | 'active' | 'success' | 'exception' | 'warning';\r\n\r\n/**\r\n * @zh_CN 渐变颜色\r\n * @en_US Gradient color\r\n */\r\nexport type XProgressGradient = { direction?: string } & ({ from: string; to: string } | { [percent: string]: string });\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\r\nimport { XProgressPrefix, XProgressProperty } from './progress.property';\r\nimport { XIsFunction, XIsString, XIsObjectArray, XIsEmpty, XIsNumber } from '@ng-nest/ui/core';\r\nimport { XProgressColorNode } from './progress.property';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport type { XNumber } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XProgressPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent],\r\n templateUrl: './progress.component.html',\r\n styleUrls: ['./progress.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XProgressComponent extends XProgressProperty {\r\n maskWidth = computed(() => (XIsNumber(this.percent()) ? 100 - this.percent() : 100));\r\n\r\n classMap = computed(() => ({\r\n [`${XProgressPrefix}-${this.status()}`]: true,\r\n [`${XProgressPrefix}-${this.type()}`]: true,\r\n [`${XProgressPrefix}-inside`]: this.inside()\r\n }));\r\n\r\n stepsArray = computed(() => {\r\n const steps = this.steps();\r\n if (XIsEmpty(steps)) {\r\n return [];\r\n } else {\r\n const critical = Math.ceil((this.percent() / 100) * steps!);\r\n return Array.from({ length: steps! }).map((_, index) => index + 1 <= critical);\r\n }\r\n });\r\n\r\n currentColor = computed(() => {\r\n if (this.subsection()) return '';\r\n const color = this.color();\r\n if (XIsEmpty(color)) return '';\r\n if (XIsString(color)) {\r\n return color;\r\n } else if (XIsObjectArray(color)) {\r\n return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n } else if (XIsFunction(color)) {\r\n return (color as Function)(this.percent());\r\n }\r\n });\r\n\r\n currentRailColor = computed(() => {\r\n if (this.subsection()) return '';\r\n const color = this.railColor();\r\n if (XIsEmpty(color)) return '';\r\n if (XIsString(color)) {\r\n return color;\r\n } else if (XIsObjectArray(color)) {\r\n return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n } else if (XIsFunction(color)) {\r\n return (color as Function)(this.percent());\r\n }\r\n });\r\n\r\n linearGradient = computed(() => {\r\n if (this.subsection()) return '';\r\n if (XIsEmpty(this.gradient())) {\r\n return '';\r\n } else {\r\n const { from, to, direction = 'to right', ...percents } = this.gradient() || {};\r\n if (Object.keys(percents).length !== 0) {\r\n return `linear-gradient(${direction}, ${this.sortGradient(percents as { [percent: string]: string }).map(\r\n ({ key, value }) => `${value} ${key}%`\r\n )})`;\r\n }\r\n return `linear-gradient(${direction}, ${from}, ${to})`;\r\n }\r\n });\r\n\r\n /**\r\n * circle 中的 100% 等于 clip-path 中的 400%\r\n */\r\n circleClipPath = computed(() => {\r\n if (this.type() !== 'circle') return '';\r\n let value = this.percent() * 4;\r\n let k1 = 'polygon(50% 50%,50% 0%,';\r\n let k2 = k1 + '100% 0%,';\r\n let k3 = k2 + '100% 100%,';\r\n let k4 = k3 + '0% 100%,';\r\n let k5 = k4 + '0% 0%,';\r\n if (value <= 50) {\r\n value += 50;\r\n return `${k1}${value}% 0%)`;\r\n } else if (value > 50 && value <= 150) {\r\n value -= 50;\r\n return `${k2}100% ${value}%)`;\r\n } else if (value > 150 && value <= 250) {\r\n value = 250 - value;\r\n return `${k3}${value}% 100%)`;\r\n } else if (value > 250 && value <= 350) {\r\n value = 350 - value;\r\n return `${k4}0% ${value}%)`;\r\n } else if (value > 350 && value <= 400) {\r\n value -= 350;\r\n return `${k5}${value}% 0%)`;\r\n }\r\n return '';\r\n });\r\n\r\n railValue = computed(() => {\r\n if (this.type() !== 'dashboard') return 0;\r\n return (this.notchAngle() / 360) * 50 * 4;\r\n });\r\n\r\n dashboardStart = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n let k1 = `polygon(50% 50%,`;\r\n let per = 0;\r\n let railValue = this.railValue();\r\n if (railValue <= 50) {\r\n per = 50 - railValue;\r\n return `${k1} ${per}% 100%`;\r\n } else if (railValue > 50 && railValue <= 150) {\r\n per = 150 - railValue;\r\n return `${k1} 0% ${per}%`;\r\n } else if (railValue > 150 && railValue <= 250) {\r\n per = railValue - 150;\r\n return `${k1} ${per}% 0%`;\r\n }\r\n return '';\r\n });\r\n\r\n /**\r\n *\r\n * 90 polygon(50% 50%, 0% 100%, 0% 0%, 100% 0%, 100% 100%);\r\n * 180 polygon(50% 50%, 0% 50%, 0% 0%, 100% 0%, 100% 50%);\r\n * 270 polygon(50% 50%, 0% 0%, 100% 0%);\r\n */\r\n dashboardRailClipPath = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n let start = this.dashboardStart();\r\n let per = 0;\r\n let railValue = this.railValue();\r\n if (railValue <= 50) {\r\n per = 50 - railValue;\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${100 - per}% 100%)`;\r\n } else if (railValue > 50 && railValue <= 150) {\r\n per = 150 - railValue;\r\n return `${start}, 0% 0%, 100% 0%, 100% ${per}%)`;\r\n } else if (railValue > 150 && railValue <= 250) {\r\n per = railValue - 150;\r\n return `${start}, ${100 - per}% 0%)`;\r\n }\r\n return '';\r\n });\r\n\r\n dashboardClipPath = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n return this.setCircleClipPathValue(this.dashboardStart(), this.railValue());\r\n });\r\n\r\n subLinearGradient = computed(() => {\r\n if (!this.subsection()) return '';\r\n let colors = this.color() as XProgressColorNode[];\r\n if (!colors || colors.length <= 0) {\r\n return `linear-gradient(to right, var(--x-primary) 0%, var(--x-primary) 100%)`;\r\n } else if (colors.length === 1) {\r\n colors.push({ percent: 100, color: 'var(--x-primary)' });\r\n }\r\n colors = colors.sort((a, b) => a.percent - b.percent);\r\n let lgs: string[] = [];\r\n colors.reduce((a, b, index) => {\r\n if (index === 1 && a.percent > 0) {\r\n lgs.push(`${a.color} 0%, ${a.color} ${a.percent}%`);\r\n }\r\n lgs.push(`${b.color} ${a.percent}%, ${b.color} ${b.percent}%`);\r\n if (index === colors.length - 1 && b.percent < 100) {\r\n lgs.push(`var(--x-primary) ${b.percent}%, var(--x-primary) 100%`);\r\n }\r\n return b;\r\n });\r\n return `linear-gradient(to right,${lgs.join(',')})`;\r\n });\r\n\r\n getLevelColor(percent: XNumber, color: XProgressColorNode[]) {\r\n let colors = color.sort((a, b) => a.percent - b.percent);\r\n for (let i = 0; i < colors.length; i++) {\r\n if (colors[i].percent > Number(percent)) {\r\n return colors[i].color;\r\n }\r\n }\r\n return colors[colors.length - 1].color;\r\n }\r\n\r\n sortGradient(percents: { [percent: string]: string }) {\r\n let arr: { key: number; value: string }[] = [];\r\n Object.keys(percents).forEach((key) => {\r\n const value = percents[key];\r\n const numKey = +key.replace('%', '');\r\n if (!isNaN(numKey)) {\r\n arr.push({ key: numKey, value });\r\n }\r\n });\r\n return arr.sort((a, b) => a.key - b.key);\r\n }\r\n\r\n setCircleClipPathValue(start: string, railValue: number) {\r\n let value = ((400 - railValue * 2) / 100) * this.percent();\r\n let val = value + railValue;\r\n if (val <= 50) {\r\n val = 50 - val;\r\n return `${start}, ${val}% 100%)`;\r\n } else if (val > 50 && val <= 150) {\r\n val = 150 - val;\r\n return `${start}, 0% 100%, 0% ${val}%)`;\r\n } else if (val > 150 && val <= 250) {\r\n val = val - 150;\r\n return `${start}, 0% 100%, 0% 0%, ${val}% 0%)`;\r\n } else if (val > 250 && val <= 350) {\r\n val = val - 250;\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% ${val}%)`;\r\n } else if (val > 350 && val <= 400) {\r\n val = 100 - (val - 350);\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${val}% 100%)`;\r\n }\r\n return '';\r\n }\r\n}\r\n","<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"fto-check-circle\"></x-icon>\r\n }\r\n @case ('exception') {\r\n <x-icon type=\"fto-x-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"fto-help-circle\"></x-icon>\r\n }\r\n @default {\r\n @if (format()) {\r\n {{ format()!(percent()) }}\r\n } @else {\r\n {{ percent() }}%\r\n }\r\n }\r\n }\r\n </span>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XProgressComponent } from './progress.component';\r\n\r\n@NgModule({\r\n exports: [XProgressComponent],\r\n imports: [XProgressComponent]\r\n})\r\nexport class XProgressModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-progress.mjs","sources":["../../../../lib/ng-nest/ui/progress/progress.property.ts","../../../../lib/ng-nest/ui/progress/progress.component.ts","../../../../lib/ng-nest/ui/progress/progress.component.html","../../../../lib/ng-nest/ui/progress/progress.module.ts","../../../../lib/ng-nest/ui/progress/ng-nest-ui-progress.ts"],"sourcesContent":["import { Component, input, TemplateRef } from '@angular/core';\r\nimport { XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Progress\r\n * @selector x-progress\r\n * @decorator component\r\n */\r\nexport const XProgressPrefix = 'x-progress';\r\nconst X_PROGRESS_CONFIG_NAME = 'progress';\r\n\r\n/**\r\n * Progress Property\r\n */\r\n@Component({ selector: `${XProgressPrefix}-property`, template: '' })\r\nexport class XProgressProperty extends XPropertyFunction(X_PROGRESS_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 进度条类型\r\n * @en_US Progress bar type\r\n */\r\n readonly type = input<XProgressType>('line');\r\n /**\r\n * @zh_CN 显示进度 0-100\r\n * @en_US Show progress 0-100\r\n */\r\n readonly percent = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 进度条高度\r\n * @en_US Height of progress bar\r\n */\r\n readonly height = input<string, XNumber>(this.config?.height ?? '1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\n readonly status = input<XProgressStatus>('normal');\r\n /**\r\n * @zh_CN 自定义显示文字/图标\r\n * @en_US Custom display info/icon\r\n */\r\n readonly infoTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 是否显示百分比文本信息\r\n * @en_US Whether to display percentage text\r\n */\r\n readonly info = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 文本信息宽度\r\n * @en_US The width of the text information\r\n */\r\n readonly infoWidth = input<string, XNumber>('3.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 百分比文本是否显示在进度条里面\r\n * @en_US Whether the percentage text is displayed in the progress bar\r\n */\r\n readonly inside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义百分比文本内容\r\n * @en_US Custom percentage text content\r\n */\r\n readonly format = input<(percent: number) => string>();\r\n /**\r\n * @zh_CN 自定义颜色\r\n * @en_US Custom color\r\n */\r\n readonly color = input<XProgressColor>();\r\n /**\r\n * @zh_CN 自定义轨道颜色\r\n * @en_US Custom rail color\r\n */\r\n readonly railColor = input<XProgressColor>();\r\n /**\r\n * @zh_CN 渐变颜色\r\n * @en_US Gradient color\r\n */\r\n readonly gradient = input<XProgressGradient>();\r\n /**\r\n * @zh_CN 步骤进度条\r\n * @en_US Steps progress bar\r\n */\r\n readonly steps = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 单个步骤的宽度\r\n * @en_US Single step width\r\n */\r\n readonly stepWidth = input<string, XNumber>('2rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 单个步骤的宽度自适应\r\n * @en_US Single step width flex\r\n */\r\n readonly stepFlex = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 圆环/仪表盘厚度\r\n * @en_US Ring thickness\r\n */\r\n readonly thickness = input<string, XNumber>('1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 圆环/仪表盘尺寸\r\n * @en_US Ring size\r\n */\r\n readonly size = input<string, XNumber>('8rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 仪表盘缺口角度 0~300\r\n * @en_US Dashboard notch angle\r\n */\r\n readonly notchAngle = input<number, XNumber>(80, { transform: XToNumber });\r\n /**\r\n * @zh_CN 分段显示颜色,只适用 type = 'line'\r\n * @en_US Segmentation display color, only use of type = 'line'\r\n */\r\n readonly subsection = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 进度条类型\r\n * @en_US Progress bar type\r\n */\r\nexport type XProgressType = 'line' | 'circle' | 'dashboard';\r\n\r\n/**\r\n * @zh_CN 进度条颜色\r\n * @en_US Progress bar color\r\n */\r\nexport type XProgressColor = string | XProgressColorNode[] | Function;\r\n\r\n/**\r\n * @zh_CN 进度条节点颜色\r\n * @en_US Progress bar node color\r\n */\r\nexport interface XProgressColorNode {\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n color: string;\r\n /**\r\n * @zh_CN 百分比\r\n * @en_US Percent\r\n */\r\n percent: number;\r\n}\r\n/**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\nexport type XProgressStatus = 'normal' | 'active' | 'success' | 'exception' | 'warning';\r\n\r\n/**\r\n * @zh_CN 渐变颜色\r\n * @en_US Gradient color\r\n */\r\nexport type XProgressGradient = { direction?: string } & ({ from: string; to: string } | { [percent: string]: string });\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\r\nimport { XProgressPrefix, XProgressProperty } from './progress.property';\r\nimport { XIsFunction, XIsString, XIsObjectArray, XIsEmpty, XIsNumber } from '@ng-nest/ui/core';\r\nimport { XProgressColorNode } from './progress.property';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport type { XNumber } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XProgressPrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent],\r\n templateUrl: './progress.component.html',\r\n styleUrls: ['./progress.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XProgressComponent extends XProgressProperty {\r\n maskWidth = computed(() => (XIsNumber(this.percent()) ? 100 - this.percent() : 100));\r\n\r\n classMap = computed(() => ({\r\n [`${XProgressPrefix}-${this.status()}`]: true,\r\n [`${XProgressPrefix}-${this.type()}`]: true,\r\n [`${XProgressPrefix}-inside`]: this.inside()\r\n }));\r\n\r\n stepsArray = computed(() => {\r\n const steps = this.steps();\r\n if (XIsEmpty(steps)) {\r\n return [];\r\n } else {\r\n const critical = Math.ceil((this.percent() / 100) * steps!);\r\n return Array.from({ length: steps! }).map((_, index) => index + 1 <= critical);\r\n }\r\n });\r\n\r\n currentColor = computed(() => {\r\n if (this.subsection()) return '';\r\n const color = this.color();\r\n if (XIsEmpty(color)) return '';\r\n if (XIsString(color)) {\r\n return color;\r\n } else if (XIsObjectArray(color)) {\r\n return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n } else if (XIsFunction(color)) {\r\n return (color as Function)(this.percent());\r\n }\r\n });\r\n\r\n currentRailColor = computed(() => {\r\n if (this.subsection()) return '';\r\n const color = this.railColor();\r\n if (XIsEmpty(color)) return '';\r\n if (XIsString(color)) {\r\n return color;\r\n } else if (XIsObjectArray(color)) {\r\n return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n } else if (XIsFunction(color)) {\r\n return (color as Function)(this.percent());\r\n }\r\n });\r\n\r\n linearGradient = computed(() => {\r\n if (this.subsection()) return '';\r\n if (XIsEmpty(this.gradient())) {\r\n return '';\r\n } else {\r\n const { from, to, direction = 'to right', ...percents } = this.gradient() || {};\r\n if (Object.keys(percents).length !== 0) {\r\n return `linear-gradient(${direction}, ${this.sortGradient(percents as { [percent: string]: string }).map(\r\n ({ key, value }) => `${value} ${key}%`\r\n )})`;\r\n }\r\n return `linear-gradient(${direction}, ${from}, ${to})`;\r\n }\r\n });\r\n\r\n /**\r\n * circle 中的 100% 等于 clip-path 中的 400%\r\n */\r\n circleClipPath = computed(() => {\r\n if (this.type() !== 'circle') return '';\r\n let value = this.percent() * 4;\r\n let k1 = 'polygon(50% 50%,50% 0%,';\r\n let k2 = k1 + '100% 0%,';\r\n let k3 = k2 + '100% 100%,';\r\n let k4 = k3 + '0% 100%,';\r\n let k5 = k4 + '0% 0%,';\r\n if (value <= 50) {\r\n value += 50;\r\n return `${k1}${value}% 0%)`;\r\n } else if (value > 50 && value <= 150) {\r\n value -= 50;\r\n return `${k2}100% ${value}%)`;\r\n } else if (value > 150 && value <= 250) {\r\n value = 250 - value;\r\n return `${k3}${value}% 100%)`;\r\n } else if (value > 250 && value <= 350) {\r\n value = 350 - value;\r\n return `${k4}0% ${value}%)`;\r\n } else if (value > 350 && value <= 400) {\r\n value -= 350;\r\n return `${k5}${value}% 0%)`;\r\n }\r\n return '';\r\n });\r\n\r\n railValue = computed(() => {\r\n if (this.type() !== 'dashboard') return 0;\r\n return (this.notchAngle() / 360) * 50 * 4;\r\n });\r\n\r\n dashboardStart = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n let k1 = `polygon(50% 50%,`;\r\n let per = 0;\r\n let railValue = this.railValue();\r\n if (railValue <= 50) {\r\n per = 50 - railValue;\r\n return `${k1} ${per}% 100%`;\r\n } else if (railValue > 50 && railValue <= 150) {\r\n per = 150 - railValue;\r\n return `${k1} 0% ${per}%`;\r\n } else if (railValue > 150 && railValue <= 250) {\r\n per = railValue - 150;\r\n return `${k1} ${per}% 0%`;\r\n }\r\n return '';\r\n });\r\n\r\n /**\r\n *\r\n * 90 polygon(50% 50%, 0% 100%, 0% 0%, 100% 0%, 100% 100%);\r\n * 180 polygon(50% 50%, 0% 50%, 0% 0%, 100% 0%, 100% 50%);\r\n * 270 polygon(50% 50%, 0% 0%, 100% 0%);\r\n */\r\n dashboardRailClipPath = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n let start = this.dashboardStart();\r\n let per = 0;\r\n let railValue = this.railValue();\r\n if (railValue <= 50) {\r\n per = 50 - railValue;\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${100 - per}% 100%)`;\r\n } else if (railValue > 50 && railValue <= 150) {\r\n per = 150 - railValue;\r\n return `${start}, 0% 0%, 100% 0%, 100% ${per}%)`;\r\n } else if (railValue > 150 && railValue <= 250) {\r\n per = railValue - 150;\r\n return `${start}, ${100 - per}% 0%)`;\r\n }\r\n return '';\r\n });\r\n\r\n dashboardClipPath = computed(() => {\r\n if (this.type() !== 'dashboard') return '';\r\n return this.setCircleClipPathValue(this.dashboardStart(), this.railValue());\r\n });\r\n\r\n subLinearGradient = computed(() => {\r\n if (!this.subsection()) return '';\r\n let colors = this.color() as XProgressColorNode[];\r\n if (!colors || colors.length <= 0) {\r\n return `linear-gradient(to right, var(--x-primary) 0%, var(--x-primary) 100%)`;\r\n } else if (colors.length === 1) {\r\n colors.push({ percent: 100, color: 'var(--x-primary)' });\r\n }\r\n colors = colors.sort((a, b) => a.percent - b.percent);\r\n let lgs: string[] = [];\r\n colors.reduce((a, b, index) => {\r\n if (index === 1 && a.percent > 0) {\r\n lgs.push(`${a.color} 0%, ${a.color} ${a.percent}%`);\r\n }\r\n lgs.push(`${b.color} ${a.percent}%, ${b.color} ${b.percent}%`);\r\n if (index === colors.length - 1 && b.percent < 100) {\r\n lgs.push(`var(--x-primary) ${b.percent}%, var(--x-primary) 100%`);\r\n }\r\n return b;\r\n });\r\n return `linear-gradient(to right,${lgs.join(',')})`;\r\n });\r\n\r\n getLevelColor(percent: XNumber, color: XProgressColorNode[]) {\r\n let colors = color.sort((a, b) => a.percent - b.percent);\r\n for (let i = 0; i < colors.length; i++) {\r\n if (colors[i].percent > Number(percent)) {\r\n return colors[i].color;\r\n }\r\n }\r\n return colors[colors.length - 1].color;\r\n }\r\n\r\n sortGradient(percents: { [percent: string]: string }) {\r\n let arr: { key: number; value: string }[] = [];\r\n Object.keys(percents).forEach((key) => {\r\n const value = percents[key];\r\n const numKey = +key.replace('%', '');\r\n if (!isNaN(numKey)) {\r\n arr.push({ key: numKey, value });\r\n }\r\n });\r\n return arr.sort((a, b) => a.key - b.key);\r\n }\r\n\r\n setCircleClipPathValue(start: string, railValue: number) {\r\n let value = ((400 - railValue * 2) / 100) * this.percent();\r\n let val = value + railValue;\r\n if (val <= 50) {\r\n val = 50 - val;\r\n return `${start}, ${val}% 100%)`;\r\n } else if (val > 50 && val <= 150) {\r\n val = 150 - val;\r\n return `${start}, 0% 100%, 0% ${val}%)`;\r\n } else if (val > 150 && val <= 250) {\r\n val = val - 150;\r\n return `${start}, 0% 100%, 0% 0%, ${val}% 0%)`;\r\n } else if (val > 250 && val <= 350) {\r\n val = val - 250;\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% ${val}%)`;\r\n } else if (val > 350 && val <= 400) {\r\n val = 100 - (val - 350);\r\n return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${val}% 100%)`;\r\n }\r\n return '';\r\n }\r\n}\r\n","<div\r\n class=\"x-progress\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n @switch (type()) {\r\n @case ('circle') {\r\n <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n }\r\n @case ('dashboard') {\r\n <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n @if (stepsArray().length === 0) {\r\n <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n }\r\n @if (stepsArray().length > 0) {\r\n <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n }\r\n @if (info() && !inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.border-width]=\"thickness()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"circleClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n <div\r\n class=\"x-progress-ring-rail\"\r\n [style.clip-path]=\"dashboardRailClipPath()\"\r\n [style.border-color]=\"currentRailColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <div\r\n class=\"x-progress-ring-bg\"\r\n [style.clip-path]=\"dashboardClipPath()\"\r\n [style.border-color]=\"currentColor()\"\r\n [style.border-width]=\"thickness()\"\r\n ></div>\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n <div class=\"x-progress-track\">\r\n <div\r\n class=\"x-progress-rail\"\r\n [class.x-progress-mask]=\"subsection()\"\r\n [style.background-color]=\"currentRailColor()\"\r\n [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n >\r\n <div\r\n class=\"x-progress-bg\"\r\n [style.width.%]=\"percent()\"\r\n [style.background-color]=\"currentColor()\"\r\n [style.background-image]=\"linearGradient()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n >\r\n @if (info() && inside()) {\r\n <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n }\r\n </div>\r\n @if (subsection()) {\r\n <div\r\n class=\"x-progress-bg-mask\"\r\n [style.width.%]=\"maskWidth()\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n @for (step of stepsArray(); track i; let i = $index) {\r\n <div\r\n class=\"x-progress-step\"\r\n [class.x-progress-step-active]=\"step\"\r\n [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n [style.width]=\"stepWidth()\"\r\n [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n [style.height]=\"height()\"\r\n [style.line-height]=\"height()\"\r\n ></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n @if (infoTpl()) {\r\n <ng-container *ngTemplateOutlet=\"infoTpl()!; context: { $status: status(), $percent: percent() }\"> </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"fto-check-circle\"></x-icon>\r\n }\r\n @case ('exception') {\r\n <x-icon type=\"fto-x-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"fto-help-circle\"></x-icon>\r\n }\r\n @default {\r\n @if (format()) {\r\n {{ format()!(percent()) }}\r\n } @else {\r\n {{ percent() }}%\r\n }\r\n }\r\n }\r\n }\r\n </span>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XProgressComponent } from './progress.component';\r\n\r\n@NgModule({\r\n exports: [XProgressComponent],\r\n imports: [XProgressComponent]\r\n})\r\nexport class XProgressModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAIA;;;;AAIG;AACI,MAAM,eAAe,GAAG;AAC/B,MAAM,sBAAsB,GAAG,UAAU;AAEzC;;AAEG;MAEU,iBAAkB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AADhF,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,MAAM,gDAAC;AAC5C;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAkB,CAAC,2CAAI,SAAS,EAAE,SAAS,EAAA,CAAA,GAAA,CAAtB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAC;AACtE;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,0CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA,CAAA,CAAC;AACxG;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,QAAQ,kDAAC;AAClD;;;AAGG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;AAC5C;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAoB,IAAI,wCAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AACzE;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAkB,QAAQ,6CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACtF;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAoB,KAAK,0CAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AAC5E;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA+B;AACtD;;;AAGG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkB;AACxC;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAkB;AAC5C;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;AAC9C;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAyB,IAAI,yCAAI,SAAS,EAAE,SAAS,EAAA,CAAA,GAAA,CAAtB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAC;AAC9E;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAkB,MAAM,6CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACpF;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,KAAK,4CAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AAC9E;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAkB,MAAM,6CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACpF;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,MAAM,wCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAC/E;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,EAAE,8CAAI,SAAS,EAAE,SAAS,EAAA,CAAA,GAAA,CAAtB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAC;AAC1E;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,KAAK,8CAAI,SAAS,EAAE,UAAU,EAAA,CAAA,GAAA,CAAvB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAC;AACjF,IAAA;iIAhGY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,y8EADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACE9D,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AARzD,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,qDAAC;AAEpF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;YACzB,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,GAAG,IAAI;YAC7C,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,IAAI;YAC3C,CAAC,CAAA,EAAG,eAAe,CAAA,OAAA,CAAS,GAAG,IAAI,CAAC,MAAM;AAC3C,SAAA,CAAC,oDAAC;AAEH,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,OAAO,EAAE;YACX;iBAAO;AACL,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAM,CAAC;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC;YAChF;AACF,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,gBAAA,OAAO,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,QAAQ,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,EAAE;AAC9B,YAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AACpB,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAA6B,CAAC;YAC1E;AAAO,iBAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,OAAQ,KAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C;AACF,QAAA,CAAC,wDAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAC/B,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,gBAAA,OAAO,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;YAC9B,IAAI,QAAQ,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,EAAE;AAC9B,YAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AACpB,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAA6B,CAAC;YAC1E;AAAO,iBAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,OAAQ,KAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C;AACF,QAAA,CAAC,4DAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,gBAAA,OAAO,EAAE;YAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC7B,gBAAA,OAAO,EAAE;YACX;iBAAO;AACL,gBAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,GAAG,UAAU,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;gBAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,oBAAA,OAAO,CAAA,gBAAA,EAAmB,SAAS,CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAC,QAAyC,CAAC,CAAC,GAAG,CACtG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CACvC,CAAA,CAAA,CAAG;gBACN;AACA,gBAAA,OAAO,mBAAmB,SAAS,CAAA,EAAA,EAAK,IAAI,CAAA,EAAA,EAAK,EAAE,GAAG;YACxD;AACF,QAAA,CAAC,0DAAC;AAEF;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;AAAE,gBAAA,OAAO,EAAE;YACvC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;YAC9B,IAAI,EAAE,GAAG,yBAAyB;AAClC,YAAA,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU;AACxB,YAAA,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY;AAC1B,YAAA,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU;AACxB,YAAA,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ;AACtB,YAAA,IAAI,KAAK,IAAI,EAAE,EAAE;gBACf,KAAK,IAAI,EAAE;AACX,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,EAAG,KAAK,OAAO;YAC7B;iBAAO,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE;gBACrC,KAAK,IAAI,EAAE;AACX,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,KAAA,EAAQ,KAAK,IAAI;YAC/B;iBAAO,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;AACtC,gBAAA,KAAK,GAAG,GAAG,GAAG,KAAK;AACnB,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,EAAG,KAAK,SAAS;YAC/B;iBAAO,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;AACtC,gBAAA,KAAK,GAAG,GAAG,GAAG,KAAK;AACnB,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,GAAA,EAAM,KAAK,IAAI;YAC7B;iBAAO,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;gBACtC,KAAK,IAAI,GAAG;AACZ,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,EAAG,KAAK,OAAO;YAC7B;AACA,YAAA,OAAO,EAAE;AACX,QAAA,CAAC,0DAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,gBAAA,OAAO,CAAC;AACzC,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC;AAC3C,QAAA,CAAC,qDAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,gBAAA,OAAO,EAAE;YAC1C,IAAI,EAAE,GAAG,CAAA,gBAAA,CAAkB;YAC3B,IAAI,GAAG,GAAG,CAAC;AACX,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,IAAI,SAAS,IAAI,EAAE,EAAE;AACnB,gBAAA,GAAG,GAAG,EAAE,GAAG,SAAS;AACpB,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,GAAG,QAAQ;YAC7B;iBAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,IAAI,GAAG,EAAE;AAC7C,gBAAA,GAAG,GAAG,GAAG,GAAG,SAAS;AACrB,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,IAAA,EAAO,GAAG,GAAG;YAC3B;iBAAO,IAAI,SAAS,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;AAC9C,gBAAA,GAAG,GAAG,SAAS,GAAG,GAAG;AACrB,gBAAA,OAAO,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,GAAG,MAAM;YAC3B;AACA,YAAA,OAAO,EAAE;AACX,QAAA,CAAC,0DAAC;AAEF;;;;;AAKG;AACH,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,gBAAA,OAAO,EAAE;AAC1C,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,IAAI,GAAG,GAAG,CAAC;AACX,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,IAAI,SAAS,IAAI,EAAE,EAAE;AACnB,gBAAA,GAAG,GAAG,EAAE,GAAG,SAAS;AACpB,gBAAA,OAAO,GAAG,KAAK,CAAA,sCAAA,EAAyC,GAAG,GAAG,GAAG,SAAS;YAC5E;iBAAO,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,IAAI,GAAG,EAAE;AAC7C,gBAAA,GAAG,GAAG,GAAG,GAAG,SAAS;AACrB,gBAAA,OAAO,CAAA,EAAG,KAAK,CAAA,uBAAA,EAA0B,GAAG,IAAI;YAClD;iBAAO,IAAI,SAAS,GAAG,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;AAC9C,gBAAA,GAAG,GAAG,SAAS,GAAG,GAAG;AACrB,gBAAA,OAAO,GAAG,KAAK,CAAA,EAAA,EAAK,GAAG,GAAG,GAAG,OAAO;YACtC;AACA,YAAA,OAAO,EAAE;AACX,QAAA,CAAC,iEAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,gBAAA,OAAO,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7E,QAAA,CAAC,6DAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAAE,gBAAA,OAAO,EAAE;AACjC,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAA0B;YACjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AACjC,gBAAA,OAAO,uEAAuE;YAChF;AAAO,iBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAC1D;YACA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACrD,IAAI,GAAG,GAAa,EAAE;YACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAI;gBAC5B,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE;AAChC,oBAAA,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,CAAC,CAAC,KAAK,CAAA,KAAA,EAAQ,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;gBACrD;gBACA,GAAG,CAAC,IAAI,CAAC,CAAA,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAA,GAAA,EAAM,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;AAC9D,gBAAA,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE;oBAClD,GAAG,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,CAAC,CAAC,OAAO,CAAA,wBAAA,CAA0B,CAAC;gBACnE;AACA,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC,CAAC;YACF,OAAO,CAAA,yBAAA,EAA4B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACrD,QAAA,CAAC,6DAAC;AA6CH,IAAA;IA3CC,aAAa,CAAC,OAAgB,EAAE,KAA2B,EAAA;QACzD,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AACxD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE;AACvC,gBAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB;QACF;QACA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;IACxC;AAEA,IAAA,YAAY,CAAC,QAAuC,EAAA;QAClD,IAAI,GAAG,GAAqC,EAAE;QAC9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAClB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IAC1C;IAEA,sBAAsB,CAAC,KAAa,EAAE,SAAiB,EAAA;AACrD,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1D,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,SAAS;AAC3B,QAAA,IAAI,GAAG,IAAI,EAAE,EAAE;AACb,YAAA,GAAG,GAAG,EAAE,GAAG,GAAG;AACd,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,GAAG,SAAS;QAClC;aAAO,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;AACjC,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG;AACf,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,cAAA,EAAiB,GAAG,IAAI;QACzC;aAAO,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAClC,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG;AACf,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,kBAAA,EAAqB,GAAG,OAAO;QAChD;aAAO,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAClC,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG;AACf,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,gCAAA,EAAmC,GAAG,IAAI;QAC3D;aAAO,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;YAClC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AACvB,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,sCAAA,EAAyC,GAAG,SAAS;QACtE;AACA,QAAA,OAAO,EAAE;IACX;iIA/MW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB/B,y5IA0IA,EAAA,MAAA,EAAA,CAAA,uzFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/HY,OAAO,oFAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMrD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,eAAe,CAAA,CAAE,EAAA,OAAA,EACrB,CAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,CAAC,iBAGlD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y5IAAA,EAAA,MAAA,EAAA,CAAA,uzFAAA,CAAA,EAAA;;;MERpC,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,OAAA,EAAA,CAFhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAEjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB;AAC7B,iBAAA;;;ACND;;AAEG;;;;"}
|
|
@@ -1074,27 +1074,33 @@ class XTreeComponent extends XTreeProperty {
|
|
|
1074
1074
|
setExpandedAll() {
|
|
1075
1075
|
if (this.expandedAll() && this.treeData().length === this.nodes().length)
|
|
1076
1076
|
return;
|
|
1077
|
-
const
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1077
|
+
const updateNodeStates = (nodes) => {
|
|
1078
|
+
nodes.forEach((node) => {
|
|
1079
|
+
node.open = this.expandedAll();
|
|
1080
|
+
node.change && node.change();
|
|
1081
|
+
if (node.children) {
|
|
1082
|
+
updateNodeStates(node.children);
|
|
1083
|
+
}
|
|
1084
1084
|
});
|
|
1085
1085
|
};
|
|
1086
|
-
|
|
1086
|
+
updateNodeStates(this.treeData());
|
|
1087
1087
|
if (this.expandedAll() === false) {
|
|
1088
1088
|
this.nodes.set(XOrderBy(this.treeData().filter((x) => XIsEmpty(x.pid)), this.order().map((x) => x.property), this.order().map((x) => x.order)));
|
|
1089
1089
|
}
|
|
1090
1090
|
else {
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1091
|
+
const allExpandedNodes = [];
|
|
1092
|
+
const traverse = (nodes) => {
|
|
1093
|
+
for (const node of nodes) {
|
|
1094
|
+
allExpandedNodes.push(node);
|
|
1095
|
+
if (node.children && node.children.length > 0) {
|
|
1096
|
+
traverse(node.children);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
};
|
|
1100
|
+
const rootNodes = XOrderBy(this.treeData().filter((x) => XIsEmpty(x.pid)), this.order().map((x) => x.property), this.order().map((x) => x.order));
|
|
1101
|
+
traverse(rootNodes);
|
|
1102
|
+
this.nodes.set(allExpandedNodes);
|
|
1103
|
+
this.virtualNodes.set([...allExpandedNodes]);
|
|
1098
1104
|
}
|
|
1099
1105
|
this.virtualBody()?.checkViewportSize();
|
|
1100
1106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree.service.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTreeComponent } from './tree.component';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty {\r\n tree = inject(XTreeComponent, { optional: true, host: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode()?.change as Function;\r\n this.tree.nodeOpen() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\r\n if (this.tree.activatedNode()) {\r\n if (this.tree.activatedNode()?.id === node.id && !this.tree.allowManyActivated()) return;\r\n }\r\n this.tree.activatedNode.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange?.emit(this.node());\r\n }\r\n\r\n getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node().children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node().children)) return;\r\n let checkedList = this.node().children?.filter((x) => x.checked);\r\n let indeterminateList = this.node().children?.filter((x) => x.indeterminate);\r\n this.node().checked = checkedList?.length === this.node().children?.length;\r\n this.node().indeterminate =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc()) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual()) return;\r\n XSetData<XTreeNode>((this.data() as Function)(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked())) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n // if (!XIsEmpty(keys)) this.hasChecked.set(true);\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n const setChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.open = this.expandedAll();\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n setChildren(this.nodes());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n if (this.virtualNodes().length === 0) {\r\n this.virtualNodes.set([...this.nodes()]);\r\n }\r\n this.nodes.set(this.virtualNodes());\r\n for (let item of this.virtualNodes()) {\r\n this.setVirtualExpandedAll(item, this.expandedAll());\r\n }\r\n }\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree.service.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToBoolean, XToNumber, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, output, model } from '@angular/core';\r\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\r\nimport type { XData, XParentIdentityProperty, XNumber, XBoolean, XIdentityProperty, XAlign } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_TREE_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * @zh_CN Tree 节点排序默认值\r\n * @en_US Tree node order default value\r\n */\r\nexport const X_TREE_ORDER_DEFAULT: XTreeOrder[] = [\r\n { property: 'sort', order: 'asc' },\r\n { property: 'label', order: 'asc' }\r\n];\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ selector: `${XTreePrefix}-property`, template: '' })\r\nexport class XTreeProperty extends XPropertyFunction(X_TREE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeNode>>([]);\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n readonly checkbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n readonly lazy = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>(null);\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = model<any[]>([]);\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n readonly checked = model<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n readonly nodeOpen = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n readonly labelTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 节点的高度, 默认是自适应高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = input<string, XNumber>(this.config?.nodeHeight ?? '', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n readonly allowManyActivated = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 拖动节点\r\n * @en_US Drag node\r\n */\r\n readonly drag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n readonly activatedChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n readonly checkboxChange = output<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n readonly levelCheck = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = input<XAlign>(this.config?.nodeAlignItems ?? 'center');\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n /**\r\n * @zh_CN 滚动区域元素\r\n * @en_US Rolling area element\r\n */\r\n readonly scrollElement = input<HTMLElement>();\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n readonly virtualScrollHeight = input<string, XNumber>(this.config?.virtualScrollHeight ?? '400px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 虚拟滚动高度自适应指定元素\r\n * @en_US virtual rolling height follows the specified object\r\n */\r\n readonly heightAdaption = input<HTMLElement>();\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 34, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 多选功能,当前激活的节点可以是多个\r\n * @en_US Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,activatedId 的值为对象数组\r\n * @en_US When multiple selection is enabled, the value of activatedId is an array of objects\r\n */\r\n readonly objectArray = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当开启多选的时候,点击父节点,包含子节点\r\n * @en_US When selecting multiple options, click on the parent node to include the child nodes\r\n */\r\n readonly includeChildren = input<boolean, XBoolean>(this.config?.includeChildren ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 关键字高亮,针对下拉树搜索\r\n * @en_US Keyword highlighting\r\n */\r\n readonly keywordText = input<string | string[]>();\r\n /**\r\n * @zh_CN 匹配关键字区分大小写,针对下拉树搜索\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能选择叶子节点\r\n * @en_US Only leaf nodes can be selected\r\n */\r\n readonly onlyLeaf = input<boolean, XBoolean>(this.config?.onlyLeaf ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开收起的图标自定义模版\r\n * @en_US Expand the folded icon custom template\r\n */\r\n readonly expandedIcon = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 显示连接线\r\n * @en_US Show line\r\n */\r\n readonly showLine = input<boolean, XBoolean>(this.config?.showLine ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 排序属性\r\n * @en_US Order property\r\n */\r\n readonly order = input<XTreeOrder[]>(this.config?.order ?? X_TREE_ORDER_DEFAULT);\r\n /**\r\n * @zh_CN 节点点击事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeClick = output<XTreeNode>();\r\n /**\r\n * @zh_CN 节点开始拖动事件\r\n * @en_US Node drag started\r\n */\r\n readonly nodeDragStarted = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点结束拖动事件\r\n * @en_US Node drag ended\r\n */\r\n readonly nodeDragEnded = output<XTreeNodeDragEvent>();\r\n /**\r\n * @zh_CN 节点正在拖动事件\r\n * @en_US Node drag moved\r\n */\r\n readonly nodeDragMoved = output<XTreeNodeDragEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数\r\n * @en_US Node height, highest priority\r\n */\r\n height?: string;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 显示拖动指示器\r\n * @en_US Show drag indicator\r\n */\r\n showDragIndicator?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点拖动事件\r\n * @en_US Tree node drag event\r\n */\r\nexport interface XTreeNodeDragEvent {\r\n /**\r\n * @zh_CN 对应 cdk 中的事件\r\n * @en_US drag cdk event\r\n */\r\n event?: CdkDragStart | CdkDragEnd | CdkDragMove<XTreeNode>;\r\n /**\r\n * @zh_CN 拖动的节点\r\n * @en_US drag node\r\n */\r\n from?: XTreeNode;\r\n /**\r\n * @zh_CN 要拖动到的位置对应的节点\r\n * @en_US Node corresponding to the position to drag\r\n */\r\n to?: XTreeNode;\r\n /**\r\n * @zh_CN 对应节点的前面还是后面\r\n * @en_US The front or back of the corresponding node\r\n */\r\n position?: -1 | 0 | 1;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ selector: `${XTreeNodePrefix}-property`, template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly node = input<XTreeNode>({});\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n readonly level = model<number | undefined>(0);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly nodeHeight = model<string>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeNowrap = model<boolean>(false);\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly nodeAlignItems = model<XAlign>('center');\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n readonly virtualScroll = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN id\r\n * @en_US Id\r\n */\r\n readonly id = model<any>();\r\n /**\r\n * @zh_CN pid\r\n * @en_US pId\r\n */\r\n readonly pid = model<any>();\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US A leaf node\r\n */\r\n readonly leaf = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点的高度\r\n * @en_US The height of the node\r\n */\r\n readonly height = model<string>('');\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly alignItems = model<XAlign>();\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n readonly loading = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n readonly open = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n readonly checked = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n readonly indeterminate = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点名称\r\n * @en_US The name of the node\r\n */\r\n readonly label = model<string | undefined>('');\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n readonly nowrap = model<boolean | undefined>(false);\r\n /**\r\n * @zh_CN 节点展开收起事件\r\n * @en_US Node expansion pack up\r\n */\r\n readonly toggle = output<XTreeNode>();\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n readonly actions = input<XTreeAction[]>([]);\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点排序属性\r\n * @en_US Tree node order property\r\n */\r\nexport interface XTreeOrder {\r\n /**\r\n * @zh_CN treenode 排序属性\r\n * @en_US treenode order property\r\n */\r\n property: string;\r\n /**\r\n * @zh_CN 排序方式\r\n * @en_US order type\r\n */\r\n order: XTreeOrderType;\r\n}\r\n\r\nexport type XTreeOrderType = 'asc' | 'desc';\r\n","import { Injectable } from '@angular/core';\r\nimport { XIsEmpty, XRemove } from '@ng-nest/ui/core';\r\nimport { XTreeNode } from './tree.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTreeService {\r\n getChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n getParents(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gParent = (nd: XTreeNode) => {\r\n if (!nd.pid) return;\r\n const parent = data.find((x) => x.id === nd.pid);\r\n if (!parent) return;\r\n res.push(parent);\r\n gParent(parent);\r\n };\r\n gParent(node);\r\n\r\n return res;\r\n }\r\n\r\n getOpenChildren(data: XTreeNode[], node: XTreeNode) {\r\n const res: XTreeNode[] = [];\r\n const gChildren = (nd: XTreeNode) => {\r\n if (!nd.open) return;\r\n const children = data.filter((x) => x.pid === nd.id);\r\n if (XIsEmpty(children)) return;\r\n for (let child of children) {\r\n res.push(child);\r\n gChildren(child);\r\n }\r\n };\r\n gChildren(node);\r\n\r\n return res;\r\n }\r\n\r\n moveNode(data: XTreeNode[], from: XTreeNode, to: XTreeNode, pos: -1 | 0 | 1) {\r\n if (XIsEmpty(data)) return;\r\n const isAddChildNode = pos === 0;\r\n const formIndex = data.findIndex((x) => x.id === from.id);\r\n const toIndex = data.findIndex((x) => x.id === to.id);\r\n XRemove(data, (x) => x.id === from.id);\r\n if (from.pid === to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n diffLevel = to.level! - from.level!;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n } else if (from.pid !== to.pid) {\r\n let diffLevel = 0;\r\n if (isAddChildNode) {\r\n from.pid = to.id;\r\n diffLevel = to.level! + 1 - from.level!;\r\n from.level = to.level! + 1;\r\n to.open = true;\r\n } else {\r\n from.pid = to.pid;\r\n diffLevel = to.level! - from.level!;\r\n from.level = to.level;\r\n }\r\n const fromChildren = this.getChildren(data, from);\r\n fromChildren.forEach((x) => {\r\n x.level = x.level! + diffLevel;\r\n });\r\n const index = toIndex > formIndex ? toIndex - 1 : toIndex;\r\n data.splice(pos === -1 ? index : index + 1, 0, from);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n computed,\r\n signal,\r\n output\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XBoolean, XComputedStyle, XToCssPx, XIsObjectArray, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { XTreeService } from './tree.service';\r\nimport { DOCUMENT, NgStyle } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTreeComponent } from './tree.component';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n imports: [\r\n NgStyle,\r\n FormsModule,\r\n XIconComponent,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XLinkComponent,\r\n XKeywordDirective\r\n ],\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty {\r\n tree = inject(XTreeComponent, { optional: true, host: true })!;\r\n nodeMouseenter = output<{ event: MouseEvent; node: XTreeNode; ele: ElementRef }>();\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private document = inject(DOCUMENT);\r\n fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n\r\n @HostListener('mouseenter', ['$event']) onMouseenter(event: MouseEvent) {\r\n this.nodeMouseenter.emit({ event: event, node: this.node(), ele: this.elementRef });\r\n }\r\n\r\n @HostListener('mouseleave', ['$event']) onMouseleave(_event: MouseEvent) {\r\n if (!this.tree.dragging()) return;\r\n const hoverTreeNode = this.tree.hoverTreeNode();\r\n hoverTreeNode && hoverTreeNode.change && hoverTreeNode.change();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n showDragIndicator = computed(() => {\r\n return this.tree.dragging() && this.tree.hoverTreeNode()?.id === this.id();\r\n });\r\n\r\n isChildrenLast = computed(() => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === this.pid());\r\n if (!parent || !parent.children) return false;\r\n const index = parent.children.indexOf(this.node());\r\n return index + 1 === parent.children.length;\r\n });\r\n\r\n isParentLast = computed(() => {\r\n let parents = this.treeService.getParents(this.tree.nodes(), this.node());\r\n if (parents.length <= 1) return [];\r\n const res: boolean[] = [];\r\n parents.reduce((pre: XTreeNode, curr: XTreeNode) => {\r\n if (pre === null) return curr;\r\n const index = curr.children?.indexOf(pre)!;\r\n res.push(index + 1 === curr.children?.length!);\r\n return curr;\r\n });\r\n\r\n return res.reverse();\r\n });\r\n\r\n verticalLevel = computed(() => {\r\n if (this.level()! > 0) {\r\n return Array.from({ length: this.level()! }).map((_x, index) => index + 1);\r\n } else {\r\n return [];\r\n }\r\n });\r\n\r\n verticalWidth = computed(() => {\r\n return XToCssPx(this.tree.spacing(), this.fontSize()) / 2;\r\n });\r\n\r\n paddingLeft = computed(() => (this.level()! ? this.level()! : 0) * XToCssPx(this.tree.spacing(), this.fontSize()));\r\n\r\n indicatorWidth = computed(() => {\r\n if (this.tree.dragPosition() === 0) {\r\n return `calc(100% - ${this.paddingLeft() + XToCssPx(this.tree.spacing(), this.fontSize()) + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n }\r\n return `calc(100% - ${this.paddingLeft() + (this.leaf() ? this.fontSize() * 1.5 : 0)}px)`;\r\n });\r\n\r\n indicatorStyle = computed(() => {\r\n if (this.tree.dragPosition() === 1) {\r\n return { bottom: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === -1) {\r\n return { top: `-${0.0625 * this.fontSize()}px` };\r\n } else if (this.tree.dragPosition() === 0) {\r\n return {\r\n bottom: `-${0.0625 * this.fontSize()}px`\r\n };\r\n }\r\n return {};\r\n });\r\n\r\n changed = signal(false);\r\n\r\n activated = computed(() => {\r\n this.changed();\r\n const activatedId = this.tree.activatedId();\r\n if (this.tree.multiple()) {\r\n if (this.tree.objectArray()) {\r\n return XIsObjectArray<XTreeNode[]>(activatedId) && activatedId.map((x: XTreeNode) => x.id).includes(this.id());\r\n } else {\r\n return XIsArray<any[]>(activatedId) && activatedId.includes(this.id());\r\n }\r\n } else {\r\n return activatedId === this.id();\r\n }\r\n });\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n private treeService = inject(XTreeService);\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n const node = this.node();\r\n node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n if (!this.tree.levelCheck()) return;\r\n if (this.checked()) this.setCheckbox();\r\n this.setIndeterminate(this.node());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode()?.change as Function;\r\n this.tree.nodeOpen() && !this.leaf() && this.onToggle(event, node);\r\n const onChange = () => {\r\n change && change();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n };\r\n if (this.tree.onlyLeaf() && !this.leaf()) {\r\n onChange();\r\n return;\r\n }\r\n if (this.tree.multiple()) {\r\n if (!this.tree.activatedId()) this.tree.activatedId.set([]);\r\n const nodes = [node];\r\n if (this.tree.includeChildren()) {\r\n nodes.push(...this.getChildren());\r\n }\r\n if (this.tree.objectArray()) {\r\n const ids = this.tree.activatedId().map((x: XTreeNode) => x.id);\r\n if (ids.includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(ids.indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it)) {\r\n x.push(it);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.tree.activatedId().includes(node.id)) {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n x.splice(this.tree.activatedId().indexOf(it.id), 1);\r\n }\r\n return [...x];\r\n });\r\n } else {\r\n this.tree.activatedId.update((x) => {\r\n for (let it of nodes) {\r\n if (!x.includes(it.id)) {\r\n x.push(it.id);\r\n }\r\n }\r\n return [...x];\r\n });\r\n }\r\n }\r\n } else {\r\n this.tree.activatedId.set(node.id);\r\n }\r\n if (this.tree.activatedNode()) {\r\n if (this.tree.activatedNode()?.id === node.id && !this.tree.allowManyActivated()) return;\r\n }\r\n this.tree.activatedNode.set(node);\r\n this.changed.update((x) => !x);\r\n this.tree.activatedChange.emit(node);\r\n this.tree.nodeClick.emit(node);\r\n onChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange?.emit(this.node());\r\n }\r\n\r\n getVerticalLeft(i: number) {\r\n const spacing = XToCssPx(this.tree.spacing(), this.fontSize());\r\n return (i - 1) * spacing + spacing / 2;\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck()) return;\r\n this.node().indeterminate = this.checked();\r\n this.node().children && this.setChildrenCheckbox(this.checked()!);\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes().find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node());\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getChildren() {\r\n const res: XTreeNode[] = [];\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n res.push(x);\r\n getChildren(x.children as XTreeNode[]);\r\n }\r\n };\r\n getChildren(this.node().children as XTreeNode[]);\r\n\r\n return res;\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node().children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node().children)) return;\r\n let checkedList = this.node().children?.filter((x) => x.checked);\r\n let indeterminateList = this.node().children?.filter((x) => x.indeterminate);\r\n this.node().checked = checkedList?.length === this.node().children?.length;\r\n this.node().indeterminate =\r\n (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n this.toggle.emit(node);\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return `${item.id}-${item.level}`;\r\n }\r\n\r\n trackByAction(_index: number, item: XTreeAction) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (!leaf()) {\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon class=\"x-tree-node-icon\" type=\"fto-chevron-right\"></x-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n class=\"x-tree-node-checkbox\"\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\">{{\r\n action.label\r\n }}</x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n viewChild,\r\n viewChildren,\r\n signal,\r\n computed,\r\n inject,\r\n effect\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport {\r\n XIsEmpty,\r\n XIsFunction,\r\n XIsUndefined,\r\n XIsChange,\r\n XSetData,\r\n XResize,\r\n XRemove,\r\n XResizeObserver,\r\n XComputedStyle,\r\n XToCssPx,\r\n XOrderBy\r\n} from '@ng-nest/ui/core';\r\nimport { debounceTime, map, Observable, Subject } from 'rxjs';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XTreeService } from './tree.service';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent],\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n tree = viewChild('tree', { read: ElementRef<HTMLElement> });\r\n virtualBody = viewChild('virtualBody', { read: CdkVirtualScrollViewport });\r\n dropList = viewChild('dropList', { read: CdkDropList<HTMLElement> });\r\n nodeComponents = viewChildren(XTreeNodeComponent);\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n nodes = signal<XTreeNode[]>([]);\r\n\r\n virtualNodes = signal<XTreeNode[]>([]);\r\n activatedNode = signal<XTreeNode | null>(null);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n treeData = signal<XTreeNode[]>([]);\r\n\r\n dragging = signal(false);\r\n dragPosition = signal<-1 | 0 | 1>(-1);\r\n hoverTreeNode = signal<XTreeNode | null>(null);\r\n hoverTreeEle!: ElementRef;\r\n draggingTreeNode = signal<XTreeNode | null>(null);\r\n\r\n isEmpty = computed(() => XIsEmpty(this.nodes()));\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public treeService: XTreeService\r\n ) {\r\n super();\r\n\r\n effect(() => {\r\n const virtualBody = this.virtualBody();\r\n if (virtualBody) {\r\n virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n heightAdaptionSignal = signal<number>(0);\r\n\r\n isVirtualScrollAdaption = computed(() => {\r\n return !!(this.virtualScroll() && this.heightAdaption());\r\n });\r\n\r\n virtualScrollHeightSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.heightAdaptionSignal();\r\n } else {\r\n return XToCssPx(this.virtualScrollHeight(), this.fontSize());\r\n }\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal();\r\n } else {\r\n return this.minBufferPx();\r\n }\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n if (this.isVirtualScrollAdaption()) {\r\n return this.virtualScrollHeightSignal() * 1.2;\r\n } else {\r\n return this.maxBufferPx();\r\n }\r\n });\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, checked, manual, expanded } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(expanded) && this.setChangeExpanded();\r\n XIsChange(checked) && this.setCheckedKeys(this.checked());\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isVirtualScrollAdaption()) {\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n XResize(this.heightAdaption()!)\r\n .pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.heightAdaptionSignal.set(this.heightAdaption()!.clientHeight!);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n this.setActivatedNode(this.treeData());\r\n this.setScrollTop();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data() === 'undefined') return;\r\n this.dataIsFunc.set(false);\r\n if (XIsFunction(this.data())) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n } else {\r\n XSetData<XTreeNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n }\r\n\r\n cdkDragStarted(event: CdkDragStart) {\r\n this.dragging.set(true);\r\n this.draggingTreeNode.set(event.source.data);\r\n if (event.source.data.open) {\r\n this.onToggle(event.event, event.source.data);\r\n }\r\n this.nodeDragStarted.emit({ event, from: this.draggingTreeNode()! });\r\n }\r\n\r\n cdkDragEnded(event: CdkDragEnd) {\r\n this.dragging.set(false);\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n if (hoverTreeNode.id !== event.source.data.id) {\r\n this.insertNode(event.source.data, hoverTreeNode, this.dragPosition());\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragEnded.emit({\r\n event,\r\n from: event.source.data,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n }\r\n\r\n insertNode(dragNode: XTreeNode, hoverNode: XTreeNode, dragPosition: -1 | 0 | 1) {\r\n let parent = this.nodes().find((x) => x.id === dragNode.pid);\r\n this.treeService.moveNode(this.treeData(), dragNode, hoverNode, dragPosition);\r\n this.setDataChange(this.treeData(), true, false, true, parent);\r\n }\r\n\r\n cdkDragMoved(event: CdkDragMove<XTreeNode>) {\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (!this.dragging() || !hoverTreeNode) return;\r\n const y = event.pointerPosition.y;\r\n if (event.source.data.id === hoverTreeNode.id) return;\r\n const target = this.hoverTreeEle.nativeElement as HTMLElement;\r\n const { top, height } = target.getBoundingClientRect();\r\n const des = Math.max(height * 0.5, 2);\r\n if (y > top && y < top + des - 2) {\r\n this.dragPosition.set(-1);\r\n } else if (y > top + des + 2 && y < top + height) {\r\n this.dragPosition.set(1);\r\n } else if (y >= top + des - 2 && y <= top + des + 2) {\r\n this.dragPosition.set(0);\r\n }\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n this.nodeDragMoved.emit({\r\n event,\r\n from: this.draggingTreeNode()!,\r\n to: hoverTreeNode,\r\n position: this.dragPosition()\r\n });\r\n }\r\n\r\n predicate(_drag: CdkDrag<XTreeNode>, _drop: CdkDropList<XTreeNode>) {\r\n return true;\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc()) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual()) return;\r\n XSetData<XTreeNode>((this.data() as Function)(), this.unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(\r\n value: XTreeNode[],\r\n regetChildren = false,\r\n init = true,\r\n parentOpen = true,\r\n lazyParant?: XTreeNode,\r\n out = false\r\n ) {\r\n if (XIsEmpty(this.checked())) this.checked.set([]);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n if (init) {\r\n const open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n node.level = level;\r\n node.open = out ? open : open || node.open;\r\n node.checked = this.checked().includes(node.id) || node.checked;\r\n node.childrenLoaded = node.open;\r\n }\r\n if (XIsUndefined(node.children) || regetChildren) {\r\n node.children = XOrderBy(\r\n value.filter((y) => y.pid === node.id),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n if (this.levelCheck() && node.children && node.checked) {\r\n for (let nd of node.children) {\r\n nd.checked = true;\r\n this.checked.update((x) => {\r\n x.push(nd.id);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n if ((!this.lazy() && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {\r\n node.leaf = (node.children?.length as number) === 0;\r\n }\r\n if (!node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData.set(value);\r\n this.nodes.set(\r\n XOrderBy(\r\n value.filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n ).map((x) => getChildren(x, 0))\r\n );\r\n if (parentOpen) {\r\n for (let item of value) {\r\n if (!item.leaf && item.open) {\r\n this.setParentOpen(value, item);\r\n }\r\n }\r\n }\r\n this.setExpanded();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n nodeMouseenter($event: { event: MouseEvent; node: XTreeNode; ele: ElementRef }) {\r\n const { node, ele } = $event;\r\n if (!this.dragging()) return;\r\n let before = this.hoverTreeNode();\r\n this.hoverTreeNode.set(node);\r\n this.hoverTreeEle = ele;\r\n const hoverTreeNode = this.hoverTreeNode();\r\n if (hoverTreeNode) {\r\n hoverTreeNode.change && hoverTreeNode.change();\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n\r\n if (!node.leaf && !node.open) {\r\n let from = this.nodes().indexOf(this.draggingTreeNode()!);\r\n let to = this.nodes().indexOf(node);\r\n if (to - from !== -1) {\r\n this.onToggle(null!, node);\r\n }\r\n }\r\n }\r\n\r\n setScrollTop() {\r\n const scrollElement = this.scrollElement();\r\n if (!scrollElement || !this.activatedNode()) return;\r\n const inx = this.nodes().indexOf(this.activatedNode()!);\r\n let com = this.nodeComponents().find((_, index) => index === inx);\r\n if (!com) return;\r\n let ele = com.elementRef.nativeElement as HTMLElement;\r\n let scrollEle = scrollElement;\r\n let min = scrollEle.scrollTop;\r\n let max = scrollEle.scrollTop + scrollEle.clientHeight;\r\n if (ele.offsetTop + ele.clientHeight > max) {\r\n let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;\r\n scrollEle.scrollTop = scrollTop;\r\n }\r\n if (ele.offsetTop < min) {\r\n scrollEle.scrollTop = ele.offsetTop;\r\n }\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes());\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n // if (!XIsEmpty(keys)) this.hasChecked.set(true);\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.includes(x.id);\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes(), XIsEmpty(keys));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setExpandedAll() {\r\n if (this.expandedAll() && this.treeData().length === this.nodes().length) return;\r\n\r\n const updateNodeStates = (nodes: XTreeNode[]) => {\r\n nodes.forEach((node) => {\r\n node.open = this.expandedAll();\r\n node.change && node.change();\r\n if (node.children) {\r\n updateNodeStates(node.children);\r\n }\r\n });\r\n };\r\n updateNodeStates(this.treeData());\r\n\r\n if (this.expandedAll() === false) {\r\n this.nodes.set(\r\n XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n )\r\n );\r\n } else {\r\n const allExpandedNodes: XTreeNode[] = [];\r\n const traverse = (nodes: XTreeNode[]) => {\r\n for (const node of nodes) {\r\n allExpandedNodes.push(node);\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n };\r\n\r\n const rootNodes = XOrderBy(\r\n this.treeData().filter((x) => XIsEmpty(x.pid)),\r\n this.order().map((x) => x.property),\r\n this.order().map((x) => x.order)\r\n );\r\n\r\n traverse(rootNodes);\r\n this.nodes.set(allExpandedNodes);\r\n this.virtualNodes.set([...allExpandedNodes]);\r\n }\r\n\r\n this.virtualBody()?.checkViewportSize();\r\n }\r\n\r\n setExpanded() {\r\n for (let i = 0; i < this.nodes().length; i++) {\r\n let item = this.nodes()[i];\r\n if (item.open && item.children && item.children.length > 0) {\r\n let index = this.nodes().indexOf(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...(item.children as XTreeNode[]));\r\n return [...x];\r\n });\r\n }\r\n item.change && item.change();\r\n }\r\n }\r\n\r\n setChangeExpanded() {\r\n this.setDataChange(this.treeData(), true, true, false, undefined, true);\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes().indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes().indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, 0, ...addNodes);\r\n return [...x];\r\n });\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n if (XIsEmpty(nd.children)) return;\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.update((x) => {\r\n x.splice(index + 1, delCount);\r\n return [...x];\r\n });\r\n }\r\n\r\n this.addOrRemoveExpanded(node);\r\n this.virtualBody()?.checkViewportSize();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addOrRemoveExpanded(node: XTreeNode) {\r\n if (node.open) {\r\n if (!this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.push(node.id);\r\n return [...x];\r\n });\r\n }\r\n } else {\r\n if (this.expanded().includes(node.id)) {\r\n this.expanded.update((x) => {\r\n x.splice(x.indexOf(node.id), 1);\r\n return [...x];\r\n });\r\n }\r\n }\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[], parentOpen = true, dataChange = true) {\r\n if (XIsEmpty(this.activatedId()) && this.multiple()) {\r\n this.activatedId.set([]);\r\n }\r\n let before = this.activatedNode();\r\n if (this.multiple()) {\r\n if (this.activatedId().length > 0) {\r\n let ids = this.objectArray() ? this.activatedId().map((x: XTreeNode) => x.id) : this.activatedId();\r\n for (let i = 0; i < ids.length; i++) {\r\n let node = nodes.find((x) => x.id === ids[i]) as XTreeNode;\r\n if (node) {\r\n parentOpen && this.setParentOpen(nodes, node);\r\n if (i === ids.length - 1) {\r\n this.activatedNode.set(node);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n let activatedId = this.activatedId();\r\n this.activatedNode.set(nodes.find((x) => x.id === activatedId) as XTreeNode);\r\n if (this.activatedNode()) {\r\n parentOpen && this.setParentOpen(nodes, this.activatedNode()!);\r\n this.activatedChange.emit(this.activatedNode()!);\r\n }\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n if (!XIsEmpty(nodes) && dataChange) {\r\n this.setDataChange(nodes, false, true, parentOpen);\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n if (!this.expanded().includes(parent.id)) {\r\n this.expanded.update((x) => [...x, parent.id]);\r\n }\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event | null, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.lazy() && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data() as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n this.treeData.set([...this.treeData(), ...x]);\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const _addNode = () => {\r\n if (parent) {\r\n node.level = parent.level! + 1;\r\n node.pid = parent.id;\r\n node.leaf = true;\r\n parent.leaf = false;\r\n parent.open = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n node.level = 0;\r\n node.leaf = true;\r\n this.treeData.set([...this.treeData(), node]);\r\n this.setParentOpen(this.treeData(), node);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n node.change && node.change();\r\n }\r\n };\r\n if (this.lazy() && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n setActivatedId(node: XTreeNode) {\r\n if (this.multiple()) {\r\n if (this.objectArray()) {\r\n this.activatedId.set([node]);\r\n } else {\r\n this.activatedId.set([node.id]);\r\n }\r\n } else {\r\n this.activatedId.set(node.id);\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData().find((x) => x.id === node.pid)!;\r\n const removeChildren = (nd: XTreeNode) => {\r\n XRemove(this.treeData(), (x) => x.id === nd.id);\r\n if (nd.children) {\r\n for (let item of nd.children) {\r\n removeChildren(item);\r\n }\r\n }\r\n };\r\n removeChildren(node);\r\n\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n const childIndex = parent.children.findIndex((x) => x.id === node.id);\r\n if (childIndex > -1) {\r\n parent.children.splice(childIndex, 1);\r\n }\r\n parent.leaf = parent.children.length === 0;\r\n }\r\n this.setDataChange(this.treeData(), true, false, false);\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n this.setDataChange(this.treeData(), true, false, false);\r\n this.setActivatedId(node);\r\n this.setActivatedNode(this.nodes(), true, false);\r\n\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf()\">\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"virtualScrollHeightSignal()\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes(); templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled!\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf!\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems!\"\r\n [(loading)]=\"node.loading!\"\r\n [(level)]=\"node.level!\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked!\"\r\n [(indeterminate)]=\"node.indeterminate!\"\r\n [(label)]=\"node.label!\"\r\n [(nowrap)]=\"node.nowrap!\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag()\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty()\"\r\n [cdkDropListData]=\"nodes()\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes(); track node.id + '' + $index) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [nodeHeight]=\"nodeHeight()\"\r\n [nodeNowrap]=\"nodeNowrap()\"\r\n [nodeAlignItems]=\"nodeAlignItems()\"\r\n [actions]=\"actions()\"\r\n [(disabled)]=\"node.disabled\"\r\n [(id)]=\"node.id\"\r\n [(pid)]=\"node.pid\"\r\n [(leaf)]=\"node.leaf\"\r\n [(height)]=\"node.height!\"\r\n [(alignItems)]=\"node.alignItems\"\r\n [(loading)]=\"node.loading\"\r\n [(level)]=\"node.level\"\r\n [(open)]=\"node.open\"\r\n [(checked)]=\"node.checked\"\r\n [(indeterminate)]=\"node.indeterminate\"\r\n [(label)]=\"node.label\"\r\n [(nowrap)]=\"node.nowrap\"\r\n (toggle)=\"onToggle(null, $event)\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- 提前加载loading的图标-->\r\n@if (lazy()) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\n\r\n@NgModule({\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [XTreeComponent, XTreeNodeComponent]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.XTreeService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-nest/ui",
|
|
3
|
-
"version": "20.2.
|
|
3
|
+
"version": "20.2.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://www.ngnest.com",
|
|
6
6
|
"author": "ng-nest",
|
|
@@ -69,14 +69,14 @@
|
|
|
69
69
|
"types": "./badge/index.d.ts",
|
|
70
70
|
"default": "./fesm2022/ng-nest-ui-badge.mjs"
|
|
71
71
|
},
|
|
72
|
-
"./bubble": {
|
|
73
|
-
"types": "./bubble/index.d.ts",
|
|
74
|
-
"default": "./fesm2022/ng-nest-ui-bubble.mjs"
|
|
75
|
-
},
|
|
76
72
|
"./base-form": {
|
|
77
73
|
"types": "./base-form/index.d.ts",
|
|
78
74
|
"default": "./fesm2022/ng-nest-ui-base-form.mjs"
|
|
79
75
|
},
|
|
76
|
+
"./bubble": {
|
|
77
|
+
"types": "./bubble/index.d.ts",
|
|
78
|
+
"default": "./fesm2022/ng-nest-ui-bubble.mjs"
|
|
79
|
+
},
|
|
80
80
|
"./button": {
|
|
81
81
|
"types": "./button/index.d.ts",
|
|
82
82
|
"default": "./fesm2022/ng-nest-ui-button.mjs"
|
|
@@ -93,14 +93,14 @@
|
|
|
93
93
|
"types": "./carousel/index.d.ts",
|
|
94
94
|
"default": "./fesm2022/ng-nest-ui-carousel.mjs"
|
|
95
95
|
},
|
|
96
|
-
"./cascade": {
|
|
97
|
-
"types": "./cascade/index.d.ts",
|
|
98
|
-
"default": "./fesm2022/ng-nest-ui-cascade.mjs"
|
|
99
|
-
},
|
|
100
96
|
"./checkbox": {
|
|
101
97
|
"types": "./checkbox/index.d.ts",
|
|
102
98
|
"default": "./fesm2022/ng-nest-ui-checkbox.mjs"
|
|
103
99
|
},
|
|
100
|
+
"./cascade": {
|
|
101
|
+
"types": "./cascade/index.d.ts",
|
|
102
|
+
"default": "./fesm2022/ng-nest-ui-cascade.mjs"
|
|
103
|
+
},
|
|
104
104
|
"./collapse": {
|
|
105
105
|
"types": "./collapse/index.d.ts",
|
|
106
106
|
"default": "./fesm2022/ng-nest-ui-collapse.mjs"
|
|
@@ -165,14 +165,14 @@
|
|
|
165
165
|
"types": "./empty/index.d.ts",
|
|
166
166
|
"default": "./fesm2022/ng-nest-ui-empty.mjs"
|
|
167
167
|
},
|
|
168
|
-
"./examples": {
|
|
169
|
-
"types": "./examples/index.d.ts",
|
|
170
|
-
"default": "./fesm2022/ng-nest-ui-examples.mjs"
|
|
171
|
-
},
|
|
172
168
|
"./find": {
|
|
173
169
|
"types": "./find/index.d.ts",
|
|
174
170
|
"default": "./fesm2022/ng-nest-ui-find.mjs"
|
|
175
171
|
},
|
|
172
|
+
"./examples": {
|
|
173
|
+
"types": "./examples/index.d.ts",
|
|
174
|
+
"default": "./fesm2022/ng-nest-ui-examples.mjs"
|
|
175
|
+
},
|
|
176
176
|
"./form": {
|
|
177
177
|
"types": "./form/index.d.ts",
|
|
178
178
|
"default": "./fesm2022/ng-nest-ui-form.mjs"
|
package/progress/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { TemplateRef } from '@angular/core';
|
|
2
3
|
import * as _ng_nest_ui_core from '@ng-nest/ui/core';
|
|
3
4
|
import { XNumber, XBoolean } from '@ng-nest/ui/core';
|
|
4
5
|
|
|
@@ -35,6 +36,11 @@ declare class XProgressProperty extends XProgressProperty_base {
|
|
|
35
36
|
* @en_US Status
|
|
36
37
|
*/
|
|
37
38
|
readonly status: _angular_core.InputSignal<XProgressStatus>;
|
|
39
|
+
/**
|
|
40
|
+
* @zh_CN 自定义显示文字/图标
|
|
41
|
+
* @en_US Custom display info/icon
|
|
42
|
+
*/
|
|
43
|
+
readonly infoTpl: _angular_core.InputSignal<TemplateRef<any> | undefined>;
|
|
38
44
|
/**
|
|
39
45
|
* @zh_CN 是否显示百分比文本信息
|
|
40
46
|
* @en_US Whether to display percentage text
|
|
@@ -106,7 +112,7 @@ declare class XProgressProperty extends XProgressProperty_base {
|
|
|
106
112
|
*/
|
|
107
113
|
readonly subsection: _angular_core.InputSignalWithTransform<boolean, XBoolean>;
|
|
108
114
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XProgressProperty, never>;
|
|
109
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XProgressProperty, "x-progress-property", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "infoWidth": { "alias": "infoWidth"; "required": false; "isSignal": true; }; "inside": { "alias": "inside"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "railColor": { "alias": "railColor"; "required": false; "isSignal": true; }; "gradient": { "alias": "gradient"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "stepWidth": { "alias": "stepWidth"; "required": false; "isSignal": true; }; "stepFlex": { "alias": "stepFlex"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "notchAngle": { "alias": "notchAngle"; "required": false; "isSignal": true; }; "subsection": { "alias": "subsection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
115
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XProgressProperty, "x-progress-property", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "percent": { "alias": "percent"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "infoTpl": { "alias": "infoTpl"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "infoWidth": { "alias": "infoWidth"; "required": false; "isSignal": true; }; "inside": { "alias": "inside"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "railColor": { "alias": "railColor"; "required": false; "isSignal": true; }; "gradient": { "alias": "gradient"; "required": false; "isSignal": true; }; "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "stepWidth": { "alias": "stepWidth"; "required": false; "isSignal": true; }; "stepFlex": { "alias": "stepFlex"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "notchAngle": { "alias": "notchAngle"; "required": false; "isSignal": true; }; "subsection": { "alias": "subsection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
110
116
|
}
|
|
111
117
|
/**
|
|
112
118
|
* @zh_CN 进度条类型
|