@masterteam/components 0.0.125 → 0.0.126

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive } from '@angular/core';
2
+ import { Directive, inject, ElementRef, NgZone, DestroyRef } from '@angular/core';
3
3
  import * as i1 from 'primeng/tooltip';
4
4
  import { Tooltip as Tooltip$1 } from 'primeng/tooltip';
5
5
 
@@ -37,9 +37,107 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
37
37
  }]
38
38
  }] });
39
39
 
40
+ class TruncateTooltip {
41
+ elementRef = inject(ElementRef);
42
+ zone = inject(NgZone);
43
+ destroyRef = inject(DestroyRef);
44
+ tooltip = inject(Tooltip$1);
45
+ resizeObserver;
46
+ mutationObserver;
47
+ syncTimeout = null;
48
+ ngAfterViewInit() {
49
+ this.zone.runOutsideAngular(() => {
50
+ const element = this.elementRef.nativeElement;
51
+ if (typeof ResizeObserver !== 'undefined') {
52
+ this.resizeObserver = new ResizeObserver(() => this.queueSync());
53
+ this.resizeObserver.observe(element);
54
+ }
55
+ if (typeof MutationObserver !== 'undefined') {
56
+ this.mutationObserver = new MutationObserver(() => this.queueSync());
57
+ this.mutationObserver.observe(element, {
58
+ childList: true,
59
+ characterData: true,
60
+ subtree: true,
61
+ attributes: true,
62
+ attributeFilter: ['class', 'style'],
63
+ });
64
+ }
65
+ this.queueSync();
66
+ });
67
+ this.destroyRef.onDestroy(() => {
68
+ this.resizeObserver?.disconnect();
69
+ this.mutationObserver?.disconnect();
70
+ if (this.syncTimeout !== null) {
71
+ clearTimeout(this.syncTimeout);
72
+ }
73
+ });
74
+ }
75
+ syncTooltipState() {
76
+ this.queueSync();
77
+ }
78
+ queueSync() {
79
+ if (this.syncTimeout !== null) {
80
+ return;
81
+ }
82
+ this.syncTimeout = setTimeout(() => {
83
+ this.syncTimeout = null;
84
+ this.syncTooltip();
85
+ });
86
+ }
87
+ syncTooltip() {
88
+ const element = this.elementRef.nativeElement;
89
+ const text = element.textContent?.replace(/\s+/g, ' ').trim() ?? '';
90
+ const isTruncated = element.scrollWidth > element.clientWidth ||
91
+ element.scrollHeight > element.clientHeight;
92
+ this.tooltip.content = text || undefined;
93
+ this.tooltip.disabled = !text || !isTruncated;
94
+ if (!this.tooltip.active) {
95
+ return;
96
+ }
97
+ if (this.tooltip.disabled) {
98
+ this.tooltip.hide();
99
+ return;
100
+ }
101
+ this.tooltip.updateText();
102
+ this.tooltip.align();
103
+ }
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: TruncateTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive });
105
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.3", type: TruncateTooltip, isStandalone: true, selector: "[mtTruncateTooltip]", host: { listeners: { "mouseenter": "syncTooltipState()", "focusin": "syncTooltipState()" } }, hostDirectives: [{ directive: i1.Tooltip, inputs: ["tooltipPosition", "tooltipPosition", "tooltipEvent", "tooltipEvent", "appendTo", "appendTo", "tooltipStyleClass", "tooltipStyleClass", "escape", "escape", "showDelay", "showDelay", "hideDelay", "hideDelay", "life", "life", "positionTop", "positionTop", "positionLeft", "positionLeft", "autoHide", "autoHide", "fitContent", "fitContent", "hideOnEscape", "hideOnEscape"] }], ngImport: i0 });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: TruncateTooltip, decorators: [{
108
+ type: Directive,
109
+ args: [{
110
+ selector: '[mtTruncateTooltip]',
111
+ host: {
112
+ '(mouseenter)': 'syncTooltipState()',
113
+ '(focusin)': 'syncTooltipState()',
114
+ },
115
+ hostDirectives: [
116
+ {
117
+ directive: Tooltip$1,
118
+ inputs: [
119
+ 'tooltipPosition',
120
+ 'tooltipEvent',
121
+ 'appendTo',
122
+ 'tooltipStyleClass',
123
+ 'escape',
124
+ 'showDelay',
125
+ 'hideDelay',
126
+ 'life',
127
+ 'positionTop',
128
+ 'positionLeft',
129
+ 'autoHide',
130
+ 'fitContent',
131
+ 'hideOnEscape',
132
+ ],
133
+ },
134
+ ],
135
+ }]
136
+ }] });
137
+
40
138
  /**
41
139
  * Generated bundle index. Do not edit.
42
140
  */
43
141
 
44
- export { Tooltip };
142
+ export { Tooltip, TruncateTooltip };
45
143
  //# sourceMappingURL=masterteam-components-tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-components-tooltip.mjs","sources":["../../../../packages/masterteam/components/tooltip/tooltip.ts","../../../../packages/masterteam/components/tooltip/masterteam-components-tooltip.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\nimport { Tooltip as PrimeTooltip } from 'primeng/tooltip';\r\n\r\n@Directive({\r\n selector: '[mtTooltip]',\r\n standalone: true,\r\n hostDirectives: [\r\n {\r\n directive: PrimeTooltip,\r\n inputs: [\r\n 'pTooltip: mtTooltip',\r\n 'tooltipPosition',\r\n 'tooltipEvent',\r\n 'appendTo',\r\n 'tooltipStyleClass',\r\n 'escape',\r\n 'showDelay',\r\n 'hideDelay',\r\n 'life',\r\n 'positionTop',\r\n 'positionLeft',\r\n 'autoHide',\r\n 'fitContent',\r\n 'hideOnEscape',\r\n 'tooltipDisabled',\r\n ],\r\n },\r\n ],\r\n})\r\nexport class Tooltip {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PrimeTooltip"],"mappings":";;;;;MA6Ba,OAAO,CAAA;uGAAP,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBA1BnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAEA,SAAY;AACvB,4BAAA,MAAM,EAAE;gCACN,qBAAqB;gCACrB,iBAAiB;gCACjB,cAAc;gCACd,UAAU;gCACV,mBAAmB;gCACnB,QAAQ;gCACR,WAAW;gCACX,WAAW;gCACX,MAAM;gCACN,aAAa;gCACb,cAAc;gCACd,UAAU;gCACV,YAAY;gCACZ,cAAc;gCACd,iBAAiB;AAClB,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC5BD;;AAEG;;;;"}
