@smartbit4all/ng-client 7.3.47 → 7.3.48
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.
|
@@ -19631,11 +19631,11 @@ class SmartTreeComponent {
|
|
|
19631
19631
|
return `${cssClass}-${plusProperty}`;
|
|
19632
19632
|
}
|
|
19633
19633
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19634
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartTreeComponent, isStandalone: true, selector: "smart-tree", inputs: { treeStyle: { classPropertyName: "treeStyle", publicName: "treeStyle", isSignal: true, isRequired: false, transformFunction: null }, treeService: { classPropertyName: "treeService", publicName: "treeService", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\n @if (uiActionModels.length) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"executor\"\n ></smart-ui-action-toolbar>\n }\n @if (treeData) {\n <mat-tree\n #tree\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n [trackBy]=\"trackByIdentifier\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n fontSet=\"material-symbols-outlined\"\n class=\"mat-icon-rtl-mirror\"\n (click)=\"onOpenNode($event, node)\"\n >\n @if (hasChild(node.level, node)) {\n <div>\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n }\n </mat-icon>\n </button>\n @if (node.tooltip) {\n <smart-icon\n [icon]=\"node.icon\"\n [smartTooltip]=\"createTooltip(node.tooltip)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n ></smart-icon>\n } @else {\n <smart-icon [icon]=\"node.icon\"></smart-icon>\n }\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n @let captionTooltipText = getCaptionTooltipText(node);\n @if (captionTooltipText) {\n <div\n class=\"sm-tree-row-caption\"\n [smartTooltip]=\"createTooltip(captionTooltipText)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n >\n {{ node.caption }}\n </div>\n } @else {\n <div class=\"sm-tree-row-caption\">{{ node.caption }}</div>\n }\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n @if (node.button) {\n <div class=\"sm-tree-node-button\">\n @switch (node.button.type) {\n @case (smartTreeNodeButtonType.ICON) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-icon-button>\n <smart-icon\n title=\"{{ node.button.icon }}\"\n [icon]=\"node.button.icon\"\n ></smart-icon>\n </button>\n }\n @case (smartTreeNodeButtonType.MENU) {\n <div>\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n @for (button of node.button.menuItemButtons; track button.code ?? $index) {\n <button\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n @if (button.icon) {\n <smart-icon [icon]=\"button.icon\"></smart-icon>\n }\n {{ button.label }}\n </button>\n }\n </mat-menu>\n </div>\n }\n @case (smartTreeNodeButtonType.NORMAL) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-raised-button>\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.icon }}\n </button>\n }\n }\n </div>\n }\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n }\n @if (!treeData) {\n <div class=\"tree-loading\">\n <mat-spinner diameter=\"24\" color=\"primary\"></mat-spinner>\n </div>\n }\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}.sm-tree-node-selected{background-color:var(--tree-active-background, var(--accent-color, #20b6a8));color:var(--tree-active-color, #ffffff)}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}.sm-tree-row.sm-tree-branch-new,.sm-tree-row.sm-tree-branch-new *{color:var(--success-color, #16a34a)}.sm-tree-row.sm-tree-branch-new .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-modified,.sm-tree-row.sm-tree-branch-modified *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-modified .sm-tree-row-caption{font-weight:600}.sm-tree-row.sm-tree-branch-deleted,.sm-tree-row.sm-tree-branch-deleted *{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-branch-deleted .sm-tree-row-caption{text-decoration:line-through}.sm-tree-row.sm-tree-branch-contains-change,.sm-tree-row.sm-tree-branch-contains-change *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-foreign,.sm-tree-row.sm-tree-branch-own-other-view-context{border-left:3px solid;padding-left:6px}.sm-tree-row.sm-tree-branch-foreign{border-left-color:var(--warning-color, #d97706)}.sm-tree-row.sm-tree-branch-own-other-view-context{border-left-color:var(--info-color, #64748b)}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-caption,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-shortDescription,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-shortDescription{display:none}.sm-tree-row.sm-tree-record-unavailable,.sm-tree-row.sm-tree-record-unavailable *,.sm-tree-node:not(.sm-tree-node-selected):has(>.sm-tree-row.sm-tree-record-unavailable)>smart-icon{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-record-unavailable .sm-tree-row-caption{font-style:italic}::ng-deep .sm-tree-tooltip .mdc-tooltip__surface{white-space:pre-line}.sm-tree-node-selected .sm-tree-row,.sm-tree-node-selected .sm-tree-row-caption,.sm-tree-node-selected .sm-tree-row-shortDescription{color:inherit}.tree-loading{display:flex;justify-content:center;align-items:center;min-height:200px;width:100%}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"], outputs: ["actionFired"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], outputs: ["activation", "expandedChange"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip", "smartTooltipClass"] }] }); }
|
|
19634
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: SmartTreeComponent, isStandalone: true, selector: "smart-tree", inputs: { treeStyle: { classPropertyName: "treeStyle", publicName: "treeStyle", isSignal: true, isRequired: false, transformFunction: null }, treeService: { classPropertyName: "treeService", publicName: "treeService", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.data-testid": "this.testId" } }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\n @if (uiActionModels.length) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"executor\"\n ></smart-ui-action-toolbar>\n }\n @if (treeData) {\n <mat-tree\n #tree\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n [trackBy]=\"trackByIdentifier\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.caption\">\n <mat-icon\n fontSet=\"material-symbols-outlined\"\n class=\"mat-icon-rtl-mirror\"\n (click)=\"onOpenNode($event, node)\"\n >\n @if (hasChild(node.level, node)) {\n <div>\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n }\n </mat-icon>\n </button>\n @if (node.tooltip) {\n <smart-icon\n [icon]=\"node.icon\"\n [smartTooltip]=\"createTooltip(node.tooltip)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n ></smart-icon>\n } @else {\n <smart-icon [icon]=\"node.icon\"></smart-icon>\n }\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n @let captionTooltipText = getCaptionTooltipText(node);\n @if (captionTooltipText) {\n <div\n class=\"sm-tree-row-caption\"\n [smartTooltip]=\"createTooltip(captionTooltipText)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n >\n {{ node.caption }}\n </div>\n } @else {\n <div class=\"sm-tree-row-caption\">{{ node.caption }}</div>\n }\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n @if (node.button) {\n <div class=\"sm-tree-node-button\">\n @switch (node.button.type) {\n @case (smartTreeNodeButtonType.ICON) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-icon-button>\n <smart-icon\n title=\"{{ node.button.icon }}\"\n [icon]=\"node.button.icon\"\n ></smart-icon>\n </button>\n }\n @case (smartTreeNodeButtonType.MENU) {\n <div>\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n @for (button of node.button.menuItemButtons; track button.code ?? $index) {\n <button\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n @if (button.icon) {\n <smart-icon [icon]=\"button.icon\"></smart-icon>\n }\n {{ button.label }}\n </button>\n }\n </mat-menu>\n </div>\n }\n @case (smartTreeNodeButtonType.NORMAL) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-raised-button>\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.icon }}\n </button>\n }\n }\n </div>\n }\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n }\n @if (!treeData) {\n <div class=\"tree-loading\">\n <mat-spinner diameter=\"24\" color=\"primary\"></mat-spinner>\n </div>\n }\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}.sm-tree-node-selected{background-color:var(--tree-active-background, var(--accent-color, #20b6a8));color:var(--tree-active-color, #ffffff)}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}.sm-tree-row.sm-tree-branch-new,.sm-tree-row.sm-tree-branch-new *{color:var(--success-color, #16a34a)}.sm-tree-row.sm-tree-branch-new .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-modified,.sm-tree-row.sm-tree-branch-modified *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-modified .sm-tree-row-caption{font-weight:600}.sm-tree-row.sm-tree-branch-deleted,.sm-tree-row.sm-tree-branch-deleted *{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-branch-deleted .sm-tree-row-caption{text-decoration:line-through}.sm-tree-row.sm-tree-branch-contains-change,.sm-tree-row.sm-tree-branch-contains-change *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-foreign,.sm-tree-row.sm-tree-branch-own-other-view-context{border-left:3px solid;padding-left:6px}.sm-tree-row.sm-tree-branch-foreign{border-left-color:var(--warning-color, #d97706)}.sm-tree-row.sm-tree-branch-own-other-view-context{border-left-color:var(--info-color, #64748b)}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-caption,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-shortDescription,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-shortDescription{display:none}.sm-tree-row.sm-tree-record-unavailable,.sm-tree-row.sm-tree-record-unavailable *,.sm-tree-node:not(.sm-tree-node-selected):has(>.sm-tree-row.sm-tree-record-unavailable)>smart-icon{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-record-unavailable .sm-tree-row-caption{font-style:italic}::ng-deep .sm-tree-tooltip .mdc-tooltip__surface{white-space:pre-line}.sm-tree-node-selected .sm-tree-row,.sm-tree-node-selected .sm-tree-row-caption,.sm-tree-node-selected .sm-tree-row-shortDescription{color:inherit}.tree-loading{display:flex;justify-content:center;align-items:center;min-height:200px;width:100%}\n"], dependencies: [{ kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "executor", "widgetId", "nodeId", "actionParams", "scrollOnWrap", "toolbarPropertes"], outputs: ["actionFired"] }, { kind: "component", type: MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], outputs: ["activation", "expandedChange"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip", "smartTooltipClass"] }] }); }
|
|
19635
19635
|
}
|
|
19636
19636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmartTreeComponent, decorators: [{
|
|
19637
19637
|
type: Component,
|
|
19638
|
-
args: [{ selector: 'smart-tree', imports: [UiActionToolbarComponent, MatTree, MatTreeNodeDef, MatNestedTreeNode, MatTreeNodeToggle, NgClass, NgStyle, MatIconButton, MatIcon, SmartIconComponent, MatButton, MatMenuTrigger, MatMenu, MatMenuItem, MatTreeNodeOutlet, MatProgressSpinner, SmartTooltipDirective], template: "<div class=\"smartTreeContainer\">\n @if (uiActionModels.length) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"executor\"\n ></smart-ui-action-toolbar>\n }\n @if (treeData) {\n <mat-tree\n #tree\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n [trackBy]=\"trackByIdentifier\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.
|
|
19638
|
+
args: [{ selector: 'smart-tree', imports: [UiActionToolbarComponent, MatTree, MatTreeNodeDef, MatNestedTreeNode, MatTreeNodeToggle, NgClass, NgStyle, MatIconButton, MatIcon, SmartIconComponent, MatButton, MatMenuTrigger, MatMenu, MatMenuItem, MatTreeNodeOutlet, MatProgressSpinner, SmartTooltipDirective], template: "<div class=\"smartTreeContainer\">\n @if (uiActionModels.length) {\n <smart-ui-action-toolbar\n [uiActionModels]=\"uiActionModels\"\n [executor]=\"executor\"\n ></smart-ui-action-toolbar>\n }\n @if (treeData) {\n <mat-tree\n #tree\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n [trackBy]=\"trackByIdentifier\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.caption\">\n <mat-icon\n fontSet=\"material-symbols-outlined\"\n class=\"mat-icon-rtl-mirror\"\n (click)=\"onOpenNode($event, node)\"\n >\n @if (hasChild(node.level, node)) {\n <div>\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n }\n </mat-icon>\n </button>\n @if (node.tooltip) {\n <smart-icon\n [icon]=\"node.icon\"\n [smartTooltip]=\"createTooltip(node.tooltip)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n ></smart-icon>\n } @else {\n <smart-icon [icon]=\"node.icon\"></smart-icon>\n }\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n @let captionTooltipText = getCaptionTooltipText(node);\n @if (captionTooltipText) {\n <div\n class=\"sm-tree-row-caption\"\n [smartTooltip]=\"createTooltip(captionTooltipText)\"\n smartTooltipClass=\"sm-tree-tooltip\"\n >\n {{ node.caption }}\n </div>\n } @else {\n <div class=\"sm-tree-row-caption\">{{ node.caption }}</div>\n }\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n @if (node.button) {\n <div class=\"sm-tree-node-button\">\n @switch (node.button.type) {\n @case (smartTreeNodeButtonType.ICON) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-icon-button>\n <smart-icon\n title=\"{{ node.button.icon }}\"\n [icon]=\"node.button.icon\"\n ></smart-icon>\n </button>\n }\n @case (smartTreeNodeButtonType.MENU) {\n <div>\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n @for (button of node.button.menuItemButtons; track button.code ?? $index) {\n <button\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n @if (button.icon) {\n <smart-icon [icon]=\"button.icon\"></smart-icon>\n }\n {{ button.label }}\n </button>\n }\n </mat-menu>\n </div>\n }\n @case (smartTreeNodeButtonType.NORMAL) {\n <button (click)=\"customButtonClicked($event, node.button)\" mat-raised-button>\n @if (node.button.icon) {\n <smart-icon [icon]=\"node.button.icon\"></smart-icon>\n }\n {{ node.button.icon }}\n </button>\n }\n }\n </div>\n }\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n }\n @if (!treeData) {\n <div class=\"tree-loading\">\n <mat-spinner diameter=\"24\" color=\"primary\"></mat-spinner>\n </div>\n }\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}.sm-tree-node-selected{background-color:var(--tree-active-background, var(--accent-color, #20b6a8));color:var(--tree-active-color, #ffffff)}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}.sm-tree-row.sm-tree-branch-new,.sm-tree-row.sm-tree-branch-new *{color:var(--success-color, #16a34a)}.sm-tree-row.sm-tree-branch-new .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-modified,.sm-tree-row.sm-tree-branch-modified *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-modified .sm-tree-row-caption{font-weight:600}.sm-tree-row.sm-tree-branch-deleted,.sm-tree-row.sm-tree-branch-deleted *{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-branch-deleted .sm-tree-row-caption{text-decoration:line-through}.sm-tree-row.sm-tree-branch-contains-change,.sm-tree-row.sm-tree-branch-contains-change *{color:var(--accent-color, #20b6a8)}.sm-tree-row.sm-tree-branch-foreign,.sm-tree-row.sm-tree-branch-own-other-view-context{border-left:3px solid;padding-left:6px}.sm-tree-row.sm-tree-branch-foreign{border-left-color:var(--warning-color, #d97706)}.sm-tree-row.sm-tree-branch-own-other-view-context{border-left-color:var(--info-color, #64748b)}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-caption,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-caption{font-style:italic}.sm-tree-row.sm-tree-branch-foreign .sm-tree-row-shortDescription,.sm-tree-row.sm-tree-branch-own-other-view-context .sm-tree-row-shortDescription{display:none}.sm-tree-row.sm-tree-record-unavailable,.sm-tree-row.sm-tree-record-unavailable *,.sm-tree-node:not(.sm-tree-node-selected):has(>.sm-tree-row.sm-tree-record-unavailable)>smart-icon{color:var(--color-text-muted, #68778e)}.sm-tree-row.sm-tree-record-unavailable .sm-tree-row-caption{font-style:italic}::ng-deep .sm-tree-tooltip .mdc-tooltip__surface{white-space:pre-line}.sm-tree-node-selected .sm-tree-row,.sm-tree-node-selected .sm-tree-row-caption,.sm-tree-node-selected .sm-tree-row-shortDescription{color:inherit}.tree-loading{display:flex;justify-content:center;align-items:center;min-height:200px;width:100%}\n"] }]
|
|
19639
19639
|
}], ctorParameters: () => [], propDecorators: { trigger: [{
|
|
19640
19640
|
type: ViewChildren,
|
|
19641
19641
|
args: [MatMenuTrigger]
|
|
@@ -20960,9 +20960,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
20960
20960
|
}] }] });
|
|
20961
20961
|
|
|
20962
20962
|
class SmarttreeGenericService extends SmarttreeService {
|
|
20963
|
-
constructor(inject, pageName, treeId) {
|
|
20963
|
+
constructor(inject, pageName, treeId, resolveViewUuid) {
|
|
20964
20964
|
super();
|
|
20965
20965
|
this.pageName = pageName;
|
|
20966
|
+
this.resolveViewUuid = resolveViewUuid;
|
|
20966
20967
|
this.uiActionDescriptors = new Map();
|
|
20967
20968
|
/**
|
|
20968
20969
|
* The node objects of the last sync by identifier. Not read from `smartTreeModel`: an expansion
|
|
@@ -21010,7 +21011,7 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21010
21011
|
}
|
|
21011
21012
|
}
|
|
21012
21013
|
async downloadTree() {
|
|
21013
|
-
let uuid = this.
|
|
21014
|
+
let uuid = this.viewUuid();
|
|
21014
21015
|
const rootNodes = await this.viewContext.handlePerformActionResponse(await this.service.getRootNodes2(uuid, this.treeId).toPromise(), uuid);
|
|
21015
21016
|
const uiActions = await this.viewContext.handlePerformActionResponse(await this.service.getMainActions2(uuid, this.treeId).toPromise(), uuid);
|
|
21016
21017
|
if (uiActions) {
|
|
@@ -21026,7 +21027,7 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21026
21027
|
return rootNodes ?? [];
|
|
21027
21028
|
}
|
|
21028
21029
|
async downloadChildren(parentNode) {
|
|
21029
|
-
let uuid = this.
|
|
21030
|
+
let uuid = this.viewUuid();
|
|
21030
21031
|
const children = await this.viewContext.handlePerformActionResponse(await this.service.getChildrenNodes2(uuid, this.treeId, parentNode.identifier).toPromise(), uuid);
|
|
21031
21032
|
if (!children) {
|
|
21032
21033
|
throw new Error(`Node with identifier ${parentNode.identifier} does not have children.`);
|
|
@@ -21034,7 +21035,7 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21034
21035
|
return children;
|
|
21035
21036
|
}
|
|
21036
21037
|
async onTreeNodeOpen(treeNode) {
|
|
21037
|
-
let viewUuid = this.
|
|
21038
|
+
let viewUuid = this.viewUuid();
|
|
21038
21039
|
if (treeNode?.expanded) {
|
|
21039
21040
|
let tempTreeNode = await this.viewContext.handlePerformActionResponse(await this.service.collapseNode2(viewUuid, this.treeId, treeNode.identifier).toPromise(), viewUuid);
|
|
21040
21041
|
treeNode = tempTreeNode;
|
|
@@ -21052,7 +21053,7 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21052
21053
|
this.selectFolder(treeNode.identifier, treeNode);
|
|
21053
21054
|
}
|
|
21054
21055
|
async selectFolder(folderUri, treeNode) {
|
|
21055
|
-
let viewUuid = this.
|
|
21056
|
+
let viewUuid = this.viewUuid();
|
|
21056
21057
|
let updatedTreeNode = await this.viewContext.handlePerformActionResponse(await this.viewContext.withModelSync({}, (request) => this.service.selectNode2(viewUuid, this.treeId, treeNode.identifier, request).toPromise()), viewUuid);
|
|
21057
21058
|
if (this.selectedNode) {
|
|
21058
21059
|
this.selectedNode.selected = false;
|
|
@@ -21071,7 +21072,14 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21071
21072
|
}
|
|
21072
21073
|
isDownloadedForAnotherView() {
|
|
21073
21074
|
return (this.downloadedViewUuid !== undefined &&
|
|
21074
|
-
this.downloadedViewUuid !== this.
|
|
21075
|
+
this.downloadedViewUuid !== this.viewUuid());
|
|
21076
|
+
}
|
|
21077
|
+
/**
|
|
21078
|
+
* The page client hands its own view's uuid, which inside a dialog is the dialog's: the
|
|
21079
|
+
* page-name entry may point at another view of the same page.
|
|
21080
|
+
*/
|
|
21081
|
+
viewUuid() {
|
|
21082
|
+
return this.resolveViewUuid?.() ?? this.viewContext.getUuidOfPage(this.pageName);
|
|
21075
21083
|
}
|
|
21076
21084
|
async updateTreeOnTheFly() {
|
|
21077
21085
|
await this.initialize();
|
|
@@ -21266,17 +21274,17 @@ class SmarttreeGenericService extends SmarttreeService {
|
|
|
21266
21274
|
async performNodeUiActionRequest(uiActionRequest) {
|
|
21267
21275
|
let nodeId = uiActionRequest.params['nodeUuid'];
|
|
21268
21276
|
delete uiActionRequest.params['nodeUuid'];
|
|
21269
|
-
let viewUuid = this.
|
|
21277
|
+
let viewUuid = this.viewUuid();
|
|
21270
21278
|
this.treeFromBackend = await this.viewContext.handlePerformActionResponse(await this.viewContext.withModelSync(uiActionRequest, (request) => this.service.performAction2(viewUuid, this.treeId, nodeId, request).toPromise()), viewUuid);
|
|
21271
21279
|
}
|
|
21272
21280
|
async performMainUiActionRequest(uiActionRequest) {
|
|
21273
|
-
let viewUuid = this.
|
|
21281
|
+
let viewUuid = this.viewUuid();
|
|
21274
21282
|
this.treeFromBackend = await this.viewContext.handlePerformActionResponse(await this.viewContext.withModelSync(uiActionRequest, (request) => this.service.performMainAction2(viewUuid, this.treeId, request).toPromise()), viewUuid);
|
|
21275
21283
|
}
|
|
21276
21284
|
handleSpecificDemandsAsynchronously(uiAction, uiActionRequest) {
|
|
21277
21285
|
throw new Error('Method not implemented.');
|
|
21278
21286
|
}
|
|
21279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmarttreeGenericService, deps: [{ token: i0.Injector }, { token: 'pageName' }, { token: 'treeId' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmarttreeGenericService, deps: [{ token: i0.Injector }, { token: 'pageName' }, { token: 'treeId' }, { token: 'viewUuid', optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21280
21288
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmarttreeGenericService, providedIn: 'root' }); }
|
|
21281
21289
|
}
|
|
21282
21290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SmarttreeGenericService, decorators: [{
|
|
@@ -21290,6 +21298,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
21290
21298
|
}] }, { type: undefined, decorators: [{
|
|
21291
21299
|
type: Inject,
|
|
21292
21300
|
args: ['treeId']
|
|
21301
|
+
}] }, { type: undefined, decorators: [{
|
|
21302
|
+
type: Optional
|
|
21303
|
+
}, {
|
|
21304
|
+
type: Inject,
|
|
21305
|
+
args: ['viewUuid']
|
|
21293
21306
|
}] }] });
|
|
21294
21307
|
|
|
21295
21308
|
/*
|
|
@@ -21701,10 +21714,7 @@ class SmartComponentApiClient {
|
|
|
21701
21714
|
}
|
|
21702
21715
|
async load() {
|
|
21703
21716
|
this.componentModelLoaded = false;
|
|
21704
|
-
|
|
21705
|
-
// are not slot-hosted: they read it from the dialog data, and fall back to the
|
|
21706
|
-
// pageName -> getUuidOfPage shim only when the dialog was opened without one.
|
|
21707
|
-
const uuid = this.uuid ?? this.readDialogDataUuid() ?? this.viewContext.getUuidOfPage(this.pageName);
|
|
21717
|
+
const uuid = this.resolveViewUuid();
|
|
21708
21718
|
// console.log('[Embedded] load()', {
|
|
21709
21719
|
// pageName: this.pageName,
|
|
21710
21720
|
// _uuid: this._uuid,
|
|
@@ -21888,7 +21898,7 @@ class SmartComponentApiClient {
|
|
|
21888
21898
|
createTreeService(treeId) {
|
|
21889
21899
|
// The tree registers itself with this component through DI, keyed by its treeId, so
|
|
21890
21900
|
// nothing has to be recorded here. (ADR-0005)
|
|
21891
|
-
return new SmarttreeGenericService(this.inject, this.pageName, treeId);
|
|
21901
|
+
return new SmarttreeGenericService(this.inject, this.pageName, treeId, () => this.resolveViewUuid());
|
|
21892
21902
|
}
|
|
21893
21903
|
addFileUploader(uiActionCode, fileFormats, maxSizeMb, isMultiple) {
|
|
21894
21904
|
return {
|
|
@@ -21899,6 +21909,14 @@ class SmartComponentApiClient {
|
|
|
21899
21909
|
maxSizeMb,
|
|
21900
21910
|
};
|
|
21901
21911
|
}
|
|
21912
|
+
/**
|
|
21913
|
+
* Slot-hosted views (NORMAL/EMBEDDED) get their uuid injected at creation. DIALOG views are
|
|
21914
|
+
* not slot-hosted: they read it from the dialog data, and fall back to the pageName ->
|
|
21915
|
+
* getUuidOfPage shim only when the dialog was opened without one.
|
|
21916
|
+
*/
|
|
21917
|
+
resolveViewUuid() {
|
|
21918
|
+
return (this.uuid ?? this.readDialogDataUuid() ?? this.viewContext.getUuidOfPage(this.pageName));
|
|
21919
|
+
}
|
|
21902
21920
|
/**
|
|
21903
21921
|
* For dialog-hosted default components, the view uuid is passed through the
|
|
21904
21922
|
* dialog data (MAT_DIALOG_DATA). Returns undefined for slot-hosted
|