@masterteam/components 0.0.127 → 0.0.129

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 (68) hide show
  1. package/assets/common.css +2 -172
  2. package/fesm2022/masterteam-components-dialog.mjs +33 -0
  3. package/fesm2022/masterteam-components-dialog.mjs.map +1 -0
  4. package/fesm2022/masterteam-components-dynamic-drawer.mjs +321 -0
  5. package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -0
  6. package/fesm2022/masterteam-components-formula.mjs +3116 -0
  7. package/fesm2022/masterteam-components-formula.mjs.map +1 -0
  8. package/fesm2022/masterteam-components-icon-field.mjs +63 -0
  9. package/fesm2022/masterteam-components-icon-field.mjs.map +1 -0
  10. package/fesm2022/masterteam-components-list.mjs +31 -0
  11. package/fesm2022/masterteam-components-list.mjs.map +1 -0
  12. package/fesm2022/masterteam-components-menu.mjs +135 -0
  13. package/fesm2022/masterteam-components-menu.mjs.map +1 -0
  14. package/fesm2022/masterteam-components-modal.mjs +50 -0
  15. package/fesm2022/masterteam-components-modal.mjs.map +1 -0
  16. package/fesm2022/masterteam-components-module-summary-card.mjs +32 -0
  17. package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -0
  18. package/fesm2022/masterteam-components-page-header.mjs +42 -0
  19. package/fesm2022/masterteam-components-page-header.mjs.map +1 -0
  20. package/fesm2022/masterteam-components-page.mjs +35 -0
  21. package/fesm2022/masterteam-components-page.mjs.map +1 -0
  22. package/fesm2022/masterteam-components-pick-list-field.mjs +204 -0
  23. package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -0
  24. package/fesm2022/masterteam-components-property-filter-builder.mjs +386 -0
  25. package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -0
  26. package/fesm2022/masterteam-components-radio-button-field.mjs +85 -0
  27. package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -0
  28. package/fesm2022/masterteam-components-radio-cards-field.mjs +123 -0
  29. package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -0
  30. package/fesm2022/masterteam-components-radio-cards.mjs +74 -0
  31. package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -0
  32. package/fesm2022/masterteam-components-sidebar.mjs +36 -0
  33. package/fesm2022/masterteam-components-sidebar.mjs.map +1 -0
  34. package/fesm2022/masterteam-components-slider-field.mjs +104 -0
  35. package/fesm2022/masterteam-components-slider-field.mjs.map +1 -0
  36. package/fesm2022/masterteam-components-statistic-card.mjs +22 -0
  37. package/fesm2022/masterteam-components-statistic-card.mjs.map +1 -0
  38. package/fesm2022/masterteam-components-textarea-field.mjs +100 -0
  39. package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -0
  40. package/fesm2022/masterteam-components-toast.mjs +75 -0
  41. package/fesm2022/masterteam-components-toast.mjs.map +1 -0
  42. package/fesm2022/masterteam-components-topbar.mjs +28 -0
  43. package/fesm2022/masterteam-components-topbar.mjs.map +1 -0
  44. package/fesm2022/masterteam-components-tree.mjs +219 -0
  45. package/fesm2022/masterteam-components-tree.mjs.map +1 -0
  46. package/package.json +1 -1
  47. package/types/masterteam-components-dialog.d.ts +12 -0
  48. package/types/masterteam-components-dynamic-drawer.d.ts +93 -0
  49. package/types/masterteam-components-formula.d.ts +654 -0
  50. package/types/masterteam-components-icon-field.d.ts +27 -0
  51. package/types/masterteam-components-list.d.ts +18 -0
  52. package/types/masterteam-components-menu.d.ts +55 -0
  53. package/types/masterteam-components-modal.d.ts +18 -0
  54. package/types/masterteam-components-module-summary-card.d.ts +17 -0
  55. package/types/masterteam-components-page-header.d.ts +30 -0
  56. package/types/masterteam-components-page.d.ts +26 -0
  57. package/types/masterteam-components-pick-list-field.d.ts +60 -0
  58. package/types/masterteam-components-property-filter-builder.d.ts +90 -0
  59. package/types/masterteam-components-radio-button-field.d.ts +41 -0
  60. package/types/masterteam-components-radio-cards-field.d.ts +34 -0
  61. package/types/masterteam-components-radio-cards.d.ts +33 -0
  62. package/types/masterteam-components-sidebar.d.ts +28 -0
  63. package/types/masterteam-components-slider-field.d.ts +45 -0
  64. package/types/masterteam-components-statistic-card.d.ts +18 -0
  65. package/types/masterteam-components-textarea-field.d.ts +38 -0
  66. package/types/masterteam-components-toast.d.ts +26 -0
  67. package/types/masterteam-components-topbar.d.ts +17 -0
  68. package/types/masterteam-components-tree.d.ts +98 -0