1
+ {"version":3,"file":"masterteam-components-tooltip.mjs","sources":["../../../../packages/masterteam/components/tooltip/tooltip.ts","../../../../packages/masterteam/components/tooltip/truncate-tooltip.ts","../../../../packages/masterteam/components/tooltip/masterteam-components-tooltip.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\nimport { Tooltip as PrimeTooltip } from 'primeng/tooltip';\r\n\r\n@Directive({\r\n selector: '[mtTooltip]',\r\n standalone: true,\r\n hostDirectives: [\r\n {\r\n directive: PrimeTooltip,\r\n inputs: [\r\n 'pTooltip: mtTooltip',\r\n 'tooltipPosition',\r\n 'tooltipEvent',\r\n 'appendTo',\r\n 'tooltipStyleClass',\r\n 'escape',\r\n 'showDelay',\r\n 'hideDelay',\r\n 'life',\r\n 'positionTop',\r\n 'positionLeft',\r\n 'autoHide',\r\n 'fitContent',\r\n 'hideOnEscape',\r\n 'tooltipDisabled',\r\n ],\r\n },\r\n ],\r\n})\r\nexport class Tooltip {}\r\n","import {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n NgZone,\n inject,\n} from '@angular/core';\nimport { Tooltip as PrimeTooltip } from 'primeng/tooltip';\n\n@Directive({\n selector: '[mtTruncateTooltip]',\n host: {\n '(mouseenter)': 'syncTooltipState()',\n '(focusin)': 'syncTooltipState()',\n },\n hostDirectives: [\n {\n directive: PrimeTooltip,\n inputs: [\n 'tooltipPosition',\n 'tooltipEvent',\n 'appendTo',\n 'tooltipStyleClass',\n 'escape',\n 'showDelay',\n 'hideDelay',\n 'life',\n 'positionTop',\n 'positionLeft',\n 'autoHide',\n 'fitContent',\n 'hideOnEscape',\n ],\n },\n ],\n})\nexport class TruncateTooltip implements AfterViewInit {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly zone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly tooltip = inject(PrimeTooltip);\n\n private resizeObserver?: ResizeObserver;\n private mutationObserver?: MutationObserver;\n private syncTimeout: ReturnType<typeof setTimeout> | null = null;\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement;\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.queueSync());\n this.resizeObserver.observe(element);\n }\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(() => this.queueSync());\n this.mutationObserver.observe(element, {\n childList: true,\n characterData: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['class', 'style'],\n });\n }\n\n this.queueSync();\n });\n\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n\n if (this.syncTimeout !== null) {\n clearTimeout(this.syncTimeout);\n }\n });\n }\n\n syncTooltipState(): void {\n this.queueSync();\n }\n\n private queueSync(): void {\n if (this.syncTimeout !== null) {\n return;\n }\n\n this.syncTimeout = setTimeout(() => {\n this.syncTimeout = null;\n this.syncTooltip();\n });\n }\n\n private syncTooltip(): void {\n const element = this.elementRef.nativeElement;\n const text = element.textContent?.replace(/\\s+/g, ' ').trim() ?? '';\n const isTruncated =\n element.scrollWidth > element.clientWidth ||\n element.scrollHeight > element.clientHeight;\n\n this.tooltip.content = text || undefined;\n this.tooltip.disabled = !text || !isTruncated;\n\n if (!this.tooltip.active) {\n return;\n }\n\n if (this.tooltip.disabled) {\n this.tooltip.hide();\n return;\n }\n\n this.tooltip.updateText();\n this.tooltip.align();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PrimeTooltip"],"mappings":"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"}
@@ -194,7 +194,7 @@ class Tree {
194
194
  action.action(node);
195
195
  }
