@masterteam/components 0.0.174 → 0.0.176
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.
- package/assets/common.css +1 -1
- package/assets/i18n/ar.json +300 -282
- package/assets/i18n/en.json +300 -282
- package/fesm2022/masterteam-components-business-fields.mjs +50 -34
- package/fesm2022/masterteam-components-business-fields.mjs.map +1 -1
- package/fesm2022/masterteam-components-color-picker-field.mjs +2 -2
- package/fesm2022/masterteam-components-color-picker-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-drawer.mjs +8 -4
- package/fesm2022/masterteam-components-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-dynamic-drawer.mjs +1 -4
- package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-field-validation.mjs +21 -1
- package/fesm2022/masterteam-components-field-validation.mjs.map +1 -1
- package/fesm2022/masterteam-components-formula.mjs +20 -3
- package/fesm2022/masterteam-components-formula.mjs.map +1 -1
- package/fesm2022/masterteam-components-location-field.mjs +1 -1
- package/fesm2022/masterteam-components-location-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-property-filter-builder.mjs +1 -1
- package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -1
- package/fesm2022/masterteam-components-table.mjs +112 -24
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/fesm2022/masterteam-components-text-field.mjs +26 -7
- package/fesm2022/masterteam-components-text-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-textarea-field.mjs +27 -8
- package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-treeselect-field.mjs +265 -0
- package/fesm2022/masterteam-components-treeselect-field.mjs.map +1 -0
- package/fesm2022/masterteam-components-upload-field.mjs +16 -7
- package/fesm2022/masterteam-components-upload-field.mjs.map +1 -1
- package/fesm2022/masterteam-components.mjs +2 -2
- package/fesm2022/masterteam-components.mjs.map +1 -1
- package/package.json +5 -1
- package/types/masterteam-components-business-fields.d.ts +8 -5
- package/types/masterteam-components-drawer.d.ts +2 -0
- package/types/masterteam-components-dynamic-drawer.d.ts +0 -1
- package/types/masterteam-components-field-validation.d.ts +4 -2
- package/types/masterteam-components-formula.d.ts +4 -0
- package/types/masterteam-components-table.d.ts +13 -3
- package/types/masterteam-components-text-field.d.ts +3 -1
- package/types/masterteam-components-textarea-field.d.ts +4 -2
- package/types/masterteam-components-treeselect-field.d.ts +79 -0
- package/types/masterteam-components-upload-field.d.ts +3 -1
- package/types/masterteam-components.d.ts +5 -5
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { viewChild, input, EventEmitter, computed, signal, inject, effect, HostBinding, Output, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/forms';
|
|
4
|
+
import { Validators, NgControl, FormsModule } from '@angular/forms';
|
|
5
|
+
import { FieldValidation } from '@masterteam/components/field-validation';
|
|
6
|
+
import { isInvalid } from '@masterteam/components';
|
|
7
|
+
import { Tooltip } from '@masterteam/components/tooltip';
|
|
8
|
+
import { Icon } from '@masterteam/icons';
|
|
9
|
+
import { TreeSelect } from 'primeng/treeselect';
|
|
10
|
+
|
|
11
|
+
class TreeSelectField {
|
|
12
|
+
treeSelect = viewChild('treeSelect', ...(ngDevMode ? [{ debugName: "treeSelect" }] : /* istanbul ignore next */ []));
|
|
13
|
+
field = input(true, ...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
14
|
+
hint = input(...(ngDevMode ? [undefined, { debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
15
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
16
|
+
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
17
|
+
class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
18
|
+
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
19
|
+
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
20
|
+
pInputs = input(...(ngDevMode ? [undefined, { debugName: "pInputs" }] : /* istanbul ignore next */ []));
|
|
21
|
+
options = input(undefined, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
22
|
+
selectionMode = input('single', ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
|
|
23
|
+
display = input('comma', ...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
|
|
24
|
+
scrollHeight = input('20rem', ...(ngDevMode ? [{ debugName: "scrollHeight" }] : /* istanbul ignore next */ []));
|
|
25
|
+
panelStyleClass = input(undefined, ...(ngDevMode ? [{ debugName: "panelStyleClass" }] : /* istanbul ignore next */ []));
|
|
26
|
+
containerStyleClass = input(undefined, ...(ngDevMode ? [{ debugName: "containerStyleClass" }] : /* istanbul ignore next */ []));
|
|
27
|
+
overlayOptions = input(undefined, ...(ngDevMode ? [{ debugName: "overlayOptions" }] : /* istanbul ignore next */ []));
|
|
28
|
+
filter = input(false, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
|
|
29
|
+
filterBy = input('label', ...(ngDevMode ? [{ debugName: "filterBy" }] : /* istanbul ignore next */ []));
|
|
30
|
+
filterMode = input('lenient', ...(ngDevMode ? [{ debugName: "filterMode" }] : /* istanbul ignore next */ []));
|
|
31
|
+
filterPlaceholder = input(undefined, ...(ngDevMode ? [{ debugName: "filterPlaceholder" }] : /* istanbul ignore next */ []));
|
|
32
|
+
filterLocale = input(undefined, ...(ngDevMode ? [{ debugName: "filterLocale" }] : /* istanbul ignore next */ []));
|
|
33
|
+
filterInputAutoFocus = input(false, ...(ngDevMode ? [{ debugName: "filterInputAutoFocus" }] : /* istanbul ignore next */ []));
|
|
34
|
+
showClear = input(false, ...(ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []));
|
|
35
|
+
resetFilterOnHide = input(true, ...(ngDevMode ? [{ debugName: "resetFilterOnHide" }] : /* istanbul ignore next */ []));
|
|
36
|
+
propagateSelectionDown = input(true, ...(ngDevMode ? [{ debugName: "propagateSelectionDown" }] : /* istanbul ignore next */ []));
|
|
37
|
+
propagateSelectionUp = input(true, ...(ngDevMode ? [{ debugName: "propagateSelectionUp" }] : /* istanbul ignore next */ []));
|
|
38
|
+
virtualScroll = input(undefined, ...(ngDevMode ? [{ debugName: "virtualScroll" }] : /* istanbul ignore next */ []));
|
|
39
|
+
virtualScrollItemSize = input(undefined, ...(ngDevMode ? [{ debugName: "virtualScrollItemSize" }] : /* istanbul ignore next */ []));
|
|
40
|
+
loading = input(undefined, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
41
|
+
loadingMode = input('mask', ...(ngDevMode ? [{ debugName: "loadingMode" }] : /* istanbul ignore next */ []));
|
|
42
|
+
size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
43
|
+
variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
44
|
+
fluid = input(true, ...(ngDevMode ? [{ debugName: "fluid" }] : /* istanbul ignore next */ []));
|
|
45
|
+
appendTo = input('body', ...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
|
|
46
|
+
selectedLabelPath = input('data.pathLabel', ...(ngDevMode ? [{ debugName: "selectedLabelPath" }] : /* istanbul ignore next */ []));
|
|
47
|
+
onChange = new EventEmitter();
|
|
48
|
+
get hostClass() {
|
|
49
|
+
return ['grid gap-1', this.class()].filter(Boolean).join(' ');
|
|
50
|
+
}
|
|
51
|
+
inputId = computed(() => {
|
|
52
|
+
const name = this.ngControl?.name;
|
|
53
|
+
return name ? name.toString() : this.label() || undefined;
|
|
54
|
+
}, ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
|
|
55
|
+
resolvedValue = computed(() => this.resolveValue(this.value()), ...(ngDevMode ? [{ debugName: "resolvedValue" }] : /* istanbul ignore next */ []));
|
|
56
|
+
requiredValidator = Validators.required;
|
|
57
|
+
value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
58
|
+
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
59
|
+
isInvalid = isInvalid;
|
|
60
|
+
onTouched = () => { };
|
|
61
|
+
onModelChange = () => { };
|
|
62
|
+
ngControl;
|
|
63
|
+
constructor() {
|
|
64
|
+
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
65
|
+
if (this.ngControl) {
|
|
66
|
+
this.ngControl.valueAccessor = this;
|
|
67
|
+
}
|
|
68
|
+
effect(() => {
|
|
69
|
+
const control = this.ngControl?.control;
|
|
70
|
+
if (control && this.required()) {
|
|
71
|
+
control.addValidators(Validators.required);
|
|
72
|
+
control.updateValueAndValidity();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
effect(() => {
|
|
76
|
+
const treeSelect = this.treeSelect();
|
|
77
|
+
const pInputs = this.pInputs();
|
|
78
|
+
if (treeSelect && pInputs) {
|
|
79
|
+
Object.assign(treeSelect, pInputs);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
openTreeSelect() {
|
|
84
|
+
if (this.disabled() || this.readonly()) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.treeSelect()?.show();
|
|
88
|
+
}
|
|
89
|
+
onValueChange(value) {
|
|
90
|
+
this.value.set(value);
|
|
91
|
+
this.onModelChange(value);
|
|
92
|
+
this.onChange.emit(value);
|
|
93
|
+
}
|
|
94
|
+
getSelectionDisplayLabel() {
|
|
95
|
+
return this.readSelectionLabel(this.resolvedValue());
|
|
96
|
+
}
|
|
97
|
+
getContainerStyleClass() {
|
|
98
|
+
const classes = [
|
|
99
|
+
this.containerStyleClass(),
|
|
100
|
+
this.isInvalid(this.ngControl?.control ?? null) ? 'p-invalid' : '',
|
|
101
|
+
].filter((styleClass) => !!styleClass);
|
|
102
|
+
return classes.length > 0 ? classes.join(' ') : undefined;
|
|
103
|
+
}
|
|
104
|
+
writeValue(value) {
|
|
105
|
+
this.value.set(value ?? null);
|
|
106
|
+
}
|
|
107
|
+
registerOnChange(fn) {
|
|
108
|
+
this.onModelChange = fn;
|
|
109
|
+
}
|
|
110
|
+
registerOnTouched(fn) {
|
|
111
|
+
this.onTouched = fn;
|
|
112
|
+
}
|
|
113
|
+
setDisabledState(disabled) {
|
|
114
|
+
this.disabled.set(disabled);
|
|
115
|
+
}
|
|
116
|
+
resolveValue(value) {
|
|
117
|
+
if (value === null || value === undefined || value === '') {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
if (Array.isArray(value)) {
|
|
121
|
+
return value.map((item) => this.resolveSingleValue(item) ?? item);
|
|
122
|
+
}
|
|
123
|
+
if (this.isSelectionMap(value)) {
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
return this.resolveSingleValue(value) ?? value;
|
|
127
|
+
}
|
|
128
|
+
resolveSingleValue(value) {
|
|
129
|
+
const key = this.getTreeNodeKey(value);
|
|
130
|
+
if (!key) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
return this.findTreeNode(this.options(), key);
|
|
134
|
+
}
|
|
135
|
+
readSelectionLabel(value) {
|
|
136
|
+
if (value === null || value === undefined || value === '') {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
if (Array.isArray(value)) {
|
|
140
|
+
return this.joinLabels(value.map((item) => this.readSelectionLabel(item)));
|
|
141
|
+
}
|
|
142
|
+
if (this.isSelectionMap(value)) {
|
|
143
|
+
const labels = Object.entries(value)
|
|
144
|
+
.filter(([, entry]) => this.isSelectionEntrySelected(entry))
|
|
145
|
+
.map(([key]) => this.findTreeNode(this.options(), key))
|
|
146
|
+
.map((node) => (node ? this.readNodeLabel(node) : null));
|
|
147
|
+
return this.joinLabels(labels);
|
|
148
|
+
}
|
|
149
|
+
if (this.isTreeNodeValue(value)) {
|
|
150
|
+
return this.readNodeLabel(value);
|
|
151
|
+
}
|
|
152
|
+
const node = this.resolveSingleValue(value);
|
|
153
|
+
return node ? this.readNodeLabel(node) : String(value);
|
|
154
|
+
}
|
|
155
|
+
joinLabels(labels) {
|
|
156
|
+
const visibleLabels = labels.filter((label) => !!label && label.trim().length > 0);
|
|
157
|
+
return visibleLabels.length > 0 ? visibleLabels.join(', ') : null;
|
|
158
|
+
}
|
|
159
|
+
readNodeLabel(node) {
|
|
160
|
+
const selectedLabelPath = this.selectedLabelPath();
|
|
161
|
+
const configuredLabel = selectedLabelPath && this.resolveNestedValue(node, selectedLabelPath);
|
|
162
|
+
if (typeof configuredLabel === 'string' &&
|
|
163
|
+
configuredLabel.trim().length > 0) {
|
|
164
|
+
return configuredLabel.trim();
|
|
165
|
+
}
|
|
166
|
+
if (typeof node.label === 'string' && node.label.trim().length > 0) {
|
|
167
|
+
return node.label.trim();
|
|
168
|
+
}
|
|
169
|
+
return typeof node.key === 'string' && node.key.trim().length > 0
|
|
170
|
+
? node.key.trim()
|
|
171
|
+
: null;
|
|
172
|
+
}
|
|
173
|
+
findTreeNode(nodes, key) {
|
|
174
|
+
for (const node of nodes ?? []) {
|
|
175
|
+
if (this.getTreeNodeKey(node) === key) {
|
|
176
|
+
return node;
|
|
177
|
+
}
|
|
178
|
+
const match = this.findTreeNode(node.children, key);
|
|
179
|
+
if (match) {
|
|
180
|
+
return match;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
getTreeNodeKey(value) {
|
|
186
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
187
|
+
return value.trim();
|
|
188
|
+
}
|
|
189
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
const record = value;
|
|
193
|
+
const key = record['key'];
|
|
194
|
+
if (typeof key === 'string' && key.trim().length > 0) {
|
|
195
|
+
return key.trim();
|
|
196
|
+
}
|
|
197
|
+
const data = record['data'];
|
|
198
|
+
if (data && typeof data === 'object' && !Array.isArray(data)) {
|
|
199
|
+
const pathKey = data['pathKey'];
|
|
200
|
+
if (typeof pathKey === 'string' && pathKey.trim().length > 0) {
|
|
201
|
+
return pathKey.trim();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
isTreeNodeValue(value) {
|
|
207
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
const record = value;
|
|
211
|
+
return ('label' in record ||
|
|
212
|
+
'data' in record ||
|
|
213
|
+
'children' in record ||
|
|
214
|
+
'key' in record);
|
|
215
|
+
}
|
|
216
|
+
isSelectionMap(value) {
|
|
217
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
if (this.isTreeNodeValue(value)) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
return Object.values(value).some((entry) => this.isSelectionEntrySelected(entry));
|
|
224
|
+
}
|
|
225
|
+
isSelectionEntrySelected(entry) {
|
|
226
|
+
if (entry === true) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
return entry['checked'] === true;
|
|
233
|
+
}
|
|
234
|
+
resolveNestedValue(value, path) {
|
|
235
|
+
if (!path.includes('.')) {
|
|
236
|
+
return value && typeof value === 'object'
|
|
237
|
+
? value[path]
|
|
238
|
+
: undefined;
|
|
239
|
+
}
|
|
240
|
+
return path.split('.').reduce((current, key) => {
|
|
241
|
+
if (!current || typeof current !== 'object') {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
return current[key];
|
|
245
|
+
}, value);
|
|
246
|
+
}
|
|
247
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TreeSelectField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
248
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: TreeSelectField, isStandalone: true, selector: "mt-treeselect-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, pInputs: { classPropertyName: "pInputs", publicName: "pInputs", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, display: { classPropertyName: "display", publicName: "display", isSignal: true, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: true, isRequired: false, transformFunction: null }, panelStyleClass: { classPropertyName: "panelStyleClass", publicName: "panelStyleClass", isSignal: true, isRequired: false, transformFunction: null }, containerStyleClass: { classPropertyName: "containerStyleClass", publicName: "containerStyleClass", isSignal: true, isRequired: false, transformFunction: null }, overlayOptions: { classPropertyName: "overlayOptions", publicName: "overlayOptions", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, filterMode: { classPropertyName: "filterMode", publicName: "filterMode", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterInputAutoFocus: { classPropertyName: "filterInputAutoFocus", publicName: "filterInputAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, resetFilterOnHide: { classPropertyName: "resetFilterOnHide", publicName: "resetFilterOnHide", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollItemSize: { classPropertyName: "virtualScrollItemSize", publicName: "virtualScrollItemSize", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingMode: { classPropertyName: "loadingMode", publicName: "loadingMode", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, selectedLabelPath: { classPropertyName: "selectedLabelPath", publicName: "selectedLabelPath", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChange: "onChange" }, host: { properties: { "class": "this.hostClass" } }, viewQueries: [{ propertyName: "treeSelect", first: true, predicate: ["treeSelect"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label() || hint()) {\r\n <div class=\"flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"openTreeSelect()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"inputId()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n\r\n<p-treeselect\r\n #treeSelect\r\n [ngModel]=\"resolvedValue()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"inputId()\"\r\n [ariaLabel]=\"label() || placeholder() || undefined\"\r\n [options]=\"options()\"\r\n [placeholder]=\"placeholder() || label() || ''\"\r\n [selectionMode]=\"selectionMode()\"\r\n [display]=\"display()\"\r\n [scrollHeight]=\"scrollHeight()\"\r\n [panelStyleClass]=\"panelStyleClass()\"\r\n [containerStyleClass]=\"getContainerStyleClass()\"\r\n [overlayOptions]=\"overlayOptions()\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [filterLocale]=\"filterLocale()\"\r\n [filterInputAutoFocus]=\"filterInputAutoFocus()\"\r\n [showClear]=\"showClear()\"\r\n [resetFilterOnHide]=\"resetFilterOnHide()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [virtualScroll]=\"virtualScroll()\"\r\n [virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n [loading]=\"loading()\"\r\n [loadingMode]=\"loadingMode()\"\r\n [size]=\"size()\"\r\n [variant]=\"variant()\"\r\n [fluid]=\"fluid()\"\r\n [appendTo]=\"appendTo()\"\r\n>\r\n <ng-template #value>\r\n @if (getSelectionDisplayLabel(); as selectedLabel) {\r\n <span class=\"block truncate\">{{ selectedLabel }}</span>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n placeholder() || label() || \"\"\r\n }}</span>\r\n }\r\n </ng-template>\r\n</p-treeselect>\r\n\r\n@if (ngControl && field()) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TreeSelect, selector: "p-treeSelect, p-treeselect, p-tree-select", inputs: ["inputId", "scrollHeight", "metaKeySelection", "display", "selectionMode", "tabindex", "ariaLabel", "ariaLabelledBy", "placeholder", "panelClass", "panelStyle", "panelStyleClass", "containerStyle", "containerStyleClass", "labelStyle", "labelStyleClass", "overlayOptions", "emptyMessage", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "filterInputAutoFocus", "propagateSelectionDown", "propagateSelectionUp", "showClear", "resetFilterOnHide", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autofocus", "options", "loading", "loadingMode", "size", "variant", "fluid", "appendTo", "motionOptions"], outputs: ["onNodeExpand", "onNodeCollapse", "onShow", "onHide", "onClear", "onFilter", "onFocus", "onBlur", "onNodeUnselect", "onNodeSelect"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
249
|
+
}
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TreeSelectField, decorators: [{
|
|
251
|
+
type: Component,
|
|
252
|
+
args: [{ selector: 'mt-treeselect-field', standalone: true, imports: [FormsModule, TreeSelect, FieldValidation, Tooltip, Icon], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (label() || hint()) {\r\n <div class=\"flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"openTreeSelect()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"inputId()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n\r\n<p-treeselect\r\n #treeSelect\r\n [ngModel]=\"resolvedValue()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"inputId()\"\r\n [ariaLabel]=\"label() || placeholder() || undefined\"\r\n [options]=\"options()\"\r\n [placeholder]=\"placeholder() || label() || ''\"\r\n [selectionMode]=\"selectionMode()\"\r\n [display]=\"display()\"\r\n [scrollHeight]=\"scrollHeight()\"\r\n [panelStyleClass]=\"panelStyleClass()\"\r\n [containerStyleClass]=\"getContainerStyleClass()\"\r\n [overlayOptions]=\"overlayOptions()\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [filterLocale]=\"filterLocale()\"\r\n [filterInputAutoFocus]=\"filterInputAutoFocus()\"\r\n [showClear]=\"showClear()\"\r\n [resetFilterOnHide]=\"resetFilterOnHide()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [virtualScroll]=\"virtualScroll()\"\r\n [virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n [loading]=\"loading()\"\r\n [loadingMode]=\"loadingMode()\"\r\n [size]=\"size()\"\r\n [variant]=\"variant()\"\r\n [fluid]=\"fluid()\"\r\n [appendTo]=\"appendTo()\"\r\n>\r\n <ng-template #value>\r\n @if (getSelectionDisplayLabel(); as selectedLabel) {\r\n <span class=\"block truncate\">{{ selectedLabel }}</span>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n placeholder() || label() || \"\"\r\n }}</span>\r\n }\r\n </ng-template>\r\n</p-treeselect>\r\n\r\n@if (ngControl && field()) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n" }]
|
|
253
|
+
}], ctorParameters: () => [], propDecorators: { treeSelect: [{ type: i0.ViewChild, args: ['treeSelect', { isSignal: true }] }], field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], pInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "pInputs", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], display: [{ type: i0.Input, args: [{ isSignal: true, alias: "display", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], panelStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelStyleClass", required: false }] }], containerStyleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "containerStyleClass", required: false }] }], overlayOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayOptions", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], filterMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMode", required: false }] }], filterPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterPlaceholder", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterInputAutoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterInputAutoFocus", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], resetFilterOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetFilterOnHide", required: false }] }], propagateSelectionDown: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionDown", required: false }] }], propagateSelectionUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "propagateSelectionUp", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualScrollItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScrollItemSize", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingMode", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], selectedLabelPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedLabelPath", required: false }] }], onChange: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], hostClass: [{
|
|
256
|
+
type: HostBinding,
|
|
257
|
+
args: ['class']
|
|
258
|
+
}] } });
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Generated bundle index. Do not edit.
|
|
262
|
+
*/
|
|
263
|
+
|
|
264
|
+
export { TreeSelectField };
|
|
265
|
+
//# sourceMappingURL=masterteam-components-treeselect-field.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"masterteam-components-treeselect-field.mjs","sources":["../../../../packages/masterteam/components/treeselect-field/treeselect-field.ts","../../../../packages/masterteam/components/treeselect-field/treeselect-field.html","../../../../packages/masterteam/components/treeselect-field/masterteam-components-treeselect-field.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Output,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\nimport { Tooltip } from '@masterteam/components/tooltip';\r\nimport { Icon } from '@masterteam/icons';\r\nimport type { OverlayOptions, TreeNode } from 'primeng/api';\r\nimport { TreeSelect } from 'primeng/treeselect';\r\n\r\n@Component({\r\n selector: 'mt-treeselect-field',\r\n standalone: true,\r\n imports: [FormsModule, TreeSelect, FieldValidation, Tooltip, Icon],\r\n templateUrl: './treeselect-field.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TreeSelectField implements ControlValueAccessor {\r\n readonly treeSelect = viewChild<TreeSelect>('treeSelect');\r\n\r\n readonly field = input<boolean>(true);\r\n readonly hint = input<string>();\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string>('');\r\n readonly class = input<string>('');\r\n readonly readonly = input<boolean>(false);\r\n readonly required = input<boolean>(false);\r\n readonly pInputs = input<Partial<TreeSelect>>();\r\n\r\n readonly options = input<TreeNode[] | undefined>(undefined);\r\n readonly selectionMode = input<'single' | 'multiple' | 'checkbox'>('single');\r\n readonly display = input<'comma' | 'chip'>('comma');\r\n readonly scrollHeight = input<string>('20rem');\r\n readonly panelStyleClass = input<string | undefined>(undefined);\r\n readonly containerStyleClass = input<string | undefined>(undefined);\r\n readonly overlayOptions = input<OverlayOptions | undefined>(undefined);\r\n readonly filter = input<boolean>(false);\r\n readonly filterBy = input<string>('label');\r\n readonly filterMode = input<string>('lenient');\r\n readonly filterPlaceholder = input<string | undefined>(undefined);\r\n readonly filterLocale = input<string | undefined>(undefined);\r\n readonly filterInputAutoFocus = input<boolean>(false);\r\n readonly showClear = input<boolean>(false);\r\n readonly resetFilterOnHide = input<boolean>(true);\r\n readonly propagateSelectionDown = input<boolean>(true);\r\n readonly propagateSelectionUp = input<boolean>(true);\r\n readonly virtualScroll = input<boolean | undefined>(undefined);\r\n readonly virtualScrollItemSize = input<number | undefined>(undefined);\r\n readonly loading = input<boolean | undefined>(undefined);\r\n readonly loadingMode = input<'mask' | 'icon'>('mask');\r\n readonly size = input<'small' | 'large' | undefined>(undefined);\r\n readonly variant = input<'filled' | 'outlined' | undefined>(undefined);\r\n readonly fluid = input<boolean>(true);\r\n readonly appendTo = input<unknown>('body');\r\n\r\n readonly selectedLabelPath = input<string | undefined>('data.pathLabel');\r\n\r\n @Output() readonly onChange = new EventEmitter<unknown>();\r\n\r\n @HostBinding('class')\r\n protected get hostClass(): string {\r\n return ['grid gap-1', this.class()].filter(Boolean).join(' ');\r\n }\r\n\r\n protected readonly inputId = computed(() => {\r\n const name = this.ngControl?.name;\r\n return name ? name.toString() : this.label() || undefined;\r\n });\r\n\r\n protected readonly resolvedValue = computed(() =>\r\n this.resolveValue(this.value()),\r\n );\r\n\r\n protected readonly requiredValidator = Validators.required;\r\n protected readonly value = signal<unknown>(null);\r\n protected readonly disabled = signal<boolean>(false);\r\n protected readonly isInvalid = isInvalid;\r\n\r\n protected onTouched: () => void = () => {};\r\n private onModelChange: (value: unknown) => void = () => {};\r\n\r\n public readonly ngControl: NgControl | null;\r\n\r\n constructor() {\r\n this.ngControl = inject(NgControl, { self: true, optional: true });\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n effect(() => {\r\n const control = this.ngControl?.control;\r\n if (control && this.required()) {\r\n control.addValidators(Validators.required);\r\n control.updateValueAndValidity();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const treeSelect = this.treeSelect();\r\n const pInputs = this.pInputs();\r\n if (treeSelect && pInputs) {\r\n Object.assign(treeSelect, pInputs);\r\n }\r\n });\r\n }\r\n\r\n protected openTreeSelect(): void {\r\n if (this.disabled() || this.readonly()) {\r\n return;\r\n }\r\n\r\n this.treeSelect()?.show();\r\n }\r\n\r\n protected onValueChange(value: unknown): void {\r\n this.value.set(value);\r\n this.onModelChange(value);\r\n this.onChange.emit(value);\r\n }\r\n\r\n protected getSelectionDisplayLabel(): string | null {\r\n return this.readSelectionLabel(this.resolvedValue());\r\n }\r\n\r\n protected getContainerStyleClass(): string | undefined {\r\n const classes = [\r\n this.containerStyleClass(),\r\n this.isInvalid(this.ngControl?.control ?? null) ? 'p-invalid' : '',\r\n ].filter((styleClass): styleClass is string => !!styleClass);\r\n\r\n return classes.length > 0 ? classes.join(' ') : undefined;\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.value.set(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled.set(disabled);\r\n }\r\n\r\n private resolveValue(value: unknown): unknown {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((item) => this.resolveSingleValue(item) ?? item);\r\n }\r\n\r\n if (this.isSelectionMap(value)) {\r\n return value;\r\n }\r\n\r\n return this.resolveSingleValue(value) ?? value;\r\n }\r\n\r\n private resolveSingleValue(value: unknown): TreeNode | null {\r\n const key = this.getTreeNodeKey(value);\r\n if (!key) {\r\n return null;\r\n }\r\n\r\n return this.findTreeNode(this.options(), key);\r\n }\r\n\r\n private readSelectionLabel(value: unknown): string | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return this.joinLabels(\r\n value.map((item) => this.readSelectionLabel(item)),\r\n );\r\n }\r\n\r\n if (this.isSelectionMap(value)) {\r\n const labels = Object.entries(value)\r\n .filter(([, entry]) => this.isSelectionEntrySelected(entry))\r\n .map(([key]) => this.findTreeNode(this.options(), key))\r\n .map((node) => (node ? this.readNodeLabel(node) : null));\r\n\r\n return this.joinLabels(labels);\r\n }\r\n\r\n if (this.isTreeNodeValue(value)) {\r\n return this.readNodeLabel(value);\r\n }\r\n\r\n const node = this.resolveSingleValue(value);\r\n return node ? this.readNodeLabel(node) : String(value);\r\n }\r\n\r\n private joinLabels(labels: Array<string | null>): string | null {\r\n const visibleLabels = labels.filter(\r\n (label): label is string => !!label && label.trim().length > 0,\r\n );\r\n\r\n return visibleLabels.length > 0 ? visibleLabels.join(', ') : null;\r\n }\r\n\r\n private readNodeLabel(node: TreeNode): string | null {\r\n const selectedLabelPath = this.selectedLabelPath();\r\n const configuredLabel =\r\n selectedLabelPath && this.resolveNestedValue(node, selectedLabelPath);\r\n\r\n if (\r\n typeof configuredLabel === 'string' &&\r\n configuredLabel.trim().length > 0\r\n ) {\r\n return configuredLabel.trim();\r\n }\r\n\r\n if (typeof node.label === 'string' && node.label.trim().length > 0) {\r\n return node.label.trim();\r\n }\r\n\r\n return typeof node.key === 'string' && node.key.trim().length > 0\r\n ? node.key.trim()\r\n : null;\r\n }\r\n\r\n private findTreeNode(\r\n nodes: TreeNode[] | undefined,\r\n key: string,\r\n ): TreeNode | null {\r\n for (const node of nodes ?? []) {\r\n if (this.getTreeNodeKey(node) === key) {\r\n return node;\r\n }\r\n\r\n const match = this.findTreeNode(node.children, key);\r\n if (match) {\r\n return match;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getTreeNodeKey(value: unknown): string | null {\r\n if (typeof value === 'string' && value.trim().length > 0) {\r\n return value.trim();\r\n }\r\n\r\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\r\n return null;\r\n }\r\n\r\n const record = value as Record<string, unknown>;\r\n const key = record['key'];\r\n\r\n if (typeof key === 'string' && key.trim().length > 0) {\r\n return key.trim();\r\n }\r\n\r\n const data = record['data'];\r\n if (data && typeof data === 'object' && !Array.isArray(data)) {\r\n const pathKey = (data as Record<string, unknown>)['pathKey'];\r\n if (typeof pathKey === 'string' && pathKey.trim().length > 0) {\r\n return pathKey.trim();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isTreeNodeValue(value: unknown): value is TreeNode {\r\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n const record = value as Record<string, unknown>;\r\n return (\r\n 'label' in record ||\r\n 'data' in record ||\r\n 'children' in record ||\r\n 'key' in record\r\n );\r\n }\r\n\r\n private isSelectionMap(value: unknown): value is Record<string, unknown> {\r\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (this.isTreeNodeValue(value)) {\r\n return false;\r\n }\r\n\r\n return Object.values(value).some((entry) =>\r\n this.isSelectionEntrySelected(entry),\r\n );\r\n }\r\n\r\n private isSelectionEntrySelected(entry: unknown): boolean {\r\n if (entry === true) {\r\n return true;\r\n }\r\n\r\n if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\r\n return false;\r\n }\r\n\r\n return (entry as Record<string, unknown>)['checked'] === true;\r\n }\r\n\r\n private resolveNestedValue(value: unknown, path: string): unknown {\r\n if (!path.includes('.')) {\r\n return value && typeof value === 'object'\r\n ? (value as Record<string, unknown>)[path]\r\n : undefined;\r\n }\r\n\r\n return path.split('.').reduce<unknown>((current, key) => {\r\n if (!current || typeof current !== 'object') {\r\n return undefined;\r\n }\r\n\r\n return (current as Record<string, unknown>)[key];\r\n }, value);\r\n }\r\n}\r\n","@if (label() || hint()) {\r\n <div class=\"flex items-center gap-1\">\r\n @if (label()) {\r\n <label\r\n (click)=\"openTreeSelect()\"\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"inputId()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n @if (hint()) {\r\n <span\r\n class=\"inline-flex text-surface-400\"\r\n [mtTooltip]=\"hint()\"\r\n tooltipPosition=\"top\"\r\n >\r\n <mt-icon icon=\"general.help-circle\" />\r\n </span>\r\n }\r\n </div>\r\n}\r\n\r\n<p-treeselect\r\n #treeSelect\r\n [ngModel]=\"resolvedValue()\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onBlur)=\"onTouched()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [inputId]=\"inputId()\"\r\n [ariaLabel]=\"label() || placeholder() || undefined\"\r\n [options]=\"options()\"\r\n [placeholder]=\"placeholder() || label() || ''\"\r\n [selectionMode]=\"selectionMode()\"\r\n [display]=\"display()\"\r\n [scrollHeight]=\"scrollHeight()\"\r\n [panelStyleClass]=\"panelStyleClass()\"\r\n [containerStyleClass]=\"getContainerStyleClass()\"\r\n [overlayOptions]=\"overlayOptions()\"\r\n [filter]=\"filter()\"\r\n [filterBy]=\"filterBy()\"\r\n [filterMode]=\"filterMode()\"\r\n [filterPlaceholder]=\"filterPlaceholder()\"\r\n [filterLocale]=\"filterLocale()\"\r\n [filterInputAutoFocus]=\"filterInputAutoFocus()\"\r\n [showClear]=\"showClear()\"\r\n [resetFilterOnHide]=\"resetFilterOnHide()\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n [virtualScroll]=\"virtualScroll()\"\r\n [virtualScrollItemSize]=\"virtualScrollItemSize()\"\r\n [loading]=\"loading()\"\r\n [loadingMode]=\"loadingMode()\"\r\n [size]=\"size()\"\r\n [variant]=\"variant()\"\r\n [fluid]=\"fluid()\"\r\n [appendTo]=\"appendTo()\"\r\n>\r\n <ng-template #value>\r\n @if (getSelectionDisplayLabel(); as selectedLabel) {\r\n <span class=\"block truncate\">{{ selectedLabel }}</span>\r\n } @else {\r\n <span class=\"text-color-secondary\">{{\r\n placeholder() || label() || \"\"\r\n }}</span>\r\n }\r\n </ng-template>\r\n</p-treeselect>\r\n\r\n@if (ngControl && field()) {\r\n <mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|