@masterteam/components 0.0.135 → 0.0.137
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 +1 -0
- package/assets/i18n/en.json +1 -0
- package/fesm2022/masterteam-components-avatar-text.mjs +15 -15
- package/fesm2022/masterteam-components-avatar-text.mjs.map +1 -1
- package/fesm2022/masterteam-components-avatar.mjs +14 -14
- package/fesm2022/masterteam-components-avatar.mjs.map +1 -1
- package/fesm2022/masterteam-components-breadcrumb.mjs +6 -6
- package/fesm2022/masterteam-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/masterteam-components-business-fields.mjs +51 -51
- package/fesm2022/masterteam-components-business-fields.mjs.map +1 -1
- package/fesm2022/masterteam-components-button-group.mjs +3 -3
- package/fesm2022/masterteam-components-button.mjs +26 -26
- package/fesm2022/masterteam-components-button.mjs.map +1 -1
- package/fesm2022/masterteam-components-card.mjs +8 -8
- package/fesm2022/masterteam-components-card.mjs.map +1 -1
- package/fesm2022/masterteam-components-checkbox-field.mjs +12 -12
- package/fesm2022/masterteam-components-checkbox-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-chip.mjs +9 -9
- package/fesm2022/masterteam-components-chip.mjs.map +1 -1
- package/fesm2022/masterteam-components-client-page-menu.mjs +8 -8
- package/fesm2022/masterteam-components-client-page-menu.mjs.map +1 -1
- package/fesm2022/masterteam-components-client-page.mjs +19 -19
- package/fesm2022/masterteam-components-client-page.mjs.map +1 -1
- package/fesm2022/masterteam-components-color-picker-field.mjs +13 -13
- package/fesm2022/masterteam-components-color-picker-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-confirmation.mjs +7 -7
- package/fesm2022/masterteam-components-confirmation.mjs.map +1 -1
- package/fesm2022/masterteam-components-date-field.mjs +16 -16
- package/fesm2022/masterteam-components-date-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-dialog.mjs +3 -3
- package/fesm2022/masterteam-components-drawer.mjs +17 -17
- package/fesm2022/masterteam-components-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-dynamic-drawer.mjs +20 -20
- package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-editor-field.mjs +13 -13
- package/fesm2022/masterteam-components-editor-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-entities.mjs +140 -140
- package/fesm2022/masterteam-components-entities.mjs.map +1 -1
- package/fesm2022/masterteam-components-field-validation.mjs +8 -8
- package/fesm2022/masterteam-components-field-validation.mjs.map +1 -1
- package/fesm2022/masterteam-components-formula.mjs +190 -116
- package/fesm2022/masterteam-components-formula.mjs.map +1 -1
- package/fesm2022/masterteam-components-icon-field.mjs +6 -6
- package/fesm2022/masterteam-components-icon-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-list.mjs +8 -8
- package/fesm2022/masterteam-components-list.mjs.map +1 -1
- package/fesm2022/masterteam-components-menu.mjs +22 -22
- package/fesm2022/masterteam-components-menu.mjs.map +1 -1
- package/fesm2022/masterteam-components-modal.mjs +3 -3
- package/fesm2022/masterteam-components-module-summary-card.mjs +10 -10
- package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -1
- package/fesm2022/masterteam-components-multi-select-field.mjs +32 -32
- package/fesm2022/masterteam-components-multi-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-number-field.mjs +17 -17
- package/fesm2022/masterteam-components-number-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-page-header.mjs +16 -16
- package/fesm2022/masterteam-components-page-header.mjs.map +1 -1
- package/fesm2022/masterteam-components-page.mjs +16 -16
- package/fesm2022/masterteam-components-page.mjs.map +1 -1
- package/fesm2022/masterteam-components-paginator.mjs +13 -13
- package/fesm2022/masterteam-components-paginator.mjs.map +1 -1
- package/fesm2022/masterteam-components-pick-list-field.mjs +26 -26
- package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-progress.mjs +16 -16
- package/fesm2022/masterteam-components-progress.mjs.map +1 -1
- package/fesm2022/masterteam-components-property-filter-builder.mjs +17 -17
- package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-button-field.mjs +14 -14
- package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-cards-field.mjs +16 -16
- package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-cards.mjs +15 -15
- package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -1
- package/fesm2022/masterteam-components-select-field.mjs +34 -34
- package/fesm2022/masterteam-components-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-sidebar.mjs +13 -13
- package/fesm2022/masterteam-components-sidebar.mjs.map +1 -1
- package/fesm2022/masterteam-components-slider-field.mjs +41 -64
- package/fesm2022/masterteam-components-slider-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-statistic-card.mjs +5 -5
- package/fesm2022/masterteam-components-statistic-card.mjs.map +1 -1
- package/fesm2022/masterteam-components-table.mjs +66 -66
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/fesm2022/masterteam-components-tabs.mjs +10 -10
- package/fesm2022/masterteam-components-tabs.mjs.map +1 -1
- package/fesm2022/masterteam-components-text-field.mjs +17 -17
- package/fesm2022/masterteam-components-text-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-textarea-field.mjs +14 -14
- package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-toast.mjs +6 -6
- package/fesm2022/masterteam-components-toggle-field.mjs +19 -19
- package/fesm2022/masterteam-components-toggle-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-tooltip.mjs +6 -6
- package/fesm2022/masterteam-components-topbar.mjs +12 -12
- package/fesm2022/masterteam-components-topbar.mjs.map +1 -1
- package/fesm2022/masterteam-components-tree.mjs +31 -31
- package/fesm2022/masterteam-components-tree.mjs.map +1 -1
- package/fesm2022/masterteam-components-upload-field.mjs +62 -61
- package/fesm2022/masterteam-components-upload-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-user-search-field.mjs +49 -27
- package/fesm2022/masterteam-components-user-search-field.mjs.map +1 -1
- package/fesm2022/masterteam-components.mjs +7 -5
- package/fesm2022/masterteam-components.mjs.map +1 -1
- package/package.json +12 -11
- package/types/masterteam-components-formula.d.ts +7 -0
- package/types/masterteam-components-slider-field.d.ts +2 -15
- package/types/masterteam-components-upload-field.d.ts +1 -0
- package/types/masterteam-components-user-search-field.d.ts +8 -3
- package/types/masterteam-components.d.ts +2 -0
|
@@ -19,27 +19,27 @@ import { NumberField } from '@masterteam/components/number-field';
|
|
|
19
19
|
import { Table } from '@masterteam/components/table';
|
|
20
20
|
|
|
21
21
|
class LookupMatrixField {
|
|
22
|
-
config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
22
|
+
config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
|
|
23
23
|
controlContainer = inject(ControlContainer, {
|
|
24
24
|
optional: true,
|
|
25
25
|
});
|
|
26
26
|
destroyRef = inject(DestroyRef);
|
|
27
|
-
valueVersion = signal(0, ...(ngDevMode ? [{ debugName: "valueVersion" }] : []));
|
|
28
|
-
xOptions = computed(() => this.config().xOptions ?? [], ...(ngDevMode ? [{ debugName: "xOptions" }] : []));
|
|
29
|
-
yOptions = computed(() => this.config().yOptions ?? [], ...(ngDevMode ? [{ debugName: "yOptions" }] : []));
|
|
30
|
-
hasMatrix = computed(() => this.config().cells.length > 0, ...(ngDevMode ? [{ debugName: "hasMatrix" }] : []));
|
|
27
|
+
valueVersion = signal(0, ...(ngDevMode ? [{ debugName: "valueVersion" }] : /* istanbul ignore next */ []));
|
|
28
|
+
xOptions = computed(() => this.config().xOptions ?? [], ...(ngDevMode ? [{ debugName: "xOptions" }] : /* istanbul ignore next */ []));
|
|
29
|
+
yOptions = computed(() => this.config().yOptions ?? [], ...(ngDevMode ? [{ debugName: "yOptions" }] : /* istanbul ignore next */ []));
|
|
30
|
+
hasMatrix = computed(() => this.config().cells.length > 0, ...(ngDevMode ? [{ debugName: "hasMatrix" }] : /* istanbul ignore next */ []));
|
|
31
31
|
cellMap = computed(() => new Map(this.config().cells.map((cell) => [
|
|
32
32
|
this.cellKey(cell.xLookupItemId, cell.yLookupItemId),
|
|
33
33
|
cell,
|
|
34
|
-
])), ...(ngDevMode ? [{ debugName: "cellMap" }] : []));
|
|
34
|
+
])), ...(ngDevMode ? [{ debugName: "cellMap" }] : /* istanbul ignore next */ []));
|
|
35
35
|
selectedXOption = computed(() => {
|
|
36
36
|
this.valueVersion();
|
|
37
37
|
return this.resolveSelectedOption(this.xOptions(), this.getControlValue(this.config().xFieldKey));
|
|
38
|
-
}, ...(ngDevMode ? [{ debugName: "selectedXOption" }] : []));
|
|
38
|
+
}, ...(ngDevMode ? [{ debugName: "selectedXOption" }] : /* istanbul ignore next */ []));
|
|
39
39
|
selectedYOption = computed(() => {
|
|
40
40
|
this.valueVersion();
|
|
41
41
|
return this.resolveSelectedOption(this.yOptions(), this.getControlValue(this.config().yFieldKey));
|
|
42
|
-
}, ...(ngDevMode ? [{ debugName: "selectedYOption" }] : []));
|
|
42
|
+
}, ...(ngDevMode ? [{ debugName: "selectedYOption" }] : /* istanbul ignore next */ []));
|
|
43
43
|
activeCell = computed(() => {
|
|
44
44
|
const selectedX = this.selectedXOption();
|
|
45
45
|
const selectedY = this.selectedYOption();
|
|
@@ -47,7 +47,7 @@ class LookupMatrixField {
|
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
49
49
|
return this.getCell(selectedX.id ?? selectedX.value, selectedY.id ?? selectedY.value);
|
|
50
|
-
}, ...(ngDevMode ? [{ debugName: "activeCell" }] : []));
|
|
50
|
+
}, ...(ngDevMode ? [{ debugName: "activeCell" }] : /* istanbul ignore next */ []));
|
|
51
51
|
selectionSummary = computed(() => {
|
|
52
52
|
const parts = [];
|
|
53
53
|
const xAxisLabel = this.config().xAxisLabel.trim() || 'X';
|
|
@@ -61,18 +61,18 @@ class LookupMatrixField {
|
|
|
61
61
|
parts.push(`${yAxisLabel}: ${selectedY.label}`);
|
|
62
62
|
}
|
|
63
63
|
return parts.join(' / ');
|
|
64
|
-
}, ...(ngDevMode ? [{ debugName: "selectionSummary" }] : []));
|
|
64
|
+
}, ...(ngDevMode ? [{ debugName: "selectionSummary" }] : /* istanbul ignore next */ []));
|
|
65
65
|
pendingMessage = computed(() => {
|
|
66
66
|
const xAxisLabel = this.config().xAxisLabel.trim() || 'the first value';
|
|
67
67
|
const yAxisLabel = this.config().yAxisLabel.trim() || 'the second value';
|
|
68
68
|
return `Select ${xAxisLabel} and ${yAxisLabel} first.`;
|
|
69
|
-
}, ...(ngDevMode ? [{ debugName: "pendingMessage" }] : []));
|
|
69
|
+
}, ...(ngDevMode ? [{ debugName: "pendingMessage" }] : /* istanbul ignore next */ []));
|
|
70
70
|
missingResultMessage = computed(() => {
|
|
71
71
|
if (!this.selectedXOption() || !this.selectedYOption()) {
|
|
72
72
|
return this.pendingMessage();
|
|
73
73
|
}
|
|
74
74
|
return 'No matching value for the selected combination.';
|
|
75
|
-
}, ...(ngDevMode ? [{ debugName: "missingResultMessage" }] : []));
|
|
75
|
+
}, ...(ngDevMode ? [{ debugName: "missingResultMessage" }] : /* istanbul ignore next */ []));
|
|
76
76
|
constructor() {
|
|
77
77
|
const control = this.controlContainer?.control;
|
|
78
78
|
if (!control)
|
|
@@ -123,10 +123,10 @@ class LookupMatrixField {
|
|
|
123
123
|
}
|
|
124
124
|
return `var(--p-${color}-500)`;
|
|
125
125
|
}
|
|
126
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
127
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: LookupMatrixField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: LookupMatrixField, isStandalone: true, selector: "mt-lookup-matrix-field", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "grid gap-2" }, ngImport: i0, template: "@if (config().label) {\r\n <label class=\"text-sm font-medium text-color\">\r\n {{ config().label }}\r\n </label>\r\n}\r\n\r\n<div\r\n class=\"rounded-lg border border-surface-200 bg-surface-50 px-3 flex items-center\"\r\n>\r\n @if (activeCell(); as cell) {\r\n <div class=\"flex flex-1 min-h-6 items-center gap-2 justify-between\">\r\n <span\r\n class=\"h-6 w-2 shrink-0 rounded-[2px] border border-surface-200\"\r\n [ngStyle]=\"getSwatchStyle(cell.color)\"\r\n ></span>\r\n\r\n <div class=\"min-w-0 flex-1 py-2 flex items-center justify-between\">\r\n <div class=\"truncate font-semibold text-gray-500\">\r\n {{ cell.label }}\r\n </div>\r\n\r\n @if (selectionSummary()) {\r\n <div class=\"font-bold text-gray-500\">\r\n <mt-icon\r\n [mtTooltip]=\"selectionSummary()\"\r\n icon=\"general.info-circle\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"flex min-h-6 items-center text-muted-color py-2\">\r\n {{ hasMatrix() ? missingResultMessage() : config().emptyMessage }}\r\n </div>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
128
128
|
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: LookupMatrixField, decorators: [{
|
|
130
130
|
type: Component,
|
|
131
131
|
args: [{ selector: 'mt-lookup-matrix-field', standalone: true, imports: [CommonModule, Tooltip, Icon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
132
132
|
class: 'grid gap-2',
|
|
@@ -137,28 +137,28 @@ class SchemaConnectionField {
|
|
|
137
137
|
// ============================================================================
|
|
138
138
|
// Inputs
|
|
139
139
|
// ============================================================================
|
|
140
|
-
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
141
|
-
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
142
|
-
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
|
|
143
|
-
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
|
|
144
|
-
filter = input(true, ...(ngDevMode ? [{ debugName: "filter" }] : []));
|
|
140
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
141
|
+
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
142
|
+
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
143
|
+
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
144
|
+
filter = input(true, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
|
|
145
145
|
/**
|
|
146
146
|
* Full connection configuration object from the API.
|
|
147
147
|
* Includes `targetLevelId`, `sourceLevels[]`, `payloadTemplate`, etc.
|
|
148
148
|
*/
|
|
149
|
-
configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : []));
|
|
149
|
+
configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
|
|
150
150
|
/**
|
|
151
151
|
* Optional HttpContext for API requests (e.g. to set base URL behavior).
|
|
152
152
|
*/
|
|
153
|
-
context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : []));
|
|
153
|
+
context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
154
154
|
// ============================================================================
|
|
155
155
|
// Internal State
|
|
156
156
|
// ============================================================================
|
|
157
157
|
/** The full ConnectionPayload value */
|
|
158
|
-
value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
159
|
-
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
158
|
+
value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
159
|
+
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
160
160
|
/** Per-source-level state: options + loading */
|
|
161
|
-
sourceLevelStates = signal([], ...(ngDevMode ? [{ debugName: "sourceLevelStates" }] : []));
|
|
161
|
+
sourceLevelStates = signal([], ...(ngDevMode ? [{ debugName: "sourceLevelStates" }] : /* istanbul ignore next */ []));
|
|
162
162
|
/** Mutable selections per source level: sourceLevelId -> selected value */
|
|
163
163
|
selections = {};
|
|
164
164
|
requiredValidator = Validators.required;
|
|
@@ -172,7 +172,7 @@ class SchemaConnectionField {
|
|
|
172
172
|
*/
|
|
173
173
|
sourceLevels = computed(() => {
|
|
174
174
|
return this.configuration()?.sourceLevels ?? [];
|
|
175
|
-
}, ...(ngDevMode ? [{ debugName: "sourceLevels" }] : []));
|
|
175
|
+
}, ...(ngDevMode ? [{ debugName: "sourceLevels" }] : /* istanbul ignore next */ []));
|
|
176
176
|
/**
|
|
177
177
|
* Percentage width for each dropdown, evenly divided.
|
|
178
178
|
*/
|
|
@@ -181,7 +181,7 @@ class SchemaConnectionField {
|
|
|
181
181
|
if (count <= 0)
|
|
182
182
|
return '100%';
|
|
183
183
|
return `${100 / count}%`;
|
|
184
|
-
}, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : []));
|
|
184
|
+
}, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : /* istanbul ignore next */ []));
|
|
185
185
|
constructor() {
|
|
186
186
|
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
187
187
|
if (this.ngControl) {
|
|
@@ -348,10 +348,10 @@ class SchemaConnectionField {
|
|
|
348
348
|
setDisabledState(disabled) {
|
|
349
349
|
this.disabled.set(disabled);
|
|
350
350
|
}
|
|
351
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
352
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
351
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchemaConnectionField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
352
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SchemaConnectionField, isStandalone: true, selector: "mt-schema-connection-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, ngImport: i0, template: "<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track getSourceId(state.source)) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{\r\n state.source.name?.en ||\r\n state.source.levelKey ||\r\n state.source.moduleKey\r\n }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: MultiSelectField, selector: "mt-multi-select-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "display", "required", "maxSelectedLabels", "group", "optionGroupLabel", "optionGroupChildren", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
353
353
|
}
|
|
354
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
354
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchemaConnectionField, decorators: [{
|
|
355
355
|
type: Component,
|
|
356
356
|
args: [{ selector: 'mt-schema-connection-field', standalone: true, imports: [FormsModule, SelectField, MultiSelectField, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
357
357
|
class: 'grid gap-1',
|
|
@@ -374,31 +374,31 @@ class SchedulePredecessorField {
|
|
|
374
374
|
predecessorCellTpl = viewChild.required('predecessorCellTpl');
|
|
375
375
|
typeCellTpl = viewChild.required('typeCellTpl');
|
|
376
376
|
lagCellTpl = viewChild.required('lagCellTpl');
|
|
377
|
-
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
378
|
-
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
379
|
-
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
|
|
380
|
-
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
|
|
381
|
-
configuration = input(null, ...(ngDevMode ? [{ debugName: "configuration" }] : []));
|
|
382
|
-
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
|
|
383
|
-
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
384
|
-
taskOptions = signal([], ...(ngDevMode ? [{ debugName: "taskOptions" }] : []));
|
|
385
|
-
rows = signal([], ...(ngDevMode ? [{ debugName: "rows" }] : []));
|
|
386
|
-
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
377
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
378
|
+
placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
379
|
+
readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
380
|
+
required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
|
|
381
|
+
configuration = input(null, ...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
|
|
382
|
+
runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
|
|
383
|
+
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
384
|
+
taskOptions = signal([], ...(ngDevMode ? [{ debugName: "taskOptions" }] : /* istanbul ignore next */ []));
|
|
385
|
+
rows = signal([], ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
386
|
+
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
387
387
|
typeOptions = computed(() => [
|
|
388
388
|
{ label: 'FS', value: 0 },
|
|
389
389
|
{ label: 'SS', value: 1 },
|
|
390
390
|
{ label: 'FF', value: 2 },
|
|
391
391
|
{ label: 'SF', value: 3 },
|
|
392
|
-
], ...(ngDevMode ? [{ debugName: "typeOptions" }] : []));
|
|
392
|
+
], ...(ngDevMode ? [{ debugName: "typeOptions" }] : /* istanbul ignore next */ []));
|
|
393
393
|
availableTaskOptions = computed(() => {
|
|
394
394
|
const currentTaskId = this.runtimeContext()?.moduleDataId;
|
|
395
395
|
return this.taskOptions().filter((item) => String(item.value) !== String(currentTaskId ?? ''));
|
|
396
|
-
}, ...(ngDevMode ? [{ debugName: "availableTaskOptions" }] : []));
|
|
396
|
+
}, ...(ngDevMode ? [{ debugName: "availableTaskOptions" }] : /* istanbul ignore next */ []));
|
|
397
397
|
canAddRow = computed(() => !!this.runtimeContext()?.levelId &&
|
|
398
398
|
!!this.runtimeContext()?.levelDataId &&
|
|
399
|
-
this.availableTaskOptions().length > 0, ...(ngDevMode ? [{ debugName: "canAddRow" }] : []));
|
|
400
|
-
addTooltip = computed(() => this.canAddRow() ? undefined : this.texts().noAvailable, ...(ngDevMode ? [{ debugName: "addTooltip" }] : []));
|
|
401
|
-
pageSize = computed(() => this.rows().length > 0 ? this.rows().length : 1, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
|
|
399
|
+
this.availableTaskOptions().length > 0, ...(ngDevMode ? [{ debugName: "canAddRow" }] : /* istanbul ignore next */ []));
|
|
400
|
+
addTooltip = computed(() => this.canAddRow() ? undefined : this.texts().noAvailable, ...(ngDevMode ? [{ debugName: "addTooltip" }] : /* istanbul ignore next */ []));
|
|
401
|
+
pageSize = computed(() => this.rows().length > 0 ? this.rows().length : 1, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
|
|
402
402
|
columns = linkedSignal(() => [
|
|
403
403
|
{
|
|
404
404
|
key: 'predecessorId',
|
|
@@ -418,7 +418,7 @@ class SchedulePredecessorField {
|
|
|
418
418
|
type: 'custom',
|
|
419
419
|
customCellTpl: this.lagCellTpl(),
|
|
420
420
|
},
|
|
421
|
-
], ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
421
|
+
], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
422
422
|
rowActions = computed(() => [
|
|
423
423
|
{
|
|
424
424
|
icon: 'general.trash-01',
|
|
@@ -428,7 +428,7 @@ class SchedulePredecessorField {
|
|
|
428
428
|
hidden: () => this.disabled() || this.readonly(),
|
|
429
429
|
action: (row) => this.removeRow(row.key),
|
|
430
430
|
},
|
|
431
|
-
], ...(ngDevMode ? [{ debugName: "rowActions" }] : []));
|
|
431
|
+
], ...(ngDevMode ? [{ debugName: "rowActions" }] : /* istanbul ignore next */ []));
|
|
432
432
|
requiredValidator = Validators.required;
|
|
433
433
|
onTouched = () => { };
|
|
434
434
|
onModelChange = () => { };
|
|
@@ -449,7 +449,7 @@ class SchedulePredecessorField {
|
|
|
449
449
|
lagDays: this.transloco.translate('components.schedulePredecessorField.lagDays'),
|
|
450
450
|
delete: this.transloco.translate('components.schedulePredecessorField.delete'),
|
|
451
451
|
};
|
|
452
|
-
}, ...(ngDevMode ? [{ debugName: "texts" }] : []));
|
|
452
|
+
}, ...(ngDevMode ? [{ debugName: "texts" }] : /* istanbul ignore next */ []));
|
|
453
453
|
constructor() {
|
|
454
454
|
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
455
455
|
if (this.ngControl) {
|
|
@@ -590,10 +590,10 @@ class SchedulePredecessorField {
|
|
|
590
590
|
const lag = row.lagDays > 0 ? `+${row.lagDays}` : row.lagDays < 0 ? row.lagDays : '';
|
|
591
591
|
return `${row.predecessorId}${PREDECESSOR_TOKEN_BY_TYPE[row.type]}${lag}`;
|
|
592
592
|
}
|
|
593
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
594
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
593
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchedulePredecessorField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
594
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SchedulePredecessorField, isStandalone: true, selector: "mt-schedule-predecessor-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, viewQueries: [{ propertyName: "predecessorCellTpl", first: true, predicate: ["predecessorCellTpl"], descendants: true, isSignal: true }, { propertyName: "typeCellTpl", first: true, predicate: ["typeCellTpl"], descendants: true, isSignal: true }, { propertyName: "lagCellTpl", first: true, predicate: ["lagCellTpl"], descendants: true, isSignal: 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 >\r\n {{ label() }}\r\n </label>\r\n}\r\n\r\n<div class=\"grid gap-3\">\r\n <div class=\"flex items-center justify-end\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"'components.schedulePredecessorField.add' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [disabled]=\"disabled() || readonly() || !canAddRow()\"\r\n [tooltip]=\"addTooltip()\"\r\n (onClick)=\"addRow()\"\r\n />\r\n </div>\r\n\r\n <ng-template #predecessorCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"availableTaskOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [placeholder]=\"\r\n placeholder() ||\r\n ('components.schedulePredecessorField.selectPredecessor' | transloco)\r\n \"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [loading]=\"loading()\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.predecessorId || undefined\"\r\n (onChange)=\"updateRow(row.key, { predecessorId: $event ?? '' })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #typeCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"typeOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.type\"\r\n (onChange)=\"updateRow(row.key, { type: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #lagCellTpl let-row>\r\n <mt-number-field\r\n [field]=\"false\"\r\n [useGrouping]=\"false\"\r\n [placeholder]=\"'components.schedulePredecessorField.lagDays' | transloco\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.lagDays\"\r\n (ngModelChange)=\"updateRow(row.key, { lagDays: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [rowActions]=\"rowActions()\"\r\n [pageSize]=\"pageSize()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [dataKey]=\"'key'\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div\r\n class=\"rounded-xl border border-dashed border-surface px-4 py-5 text-sm text-muted-color\"\r\n >\r\n {{ \"components.schedulePredecessorField.empty\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "component", type: NumberField, selector: "mt-number-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "format", "useGrouping", "maxFractionDigits", "min", "max", "required"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "exportFilename", "actionShape", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i2.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
595
595
|
}
|
|
596
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
596
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchedulePredecessorField, decorators: [{
|
|
597
597
|
type: Component,
|
|
598
598
|
args: [{ selector: 'mt-schedule-predecessor-field', standalone: true, imports: [
|
|
599
599
|
CommonModule,
|