196
196
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Tree, deps: [], target: i0.ɵɵFactoryTarget.Component });
197
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Tree, isStandalone: true, selector: "mt-tree", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, nodeIcon: { classPropertyName: "nodeIcon", publicName: "nodeIcon", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, checkAllChildren: { classPropertyName: "checkAllChildren", publicName: "checkAllChildren", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, checkAllLabel: { classPropertyName: "checkAllLabel", publicName: "checkAllLabel", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterMode: { classPropertyName: "filterMode", publicName: "filterMode", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, nodeActions: { classPropertyName: "nodeActions", publicName: "nodeActions", isSignal: true, isRequired: false, transformFunction: null }, nodeContextmenuActions: { classPropertyName: "nodeContextmenuActions", publicName: "nodeContextmenuActions", isSignal: true, isRequired: false, transformFunction: null }, contextMenuSelection: { classPropertyName: "contextMenuSelection", publicName: "contextMenuSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", contextMenuSelection: "contextMenuSelectionChange", action: "action" }, viewQueries: [{ propertyName: "primeTree", first: true, predicate: ["primeTree"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TreeModule }, { kind: "component", type: i1.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "styleClass", "contextMenu", "contextMenuSelectionMode", "contextMenuSelection", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterInputAutoFocus", "filterBy", "filterMode", "filterOptions", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "highlightOnSelect"], outputs: ["selectionChange", "contextMenuSelectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDoubleClick", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required", "toggleShape", "size", "icon", "descriptionCard"], outputs: ["onChange"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: i4.ContextMenu, selector: "p-contextMenu, p-contextmenu, p-context-menu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "autoZIndex", "baseZIndex", "id", "breakpoint", "ariaLabel", "ariaLabelledBy", "pressDelay", "appendTo", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: TranslocoModule }] });
197
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Tree, isStandalone: true, selector: "mt-tree", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, nodeIcon: { classPropertyName: "nodeIcon", publicName: "nodeIcon", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, checkAllChildren: { classPropertyName: "checkAllChildren", publicName: "checkAllChildren", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, checkAllLabel: { classPropertyName: "checkAllLabel", publicName: "checkAllLabel", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterMode: { classPropertyName: "filterMode", publicName: "filterMode", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, nodeActions: { classPropertyName: "nodeActions", publicName: "nodeActions", isSignal: true, isRequired: false, transformFunction: null }, nodeContextmenuActions: { classPropertyName: "nodeContextmenuActions", publicName: "nodeContextmenuActions", isSignal: true, isRequired: false, transformFunction: null }, contextMenuSelection: { classPropertyName: "contextMenuSelection", publicName: "contextMenuSelection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", contextMenuSelection: "contextMenuSelectionChange", action: "action" }, viewQueries: [{ propertyName: "primeTree", first: true, predicate: ["primeTree"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n [disabled]=\"node.selectable === false\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TreeModule }, { kind: "component", type: i1.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "styleClass", "contextMenu", "contextMenuSelectionMode", "contextMenuSelection", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterInputAutoFocus", "filterBy", "filterMode", "filterOptions", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "highlightOnSelect"], outputs: ["selectionChange", "contextMenuSelectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDoubleClick", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required", "toggleShape", "size", "icon", "descriptionCard"], outputs: ["onChange"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: i4.ContextMenu, selector: "p-contextMenu, p-contextmenu, p-context-menu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "autoZIndex", "baseZIndex", "id", "breakpoint", "ariaLabel", "ariaLabelledBy", "pressDelay", "appendTo", "motionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: TranslocoModule }] });
198
198
  }
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Tree, decorators: [{
200
200
  type: Component,
@@ -208,7 +208,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
208
208
  ToggleField,
209
209
  ContextMenuModule,
210
210
  TranslocoModule,
211
- ], template: "<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\r\n" }]
211
+ ], template: "<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n [disabled]=\"node.selectable === false\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\r\n" }]
212
212
  }], ctorParameters: () => [], propDecorators: { primeTree: [{ type: i0.ViewChild, args: ['primeTree', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], nodeIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeIcon", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], checkAllChildren: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkAllChildren", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], checkAllLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkAllLabel", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], dataKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataKey", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMode", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], pInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "pInputs", required: false }] }], nodeActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeActions", required: false }] }], nodeContextmenuActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeContextmenuActions", required: false }] }], contextMenuSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenuSelection", required: false }] }, { type: i0.Output, args: ["contextMenuSelectionChange"] }], action: [{ type: i0.Output, args: ["action"] }] } });
213
213
 
