@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.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"] }]
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.viewContext.getUuidOfPage(this.pageName);
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.viewContext.getUuidOfPage(this.pageName);
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.viewContext.getUuidOfPage(this.pageName);
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.viewContext.getUuidOfPage(this.pageName);
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.viewContext.getUuidOfPage(this.pageName));
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.viewContext.getUuidOfPage(this.pageName);
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.viewContext.getUuidOfPage(this.pageName);
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
- // Slot-hosted views (NORMAL/EMBEDDED) get their uuid injected at creation. DIALOG views
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