@masterteam/components 0.0.125 → 0.0.127

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.
Files changed (77) hide show
  1. package/assets/common.css +172 -2
  2. package/fesm2022/masterteam-components-entities.mjs +86 -27
  3. package/fesm2022/masterteam-components-entities.mjs.map +1 -1
  4. package/fesm2022/masterteam-components-table.mjs +27 -15
  5. package/fesm2022/masterteam-components-table.mjs.map +1 -1
  6. package/fesm2022/masterteam-components-tooltip.mjs +100 -2
  7. package/fesm2022/masterteam-components-tooltip.mjs.map +1 -1
  8. package/package.json +1 -1
  9. package/types/masterteam-components-entities.d.ts +26 -13
  10. package/types/masterteam-components-table.d.ts +2 -0
  11. package/types/masterteam-components-tooltip.d.ts +18 -1
  12. package/fesm2022/masterteam-components-dialog.mjs +0 -33
  13. package/fesm2022/masterteam-components-dialog.mjs.map +0 -1
  14. package/fesm2022/masterteam-components-dynamic-drawer.mjs +0 -321
  15. package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +0 -1
  16. package/fesm2022/masterteam-components-formula.mjs +0 -3116
  17. package/fesm2022/masterteam-components-formula.mjs.map +0 -1
  18. package/fesm2022/masterteam-components-icon-field.mjs +0 -63
  19. package/fesm2022/masterteam-components-icon-field.mjs.map +0 -1
  20. package/fesm2022/masterteam-components-list.mjs +0 -31
  21. package/fesm2022/masterteam-components-list.mjs.map +0 -1
  22. package/fesm2022/masterteam-components-menu.mjs +0 -135
  23. package/fesm2022/masterteam-components-menu.mjs.map +0 -1
  24. package/fesm2022/masterteam-components-modal.mjs +0 -50
  25. package/fesm2022/masterteam-components-modal.mjs.map +0 -1
  26. package/fesm2022/masterteam-components-module-summary-card.mjs +0 -32
  27. package/fesm2022/masterteam-components-module-summary-card.mjs.map +0 -1
  28. package/fesm2022/masterteam-components-page-header.mjs +0 -42
  29. package/fesm2022/masterteam-components-page-header.mjs.map +0 -1
  30. package/fesm2022/masterteam-components-page.mjs +0 -35
  31. package/fesm2022/masterteam-components-page.mjs.map +0 -1
  32. package/fesm2022/masterteam-components-pick-list-field.mjs +0 -204
  33. package/fesm2022/masterteam-components-pick-list-field.mjs.map +0 -1
  34. package/fesm2022/masterteam-components-property-filter-builder.mjs +0 -386
  35. package/fesm2022/masterteam-components-property-filter-builder.mjs.map +0 -1
  36. package/fesm2022/masterteam-components-radio-button-field.mjs +0 -85
  37. package/fesm2022/masterteam-components-radio-button-field.mjs.map +0 -1
  38. package/fesm2022/masterteam-components-radio-cards-field.mjs +0 -123
  39. package/fesm2022/masterteam-components-radio-cards-field.mjs.map +0 -1
  40. package/fesm2022/masterteam-components-radio-cards.mjs +0 -74
  41. package/fesm2022/masterteam-components-radio-cards.mjs.map +0 -1
  42. package/fesm2022/masterteam-components-sidebar.mjs +0 -36
  43. package/fesm2022/masterteam-components-sidebar.mjs.map +0 -1
  44. package/fesm2022/masterteam-components-slider-field.mjs +0 -104
  45. package/fesm2022/masterteam-components-slider-field.mjs.map +0 -1
  46. package/fesm2022/masterteam-components-statistic-card.mjs +0 -22
  47. package/fesm2022/masterteam-components-statistic-card.mjs.map +0 -1
  48. package/fesm2022/masterteam-components-textarea-field.mjs +0 -100
  49. package/fesm2022/masterteam-components-textarea-field.mjs.map +0 -1
  50. package/fesm2022/masterteam-components-toast.mjs +0 -75
  51. package/fesm2022/masterteam-components-toast.mjs.map +0 -1
  52. package/fesm2022/masterteam-components-topbar.mjs +0 -28
  53. package/fesm2022/masterteam-components-topbar.mjs.map +0 -1
  54. package/fesm2022/masterteam-components-tree.mjs +0 -219
  55. package/fesm2022/masterteam-components-tree.mjs.map +0 -1
  56. package/types/masterteam-components-dialog.d.ts +0 -12
  57. package/types/masterteam-components-dynamic-drawer.d.ts +0 -93
  58. package/types/masterteam-components-formula.d.ts +0 -654
  59. package/types/masterteam-components-icon-field.d.ts +0 -27
  60. package/types/masterteam-components-list.d.ts +0 -18
  61. package/types/masterteam-components-menu.d.ts +0 -55
  62. package/types/masterteam-components-modal.d.ts +0 -18
  63. package/types/masterteam-components-module-summary-card.d.ts +0 -17
  64. package/types/masterteam-components-page-header.d.ts +0 -30
  65. package/types/masterteam-components-page.d.ts +0 -26
  66. package/types/masterteam-components-pick-list-field.d.ts +0 -60
  67. package/types/masterteam-components-property-filter-builder.d.ts +0 -90
  68. package/types/masterteam-components-radio-button-field.d.ts +0 -41
  69. package/types/masterteam-components-radio-cards-field.d.ts +0 -34
  70. package/types/masterteam-components-radio-cards.d.ts +0 -33
  71. package/types/masterteam-components-sidebar.d.ts +0 -28
  72. package/types/masterteam-components-slider-field.d.ts +0 -45
  73. package/types/masterteam-components-statistic-card.d.ts +0 -18
  74. package/types/masterteam-components-textarea-field.d.ts +0 -38
  75. package/types/masterteam-components-toast.d.ts +0 -26
  76. package/types/masterteam-components-topbar.d.ts +0 -17
  77. package/types/masterteam-components-tree.d.ts +0 -98
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/components",
3
- "version": "0.0.125",
3
+ "version": "0.0.127",
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;
@@ -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 };
@@ -1,33 +0,0 @@
1
- import { DialogService as DialogService$1 } from 'primeng/dynamicdialog';
2
- export { DynamicDialogConfig, DynamicDialogRef, DynamicDialogRef as ModalRef } from 'primeng/dynamicdialog';
3
- import * as i0 from '@angular/core';
4
- import { Injectable } from '@angular/core';
5
-
6
- class DialogService extends DialogService$1 {
7
- ref;
8
- open(component, config) {
9
- const defaultConfig = {
10
- closable: true,
11
- modal: true,
12
- };
13
- this.ref = super.open(component, {
14
- ...defaultConfig,
15
- ...config,
16
- styleClass: 'mt-dialog ' + config?.styleClass,
17
- });
18
- return this.ref;
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DialogService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
21
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DialogService, providedIn: 'root' });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: DialogService, decorators: [{
24
- type: Injectable,
25
- args: [{ providedIn: 'root' }]
26
- }] });
27
-
28
- /**
29
- * Generated bundle index. Do not edit.
30
- */
31
-
32
- export { DialogService };
33
- //# sourceMappingURL=masterteam-components-dialog.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"masterteam-components-dialog.mjs","sources":["../../../../packages/masterteam/components/dialog/dialog.ts","../../../../packages/masterteam/components/dialog/masterteam-components-dialog.ts"],"sourcesContent":["import {\r\n DialogService as PrimeNGDialogService,\r\n DynamicDialogConfig,\r\n DynamicDialogRef,\r\n} from 'primeng/dynamicdialog';\r\nimport { Injectable } from '@angular/core';\r\nexport {\r\n DynamicDialogConfig,\r\n DynamicDialogRef as ModalRef,\r\n} from 'primeng/dynamicdialog';\r\nexport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService extends PrimeNGDialogService {\r\n ref: DynamicDialogRef | undefined | null;\r\n\r\n override open(component: any, config?: DynamicDialogConfig) {\r\n const defaultConfig = {\r\n closable: true,\r\n modal: true,\r\n };\r\n this.ref = super.open(component, {\r\n ...defaultConfig,\r\n ...config,\r\n styleClass: 'mt-dialog ' + config?.styleClass,\r\n });\r\n return this.ref;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PrimeNGDialogService"],"mappings":";;;;;AAaM,MAAO,aAAc,SAAQA,eAAoB,CAAA;AACrD,IAAA,GAAG;IAEM,IAAI,CAAC,SAAc,EAAE,MAA4B,EAAA;AACxD,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI;SACZ;QACD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,GAAG,aAAa;AAChB,YAAA,GAAG,MAAM;AACT,YAAA,UAAU,EAAE,YAAY,GAAG,MAAM,EAAE,UAAU;AAC9C,SAAA,CAAC;QACF,OAAO,IAAI,CAAC,GAAG;IACjB;uGAdW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACZlC;;AAEG;;;;"}