214
214
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-components-tree.mjs","sources":["../../../../packages/masterteam/components/tree/tree.ts","../../../../packages/masterteam/components/tree/tree.html","../../../../packages/masterteam/components/tree/masterteam-components-tree.ts"],"sourcesContent":["import { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n viewChild,\r\n effect,\r\n inject,\r\n computed,\r\n model,\r\n Signal,\r\n signal,\r\n} from '@angular/core';\r\nimport { Tree as PrimeTree, TreeModule } from 'primeng/tree';\r\nimport { MenuItem, TreeNode } from 'primeng/api';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { MTIcon } from '@masterteam/icons';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport {\r\n TreeAction,\r\n TreeContextMenuAction,\r\n TreeActionEvent,\r\n} from './tree-types';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Component({\r\n selector: 'mt-tree',\r\n standalone: true,\r\n imports: [\r\n TreeModule,\r\n Icon,\r\n CommonModule,\r\n Avatar,\r\n Button,\r\n FormsModule,\r\n ToggleField,\r\n ContextMenuModule,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './tree.html',\r\n styleUrls: ['./tree.scss'],\r\n})\r\nexport class Tree {\r\n transloco = inject(TranslocoService);\r\n\r\n dir = inject(Directionality, { optional: true });\r\n\r\n readonly primeTree = viewChild<PrimeTree>('primeTree');\r\n\r\n readonly value = input.required<TreeNode[]>();\r\n readonly selection = model<TreeNode | TreeNode[] | null>();\r\n readonly selectionMode = input<'single' | 'multiple' | 'checkbox'>();\r\n readonly nodeIcon = input<MTIcon | undefined>();\r\n readonly propagateSelectionUp = input<boolean>(false);\r\n readonly propagateSelectionDown = input<boolean>(false);\r\n readonly checkAllChildren = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>(\r\n this.transloco.translate('components.tree.no-data-found'),\r\n );\r\n readonly checkAllLabel = input<string>(\r\n this.transloco.translate('components.tree.check-all'),\r\n );\r\n readonly filterPlaceholder = input<string>(\r\n this.transloco.translate('components.tree.search'),\r\n );\r\n readonly dataKey = input<'key'>('key');\r\n readonly filter = input<boolean>(false);\r\n readonly filterMode = input<'lenient' | 'strict'>('lenient');\r\n\r\n readonly styleClass = input<string>('');\r\n readonly style = input<Record<string, string>>();\r\n readonly pInputs = input<Partial<PrimeTree>>();\r\n readonly nodeActions = input<TreeAction[]>([]);\r\n readonly nodeContextmenuActions = input<TreeContextMenuAction[]>([]);\r\n\r\n // Context menu state\r\n readonly contextMenuSelection = model<TreeNode | null>(null);\r\n readonly contextMenuItems = computed<MenuItem[]>(() => {\r\n const actions = this.nodeContextmenuActions();\r\n return actions.map((action) => ({\r\n label: action.label,\r\n icon: action.icon,\r\n command: () => {\r\n const node = this.contextMenuSelection();\r\n if (node) {\r\n action.action(node);\r\n }\r\n },\r\n }));\r\n });\r\n\r\n readonly action = output<TreeActionEvent>();\r\n CheckAllValue = signal<boolean>(false);\r\n // Computed tree value with \"Check All\" nodes added recursively to all parents\r\n readonly treeValue: Signal<TreeNode[]> = computed(() => {\r\n const nodes = this.value();\r\n const shouldAddCheckAll =\r\n this.checkAllChildren() && this.selectionMode() === 'checkbox';\r\n\r\n if (!shouldAddCheckAll) {\r\n return nodes;\r\n }\r\n\r\n // Recursively add \"Check All\" child to any parent node\r\n const addCheckAllRecursive = (node: TreeNode): TreeNode => {\r\n if (node.children && node.children.length > 0) {\r\n const checkAllNode: TreeNode = {\r\n key: `${node.key}-check-all`,\r\n label: this.checkAllLabel(),\r\n icon: 'general.check-square-broken',\r\n data: node,\r\n };\r\n\r\n return {\r\n ...node,\r\n children: [checkAllNode, ...node.children.map(addCheckAllRecursive)],\r\n };\r\n }\r\n return node;\r\n };\r\n\r\n // Transform all nodes\r\n const transformedNodes = nodes.map(addCheckAllRecursive);\r\n\r\n // Add \"Check All\" for entire tree at the beginning\r\n const treeCheckAllNode: TreeNode = {\r\n key: 'tree-check-all',\r\n label: this.checkAllLabel(),\r\n icon: 'general.check-square-broken',\r\n data: { isTreeRoot: true, children: transformedNodes },\r\n };\r\n\r\n return [treeCheckAllNode, ...transformedNodes];\r\n });\r\n\r\n constructor() {\r\n // Apply pInputs to the PrimeNG tree instance\r\n effect(() => {\r\n const tree = this.primeTree();\r\n const inputs = this.pInputs();\r\n if (tree && inputs) {\r\n Object.assign(tree, inputs);\r\n }\r\n });\r\n\r\n // Sync checked state when selection changes (including initial value)\r\n effect(() => {\r\n const value = this.treeValue();\r\n // Only run if we have nodes and selection\r\n if (value.length > 0 && this.selectionMode() === 'checkbox') {\r\n this.handleCheckedNodes();\r\n }\r\n });\r\n }\r\n private isProcessingBatchSelection = signal<boolean>(false);\r\n\r\n onSelectionChange(event: TreeNode | TreeNode[] | null) {\r\n // Skip emitting if we're in the middle of batch processing\r\n if (this.isProcessingBatchSelection()) {\r\n return;\r\n }\r\n this.handleCheckedNodes();\r\n this.action.emit({ action: 'selectionChange', data: event });\r\n }\r\n\r\n onNodeSelect(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeSelect', data: event });\r\n }\r\n\r\n onNodeUnselect(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeUnselect', data: event });\r\n }\r\n\r\n onNodeExpand(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeExpand', data: event });\r\n }\r\n\r\n onNodeCollapse(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeCollapse', data: event });\r\n }\r\n\r\n onContextMenuSelect(event: TreeNode) {\r\n this.contextMenuSelection.set(event);\r\n }\r\n getCheckAllValue(event: any) {\r\n this.CheckAllValue.set(event);\r\n }\r\n toggleNodeSelection(node: TreeNode, event: MouseEvent): void {\r\n event.stopPropagation();\r\n const tree = this.primeTree();\r\n if (this.selectionMode() === 'checkbox' && tree) {\r\n if (node.key?.includes('check-all') && node.data) {\r\n const checkValue = this.CheckAllValue() ?? true;\r\n // Handle parent-level \"Check All\" - only check immediate children\r\n const parentNode = node.data;\r\n\r\n // Start batch processing to prevent multiple selection change events\r\n this.isProcessingBatchSelection.set(true);\r\n\r\n parentNode?.children?.forEach((child: TreeNode) => {\r\n if (!child.key?.includes('check-all')) {\r\n const isSelected = tree.isSelected(child);\r\n // Only toggle if the current state doesn't match desired state\r\n if ((checkValue && !isSelected) || (!checkValue && isSelected)) {\r\n tree.onNodeClick(event, child);\r\n }\r\n }\r\n });\r\n\r\n // End batch processing and emit single selection change event\r\n this.isProcessingBatchSelection.set(false);\r\n this.handleCheckedNodes();\r\n this.action.emit({\r\n action: 'selectionChange',\r\n data: this.selection(),\r\n });\r\n } else {\r\n tree.onNodeClick(event, node);\r\n }\r\n }\r\n }\r\n\r\n handleCheckedNodes() {\r\n const updateNodeCheckedState = (nodes: TreeNode[]) => {\r\n const tree = this.primeTree();\r\n nodes.forEach((node: any) => {\r\n if (node.key?.includes('check-all')) {\r\n const isAllChildrenSelected = !nodes?.filter(\r\n (n: any) => !tree?.isSelected(n) && !n.key?.includes('check-all'),\r\n )?.length;\r\n node.checked = isAllChildrenSelected;\r\n } else {\r\n node.checked = tree?.isSelected(node);\r\n }\r\n if (node.children) {\r\n updateNodeCheckedState(node.children);\r\n }\r\n });\r\n };\r\n updateNodeCheckedState(this.treeValue());\r\n }\r\n\r\n resolveActionLoading(action: TreeAction, node: any): boolean | undefined {\r\n if (typeof action.loading === 'function') {\r\n return action.loading(node);\r\n }\r\n return action.loading;\r\n }\r\n\r\n nodeAction(action: TreeAction, node: any): void {\r\n action.action(node);\r\n }\r\n}\r\n","<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\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":"masterteam-components-tree.mjs","sources":["../../../../packages/masterteam/components/tree/tree.ts","../../../../packages/masterteam/components/tree/tree.html","../../../../packages/masterteam/components/tree/masterteam-components-tree.ts"],"sourcesContent":["import { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n Component,\r\n input,\r\n output,\r\n viewChild,\r\n effect,\r\n inject,\r\n computed,\r\n model,\r\n Signal,\r\n signal,\r\n} from '@angular/core';\r\nimport { Tree as PrimeTree, TreeModule } from 'primeng/tree';\r\nimport { MenuItem, TreeNode } from 'primeng/api';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { MTIcon } from '@masterteam/icons';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport {\r\n TreeAction,\r\n TreeContextMenuAction,\r\n TreeActionEvent,\r\n} from './tree-types';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Component({\r\n selector: 'mt-tree',\r\n standalone: true,\r\n imports: [\r\n TreeModule,\r\n Icon,\r\n CommonModule,\r\n Avatar,\r\n Button,\r\n FormsModule,\r\n ToggleField,\r\n ContextMenuModule,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './tree.html',\r\n styleUrls: ['./tree.scss'],\r\n})\r\nexport class Tree {\r\n transloco = inject(TranslocoService);\r\n\r\n dir = inject(Directionality, { optional: true });\r\n\r\n readonly primeTree = viewChild<PrimeTree>('primeTree');\r\n\r\n readonly value = input.required<TreeNode[]>();\r\n readonly selection = model<TreeNode | TreeNode[] | null>();\r\n readonly selectionMode = input<'single' | 'multiple' | 'checkbox'>();\r\n readonly nodeIcon = input<MTIcon | undefined>();\r\n readonly propagateSelectionUp = input<boolean>(false);\r\n readonly propagateSelectionDown = input<boolean>(false);\r\n readonly checkAllChildren = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>(\r\n this.transloco.translate('components.tree.no-data-found'),\r\n );\r\n readonly checkAllLabel = input<string>(\r\n this.transloco.translate('components.tree.check-all'),\r\n );\r\n readonly filterPlaceholder = input<string>(\r\n this.transloco.translate('components.tree.search'),\r\n );\r\n readonly dataKey = input<'key'>('key');\r\n readonly filter = input<boolean>(false);\r\n readonly filterMode = input<'lenient' | 'strict'>('lenient');\r\n\r\n readonly styleClass = input<string>('');\r\n readonly style = input<Record<string, string>>();\r\n readonly pInputs = input<Partial<PrimeTree>>();\r\n readonly nodeActions = input<TreeAction[]>([]);\r\n readonly nodeContextmenuActions = input<TreeContextMenuAction[]>([]);\r\n\r\n // Context menu state\r\n readonly contextMenuSelection = model<TreeNode | null>(null);\r\n readonly contextMenuItems = computed<MenuItem[]>(() => {\r\n const actions = this.nodeContextmenuActions();\r\n return actions.map((action) => ({\r\n label: action.label,\r\n icon: action.icon,\r\n command: () => {\r\n const node = this.contextMenuSelection();\r\n if (node) {\r\n action.action(node);\r\n }\r\n },\r\n }));\r\n });\r\n\r\n readonly action = output<TreeActionEvent>();\r\n CheckAllValue = signal<boolean>(false);\r\n // Computed tree value with \"Check All\" nodes added recursively to all parents\r\n readonly treeValue: Signal<TreeNode[]> = computed(() => {\r\n const nodes = this.value();\r\n const shouldAddCheckAll =\r\n this.checkAllChildren() && this.selectionMode() === 'checkbox';\r\n\r\n if (!shouldAddCheckAll) {\r\n return nodes;\r\n }\r\n\r\n // Recursively add \"Check All\" child to any parent node\r\n const addCheckAllRecursive = (node: TreeNode): TreeNode => {\r\n if (node.children && node.children.length > 0) {\r\n const checkAllNode: TreeNode = {\r\n key: `${node.key}-check-all`,\r\n label: this.checkAllLabel(),\r\n icon: 'general.check-square-broken',\r\n data: node,\r\n };\r\n\r\n return {\r\n ...node,\r\n children: [checkAllNode, ...node.children.map(addCheckAllRecursive)],\r\n };\r\n }\r\n return node;\r\n };\r\n\r\n // Transform all nodes\r\n const transformedNodes = nodes.map(addCheckAllRecursive);\r\n\r\n // Add \"Check All\" for entire tree at the beginning\r\n const treeCheckAllNode: TreeNode = {\r\n key: 'tree-check-all',\r\n label: this.checkAllLabel(),\r\n icon: 'general.check-square-broken',\r\n data: { isTreeRoot: true, children: transformedNodes },\r\n };\r\n\r\n return [treeCheckAllNode, ...transformedNodes];\r\n });\r\n\r\n constructor() {\r\n // Apply pInputs to the PrimeNG tree instance\r\n effect(() => {\r\n const tree = this.primeTree();\r\n const inputs = this.pInputs();\r\n if (tree && inputs) {\r\n Object.assign(tree, inputs);\r\n }\r\n });\r\n\r\n // Sync checked state when selection changes (including initial value)\r\n effect(() => {\r\n const value = this.treeValue();\r\n // Only run if we have nodes and selection\r\n if (value.length > 0 && this.selectionMode() === 'checkbox') {\r\n this.handleCheckedNodes();\r\n }\r\n });\r\n }\r\n private isProcessingBatchSelection = signal<boolean>(false);\r\n\r\n onSelectionChange(event: TreeNode | TreeNode[] | null) {\r\n // Skip emitting if we're in the middle of batch processing\r\n if (this.isProcessingBatchSelection()) {\r\n return;\r\n }\r\n this.handleCheckedNodes();\r\n this.action.emit({ action: 'selectionChange', data: event });\r\n }\r\n\r\n onNodeSelect(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeSelect', data: event });\r\n }\r\n\r\n onNodeUnselect(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeUnselect', data: event });\r\n }\r\n\r\n onNodeExpand(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeExpand', data: event });\r\n }\r\n\r\n onNodeCollapse(event: { node: TreeNode }) {\r\n this.action.emit({ action: 'nodeCollapse', data: event });\r\n }\r\n\r\n onContextMenuSelect(event: TreeNode) {\r\n this.contextMenuSelection.set(event);\r\n }\r\n getCheckAllValue(event: any) {\r\n this.CheckAllValue.set(event);\r\n }\r\n toggleNodeSelection(node: TreeNode, event: MouseEvent): void {\r\n event.stopPropagation();\r\n const tree = this.primeTree();\r\n if (this.selectionMode() === 'checkbox' && tree) {\r\n if (node.key?.includes('check-all') && node.data) {\r\n const checkValue = this.CheckAllValue() ?? true;\r\n // Handle parent-level \"Check All\" - only check immediate children\r\n const parentNode = node.data;\r\n\r\n // Start batch processing to prevent multiple selection change events\r\n this.isProcessingBatchSelection.set(true);\r\n\r\n parentNode?.children?.forEach((child: TreeNode) => {\r\n if (!child.key?.includes('check-all')) {\r\n const isSelected = tree.isSelected(child);\r\n // Only toggle if the current state doesn't match desired state\r\n if ((checkValue && !isSelected) || (!checkValue && isSelected)) {\r\n tree.onNodeClick(event, child);\r\n }\r\n }\r\n });\r\n\r\n // End batch processing and emit single selection change event\r\n this.isProcessingBatchSelection.set(false);\r\n this.handleCheckedNodes();\r\n this.action.emit({\r\n action: 'selectionChange',\r\n data: this.selection(),\r\n });\r\n } else {\r\n tree.onNodeClick(event, node);\r\n }\r\n }\r\n }\r\n\r\n handleCheckedNodes() {\r\n const updateNodeCheckedState = (nodes: TreeNode[]) => {\r\n const tree = this.primeTree();\r\n nodes.forEach((node: any) => {\r\n if (node.key?.includes('check-all')) {\r\n const isAllChildrenSelected = !nodes?.filter(\r\n (n: any) => !tree?.isSelected(n) && !n.key?.includes('check-all'),\r\n )?.length;\r\n node.checked = isAllChildrenSelected;\r\n } else {\r\n node.checked = tree?.isSelected(node);\r\n }\r\n if (node.children) {\r\n updateNodeCheckedState(node.children);\r\n }\r\n });\r\n };\r\n updateNodeCheckedState(this.treeValue());\r\n }\r\n\r\n resolveActionLoading(action: TreeAction, node: any): boolean | undefined {\r\n if (typeof action.loading === 'function') {\r\n return action.loading(node);\r\n }\r\n return action.loading;\r\n }\r\n\r\n nodeAction(action: TreeAction, node: any): void {\r\n action.action(node);\r\n }\r\n}\r\n","<p-tree\r\n #primeTree\r\n [value]=\"treeValue()\"\r\n [(selection)]=\"selection\"\r\n [selectionMode]=\"selectionMode()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [loading]=\"loading()\"\r\n [emptyMessage]=\"emptyMessage()\"\r\n [filter]=\"filter()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [styleClass]=\"'mt-tree ' + styleClass()\"\r\n [style]=\"style()\"\r\n [contextMenu]=\"contextMenuItems().length ? cm : null\"\r\n [(contextMenuSelection)]=\"contextMenuSelection\"\r\n contextMenuSelectionMode=\"separate\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n (onNodeUnselect)=\"onNodeUnselect($event)\"\r\n (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeCollapse)=\"onNodeCollapse($event)\"\r\n (onNodeContextMenuSelect)=\"onContextMenuSelect($event.node)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div\r\n (click)=\"selectionMode() === 'checkbox' ? $event.stopPropagation() : null\"\r\n class=\"mt-tree-node border-1 border-gray-300 cursor-default rounded-lg flex items-center hover:bg-surface-100 justify-between\"\r\n [class]=\"node?.key.includes('check-all') ? 'bg-surface-100 ' : ''\"\r\n >\r\n <div\r\n class=\"px-3 flex items-center justify-between flex-1\"\r\n [class.cursor-pointer]=\"\r\n selectionMode() === 'single' || selectionMode() === 'multiple'\r\n \"\r\n >\r\n <div class=\"flex items-center\">\r\n @if (node.children && node.children.length > 0) {\r\n <div\r\n class=\"py-3\"\r\n (click)=\"node.expanded = !node.expanded; $event.stopPropagation()\"\r\n >\r\n <mt-icon\r\n class=\"text-2xl cursor-pointer\"\r\n [icon]=\"\r\n node.expanded\r\n ? 'arrow.chevron-down'\r\n : dir?.value === 'rtl'\r\n ? 'arrow.chevron-left'\r\n : 'arrow.chevron-right'\r\n \"\r\n />\r\n </div>\r\n }\r\n @if (node.icon || nodeIcon()) {\r\n <mt-avatar\r\n class=\"ms-2\"\r\n [icon]=\"node.icon || nodeIcon()\"\r\n shape=\"square\"\r\n size=\"small\"\r\n style=\"\r\n --p-avatar-background: var(--p-primary-50);\r\n --p-avatar-color: var(--p-primary-color);\r\n \"\r\n [style]=\"\r\n node?.key.includes('check-all')\r\n ? ' --p-avatar-background: var(--p-primary-color); --p-avatar-color: white'\r\n : ''\r\n \"\r\n >\r\n </mt-avatar>\r\n }\r\n <div class=\"text-md mx-3 py-4\">{{ node.label }}</div>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if (nodeActions().length > 0) {\r\n <div class=\"flex items-center\">\r\n @for (action of nodeActions(); track action.icon) {\r\n @let hidden = action.hidden?.(node);\r\n @if (!hidden) {\r\n <mt-button\r\n [variant]=\"action.variant\"\r\n [icon]=\"action.icon\"\r\n [severity]=\"action.severity\"\r\n [size]=\"action.size\"\r\n [label]=\"action.label\"\r\n [tooltip]=\"action.tooltip\"\r\n [loading]=\"resolveActionLoading(action, node)\"\r\n (click)=\"nodeAction(action, node)\"\r\n >\r\n </mt-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (selectionMode() === \"checkbox\") {\r\n <div\r\n class=\"cursor-pointer me-3\"\r\n (click)=\"toggleNodeSelection(node, $event)\"\r\n >\r\n <mt-toggle-field\r\n (ngModelChange)=\"getCheckAllValue($event)\"\r\n [ngModel]=\"node.checked\"\r\n [disabled]=\"node.selectable === false\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n\r\n<p-contextMenu #cm [model]=\"contextMenuItems()\" appendTo=\"body\">\r\n <ng-template pTemplate=\"item\" let-item>\r\n <div class=\"p-menu-item-content\" (click)=\"item.command()\">\r\n <a class=\"p-menu-item-link flex items-center gap-2\">\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\" class=\"text-lg\" />\r\n }\r\n <span class=\"p-menu-item-label\">{{ item.label }}</span>\r\n </a>\r\n </div>\r\n </ng-template>\r\n</p-contextMenu>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/components",
3
- "version": "0.0.125",
3
+ "version": "0.0.126",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/components",
6
6
  "linkDirectory": true,
@@ -1,3 +1,4 @@
1
+ import * as _masterteam_components_entities from '@masterteam/components/entities';
1
2
  import * as _angular_core from '@angular/core';
2
3
  import { ElementRef, NgZone } from '@angular/core';
3
4
  import { HttpContext } from '@angular/common/http';
@@ -5,6 +6,7 @@ import { MTIcon } from '@masterteam/icons';
5
6
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
6
7
 
7
8
  type EntityViewType = 'Text' | 'LongText' | 'Date' | 'DateTime' | 'Percentage' | 'Status' | 'Currency' | 'Checkbox' | 'User' | 'Lookup' | 'Attachment' | 'LookupMatrix';
9
+ type EntityLabelPosition = 'top' | 'bottom';
8
10
  /** Entity size – controls column span (1-24) inside a 24-column grid */
9
11
  type EntitySize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24;
10
12
  interface EntityBaseConfig {
@@ -12,8 +14,14 @@ interface EntityBaseConfig {
12
14
  size?: EntitySize;
13
15
  /** Whether to show a dashed border around the entity card */
14
16
  showBorder?: boolean;
15
- /** Whether to hide the entity name label */
17
+ /** Whether to hide the entity name label. Prefer hideLabel for new config. */
16
18
  hideName?: boolean;
19
+ /** Whether to hide the entity label */
20
+ hideLabel?: boolean;
21
+ /** Controls whether the label is rendered above or below the value */
22
+ labelPosition?: EntityLabelPosition;
23
+ /** Legacy misspelled alias kept for compatibility */
24
+ labelPostion?: EntityLabelPosition;
17
25
  }
18
26
  interface EntityUserConfig extends EntityBaseConfig {
19
27
  showDisplayName?: boolean;
@@ -74,6 +82,18 @@ interface EntityResizeEvent {
74
82
  newSize: EntitySize;
75
83
  }
76
84
 
85
+ type EntityFieldGap = 'compact' | 'normal' | 'relaxed';
86
+ declare class EntityField {
87
+ readonly label: _angular_core.InputSignal<string>;
88
+ readonly configuration: _angular_core.InputSignal<EntityConfiguration | null | undefined>;
89
+ readonly gap: _angular_core.InputSignal<EntityFieldGap>;
90
+ readonly hideLabel: _angular_core.Signal<boolean>;
91
+ readonly labelPosition: _angular_core.Signal<_masterteam_components_entities.EntityLabelPosition>;
92
+ readonly containerClass: _angular_core.Signal<string>;
93
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityField, never>;
94
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityField, "mt-entity-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "configuration": { "alias": "configuration"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
95
+ }
96
+
77
97
  declare class EntityText {
78
98
  /** Full entity data object */
79
99
  readonly data: _angular_core.InputSignal<EntityData | undefined>;
@@ -82,7 +102,6 @@ declare class EntityText {
82
102
  readonly value: _angular_core.InputSignal<string | undefined>;
83
103
  readonly displayName: _angular_core.Signal<string>;
84
104
  readonly displayValue: _angular_core.Signal<string>;
85
- readonly hideName: _angular_core.Signal<boolean>;
86
105
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityText, never>;
87
106
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityText, "mt-entity-text", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
88
107
  }
@@ -95,7 +114,6 @@ declare class EntityDate {
95
114
  readonly value: _angular_core.InputSignal<string | undefined>;
96
115
  readonly displayName: _angular_core.Signal<string>;
97
116
  readonly displayValue: _angular_core.Signal<string>;
98
- readonly hideName: _angular_core.Signal<boolean>;
99
117
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityDate, never>;
100
118
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityDate, "mt-entity-date", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
101
119
  }
@@ -117,7 +135,6 @@ declare class EntityStatus {
117
135
  }>;
118
136
  readonly emptyLabel = "_";
119
137
  readonly statusLabel: _angular_core.Signal<string>;
120
- readonly hideName: _angular_core.Signal<boolean>;
121
138
  private hexToRgba;
122
139
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityStatus, never>;
123
140
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityStatus, "mt-entity-status", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -172,7 +189,6 @@ declare class EntityCurrency {
172
189
  readonly value: _angular_core.InputSignal<string | undefined>;
173
190
  readonly displayName: _angular_core.Signal<string>;
174
191
  readonly displayValue: _angular_core.Signal<string>;
175
- readonly hideName: _angular_core.Signal<boolean>;
176
192
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityCurrency, never>;
177
193
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityCurrency, "mt-entity-currency", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
178
194
  }
@@ -201,7 +217,6 @@ declare class EntityLongText {
201
217
  readonly value: _angular_core.InputSignal<string | undefined>;
202
218
  readonly displayName: _angular_core.Signal<string>;
203
219
  readonly displayValue: _angular_core.Signal<string>;
204
- readonly hideName: _angular_core.Signal<boolean>;
205
220
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityLongText, never>;
206
221
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityLongText, "mt-entity-long-text", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
207
222
  }
@@ -223,7 +238,6 @@ declare class EntityLookup {
223
238
  }>;
224
239
  readonly emptyLabel = "_";
225
240
  readonly lookupLabel: _angular_core.Signal<string>;
226
- readonly hideName: _angular_core.Signal<boolean>;
227
241
  private hexToRgba;
228
242
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityLookup, never>;
229
243
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityLookup, "mt-entity-lookup", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -233,13 +247,12 @@ type AttachmentReference = EntityAttachmentItemValue | string;
233
247
  declare class EntityAttachment {
234
248
  readonly data: _angular_core.InputSignal<EntityData | undefined>;
235
249
  readonly name: _angular_core.InputSignal<string | undefined>;
236
- readonly shape: _angular_core.InputSignal<"default" | "compact">;
250
+ readonly shape: _angular_core.InputSignal<"compact" | "default">;
237
251
  readonly value: _angular_core.InputSignal<string | EntityAttachmentItemValue | EntityAttachmentValue | null | undefined>;
238
252
  readonly endPoint: _angular_core.InputSignal<string>;
239
253
  readonly context: _angular_core.InputSignal<HttpContext | undefined>;
240
254
  private readonly httpClient;
241
255
  readonly displayName: _angular_core.Signal<string>;
242
- readonly hideName: _angular_core.Signal<boolean>;
243
256
  readonly loading: _angular_core.WritableSignal<boolean>;
244
257
  readonly attachments: _angular_core.WritableSignal<EntityAttachmentItemValue[]>;
245
258
  readonly attachmentReferences: _angular_core.Signal<AttachmentReference[]>;
@@ -266,7 +279,7 @@ declare class EntityAttachment {
266
279
  declare class EntityPreview {
267
280
  /** Single entity data to display */
268
281
  readonly data: _angular_core.InputSignal<EntityData>;
269
- readonly attachmentShape: _angular_core.InputSignal<"default" | "compact">;
282
+ readonly attachmentShape: _angular_core.InputSignal<"compact" | "default">;
270
283
  readonly previewType: _angular_core.Signal<"Text" | "LongText" | "Date" | "DateTime" | "Percentage" | "Status" | "Currency" | "Checkbox" | "User" | "Lookup" | "Attachment">;
271
284
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityPreview, never>;
272
285
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityPreview, "mt-entity-preview", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "attachmentShape": { "alias": "attachmentShape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -275,7 +288,7 @@ declare class EntityPreview {
275
288
  declare class EntitiesPreview {
276
289
  /** Array of entity data to display */
277
290
  readonly entities: _angular_core.InputSignal<EntityData[]>;
278
- readonly attachmentShape: _angular_core.InputSignal<"default" | "compact">;
291
+ readonly attachmentShape: _angular_core.InputSignal<"compact" | "default">;
279
292
  /** Entities sorted by order */
280
293
  readonly sortedEntities: _angular_core.Signal<EntityData[]>;
281
294
  /** Returns the grid-column span for a given entity size (1-24) */
@@ -350,5 +363,5 @@ declare class EntitiesManage extends EntitiesResizeBase {
350
363
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntitiesManage, "mt-entities-manage", never, { "entities": { "alias": "entities"; "required": true; "isSignal": true; }; }, { "entities": "entitiesChange"; "entitiesReordered": "entitiesReordered"; }, never, never, true, never>;
351
364
  }
352
365
 
353
- export { EntitiesManage, EntitiesPreview, EntitiesResizeBase, EntityAttachment, EntityCheckbox, EntityCurrency, EntityDate, EntityLongText, EntityLookup, EntityPercentage, EntityPreview, EntityStatus, EntityText, EntityUser };
354
- export type { EntityAttachmentItemValue, EntityAttachmentValue, EntityBaseConfig, EntityConfiguration, EntityData, EntityLookupValue, EntityPercentageConfig, EntityResizeEvent, EntitySize, EntityStatusValue, EntityUserConfig, EntityUserValue, EntityViewType };
366
+ export { EntitiesManage, EntitiesPreview, EntitiesResizeBase, EntityAttachment, EntityCheckbox, EntityCurrency, EntityDate, EntityField, EntityLongText, EntityLookup, EntityPercentage, EntityPreview, EntityStatus, EntityText, EntityUser };
367
+ export type { EntityAttachmentItemValue, EntityAttachmentValue, EntityBaseConfig, EntityConfiguration, EntityData, EntityLabelPosition, EntityLookupValue, EntityPercentageConfig, EntityResizeEvent, EntitySize, EntityStatusValue, EntityUserConfig, EntityUserValue, EntityViewType };
@@ -182,6 +182,8 @@ declare class Table {
182
182
  private buildStatusEntityData;
183
183
  private resolveStatusValue;
184
184
  private unwrapStatusValue;
185
+ private isEntityStatusCompatibilityColumn;
186
+ private isStatusColumnKey;
185
187
  private resolveStatusMapValue;
186
188
  private resolveDefaultStatusColor;
187
189
  private normalizeStatusToken;
@@ -220,7 +222,7 @@ declare class TableFilter implements ControlValueAccessor {
220
222
  private onTouched;
221
223
  protected filterableColumns: _angular_core.Signal<{
222
224
  filterConfig: {
223
- type: "boolean" | "text" | "select" | "date" | "user";
225
+ type: "boolean" | "text" | "date" | "user" | "select";
224
226
  label?: string;
225
227
  options?: FilterOption[];
226
228
  };
@@ -1,4 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
+ import { AfterViewInit } from '@angular/core';
2
3
  import * as i1 from 'primeng/tooltip';
3
4
 
4
5
  declare class Tooltip {
@@ -6,4 +7,20 @@ declare class Tooltip {
6
7
  static ɵdir: i0.ɵɵDirectiveDeclaration<Tooltip, "[mtTooltip]", never, {}, {}, never, never, true, [{ directive: typeof i1.Tooltip; inputs: { "pTooltip": "mtTooltip"; "tooltipPosition": "tooltipPosition"; "tooltipEvent": "tooltipEvent"; "appendTo": "appendTo"; "tooltipStyleClass": "tooltipStyleClass"; "escape": "escape"; "showDelay": "showDelay"; "hideDelay": "hideDelay"; "life": "life"; "positionTop": "positionTop"; "positionLeft": "positionLeft"; "autoHide": "autoHide"; "fitContent": "fitContent"; "hideOnEscape": "hideOnEscape"; "tooltipDisabled": "tooltipDisabled"; }; outputs: {}; }]>;
7
8
  }
8
9
 
9
- export { Tooltip };
10
+ declare class TruncateTooltip implements AfterViewInit {
11
+ private readonly elementRef;
12
+ private readonly zone;
13
+ private readonly destroyRef;
14
+ private readonly tooltip;
15
+ private resizeObserver?;
16
+ private mutationObserver?;
17
+ private syncTimeout;
18
+ ngAfterViewInit(): void;
19
+ syncTooltipState(): void;
20
+ private queueSync;
21
+ private syncTooltip;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<TruncateTooltip, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TruncateTooltip, "[mtTruncateTooltip]", never, {}, {}, never, never, true, [{ directive: typeof i1.Tooltip; inputs: { "tooltipPosition": "tooltipPosition"; "tooltipEvent": "tooltipEvent"; "appendTo": "appendTo"; "tooltipStyleClass": "tooltipStyleClass"; "escape": "escape"; "showDelay": "showDelay"; "hideDelay": "hideDelay"; "life": "life"; "positionTop": "positionTop"; "positionLeft": "positionLeft"; "autoHide": "autoHide"; "fitContent": "fitContent"; "hideOnEscape": "hideOnEscape"; }; outputs: {}; }]>;
24
+ }
25
+
26
+ export { Tooltip, TruncateTooltip };