@masterteam/work-center 0.0.72 → 0.0.73
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/i18n/ar.json +197 -197
- package/assets/i18n/en.json +197 -197
- package/fesm2022/masterteam-work-center.mjs +4 -4
- package/fesm2022/masterteam-work-center.mjs.map +1 -1
- package/package.json +6 -6
package/assets/i18n/en.json
CHANGED
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
{
|
|
2
|
-
"workCenter": {
|
|
3
|
-
"page": {
|
|
4
|
-
"title": "Work Center",
|
|
5
|
-
"new": "New",
|
|
6
|
-
"create": "Create",
|
|
7
|
-
"createGeneralTask": "Create General Task",
|
|
8
|
-
"itemDetails": "Item Details",
|
|
9
|
-
"records": "records"
|
|
10
|
-
},
|
|
11
|
-
"operator": {
|
|
12
|
-
"Eq": "Equals",
|
|
13
|
-
"Neq": "Not equal",
|
|
14
|
-
"In": "In",
|
|
15
|
-
"Contains": "Contains",
|
|
16
|
-
"StartsWith": "Starts with",
|
|
17
|
-
"Gt": "Greater than",
|
|
18
|
-
"Gte": "Greater than or equal",
|
|
19
|
-
"Lt": "Less than",
|
|
20
|
-
"Lte": "Less than or equal",
|
|
21
|
-
"Between": "Between",
|
|
22
|
-
"IsNull": "Is empty",
|
|
23
|
-
"IsNotNull": "Is not empty"
|
|
24
|
-
},
|
|
25
|
-
"tabs": {
|
|
26
|
-
"details": "Details",
|
|
27
|
-
"form": "Form",
|
|
28
|
-
"approvals": "Approvals",
|
|
29
|
-
"steps": "Steps",
|
|
30
|
-
"discussion": "Discussion",
|
|
31
|
-
"requestDetails": "Request Details",
|
|
32
|
-
"escalationDetails": "Escalation Details",
|
|
33
|
-
"moduleDetails": "Module Details",
|
|
34
|
-
"levelDetails": "Level Details",
|
|
35
|
-
"levelDetailsNamed": "{{ name }} Details",
|
|
36
|
-
"schema": "Schema",
|
|
37
|
-
"publishComparison": "Comparison"
|
|
38
|
-
},
|
|
39
|
-
"entity": {
|
|
40
|
-
"initiatedBy": "Initiated By",
|
|
41
|
-
"startedAt": "Started At",
|
|
42
|
-
"reason": "Reason",
|
|
43
|
-
"attachments": "Attachments",
|
|
44
|
-
"step": "Step"
|
|
45
|
-
},
|
|
46
|
-
"modal": {
|
|
47
|
-
"cancel": "Cancel",
|
|
48
|
-
"submit": "Submit",
|
|
49
|
-
"confirmAction": "Confirm {{ action }} for this item.",
|
|
50
|
-
"previewLevel": "Preview Level",
|
|
51
|
-
"previewModule": "Preview {{ module }}",
|
|
52
|
-
"loadingActions": "Loading actions...",
|
|
53
|
-
"submitting": "Submitting...",
|
|
54
|
-
"requestSubmitted": "Request submitted for approval.",
|
|
55
|
-
"operationExecuted": "Operation executed successfully.",
|
|
56
|
-
"unsupportedType": "This item type is not supported yet.",
|
|
57
|
-
"noItemSelected": "No item selected."
|
|
58
|
-
},
|
|
59
|
-
"validation": {
|
|
60
|
-
"fillRequiredFields": "Please fill in all required fields before submitting."
|
|
61
|
-
},
|
|
62
|
-
"actions": {
|
|
63
|
-
"loadActionsFailed": "Failed to load item actions.",
|
|
64
|
-
"executeFailed": "Failed to execute {{ action }}.",
|
|
65
|
-
"validationWarningsHeader": "Validation warnings",
|
|
66
|
-
"validationWarningsQuestion": "Do you want to acknowledge these warnings and continue?",
|
|
67
|
-
"acknowledgeAndContinue": "Acknowledge and continue"
|
|
68
|
-
},
|
|
69
|
-
"error": {
|
|
70
|
-
"failedSubmit": "Failed to submit form",
|
|
71
|
-
"failedLoadDetails": "Failed to load item details.",
|
|
72
|
-
"failedLoadEscalation": "Failed to load escalation preview",
|
|
73
|
-
"missingModuleDataId": "Task data id is missing.",
|
|
74
|
-
"failedLoadSchedulePublish": "Failed to load the plan comparison"
|
|
75
|
-
},
|
|
76
|
-
"context": {
|
|
77
|
-
"moduleFormUnavailable": "Module form context is not available for this item yet.",
|
|
78
|
-
"moduleDiscussionUnavailable": "Discussion context is not available for this module yet.",
|
|
79
|
-
"processFormUnavailable": "Process form context is not available for this process item yet.",
|
|
80
|
-
"processDiscussionUnavailable": "Discussion context is not available for this process item yet.",
|
|
81
|
-
"processPreviewUnavailable": "Process preview is not available for this process item yet.",
|
|
82
|
-
"escalationDetailsUnavailable": "Escalation details context is not available for this item yet.",
|
|
83
|
-
"escalationDiscussionUnavailable": "Discussion context is not available for this escalation yet.",
|
|
84
|
-
"escalationSchemaUnavailable": "Escalation schema is not available for this item yet.",
|
|
85
|
-
"escalationSchemaContextUnavailable": "Escalation schema context is not available for this item yet.",
|
|
86
|
-
"requestFormUnavailable": "Process form context is not available for this process request yet.",
|
|
87
|
-
"requestDiscussionUnavailable": "Discussion context is not available for this process request yet.",
|
|
88
|
-
"requestPreviewUnavailable": "Process preview is not available for this process request yet."
|
|
89
|
-
},
|
|
90
|
-
"loading": {
|
|
91
|
-
"escalationDetails": "Loading escalation details...",
|
|
92
|
-
"escalationSchema": "Loading escalation schema...",
|
|
93
|
-
"schedulePublish": "Loading the plan comparison..."
|
|
94
|
-
},
|
|
95
|
-
"preview": {
|
|
96
|
-
"name": "Name",
|
|
97
|
-
"status": "Status",
|
|
98
|
-
"user": "User",
|
|
99
|
-
"userOrGroup": "User / Group",
|
|
100
|
-
"initiationDate": "Initiation Date",
|
|
101
|
-
"actionDate": "Action Date",
|
|
102
|
-
"start": "Start",
|
|
103
|
-
"end": "End",
|
|
104
|
-
"appAction": "App Action",
|
|
105
|
-
"formStep": "Form Step",
|
|
106
|
-
"approvalCommit": "Commit Approved Form",
|
|
107
|
-
"approvalCommitSubtitle": "System · Locked",
|
|
108
|
-
"initial": "Initial",
|
|
109
|
-
"final": "Final",
|
|
110
|
-
"loadFailed": "Failed to load process preview"
|
|
111
|
-
},
|
|
112
|
-
"field": {
|
|
113
|
-
"progress": "Progress",
|
|
114
|
-
"delegatedUser": "Delegated User",
|
|
115
|
-
"delegatedUserPlaceholder": "Search user",
|
|
116
|
-
"reason": "Reason",
|
|
117
|
-
"reasonPlaceholder": "Enter reason",
|
|
118
|
-
"note": "Note",
|
|
119
|
-
"notePlaceholder": "Enter note",
|
|
120
|
-
"attachments": "Attachments",
|
|
121
|
-
"uploadTitle": "Upload Attachment",
|
|
122
|
-
"uploadDescription": "Click or drop a file to upload"
|
|
123
|
-
},
|
|
124
|
-
"publish": {
|
|
125
|
-
"before": "Before",
|
|
126
|
-
"after": "After",
|
|
127
|
-
"neverPublished": "This project has not published a plan yet, so there is nothing to compare against. Approving publishes the plan as it currently stands.",
|
|
128
|
-
"nothingToPublish": "The plan has not changed since it was last published.",
|
|
129
|
-
"noSearchResults": "No rows match your search.",
|
|
130
|
-
"searchPlaceholder": "Search by task name or changed field",
|
|
131
|
-
"addedCount": "{{count}} added",
|
|
132
|
-
"changedCount": "{{count}} changed",
|
|
133
|
-
"removedCount": "{{count}} removed",
|
|
134
|
-
"hiddenRows": "{{count}} more rows not shown. Narrow the list with search to see them.",
|
|
135
|
-
"group": {
|
|
136
|
-
"added": "Added",
|
|
137
|
-
"changed": "Changed",
|
|
138
|
-
"removed": "Removed"
|
|
139
|
-
},
|
|
140
|
-
"field": {
|
|
141
|
-
"name": "Name",
|
|
142
|
-
"type": "Type",
|
|
143
|
-
"plannedStart": "Planned start",
|
|
144
|
-
"plannedFinish": "Planned finish",
|
|
145
|
-
"actualStart": "Actual start",
|
|
146
|
-
"actualFinish": "Actual finish",
|
|
147
|
-
"progress": "Progress",
|
|
148
|
-
"weight": "Weight",
|
|
149
|
-
"assignedTo": "Assigned to",
|
|
150
|
-
"predecessors": "Predecessors",
|
|
151
|
-
"parent": "Parent",
|
|
152
|
-
"order": "Order",
|
|
153
|
-
"mode": "Scheduling mode",
|
|
154
|
-
"resources": "Resources",
|
|
155
|
-
"details": "Details"
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
"runtimeAction": {
|
|
160
|
-
"field": {
|
|
161
|
-
"progress": "Progress",
|
|
162
|
-
"delegatedUser": "Delegated User",
|
|
163
|
-
"delegatedUserPlaceholder": "Search user",
|
|
164
|
-
"reason": "Reason",
|
|
165
|
-
"reasonPlaceholder": "Enter reason",
|
|
166
|
-
"note": "Note",
|
|
167
|
-
"notePlaceholder": "Enter note",
|
|
168
|
-
"attachments": "Attachments",
|
|
169
|
-
"uploadTitle": "Upload Attachment",
|
|
170
|
-
"uploadDescription": "Click or drop a file to upload"
|
|
171
|
-
},
|
|
172
|
-
"modal": {
|
|
173
|
-
"cancel": "Cancel",
|
|
174
|
-
"confirmAction": "Confirm {{ action }} for this item."
|
|
175
|
-
},
|
|
176
|
-
"preview": {
|
|
177
|
-
"name": "Name",
|
|
178
|
-
"status": "Status",
|
|
179
|
-
"user": "User",
|
|
180
|
-
"userOrGroup": "User / Group",
|
|
181
|
-
"initiationDate": "Initiation Date",
|
|
182
|
-
"actionDate": "Action Date",
|
|
183
|
-
"start": "Start",
|
|
184
|
-
"end": "End",
|
|
185
|
-
"appAction": "App Action",
|
|
186
|
-
"formStep": "Form Step",
|
|
187
|
-
"approvalCommit": "Commit Approved Form",
|
|
188
|
-
"approvalCommitSubtitle": "System · Locked",
|
|
189
|
-
"initial": "Initial",
|
|
190
|
-
"final": "Final",
|
|
191
|
-
"loadFailed": "Failed to load process preview"
|
|
192
|
-
},
|
|
193
|
-
"actions": {
|
|
194
|
-
"loadActionsFailed": "Failed to load item actions."
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"workCenter": {
|
|
3
|
+
"page": {
|
|
4
|
+
"title": "Work Center",
|
|
5
|
+
"new": "New",
|
|
6
|
+
"create": "Create",
|
|
7
|
+
"createGeneralTask": "Create General Task",
|
|
8
|
+
"itemDetails": "Item Details",
|
|
9
|
+
"records": "records"
|
|
10
|
+
},
|
|
11
|
+
"operator": {
|
|
12
|
+
"Eq": "Equals",
|
|
13
|
+
"Neq": "Not equal",
|
|
14
|
+
"In": "In",
|
|
15
|
+
"Contains": "Contains",
|
|
16
|
+
"StartsWith": "Starts with",
|
|
17
|
+
"Gt": "Greater than",
|
|
18
|
+
"Gte": "Greater than or equal",
|
|
19
|
+
"Lt": "Less than",
|
|
20
|
+
"Lte": "Less than or equal",
|
|
21
|
+
"Between": "Between",
|
|
22
|
+
"IsNull": "Is empty",
|
|
23
|
+
"IsNotNull": "Is not empty"
|
|
24
|
+
},
|
|
25
|
+
"tabs": {
|
|
26
|
+
"details": "Details",
|
|
27
|
+
"form": "Form",
|
|
28
|
+
"approvals": "Approvals",
|
|
29
|
+
"steps": "Steps",
|
|
30
|
+
"discussion": "Discussion",
|
|
31
|
+
"requestDetails": "Request Details",
|
|
32
|
+
"escalationDetails": "Escalation Details",
|
|
33
|
+
"moduleDetails": "Module Details",
|
|
34
|
+
"levelDetails": "Level Details",
|
|
35
|
+
"levelDetailsNamed": "{{ name }} Details",
|
|
36
|
+
"schema": "Schema",
|
|
37
|
+
"publishComparison": "Comparison"
|
|
38
|
+
},
|
|
39
|
+
"entity": {
|
|
40
|
+
"initiatedBy": "Initiated By",
|
|
41
|
+
"startedAt": "Started At",
|
|
42
|
+
"reason": "Reason",
|
|
43
|
+
"attachments": "Attachments",
|
|
44
|
+
"step": "Step"
|
|
45
|
+
},
|
|
46
|
+
"modal": {
|
|
47
|
+
"cancel": "Cancel",
|
|
48
|
+
"submit": "Submit",
|
|
49
|
+
"confirmAction": "Confirm {{ action }} for this item.",
|
|
50
|
+
"previewLevel": "Preview Level",
|
|
51
|
+
"previewModule": "Preview {{ module }}",
|
|
52
|
+
"loadingActions": "Loading actions...",
|
|
53
|
+
"submitting": "Submitting...",
|
|
54
|
+
"requestSubmitted": "Request submitted for approval.",
|
|
55
|
+
"operationExecuted": "Operation executed successfully.",
|
|
56
|
+
"unsupportedType": "This item type is not supported yet.",
|
|
57
|
+
"noItemSelected": "No item selected."
|
|
58
|
+
},
|
|
59
|
+
"validation": {
|
|
60
|
+
"fillRequiredFields": "Please fill in all required fields before submitting."
|
|
61
|
+
},
|
|
62
|
+
"actions": {
|
|
63
|
+
"loadActionsFailed": "Failed to load item actions.",
|
|
64
|
+
"executeFailed": "Failed to execute {{ action }}.",
|
|
65
|
+
"validationWarningsHeader": "Validation warnings",
|
|
66
|
+
"validationWarningsQuestion": "Do you want to acknowledge these warnings and continue?",
|
|
67
|
+
"acknowledgeAndContinue": "Acknowledge and continue"
|
|
68
|
+
},
|
|
69
|
+
"error": {
|
|
70
|
+
"failedSubmit": "Failed to submit form",
|
|
71
|
+
"failedLoadDetails": "Failed to load item details.",
|
|
72
|
+
"failedLoadEscalation": "Failed to load escalation preview",
|
|
73
|
+
"missingModuleDataId": "Task data id is missing.",
|
|
74
|
+
"failedLoadSchedulePublish": "Failed to load the plan comparison"
|
|
75
|
+
},
|
|
76
|
+
"context": {
|
|
77
|
+
"moduleFormUnavailable": "Module form context is not available for this item yet.",
|
|
78
|
+
"moduleDiscussionUnavailable": "Discussion context is not available for this module yet.",
|
|
79
|
+
"processFormUnavailable": "Process form context is not available for this process item yet.",
|
|
80
|
+
"processDiscussionUnavailable": "Discussion context is not available for this process item yet.",
|
|
81
|
+
"processPreviewUnavailable": "Process preview is not available for this process item yet.",
|
|
82
|
+
"escalationDetailsUnavailable": "Escalation details context is not available for this item yet.",
|
|
83
|
+
"escalationDiscussionUnavailable": "Discussion context is not available for this escalation yet.",
|
|
84
|
+
"escalationSchemaUnavailable": "Escalation schema is not available for this item yet.",
|
|
85
|
+
"escalationSchemaContextUnavailable": "Escalation schema context is not available for this item yet.",
|
|
86
|
+
"requestFormUnavailable": "Process form context is not available for this process request yet.",
|
|
87
|
+
"requestDiscussionUnavailable": "Discussion context is not available for this process request yet.",
|
|
88
|
+
"requestPreviewUnavailable": "Process preview is not available for this process request yet."
|
|
89
|
+
},
|
|
90
|
+
"loading": {
|
|
91
|
+
"escalationDetails": "Loading escalation details...",
|
|
92
|
+
"escalationSchema": "Loading escalation schema...",
|
|
93
|
+
"schedulePublish": "Loading the plan comparison..."
|
|
94
|
+
},
|
|
95
|
+
"preview": {
|
|
96
|
+
"name": "Name",
|
|
97
|
+
"status": "Status",
|
|
98
|
+
"user": "User",
|
|
99
|
+
"userOrGroup": "User / Group",
|
|
100
|
+
"initiationDate": "Initiation Date",
|
|
101
|
+
"actionDate": "Action Date",
|
|
102
|
+
"start": "Start",
|
|
103
|
+
"end": "End",
|
|
104
|
+
"appAction": "App Action",
|
|
105
|
+
"formStep": "Form Step",
|
|
106
|
+
"approvalCommit": "Commit Approved Form",
|
|
107
|
+
"approvalCommitSubtitle": "System · Locked",
|
|
108
|
+
"initial": "Initial",
|
|
109
|
+
"final": "Final",
|
|
110
|
+
"loadFailed": "Failed to load process preview"
|
|
111
|
+
},
|
|
112
|
+
"field": {
|
|
113
|
+
"progress": "Progress",
|
|
114
|
+
"delegatedUser": "Delegated User",
|
|
115
|
+
"delegatedUserPlaceholder": "Search user",
|
|
116
|
+
"reason": "Reason",
|
|
117
|
+
"reasonPlaceholder": "Enter reason",
|
|
118
|
+
"note": "Note",
|
|
119
|
+
"notePlaceholder": "Enter note",
|
|
120
|
+
"attachments": "Attachments",
|
|
121
|
+
"uploadTitle": "Upload Attachment",
|
|
122
|
+
"uploadDescription": "Click or drop a file to upload"
|
|
123
|
+
},
|
|
124
|
+
"publish": {
|
|
125
|
+
"before": "Before",
|
|
126
|
+
"after": "After",
|
|
127
|
+
"neverPublished": "This project has not published a plan yet, so there is nothing to compare against. Approving publishes the plan as it currently stands.",
|
|
128
|
+
"nothingToPublish": "The plan has not changed since it was last published.",
|
|
129
|
+
"noSearchResults": "No rows match your search.",
|
|
130
|
+
"searchPlaceholder": "Search by task name or changed field",
|
|
131
|
+
"addedCount": "{{count}} added",
|
|
132
|
+
"changedCount": "{{count}} changed",
|
|
133
|
+
"removedCount": "{{count}} removed",
|
|
134
|
+
"hiddenRows": "{{count}} more rows not shown. Narrow the list with search to see them.",
|
|
135
|
+
"group": {
|
|
136
|
+
"added": "Added",
|
|
137
|
+
"changed": "Changed",
|
|
138
|
+
"removed": "Removed"
|
|
139
|
+
},
|
|
140
|
+
"field": {
|
|
141
|
+
"name": "Name",
|
|
142
|
+
"type": "Type",
|
|
143
|
+
"plannedStart": "Planned start",
|
|
144
|
+
"plannedFinish": "Planned finish",
|
|
145
|
+
"actualStart": "Actual start",
|
|
146
|
+
"actualFinish": "Actual finish",
|
|
147
|
+
"progress": "Progress",
|
|
148
|
+
"weight": "Weight",
|
|
149
|
+
"assignedTo": "Assigned to",
|
|
150
|
+
"predecessors": "Predecessors",
|
|
151
|
+
"parent": "Parent",
|
|
152
|
+
"order": "Order",
|
|
153
|
+
"mode": "Scheduling mode",
|
|
154
|
+
"resources": "Resources",
|
|
155
|
+
"details": "Details"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"runtimeAction": {
|
|
160
|
+
"field": {
|
|
161
|
+
"progress": "Progress",
|
|
162
|
+
"delegatedUser": "Delegated User",
|
|
163
|
+
"delegatedUserPlaceholder": "Search user",
|
|
164
|
+
"reason": "Reason",
|
|
165
|
+
"reasonPlaceholder": "Enter reason",
|
|
166
|
+
"note": "Note",
|
|
167
|
+
"notePlaceholder": "Enter note",
|
|
168
|
+
"attachments": "Attachments",
|
|
169
|
+
"uploadTitle": "Upload Attachment",
|
|
170
|
+
"uploadDescription": "Click or drop a file to upload"
|
|
171
|
+
},
|
|
172
|
+
"modal": {
|
|
173
|
+
"cancel": "Cancel",
|
|
174
|
+
"confirmAction": "Confirm {{ action }} for this item."
|
|
175
|
+
},
|
|
176
|
+
"preview": {
|
|
177
|
+
"name": "Name",
|
|
178
|
+
"status": "Status",
|
|
179
|
+
"user": "User",
|
|
180
|
+
"userOrGroup": "User / Group",
|
|
181
|
+
"initiationDate": "Initiation Date",
|
|
182
|
+
"actionDate": "Action Date",
|
|
183
|
+
"start": "Start",
|
|
184
|
+
"end": "End",
|
|
185
|
+
"appAction": "App Action",
|
|
186
|
+
"formStep": "Form Step",
|
|
187
|
+
"approvalCommit": "Commit Approved Form",
|
|
188
|
+
"approvalCommitSubtitle": "System · Locked",
|
|
189
|
+
"initial": "Initial",
|
|
190
|
+
"final": "Final",
|
|
191
|
+
"loadFailed": "Failed to load process preview"
|
|
192
|
+
},
|
|
193
|
+
"actions": {
|
|
194
|
+
"loadActionsFailed": "Failed to load item actions."
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -2678,7 +2678,7 @@ class WorkCenterSchedulePublishType {
|
|
|
2678
2678
|
});
|
|
2679
2679
|
}
|
|
2680
2680
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterSchedulePublishType, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2681
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterSchedulePublishType, isStandalone: true, selector: "mt-work-center-schedule-publish-type", inputs: { details: { classPropertyName: "details", publicName: "details", isSignal: true, isRequired: true, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\n *transloco=\"let t; prefix: 'workCenter'\"\n>\n <div\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\n >\n @if (tabOptions().length > 1) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabOptions()\"\n mode=\"vertical\"\n size=\"small\"\n />\n }\n\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\n <!-- Comparison -->\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'comparison'\"\n >\n <div\n class=\"flex h-full min-h-0 min-w-0 flex-col gap-3 lg:overflow-hidden\"\n >\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"loading.schedulePublish\") }}\n </p>\n </div>\n } @else if (error(); as loadError) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ loadError }}\n </p>\n </div>\n } @else if (!summary().hasSnapshot) {\n <!-- Never published: nothing has been announced, so nothing can\n differ from it. That is a different statement from \"no changes\". -->\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"publish.neverPublished\") }}\n </p>\n </div>\n } @else if (summary().isEmpty) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"publish.nothingToPublish\") }}\n </p>\n </div>\n } @else {\n <!-- Counts stay visible while searching, so a filtered view never\n reads as the whole request. -->\n <div class=\"flex flex-wrap items-center gap-2\">\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('added')\"\n >{{\n t(\"publish.addedCount\", { count: summary().addedCount })\n }}</span\n >\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('changed')\"\n >{{\n t(\"publish.changedCount\", { count: summary().changedCount })\n }}</span\n >\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('removed')\"\n >{{\n t(\"publish.removedCount\", { count: summary().removedCount })\n }}</span\n >\n </div>\n\n <input\n type=\"search\"\n class=\"w-full rounded-md border border-surface-300 bg-surface-0 px-3 py-2 text-sm outline-none focus:border-primary-400\"\n [placeholder]=\"t('publish.searchPlaceholder')\"\n [value]=\"searchText()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n <div\n class=\"min-h-0 flex-1 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\n >\n @if (searchFoundNothing()) {\n <div\n class=\"flex min-h-[12rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"text-sm text-surface-500\">\n {{ t(\"publish.noSearchResults\") }}\n </p>\n </div>\n }\n\n @for (group of groups(); track group.state) {\n <section class=\"mb-4\">\n <header class=\"mb-2 flex items-center gap-2\">\n <h4 class=\"text-sm font-semibold text-surface-700\">\n {{ groupLabel(group.state) }}\n </h4>\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass(group.state)\"\n >{{ group.totalCount }}</span\n >\n </header>\n\n <ul class=\"flex flex-col gap-1\">\n @for (row of visibleRows(group); track rowKey(row)) {\n <li\n class=\"rounded-md border border-surface-200 bg-surface-0\"\n >\n <button\n type=\"button\"\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start\"\n [class.cursor-default]=\"!isExpandable(row)\"\n [attr.aria-expanded]=\"\n isExpandable(row) ? isExpanded(row) : null\n \"\n [disabled]=\"!isExpandable(row)\"\n (click)=\"toggleRow(row)\"\n >\n @if (isExpandable(row)) {\n <span\n class=\"shrink-0 text-xs text-surface-500\"\n aria-hidden=\"true\"\n >{{ isExpanded(row) ? \"\u25BE\" : \"\u25B8\" }}</span\n >\n } @else {\n <span\n class=\"w-3 shrink-0\"\n aria-hidden=\"true\"\n ></span>\n }\n <span\n class=\"min-w-0 flex-1 truncate text-sm text-surface-800\"\n >{{ row.name }}</span\n >\n @if (row.type) {\n <span class=\"shrink-0 text-xs text-surface-500\">{{\n row.type\n }}</span>\n }\n </button>\n\n @if (isExpandable(row) && isExpanded(row)) {\n <div\n class=\"flex flex-col gap-3 border-t border-surface-200 px-3 py-3\"\n >\n @for (\n change of changesFor(row);\n track change.field\n ) {\n <div class=\"flex min-w-0 flex-col gap-1\">\n <span\n class=\"text-xs font-medium text-surface-600\"\n >{{ fieldLabel(change.field) }}</span\n >\n <!-- Before -> After rendered locally rather than\n via mt-comparison-value, whose Before/After\n labels are hardcoded English. Each side still\n goes through mt-entity-preview-body, so a date\n renders as a date and a user as an avatar. -->\n <div\n class=\"flex w-full min-w-0 items-stretch gap-3\"\n >\n <div\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-surface-200 bg-surface-50 px-3 py-2\"\n >\n <span\n class=\"text-xs font-medium uppercase tracking-wide text-muted-color\"\n >{{ t(\"publish.before\") }}</span\n >\n <mt-entity-preview-body\n [data]=\"sideEntity(change, 'published')\"\n />\n </div>\n <div\n class=\"flex shrink-0 items-center text-muted-color\"\n aria-hidden=\"true\"\n >\n →\n </div>\n <div\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-primary-200 bg-primary-50 px-3 py-2\"\n >\n <span\n class=\"text-xs font-medium uppercase tracking-wide text-primary-600\"\n >{{ t(\"publish.after\") }}</span\n >\n <mt-entity-preview-body\n [data]=\"sideEntity(change, 'current')\"\n />\n </div>\n </div>\n </div>\n }\n </div>\n }\n </li>\n }\n </ul>\n\n @if (hiddenCount(group) > 0) {\n <!-- Said out loud: a silently truncated comparison reads as a\n complete one to whoever is approving it. -->\n <p class=\"mt-2 text-xs text-surface-500\">\n {{\n t(\"publish.hiddenRows\", { count: hiddenCount(group) })\n }}\n </p>\n }\n </section>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Workflow -->\n @if (canRenderPreview()) {\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'workflow'\"\n >\n <div\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\n >\n <mt-work-center-process-preview\n [requestId]=\"requestId()\"\n [view]=\"'schema'\"\n />\n </div>\n </div>\n }\n\n <!-- Discussion -->\n @if (!readOnly() && canRenderDiscussion()) {\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'discussion'\"\n >\n <div\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\n >\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"resolvedRequestId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "mode", "moreLabel", "defaultIcon", "size", "fluid", "disabled", "searchThreshold"], outputs: ["activeChange", "onChange"] }, { kind: "component", type: DiscussionThread, selector: "mt-discussion-thread", inputs: ["moduleType", "recordId", "title", "subtitle", "placeholder", "pageSize", "currentUserId", "requestContext", "mentionableUsers", "mentionSearchEndpoint", "mentionSearchParam", "mentionSearchDataPath", "allowAttachments", "uploadEndpoint", "attachmentDownloadEndpoint", "showParticipants", "autoMarkRead", "refreshIntervalMs", "styleClass", "disabled"], outputs: ["loaded", "errored", "commentCreated", "commentUpdated", "commentDeleted", "readStateChanged"] }, { kind: "component", type: EntityPreviewBody, selector: "mt-entity-preview-body", inputs: ["data", "attachmentShape"] }, { kind: "component", type: WorkCenterProcessPreview, selector: "mt-work-center-process-preview", inputs: ["requestId", "view"] }] });
|
|
2681
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterSchedulePublishType, isStandalone: true, selector: "mt-work-center-schedule-publish-type", inputs: { details: { classPropertyName: "details", publicName: "details", isSignal: true, isRequired: true, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <!-- Comparison -->\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'comparison'\"\r\n >\r\n <div\r\n class=\"flex h-full min-h-0 min-w-0 flex-col gap-3 lg:overflow-hidden\"\r\n >\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.schedulePublish\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as loadError) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ loadError }}\r\n </p>\r\n </div>\r\n } @else if (!summary().hasSnapshot) {\r\n <!-- Never published: nothing has been announced, so nothing can\r\n differ from it. That is a different statement from \"no changes\". -->\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"publish.neverPublished\") }}\r\n </p>\r\n </div>\r\n } @else if (summary().isEmpty) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"publish.nothingToPublish\") }}\r\n </p>\r\n </div>\r\n } @else {\r\n <!-- Counts stay visible while searching, so a filtered view never\r\n reads as the whole request. -->\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('added')\"\r\n >{{\r\n t(\"publish.addedCount\", { count: summary().addedCount })\r\n }}</span\r\n >\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('changed')\"\r\n >{{\r\n t(\"publish.changedCount\", { count: summary().changedCount })\r\n }}</span\r\n >\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('removed')\"\r\n >{{\r\n t(\"publish.removedCount\", { count: summary().removedCount })\r\n }}</span\r\n >\r\n </div>\r\n\r\n <input\r\n type=\"search\"\r\n class=\"w-full rounded-md border border-surface-300 bg-surface-0 px-3 py-2 text-sm outline-none focus:border-primary-400\"\r\n [placeholder]=\"t('publish.searchPlaceholder')\"\r\n [value]=\"searchText()\"\r\n (input)=\"onSearch($any($event.target).value)\"\r\n />\r\n\r\n <div\r\n class=\"min-h-0 flex-1 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (searchFoundNothing()) {\r\n <div\r\n class=\"flex min-h-[12rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">\r\n {{ t(\"publish.noSearchResults\") }}\r\n </p>\r\n </div>\r\n }\r\n\r\n @for (group of groups(); track group.state) {\r\n <section class=\"mb-4\">\r\n <header class=\"mb-2 flex items-center gap-2\">\r\n <h4 class=\"text-sm font-semibold text-surface-700\">\r\n {{ groupLabel(group.state) }}\r\n </h4>\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass(group.state)\"\r\n >{{ group.totalCount }}</span\r\n >\r\n </header>\r\n\r\n <ul class=\"flex flex-col gap-1\">\r\n @for (row of visibleRows(group); track rowKey(row)) {\r\n <li\r\n class=\"rounded-md border border-surface-200 bg-surface-0\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start\"\r\n [class.cursor-default]=\"!isExpandable(row)\"\r\n [attr.aria-expanded]=\"\r\n isExpandable(row) ? isExpanded(row) : null\r\n \"\r\n [disabled]=\"!isExpandable(row)\"\r\n (click)=\"toggleRow(row)\"\r\n >\r\n @if (isExpandable(row)) {\r\n <span\r\n class=\"shrink-0 text-xs text-surface-500\"\r\n aria-hidden=\"true\"\r\n >{{ isExpanded(row) ? \"\u25BE\" : \"\u25B8\" }}</span\r\n >\r\n } @else {\r\n <span\r\n class=\"w-3 shrink-0\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n <span\r\n class=\"min-w-0 flex-1 truncate text-sm text-surface-800\"\r\n >{{ row.name }}</span\r\n >\r\n @if (row.type) {\r\n <span class=\"shrink-0 text-xs text-surface-500\">{{\r\n row.type\r\n }}</span>\r\n }\r\n </button>\r\n\r\n @if (isExpandable(row) && isExpanded(row)) {\r\n <div\r\n class=\"flex flex-col gap-3 border-t border-surface-200 px-3 py-3\"\r\n >\r\n @for (\r\n change of changesFor(row);\r\n track change.field\r\n ) {\r\n <div class=\"flex min-w-0 flex-col gap-1\">\r\n <span\r\n class=\"text-xs font-medium text-surface-600\"\r\n >{{ fieldLabel(change.field) }}</span\r\n >\r\n <!-- Before -> After rendered locally rather than\r\n via mt-comparison-value, whose Before/After\r\n labels are hardcoded English. Each side still\r\n goes through mt-entity-preview-body, so a date\r\n renders as a date and a user as an avatar. -->\r\n <div\r\n class=\"flex w-full min-w-0 items-stretch gap-3\"\r\n >\r\n <div\r\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-surface-200 bg-surface-50 px-3 py-2\"\r\n >\r\n <span\r\n class=\"text-xs font-medium uppercase tracking-wide text-muted-color\"\r\n >{{ t(\"publish.before\") }}</span\r\n >\r\n <mt-entity-preview-body\r\n [data]=\"sideEntity(change, 'published')\"\r\n />\r\n </div>\r\n <div\r\n class=\"flex shrink-0 items-center text-muted-color\"\r\n aria-hidden=\"true\"\r\n >\r\n →\r\n </div>\r\n <div\r\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-primary-200 bg-primary-50 px-3 py-2\"\r\n >\r\n <span\r\n class=\"text-xs font-medium uppercase tracking-wide text-primary-600\"\r\n >{{ t(\"publish.after\") }}</span\r\n >\r\n <mt-entity-preview-body\r\n [data]=\"sideEntity(change, 'current')\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n\r\n @if (hiddenCount(group) > 0) {\r\n <!-- Said out loud: a silently truncated comparison reads as a\r\n complete one to whoever is approving it. -->\r\n <p class=\"mt-2 text-xs text-surface-500\">\r\n {{\r\n t(\"publish.hiddenRows\", { count: hiddenCount(group) })\r\n }}\r\n </p>\r\n }\r\n </section>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Workflow -->\r\n @if (canRenderPreview()) {\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'workflow'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Discussion -->\r\n @if (!readOnly() && canRenderDiscussion()) {\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"resolvedRequestId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "mode", "moreLabel", "defaultIcon", "size", "fluid", "disabled", "searchThreshold"], outputs: ["activeChange", "onChange"] }, { kind: "component", type: DiscussionThread, selector: "mt-discussion-thread", inputs: ["moduleType", "recordId", "title", "subtitle", "placeholder", "pageSize", "currentUserId", "requestContext", "mentionableUsers", "mentionSearchEndpoint", "mentionSearchParam", "mentionSearchDataPath", "allowAttachments", "uploadEndpoint", "attachmentDownloadEndpoint", "showParticipants", "autoMarkRead", "refreshIntervalMs", "styleClass", "disabled"], outputs: ["loaded", "errored", "commentCreated", "commentUpdated", "commentDeleted", "readStateChanged"] }, { kind: "component", type: EntityPreviewBody, selector: "mt-entity-preview-body", inputs: ["data", "attachmentShape"] }, { kind: "component", type: WorkCenterProcessPreview, selector: "mt-work-center-process-preview", inputs: ["requestId", "view"] }] });
|
|
2682
2682
|
}
|
|
2683
2683
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterSchedulePublishType, decorators: [{
|
|
2684
2684
|
type: Component,
|
|
@@ -2689,7 +2689,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
2689
2689
|
DiscussionThread,
|
|
2690
2690
|
EntityPreviewBody,
|
|
2691
2691
|
WorkCenterProcessPreview,
|
|
2692
|
-
], template: "<div\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\n *transloco=\"let t; prefix: 'workCenter'\"\n>\n <div\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\n >\n @if (tabOptions().length > 1) {\n <mt-tabs\n [(active)]=\"activeTab\"\n [options]=\"tabOptions()\"\n mode=\"vertical\"\n size=\"small\"\n />\n }\n\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\n <!-- Comparison -->\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'comparison'\"\n >\n <div\n class=\"flex h-full min-h-0 min-w-0 flex-col gap-3 lg:overflow-hidden\"\n >\n @if (loading()) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"loading.schedulePublish\") }}\n </p>\n </div>\n } @else if (error(); as loadError) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-red-600\">\n {{ loadError }}\n </p>\n </div>\n } @else if (!summary().hasSnapshot) {\n <!-- Never published: nothing has been announced, so nothing can\n differ from it. That is a different statement from \"no changes\". -->\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"publish.neverPublished\") }}\n </p>\n </div>\n } @else if (summary().isEmpty) {\n <div\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"max-w-md text-center text-sm text-surface-500\">\n {{ t(\"publish.nothingToPublish\") }}\n </p>\n </div>\n } @else {\n <!-- Counts stay visible while searching, so a filtered view never\n reads as the whole request. -->\n <div class=\"flex flex-wrap items-center gap-2\">\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('added')\"\n >{{\n t(\"publish.addedCount\", { count: summary().addedCount })\n }}</span\n >\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('changed')\"\n >{{\n t(\"publish.changedCount\", { count: summary().changedCount })\n }}</span\n >\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass('removed')\"\n >{{\n t(\"publish.removedCount\", { count: summary().removedCount })\n }}</span\n >\n </div>\n\n <input\n type=\"search\"\n class=\"w-full rounded-md border border-surface-300 bg-surface-0 px-3 py-2 text-sm outline-none focus:border-primary-400\"\n [placeholder]=\"t('publish.searchPlaceholder')\"\n [value]=\"searchText()\"\n (input)=\"onSearch($any($event.target).value)\"\n />\n\n <div\n class=\"min-h-0 flex-1 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\n >\n @if (searchFoundNothing()) {\n <div\n class=\"flex min-h-[12rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\n >\n <p class=\"text-sm text-surface-500\">\n {{ t(\"publish.noSearchResults\") }}\n </p>\n </div>\n }\n\n @for (group of groups(); track group.state) {\n <section class=\"mb-4\">\n <header class=\"mb-2 flex items-center gap-2\">\n <h4 class=\"text-sm font-semibold text-surface-700\">\n {{ groupLabel(group.state) }}\n </h4>\n <span\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\n [class]=\"groupBadgeClass(group.state)\"\n >{{ group.totalCount }}</span\n >\n </header>\n\n <ul class=\"flex flex-col gap-1\">\n @for (row of visibleRows(group); track rowKey(row)) {\n <li\n class=\"rounded-md border border-surface-200 bg-surface-0\"\n >\n <button\n type=\"button\"\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start\"\n [class.cursor-default]=\"!isExpandable(row)\"\n [attr.aria-expanded]=\"\n isExpandable(row) ? isExpanded(row) : null\n \"\n [disabled]=\"!isExpandable(row)\"\n (click)=\"toggleRow(row)\"\n >\n @if (isExpandable(row)) {\n <span\n class=\"shrink-0 text-xs text-surface-500\"\n aria-hidden=\"true\"\n >{{ isExpanded(row) ? \"\u25BE\" : \"\u25B8\" }}</span\n >\n } @else {\n <span\n class=\"w-3 shrink-0\"\n aria-hidden=\"true\"\n ></span>\n }\n <span\n class=\"min-w-0 flex-1 truncate text-sm text-surface-800\"\n >{{ row.name }}</span\n >\n @if (row.type) {\n <span class=\"shrink-0 text-xs text-surface-500\">{{\n row.type\n }}</span>\n }\n </button>\n\n @if (isExpandable(row) && isExpanded(row)) {\n <div\n class=\"flex flex-col gap-3 border-t border-surface-200 px-3 py-3\"\n >\n @for (\n change of changesFor(row);\n track change.field\n ) {\n <div class=\"flex min-w-0 flex-col gap-1\">\n <span\n class=\"text-xs font-medium text-surface-600\"\n >{{ fieldLabel(change.field) }}</span\n >\n <!-- Before -> After rendered locally rather than\n via mt-comparison-value, whose Before/After\n labels are hardcoded English. Each side still\n goes through mt-entity-preview-body, so a date\n renders as a date and a user as an avatar. -->\n <div\n class=\"flex w-full min-w-0 items-stretch gap-3\"\n >\n <div\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-surface-200 bg-surface-50 px-3 py-2\"\n >\n <span\n class=\"text-xs font-medium uppercase tracking-wide text-muted-color\"\n >{{ t(\"publish.before\") }}</span\n >\n <mt-entity-preview-body\n [data]=\"sideEntity(change, 'published')\"\n />\n </div>\n <div\n class=\"flex shrink-0 items-center text-muted-color\"\n aria-hidden=\"true\"\n >\n →\n </div>\n <div\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-primary-200 bg-primary-50 px-3 py-2\"\n >\n <span\n class=\"text-xs font-medium uppercase tracking-wide text-primary-600\"\n >{{ t(\"publish.after\") }}</span\n >\n <mt-entity-preview-body\n [data]=\"sideEntity(change, 'current')\"\n />\n </div>\n </div>\n </div>\n }\n </div>\n }\n </li>\n }\n </ul>\n\n @if (hiddenCount(group) > 0) {\n <!-- Said out loud: a silently truncated comparison reads as a\n complete one to whoever is approving it. -->\n <p class=\"mt-2 text-xs text-surface-500\">\n {{\n t(\"publish.hiddenRows\", { count: hiddenCount(group) })\n }}\n </p>\n }\n </section>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Workflow -->\n @if (canRenderPreview()) {\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'workflow'\"\n >\n <div\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\n >\n <mt-work-center-process-preview\n [requestId]=\"requestId()\"\n [view]=\"'schema'\"\n />\n </div>\n </div>\n }\n\n <!-- Discussion -->\n @if (!readOnly() && canRenderDiscussion()) {\n <div\n class=\"h-full min-h-0 lg:overflow-hidden\"\n [hidden]=\"activeTab() !== 'discussion'\"\n >\n <div\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\n >\n <mt-discussion-thread\n [moduleType]=\"'ProcessRequest'\"\n [recordId]=\"resolvedRequestId()\"\n [mentionSearchEndpoint]=\"'Identity/users'\"\n [mentionSearchParam]=\"'query'\"\n [mentionSearchDataPath]=\"'data'\"\n [uploadEndpoint]=\"'uploader'\"\n [attachmentDownloadEndpoint]=\"'uploader'\"\n [showParticipants]=\"true\"\n [autoMarkRead]=\"true\"\n [refreshIntervalMs]=\"0\"\n [styleClass]=\"'h-full'\"\n />\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
|
|
2692
|
+
], template: "<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <!-- Comparison -->\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'comparison'\"\r\n >\r\n <div\r\n class=\"flex h-full min-h-0 min-w-0 flex-col gap-3 lg:overflow-hidden\"\r\n >\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.schedulePublish\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as loadError) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ loadError }}\r\n </p>\r\n </div>\r\n } @else if (!summary().hasSnapshot) {\r\n <!-- Never published: nothing has been announced, so nothing can\r\n differ from it. That is a different statement from \"no changes\". -->\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"publish.neverPublished\") }}\r\n </p>\r\n </div>\r\n } @else if (summary().isEmpty) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"publish.nothingToPublish\") }}\r\n </p>\r\n </div>\r\n } @else {\r\n <!-- Counts stay visible while searching, so a filtered view never\r\n reads as the whole request. -->\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('added')\"\r\n >{{\r\n t(\"publish.addedCount\", { count: summary().addedCount })\r\n }}</span\r\n >\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('changed')\"\r\n >{{\r\n t(\"publish.changedCount\", { count: summary().changedCount })\r\n }}</span\r\n >\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass('removed')\"\r\n >{{\r\n t(\"publish.removedCount\", { count: summary().removedCount })\r\n }}</span\r\n >\r\n </div>\r\n\r\n <input\r\n type=\"search\"\r\n class=\"w-full rounded-md border border-surface-300 bg-surface-0 px-3 py-2 text-sm outline-none focus:border-primary-400\"\r\n [placeholder]=\"t('publish.searchPlaceholder')\"\r\n [value]=\"searchText()\"\r\n (input)=\"onSearch($any($event.target).value)\"\r\n />\r\n\r\n <div\r\n class=\"min-h-0 flex-1 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (searchFoundNothing()) {\r\n <div\r\n class=\"flex min-h-[12rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">\r\n {{ t(\"publish.noSearchResults\") }}\r\n </p>\r\n </div>\r\n }\r\n\r\n @for (group of groups(); track group.state) {\r\n <section class=\"mb-4\">\r\n <header class=\"mb-2 flex items-center gap-2\">\r\n <h4 class=\"text-sm font-semibold text-surface-700\">\r\n {{ groupLabel(group.state) }}\r\n </h4>\r\n <span\r\n class=\"rounded-full px-2 py-0.5 text-xs font-medium\"\r\n [class]=\"groupBadgeClass(group.state)\"\r\n >{{ group.totalCount }}</span\r\n >\r\n </header>\r\n\r\n <ul class=\"flex flex-col gap-1\">\r\n @for (row of visibleRows(group); track rowKey(row)) {\r\n <li\r\n class=\"rounded-md border border-surface-200 bg-surface-0\"\r\n >\r\n <button\r\n type=\"button\"\r\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start\"\r\n [class.cursor-default]=\"!isExpandable(row)\"\r\n [attr.aria-expanded]=\"\r\n isExpandable(row) ? isExpanded(row) : null\r\n \"\r\n [disabled]=\"!isExpandable(row)\"\r\n (click)=\"toggleRow(row)\"\r\n >\r\n @if (isExpandable(row)) {\r\n <span\r\n class=\"shrink-0 text-xs text-surface-500\"\r\n aria-hidden=\"true\"\r\n >{{ isExpanded(row) ? \"\u25BE\" : \"\u25B8\" }}</span\r\n >\r\n } @else {\r\n <span\r\n class=\"w-3 shrink-0\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n <span\r\n class=\"min-w-0 flex-1 truncate text-sm text-surface-800\"\r\n >{{ row.name }}</span\r\n >\r\n @if (row.type) {\r\n <span class=\"shrink-0 text-xs text-surface-500\">{{\r\n row.type\r\n }}</span>\r\n }\r\n </button>\r\n\r\n @if (isExpandable(row) && isExpanded(row)) {\r\n <div\r\n class=\"flex flex-col gap-3 border-t border-surface-200 px-3 py-3\"\r\n >\r\n @for (\r\n change of changesFor(row);\r\n track change.field\r\n ) {\r\n <div class=\"flex min-w-0 flex-col gap-1\">\r\n <span\r\n class=\"text-xs font-medium text-surface-600\"\r\n >{{ fieldLabel(change.field) }}</span\r\n >\r\n <!-- Before -> After rendered locally rather than\r\n via mt-comparison-value, whose Before/After\r\n labels are hardcoded English. Each side still\r\n goes through mt-entity-preview-body, so a date\r\n renders as a date and a user as an avatar. -->\r\n <div\r\n class=\"flex w-full min-w-0 items-stretch gap-3\"\r\n >\r\n <div\r\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-surface-200 bg-surface-50 px-3 py-2\"\r\n >\r\n <span\r\n class=\"text-xs font-medium uppercase tracking-wide text-muted-color\"\r\n >{{ t(\"publish.before\") }}</span\r\n >\r\n <mt-entity-preview-body\r\n [data]=\"sideEntity(change, 'published')\"\r\n />\r\n </div>\r\n <div\r\n class=\"flex shrink-0 items-center text-muted-color\"\r\n aria-hidden=\"true\"\r\n >\r\n →\r\n </div>\r\n <div\r\n class=\"flex min-w-0 flex-1 flex-col gap-1 rounded-md border border-primary-200 bg-primary-50 px-3 py-2\"\r\n >\r\n <span\r\n class=\"text-xs font-medium uppercase tracking-wide text-primary-600\"\r\n >{{ t(\"publish.after\") }}</span\r\n >\r\n <mt-entity-preview-body\r\n [data]=\"sideEntity(change, 'current')\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n\r\n @if (hiddenCount(group) > 0) {\r\n <!-- Said out loud: a silently truncated comparison reads as a\r\n complete one to whoever is approving it. -->\r\n <p class=\"mt-2 text-xs text-surface-500\">\r\n {{\r\n t(\"publish.hiddenRows\", { count: hiddenCount(group) })\r\n }}\r\n </p>\r\n }\r\n </section>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Workflow -->\r\n @if (canRenderPreview()) {\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'workflow'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Discussion -->\r\n @if (!readOnly() && canRenderDiscussion()) {\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"resolvedRequestId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
2693
2693
|
}], ctorParameters: () => [], propDecorators: { details: [{ type: i0.Input, args: [{ isSignal: true, alias: "details", required: true }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }] } });
|
|
2694
2694
|
/**
|
|
2695
2695
|
* The comparison arrives on the response root, but several runtime endpoints
|
|
@@ -2762,7 +2762,7 @@ class WorkCenterItemModal {
|
|
|
2762
2762
|
readOnly: this.readOnly(),
|
|
2763
2763
|
}), ...(ngDevMode ? [{ debugName: "registeredInputs" }] : /* istanbul ignore next */ []));
|
|
2764
2764
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterItemModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2765
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterItemModal, isStandalone: true, selector: "mt-work-center-item-modal", inputs: { details: { classPropertyName: "details", publicName: "details", isSignal: true, isRequired: true, transformFunction: null }, lookups: { classPropertyName: "lookups", publicName: "lookups", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block h-full min-h-0" }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'workCenter'\">\n @if (registeredComponent(); as registered) {\n <!-- Host registration wins, so a new request type no longer needs a package\n release. Nothing is registered by default, so the chain below is what\n every existing host still gets. -->\n <ng-container\n *ngComponentOutlet=\"registered; inputs: registeredInputs()\"\n ></ng-container>\n } @else if (isSchedulePublish()) {\n <!-- Dispatched on the OPERATION KEY, not on a new `type`: a publish request\n arrives as ProcessStep or ProcessRequest like any other, so the published\n Work Center type contract is unchanged. -->\n <mt-work-center-schedule-publish-type\n [details]=\"details()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"ProcessStep\") {\n <mt-work-center-process-step-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"ProcessRequest\") {\n <mt-work-center-process-request-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"EscalationInstance\") {\n <mt-work-center-escalation-instance-type\n [details]=\"details()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"Module\" || details().type === \"GeneralTask\") {\n <mt-work-center-module-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else {\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\n </div>\n }\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: WorkCenterProcessStepType, selector: "mt-work-center-process-step-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterProcessRequestType, selector: "mt-work-center-process-request-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterEscalationInstanceType, selector: "mt-work-center-escalation-instance-type", inputs: ["details", "readOnly"] }, { kind: "component", type: WorkCenterModuleType, selector: "mt-work-center-module-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterSchedulePublishType, selector: "mt-work-center-schedule-publish-type", inputs: ["details", "readOnly"] }] });
|
|
2765
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterItemModal, isStandalone: true, selector: "mt-work-center-item-modal", inputs: { details: { classPropertyName: "details", publicName: "details", isSignal: true, isRequired: true, transformFunction: null }, lookups: { classPropertyName: "lookups", publicName: "lookups", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block h-full min-h-0" }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (registeredComponent(); as registered) {\r\n <!-- Host registration wins, so a new request type no longer needs a package\r\n release. Nothing is registered by default, so the chain below is what\r\n every existing host still gets. -->\r\n <ng-container\r\n *ngComponentOutlet=\"registered; inputs: registeredInputs()\"\r\n ></ng-container>\r\n } @else if (isSchedulePublish()) {\r\n <!-- Dispatched on the OPERATION KEY, not on a new `type`: a publish request\r\n arrives as ProcessStep or ProcessRequest like any other, so the published\r\n Work Center type contract is unchanged. -->\r\n <mt-work-center-schedule-publish-type\r\n [details]=\"details()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type\r\n [details]=\"details()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"Module\" || details().type === \"GeneralTask\") {\r\n <mt-work-center-module-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: WorkCenterProcessStepType, selector: "mt-work-center-process-step-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterProcessRequestType, selector: "mt-work-center-process-request-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterEscalationInstanceType, selector: "mt-work-center-escalation-instance-type", inputs: ["details", "readOnly"] }, { kind: "component", type: WorkCenterModuleType, selector: "mt-work-center-module-type", inputs: ["details", "lookups", "readOnly"] }, { kind: "component", type: WorkCenterSchedulePublishType, selector: "mt-work-center-schedule-publish-type", inputs: ["details", "readOnly"] }] });
|
|
2766
2766
|
}
|
|
2767
2767
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterItemModal, decorators: [{
|
|
2768
2768
|
type: Component,
|
|
@@ -2777,7 +2777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
2777
2777
|
WorkCenterSchedulePublishType,
|
|
2778
2778
|
], host: {
|
|
2779
2779
|
class: 'block h-full min-h-0',
|
|
2780
|
-
}, template: "<ng-container *transloco=\"let t; prefix: 'workCenter'\">\n @if (registeredComponent(); as registered) {\n <!-- Host registration wins, so a new request type no longer needs a package\n release. Nothing is registered by default, so the chain below is what\n every existing host still gets. -->\n <ng-container\n *ngComponentOutlet=\"registered; inputs: registeredInputs()\"\n ></ng-container>\n } @else if (isSchedulePublish()) {\n <!-- Dispatched on the OPERATION KEY, not on a new `type`: a publish request\n arrives as ProcessStep or ProcessRequest like any other, so the published\n Work Center type contract is unchanged. -->\n <mt-work-center-schedule-publish-type\n [details]=\"details()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"ProcessStep\") {\n <mt-work-center-process-step-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"ProcessRequest\") {\n <mt-work-center-process-request-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"EscalationInstance\") {\n <mt-work-center-escalation-instance-type\n [details]=\"details()\"\n [readOnly]=\"readOnly()\"\n />\n } @else if (details().type === \"Module\" || details().type === \"GeneralTask\") {\n <mt-work-center-module-type\n [details]=\"details()\"\n [lookups]=\"lookups()\"\n [readOnly]=\"readOnly()\"\n />\n } @else {\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\n </div>\n }\n</ng-container>\n" }]
|
|
2780
|
+
}, template: "<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (registeredComponent(); as registered) {\r\n <!-- Host registration wins, so a new request type no longer needs a package\r\n release. Nothing is registered by default, so the chain below is what\r\n every existing host still gets. -->\r\n <ng-container\r\n *ngComponentOutlet=\"registered; inputs: registeredInputs()\"\r\n ></ng-container>\r\n } @else if (isSchedulePublish()) {\r\n <!-- Dispatched on the OPERATION KEY, not on a new `type`: a publish request\r\n arrives as ProcessStep or ProcessRequest like any other, so the published\r\n Work Center type contract is unchanged. -->\r\n <mt-work-center-schedule-publish-type\r\n [details]=\"details()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type\r\n [details]=\"details()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else if (details().type === \"Module\" || details().type === \"GeneralTask\") {\r\n <mt-work-center-module-type\r\n [details]=\"details()\"\r\n [lookups]=\"lookups()\"\r\n [readOnly]=\"readOnly()\"\r\n />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n" }]
|
|
2781
2781
|
}], propDecorators: { details: [{ type: i0.Input, args: [{ isSignal: true, alias: "details", required: true }] }], lookups: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookups", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }] } });
|
|
2782
2782
|
|
|
2783
2783
|
const FORM_VALIDATION_WARNINGS = 'FormValidationWarnings';
|