@@ -0,0 +1,35 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, contentChild, viewChild, output, Component } from '@angular/core';
3
+ import { PageHeader } from '@masterteam/components/page-header';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+
6
+ class Page {
7
+ backButton = input(false, { ...(ngDevMode ? { debugName: "backButton" } : {}), transform: booleanAttribute });
8
+ backButtonIcon = input(...(ngDevMode ? [undefined, { debugName: "backButtonIcon" }] : []));
9
+ avatarIcon = input(...(ngDevMode ? [undefined, { debugName: "avatarIcon" }] : []));
10
+ avatarStyle = input(...(ngDevMode ? [undefined, { debugName: "avatarStyle" }] : []));
11
+ avatarShape = input(...(ngDevMode ? [undefined, { debugName: "avatarShape" }] : []));
12
+ title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
13
+ tabs = input([], ...(ngDevMode ? [{ debugName: "tabs" }] : []));
14
+ activeTab = input(...(ngDevMode ? [undefined, { debugName: "activeTab" }] : []));
15
+ contentClass = input('', ...(ngDevMode ? [{ debugName: "contentClass" }] : []));
16
+ contentId = input(...(ngDevMode ? [undefined, { debugName: "contentId" }] : []));
17
+ titleEnd = contentChild('titleEnd', ...(ngDevMode ? [{ debugName: "titleEnd" }] : []));
18
+ headerEnd = contentChild('headerEnd', ...(ngDevMode ? [{ debugName: "headerEnd" }] : []));
19
+ content = viewChild('content', ...(ngDevMode ? [{ debugName: "content" }] : []));
20
+ backButtonClick = output();
21
+ tabChange = output();
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Page, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: Page, isStandalone: true, selector: "mt-page", inputs: { backButton: { classPropertyName: "backButton", publicName: "backButton", isSignal: true, isRequired: false, transformFunction: null }, backButtonIcon: { classPropertyName: "backButtonIcon", publicName: "backButtonIcon", isSignal: true, isRequired: false, transformFunction: null }, avatarIcon: { classPropertyName: "avatarIcon", publicName: "avatarIcon", isSignal: true, isRequired: false, transformFunction: null }, avatarStyle: { classPropertyName: "avatarStyle", publicName: "avatarStyle", isSignal: true, isRequired: false, transformFunction: null }, avatarShape: { classPropertyName: "avatarShape", publicName: "avatarShape", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null }, contentClass: { classPropertyName: "contentClass", publicName: "contentClass", isSignal: true, isRequired: false, transformFunction: null }, contentId: { classPropertyName: "contentId", publicName: "contentId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backButtonClick: "backButtonClick", tabChange: "tabChange" }, queries: [{ propertyName: "titleEnd", first: true, predicate: ["titleEnd"], descendants: true, isSignal: true }, { propertyName: "headerEnd", first: true, predicate: ["headerEnd"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"page h-full flex flex-col\">\r\n <mt-page-header\r\n [backButton]=\"backButton()\"\r\n [backButtonIcon]=\"backButtonIcon()\"\r\n [avatarIcon]=\"avatarIcon()\"\r\n [avatarStyle]=\"avatarStyle()\"\r\n [avatarShape]=\"avatarShape()\"\r\n [title]=\"title()\"\r\n [tabs]=\"tabs()\"\r\n [activeTab]=\"activeTab()\"\r\n (backButtonClick)=\"backButtonClick.emit()\"\r\n (tabChange)=\"tabChange.emit($event)\"\r\n >\r\n @if (titleEnd(); as template) {\r\n <ng-template #titleEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerEnd(); as template) {\r\n <ng-template #headerEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n </mt-page-header>\r\n <div\r\n [class]=\"'flex-1 relative overflow-x-hidden '\"\r\n [id]=\"contentId() ?? 'page-content'\"\r\n >\r\n <div\r\n [class]=\"'h-full w-full overflow-y-auto p-5 ' + contentClass()\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "component", type: PageHeader, selector: "mt-page-header", inputs: ["backButton", "backButtonIcon", "avatarIcon", "avatarStyle", "avatarShape", "title", "tabs", "activeTab"], outputs: ["backButtonClick", "tabChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Page, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'mt-page', standalone: true, imports: [PageHeader, NgTemplateOutlet], template: "<div class=\"page h-full flex flex-col\">\r\n <mt-page-header\r\n [backButton]=\"backButton()\"\r\n [backButtonIcon]=\"backButtonIcon()\"\r\n [avatarIcon]=\"avatarIcon()\"\r\n [avatarStyle]=\"avatarStyle()\"\r\n [avatarShape]=\"avatarShape()\"\r\n [title]=\"title()\"\r\n [tabs]=\"tabs()\"\r\n [activeTab]=\"activeTab()\"\r\n (backButtonClick)=\"backButtonClick.emit()\"\r\n (tabChange)=\"tabChange.emit($event)\"\r\n >\r\n @if (titleEnd(); as template) {\r\n <ng-template #titleEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerEnd(); as template) {\r\n <ng-template #headerEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n </mt-page-header>\r\n <div\r\n [class]=\"'flex-1 relative overflow-x-hidden '\"\r\n [id]=\"contentId() ?? 'page-content'\"\r\n >\r\n <div\r\n [class]=\"'h-full w-full overflow-y-auto p-5 ' + contentClass()\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
28
+ }], propDecorators: { backButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "backButton", required: false }] }], backButtonIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "backButtonIcon", required: false }] }], avatarIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarIcon", required: false }] }], avatarStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarStyle", required: false }] }], avatarShape: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarShape", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }], contentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentClass", required: false }] }], contentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentId", required: false }] }], titleEnd: [{ type: i0.ContentChild, args: ['titleEnd', { isSignal: true }] }], headerEnd: [{ type: i0.ContentChild, args: ['headerEnd', { isSignal: true }] }], content: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], backButtonClick: [{ type: i0.Output, args: ["backButtonClick"] }], tabChange: [{ type: i0.Output, args: ["tabChange"] }] } });
29
+
30
+ /**
31
+ * Generated bundle index. Do not edit.
32
+ */
33
+
34
+ export { Page };
35
+ //# sourceMappingURL=masterteam-components-page.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-page.mjs","sources":["../../../../packages/masterteam/components/page/page.ts","../../../../packages/masterteam/components/page/page.html","../../../../packages/masterteam/components/page/masterteam-components-page.ts"],"sourcesContent":["import {\r\n Component,\r\n input,\r\n output,\r\n contentChild,\r\n TemplateRef,\r\n viewChild,\r\n ElementRef,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { PageHeader, PageHeaderTab } from '@masterteam/components/page-header';\r\nimport { MTIcon } from '@masterteam/icons';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'mt-page',\r\n standalone: true,\r\n imports: [PageHeader, NgTemplateOutlet],\r\n templateUrl: './page.html',\r\n})\r\nexport class Page {\r\n backButton = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n backButtonIcon = input<'arrow' | 'close'>();\r\n avatarIcon = input<MTIcon>();\r\n avatarStyle = input<Record<string, string>>();\r\n avatarShape = input<'circle' | 'square'>();\r\n title = input.required<string>();\r\n tabs = input<PageHeaderTab[]>([]);\r\n activeTab = input<string | number>();\r\n contentClass = input<string>('');\r\n contentId = input<string>();\r\n\r\n titleEnd = contentChild<TemplateRef<any>>('titleEnd');\r\n headerEnd = contentChild<TemplateRef<any>>('headerEnd');\r\n content = viewChild<ElementRef<HTMLElement>>('content');\r\n\r\n backButtonClick = output<void>();\r\n tabChange = output<string | number>();\r\n}\r\n","<div class=\"page h-full flex flex-col\">\r\n <mt-page-header\r\n [backButton]=\"backButton()\"\r\n [backButtonIcon]=\"backButtonIcon()\"\r\n [avatarIcon]=\"avatarIcon()\"\r\n [avatarStyle]=\"avatarStyle()\"\r\n [avatarShape]=\"avatarShape()\"\r\n [title]=\"title()\"\r\n [tabs]=\"tabs()\"\r\n [activeTab]=\"activeTab()\"\r\n (backButtonClick)=\"backButtonClick.emit()\"\r\n (tabChange)=\"tabChange.emit($event)\"\r\n >\r\n @if (titleEnd(); as template) {\r\n <ng-template #titleEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n\r\n @if (headerEnd(); as template) {\r\n <ng-template #headerEnd>\r\n <ng-container [ngTemplateOutlet]=\"template\" />\r\n </ng-template>\r\n }\r\n </mt-page-header>\r\n <div\r\n [class]=\"'flex-1 relative overflow-x-hidden '\"\r\n [id]=\"contentId() ?? 'page-content'\"\r\n >\r\n <div\r\n [class]=\"'h-full w-full overflow-y-auto p-5 ' + contentClass()\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, signal, inject, effect, ViewChild, HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { Validators, NgControl } from '@angular/forms';
4
+ import * as i1 from 'primeng/picklist';
5
+ import { PickListModule } from 'primeng/picklist';
6
+ import { FieldValidation } from '@masterteam/components/field-validation';
7
+ import { isInvalid } from '@masterteam/components';
8
+ import * as i2 from 'primeng/api';
9
+
10
+ class PickListField {
11
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
12
+ class = input('', ...(ngDevMode ? [{ debugName: "class" }] : []));
13
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
14
+ options = input([], ...(ngDevMode ? [{ debugName: "options" }] : []));
15
+ optionLabel = input('label', ...(ngDevMode ? [{ debugName: "optionLabel" }] : []));
16
+ optionValue = input('value', ...(ngDevMode ? [{ debugName: "optionValue" }] : []));
17
+ sourceHeader = input('Available', ...(ngDevMode ? [{ debugName: "sourceHeader" }] : []));
18
+ targetHeader = input('Selected', ...(ngDevMode ? [{ debugName: "targetHeader" }] : []));
19
+ showSourceControls = input(true, ...(ngDevMode ? [{ debugName: "showSourceControls" }] : []));
20
+ showTargetControls = input(true, ...(ngDevMode ? [{ debugName: "showTargetControls" }] : []));
21
+ showSourceFilter = input(false, ...(ngDevMode ? [{ debugName: "showSourceFilter" }] : []));
22
+ showTargetFilter = input(false, ...(ngDevMode ? [{ debugName: "showTargetFilter" }] : []));
23
+ filterBy = input(...(ngDevMode ? [undefined, { debugName: "filterBy" }] : []));
24
+ dataKey = input(...(ngDevMode ? [undefined, { debugName: "dataKey" }] : []));
25
+ filterLocale = input(...(ngDevMode ? [undefined, { debugName: "filterLocale" }] : []));
26
+ filterMatchMode = input('contains', ...(ngDevMode ? [{ debugName: "filterMatchMode" }] : []));
27
+ dragdrop = input(false, ...(ngDevMode ? [{ debugName: "dragdrop" }] : []));
28
+ responsive = input(true, ...(ngDevMode ? [{ debugName: "responsive" }] : []));
29
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
30
+ styleClass = '';
31
+ requiredValidator = Validators.required;
32
+ value = signal([], ...(ngDevMode ? [{ debugName: "value" }] : []));
33
+ targetItems = signal([], ...(ngDevMode ? [{ debugName: "targetItems" }] : []));
34
+ sourceItems = signal([], ...(ngDevMode ? [{ debugName: "sourceItems" }] : []));
35
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
36
+ onTouched = () => { };
37
+ onModelChange = () => { };
38
+ ngControl = inject(NgControl, { self: true });
39
+ isInvalid = isInvalid;
40
+ hasInitialized = false;
41
+ pickList;
42
+ constructor() {
43
+ if (this.ngControl) {
44
+ this.ngControl.valueAccessor = this;
45
+ }
46
+ effect(() => {
47
+ if (this.ngControl?.control && this.required()) {
48
+ this.ngControl.control.addValidators(Validators.required);
49
+ this.ngControl.control.updateValueAndValidity();
50
+ }
51
+ });
52
+ effect(() => {
53
+ this.options();
54
+ if (this.hasInitialized) {
55
+ this.syncLists();
56
+ }
57
+ });
58
+ }
59
+ ngOnInit() {
60
+ this.styleClass = this.class();
61
+ this.syncLists();
62
+ this.hasInitialized = true;
63
+ }
64
+ writeValue(value) {
65
+ const nextValue = Array.isArray(value)
66
+ ? [...value]
67
+ : value === null || value === undefined
68
+ ? []
69
+ : [value];
70
+ this.value.set(nextValue);
71
+ this.syncLists();
72
+ }
73
+ registerOnChange(fn) {
74
+ this.onModelChange = fn;
75
+ }
76
+ registerOnTouched(fn) {
77
+ this.onTouched = fn;
78
+ }
79
+ setDisabledState(disabled) {
80
+ this.disabled.set(disabled);
81
+ }
82
+ onInteractiveChange() {
83
+ this.syncFromPickList();
84
+ }
85
+ handleBlur() {
86
+ this.onTouched();
87
+ }
88
+ displayLabel(item) {
89
+ if (item === null || item === undefined) {
90
+ return '';
91
+ }
92
+ if (typeof item === 'string' || typeof item === 'number') {
93
+ return String(item);
94
+ }
95
+ const labelKey = this.optionLabel();
96
+ const nestedLabel = labelKey && labelKey.includes('.')
97
+ ? this.getNestedValue(item, labelKey)
98
+ : undefined;
99
+ if (nestedLabel !== undefined) {
100
+ return nestedLabel;
101
+ }
102
+ if (labelKey && item[labelKey] !== undefined) {
103
+ return item[labelKey];
104
+ }
105
+ return JSON.stringify(item);
106
+ }
107
+ getNestedValue(target, path) {
108
+ if (!target || !path) {
109
+ return undefined;
110
+ }
111
+ return path
112
+ .split('.')
113
+ .reduce((acc, key) => acc !== null && acc !== undefined ? acc[key] : undefined, target);
114
+ }
115
+ syncLists() {
116
+ const currentValue = this.value();
117
+ const targetOptions = this.normalizeValueToOptions(currentValue);
118
+ this.targetItems.set(targetOptions);
119
+ this.updateSourceFromTarget(targetOptions);
120
+ }
121
+ syncFromPickList() {
122
+ const pickListInstance = this.pickList;
123
+ if (!pickListInstance) {
124
+ return;
125
+ }
126
+ const currentTarget = [...(pickListInstance.target() ?? [])];
127
+ const currentSource = [...(pickListInstance.source() ?? [])];
128
+ this.targetItems.set(currentTarget);
129
+ this.sourceItems.set(currentSource);
130
+ const newValue = this.extractValues(currentTarget);
131
+ this.value.set(newValue);
132
+ this.onModelChange(newValue);
133
+ this.onTouched();
134
+ }
135
+ normalizeValueToOptions(value) {
136
+ if (!Array.isArray(value)) {
137
+ return [];
138
+ }
139
+ return value
140
+ .map((entry) => this.findOption(entry) ?? entry)
141
+ .filter((item) => item !== undefined && item !== null);
142
+ }
143
+ extractValues(items) {
144
+ const optionValueKey = this.optionValue();
145
+ if (!optionValueKey) {
146
+ return items ?? [];
147
+ }
148
+ const values = [];
149
+ (items ?? []).forEach((item) => {
150
+ if (item && typeof item === 'object') {
151
+ values.push(item[optionValueKey] ?? item);
152
+ }
153
+ else {
154
+ values.push(item);
155
+ }
156
+ });
157
+ return values;
158
+ }
159
+ updateSourceFromTarget(targetItems) {
160
+ const options = this.options() ?? [];
161
+ const targetIds = new Set((targetItems ?? []).map((item) => this.getIdentifier(item)));
162
+ const newSource = options.filter((option) => !targetIds.has(this.getIdentifier(option)));
163
+ this.sourceItems.set(newSource);
164
+ }
165
+ getIdentifier(item) {
166
+ if (item === null || item === undefined) {
167
+ return item;
168
+ }
169
+ const optionValueKey = this.optionValue();
170
+ if (!optionValueKey) {
171
+ return item;
172
+ }
173
+ if (typeof item === 'object') {
174
+ return item[optionValueKey];
175
+ }
176
+ return item;
177
+ }
178
+ findOption(entry) {
179
+ const options = this.options() ?? [];
180
+ const entryId = this.getIdentifier(entry);
181
+ return options.find((option) => this.getIdentifier(option) === entryId);
182
+ }
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: PickListField, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: PickListField, isStandalone: true, selector: "mt-pick-list-field", inputs: { label: { classPropertyName: "label", publicName: "label", 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 }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, sourceHeader: { classPropertyName: "sourceHeader", publicName: "sourceHeader", isSignal: true, isRequired: false, transformFunction: null }, targetHeader: { classPropertyName: "targetHeader", publicName: "targetHeader", isSignal: true, isRequired: false, transformFunction: null }, showSourceControls: { classPropertyName: "showSourceControls", publicName: "showSourceControls", isSignal: true, isRequired: false, transformFunction: null }, showTargetControls: { classPropertyName: "showTargetControls", publicName: "showTargetControls", isSignal: true, isRequired: false, transformFunction: null }, showSourceFilter: { classPropertyName: "showSourceFilter", publicName: "showSourceFilter", isSignal: true, isRequired: false, transformFunction: null }, showTargetFilter: { classPropertyName: "showTargetFilter", publicName: "showTargetFilter", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, filterLocale: { classPropertyName: "filterLocale", publicName: "filterLocale", isSignal: true, isRequired: false, transformFunction: null }, filterMatchMode: { classPropertyName: "filterMatchMode", publicName: "filterMatchMode", isSignal: true, isRequired: false, transformFunction: null }, dragdrop: { classPropertyName: "dragdrop", publicName: "dragdrop", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.styleClass" }, classAttribute: "grid gap-1" }, viewQueries: [{ propertyName: "pickList", first: true, predicate: ["pickList"], descendants: true }], ngImport: i0, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-pickList\r\n #pickList\r\n [source]=\"sourceItems()\"\r\n [target]=\"targetItems()\"\r\n (onMoveToTarget)=\"onInteractiveChange()\"\r\n (onMoveToSource)=\"onInteractiveChange()\"\r\n (onMoveAllToTarget)=\"onInteractiveChange()\"\r\n (onMoveAllToSource)=\"onInteractiveChange()\"\r\n (onTargetReorder)=\"onInteractiveChange()\"\r\n (onSourceReorder)=\"onInteractiveChange()\"\r\n (onBlur)=\"handleBlur()\"\r\n [filterBy]=\"filterBy() || optionLabel()\"\r\n [showSourceControls]=\"showSourceControls()\"\r\n [showTargetControls]=\"showTargetControls()\"\r\n [showSourceFilter]=\"showSourceFilter()\"\r\n [showTargetFilter]=\"showTargetFilter()\"\r\n [sourceHeader]=\"sourceHeader()\"\r\n [targetHeader]=\"targetHeader()\"\r\n [dragdrop]=\"dragdrop()\"\r\n [responsive]=\"responsive()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [styleClass]=\"'w-full relative'\"\r\n [class.p-invalid]=\"isInvalid(ngControl?.control)\"\r\n>\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ displayLabel(item) }}\r\n </ng-template>\r\n</p-pickList>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: PickListModule }, { kind: "component", type: i1.PickList, selector: "p-pickList, p-picklist, p-pick-list", inputs: ["hostName", "source", "target", "dataKey", "sourceHeader", "tabindex", "rightButtonAriaLabel", "leftButtonAriaLabel", "allRightButtonAriaLabel", "allLeftButtonAriaLabel", "upButtonAriaLabel", "downButtonAriaLabel", "topButtonAriaLabel", "bottomButtonAriaLabel", "sourceAriaLabel", "targetAriaLabel", "targetHeader", "responsive", "filterBy", "filterLocale", "trackBy", "sourceTrackBy", "targetTrackBy", "showSourceFilter", "showTargetFilter", "metaKeySelection", "dragdrop", "style", "styleClass", "sourceStyle", "targetStyle", "showSourceControls", "showTargetControls", "sourceFilterPlaceholder", "targetFilterPlaceholder", "disabled", "sourceOptionDisabled", "targetOptionDisabled", "ariaSourceFilterLabel", "ariaTargetFilterLabel", "filterMatchMode", "stripedRows", "keepSelection", "scrollHeight", "autoOptionFocus", "buttonProps", "moveUpButtonProps", "moveTopButtonProps", "moveDownButtonProps", "moveBottomButtonProps", "moveToTargetProps", "moveAllToTargetProps", "moveToSourceProps", "moveAllToSourceProps", "breakpoint"], outputs: ["sourceChange", "targetChange", "onMoveToSource", "onMoveAllToSource", "onMoveAllToTarget", "onMoveToTarget", "onSourceReorder", "onTargetReorder", "onSourceSelect", "onTargetSelect", "onSourceFilter", "onTargetFilter", "onFocus", "onBlur"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: PickListField, decorators: [{
187
+ type: Component,
188
+ args: [{ selector: 'mt-pick-list-field', imports: [PickListModule, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
189
+ class: 'grid gap-1',
190
+ }, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-pickList\r\n #pickList\r\n [source]=\"sourceItems()\"\r\n [target]=\"targetItems()\"\r\n (onMoveToTarget)=\"onInteractiveChange()\"\r\n (onMoveToSource)=\"onInteractiveChange()\"\r\n (onMoveAllToTarget)=\"onInteractiveChange()\"\r\n (onMoveAllToSource)=\"onInteractiveChange()\"\r\n (onTargetReorder)=\"onInteractiveChange()\"\r\n (onSourceReorder)=\"onInteractiveChange()\"\r\n (onBlur)=\"handleBlur()\"\r\n [filterBy]=\"filterBy() || optionLabel()\"\r\n [showSourceControls]=\"showSourceControls()\"\r\n [showTargetControls]=\"showTargetControls()\"\r\n [showSourceFilter]=\"showSourceFilter()\"\r\n [showTargetFilter]=\"showTargetFilter()\"\r\n [sourceHeader]=\"sourceHeader()\"\r\n [targetHeader]=\"targetHeader()\"\r\n [dragdrop]=\"dragdrop()\"\r\n [responsive]=\"responsive()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [styleClass]=\"'w-full relative'\"\r\n [class.p-invalid]=\"isInvalid(ngControl?.control)\"\r\n>\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ displayLabel(item) }}\r\n </ng-template>\r\n</p-pickList>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [":host{display:block}\n"] }]
191
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionLabel", required: false }] }], optionValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionValue", required: false }] }], sourceHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourceHeader", required: false }] }], targetHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetHeader", required: false }] }], showSourceControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSourceControls", required: false }] }], showTargetControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTargetControls", required: false }] }], showSourceFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSourceFilter", required: false }] }], showTargetFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTargetFilter", required: false }] }], filterBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBy", required: false }] }], dataKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataKey", required: false }] }], filterLocale: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterLocale", required: false }] }], filterMatchMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterMatchMode", required: false }] }], dragdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragdrop", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], styleClass: [{
192
+ type: HostBinding,
193
+ args: ['class']
194
+ }], pickList: [{
195
+ type: ViewChild,
196
+ args: ['pickList']
197
+ }] } });
198
+
199
+ /**
200
+ * Generated bundle index. Do not edit.
201
+ */
202
+
203
+ export { PickListField };
204
+ //# sourceMappingURL=masterteam-components-pick-list-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-components-pick-list-field.mjs","sources":["../../../../packages/masterteam/components/pick-list-field/pick-list-field.ts","../../../../packages/masterteam/components/pick-list-field/pick-list-field.html","../../../../packages/masterteam/components/pick-list-field/masterteam-components-pick-list-field.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n OnInit,\r\n ViewChild,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { PickList, PickListModule } from 'primeng/picklist';\r\nimport { FieldValidation } from '@masterteam/components/field-validation';\r\nimport { isInvalid } from '@masterteam/components';\r\n\r\n@Component({\r\n selector: 'mt-pick-list-field',\r\n templateUrl: './pick-list-field.html',\r\n styleUrls: ['./pick-list-field.scss'],\r\n imports: [PickListModule, FieldValidation],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'grid gap-1',\r\n },\r\n})\r\nexport class PickListField implements ControlValueAccessor, OnInit {\r\n readonly label = input<string>();\r\n readonly class = input<string>('');\r\n readonly readonly = input<boolean>(false);\r\n readonly options = input<any[]>([]);\r\n readonly optionLabel = input<string>('label');\r\n readonly optionValue = input<string>('value');\r\n readonly sourceHeader = input<string>('Available');\r\n readonly targetHeader = input<string>('Selected');\r\n readonly showSourceControls = input<boolean>(true);\r\n readonly showTargetControls = input<boolean>(true);\r\n readonly showSourceFilter = input<boolean>(false);\r\n readonly showTargetFilter = input<boolean>(false);\r\n readonly filterBy = input<string>();\r\n readonly dataKey = input<string>();\r\n readonly filterLocale = input<string>();\r\n readonly filterMatchMode = input<\r\n | 'contains'\r\n | 'startsWith'\r\n | 'endsWith'\r\n | 'equals'\r\n | 'notEquals'\r\n | 'in'\r\n | 'lt'\r\n | 'lte'\r\n | 'gt'\r\n | 'gte'\r\n | string\r\n >('contains');\r\n readonly dragdrop = input<boolean>(false);\r\n readonly responsive = input<boolean>(true);\r\n readonly required = input<boolean>(false);\r\n\r\n @HostBinding('class') styleClass: string = '';\r\n\r\n requiredValidator = Validators.required;\r\n value = signal<any[]>([]);\r\n targetItems = signal<any[]>([]);\r\n sourceItems = signal<any[]>([]);\r\n disabled = signal<boolean>(false);\r\n\r\n private onTouched: () => void = () => {};\r\n private onModelChange: (value: any) => void = () => {};\r\n\r\n public ngControl = inject(NgControl, { self: true });\r\n\r\n isInvalid = isInvalid;\r\n\r\n private hasInitialized = false;\r\n\r\n @ViewChild('pickList') pickList?: PickList;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n effect(() => {\r\n if (this.ngControl?.control && this.required()) {\r\n this.ngControl.control.addValidators(Validators.required);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n });\r\n effect(() => {\r\n this.options();\r\n if (this.hasInitialized) {\r\n this.syncLists();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.styleClass = this.class();\r\n this.syncLists();\r\n this.hasInitialized = true;\r\n }\r\n\r\n writeValue(value: any) {\r\n const nextValue = Array.isArray(value)\r\n ? [...value]\r\n : value === null || value === undefined\r\n ? []\r\n : [value];\r\n this.value.set(nextValue);\r\n this.syncLists();\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean) {\r\n this.disabled.set(disabled);\r\n }\r\n\r\n onInteractiveChange() {\r\n this.syncFromPickList();\r\n }\r\n\r\n handleBlur() {\r\n this.onTouched();\r\n }\r\n\r\n displayLabel(item: any): string {\r\n if (item === null || item === undefined) {\r\n return '';\r\n }\r\n if (typeof item === 'string' || typeof item === 'number') {\r\n return String(item);\r\n }\r\n const labelKey = this.optionLabel();\r\n const nestedLabel =\r\n labelKey && labelKey.includes('.')\r\n ? this.getNestedValue(item, labelKey)\r\n : undefined;\r\n if (nestedLabel !== undefined) {\r\n return nestedLabel;\r\n }\r\n if (labelKey && item[labelKey] !== undefined) {\r\n return item[labelKey];\r\n }\r\n return JSON.stringify(item);\r\n }\r\n\r\n private getNestedValue(target: any, path: string): any {\r\n if (!target || !path) {\r\n return undefined;\r\n }\r\n return path\r\n .split('.')\r\n .reduce(\r\n (acc, key) =>\r\n acc !== null && acc !== undefined ? acc[key] : undefined,\r\n target,\r\n );\r\n }\r\n\r\n private syncLists() {\r\n const currentValue = this.value();\r\n const targetOptions = this.normalizeValueToOptions(currentValue);\r\n this.targetItems.set(targetOptions);\r\n this.updateSourceFromTarget(targetOptions);\r\n }\r\n\r\n private syncFromPickList() {\r\n const pickListInstance = this.pickList;\r\n if (!pickListInstance) {\r\n return;\r\n }\r\n const currentTarget = [...(pickListInstance.target() ?? [])];\r\n const currentSource = [...(pickListInstance.source() ?? [])];\r\n this.targetItems.set(currentTarget);\r\n this.sourceItems.set(currentSource);\r\n\r\n const newValue = this.extractValues(currentTarget);\r\n this.value.set(newValue);\r\n this.onModelChange(newValue);\r\n this.onTouched();\r\n }\r\n\r\n private normalizeValueToOptions(value: any[]): any[] {\r\n if (!Array.isArray(value)) {\r\n return [];\r\n }\r\n return value\r\n .map((entry) => this.findOption(entry) ?? entry)\r\n .filter((item) => item !== undefined && item !== null);\r\n }\r\n\r\n private extractValues(items: any[]): any[] {\r\n const optionValueKey = this.optionValue();\r\n if (!optionValueKey) {\r\n return items ?? [];\r\n }\r\n const values: any[] = [];\r\n (items ?? []).forEach((item) => {\r\n if (item && typeof item === 'object') {\r\n values.push(item[optionValueKey] ?? item);\r\n } else {\r\n values.push(item);\r\n }\r\n });\r\n return values;\r\n }\r\n\r\n private updateSourceFromTarget(targetItems: any[]) {\r\n const options = this.options() ?? [];\r\n const targetIds = new Set(\r\n (targetItems ?? []).map((item) => this.getIdentifier(item)),\r\n );\r\n const newSource = options.filter(\r\n (option) => !targetIds.has(this.getIdentifier(option)),\r\n );\r\n this.sourceItems.set(newSource);\r\n }\r\n\r\n private getIdentifier(item: any): any {\r\n if (item === null || item === undefined) {\r\n return item;\r\n }\r\n const optionValueKey = this.optionValue();\r\n if (!optionValueKey) {\r\n return item;\r\n }\r\n if (typeof item === 'object') {\r\n return item[optionValueKey];\r\n }\r\n return item;\r\n }\r\n\r\n private findOption(entry: any): any | undefined {\r\n const options = this.options() ?? [];\r\n const entryId = this.getIdentifier(entry);\r\n return options.find((option) => this.getIdentifier(option) === entryId);\r\n }\r\n}\r\n","@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >{{ label() }}</label\r\n >\r\n}\r\n<p-pickList\r\n #pickList\r\n [source]=\"sourceItems()\"\r\n [target]=\"targetItems()\"\r\n (onMoveToTarget)=\"onInteractiveChange()\"\r\n (onMoveToSource)=\"onInteractiveChange()\"\r\n (onMoveAllToTarget)=\"onInteractiveChange()\"\r\n (onMoveAllToSource)=\"onInteractiveChange()\"\r\n (onTargetReorder)=\"onInteractiveChange()\"\r\n (onSourceReorder)=\"onInteractiveChange()\"\r\n (onBlur)=\"handleBlur()\"\r\n [filterBy]=\"filterBy() || optionLabel()\"\r\n [showSourceControls]=\"showSourceControls()\"\r\n [showTargetControls]=\"showTargetControls()\"\r\n [showSourceFilter]=\"showSourceFilter()\"\r\n [showTargetFilter]=\"showTargetFilter()\"\r\n [sourceHeader]=\"sourceHeader()\"\r\n [targetHeader]=\"targetHeader()\"\r\n [dragdrop]=\"dragdrop()\"\r\n [responsive]=\"responsive()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n [styleClass]=\"'w-full relative'\"\r\n [class.p-invalid]=\"isInvalid(ngControl?.control)\"\r\n>\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ displayLabel(item) }}\r\n </ng-template>\r\n</p-pickList>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}