verben-workflow-ui 0.5.45 → 0.5.47
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/esm2022/public-api.mjs +3 -1
- package/esm2022/src/lib/components/flowable-status/flowable-status.columns.mjs +21 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +122 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +207 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +52 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +21 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +55 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +85 -0
- package/esm2022/src/lib/components/flowable-status/index.mjs +2 -0
- package/esm2022/src/lib/components/flowable-status/public-api.mjs +3 -0
- package/esm2022/src/lib/components/flowable-status/verben-workflow-ui-src-lib-components-flowable-status.mjs +5 -0
- package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +14 -4
- package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +6 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +2 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +5 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.types.mjs +1 -1
- package/esm2022/src/lib/models/FlowableStatus.mjs +2 -0
- package/esm2022/src/lib/models/WorkflowAction.mjs +1 -1
- package/esm2022/src/lib/models/public-api.mjs +2 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +545 -0
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -0
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +25 -3
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui.mjs +1 -3
- package/fesm2022/verben-workflow-ui.mjs.map +1 -1
- package/package.json +18 -12
- package/public-api.d.ts +1 -0
- package/src/lib/components/flowable-status/flowable-status.columns.d.ts +3 -0
- package/src/lib/components/flowable-status/flowable-status.component.d.ts +34 -0
- package/src/lib/components/flowable-status/flowable-status.facade.d.ts +32 -0
- package/src/lib/components/flowable-status/flowable-status.form.component.d.ts +18 -0
- package/src/lib/components/flowable-status/flowable-status.module.d.ts +11 -0
- package/src/lib/components/flowable-status/flowable-status.service.d.ts +36 -0
- package/src/lib/components/flowable-status/flowable-status.state.d.ts +30 -0
- package/src/lib/components/flowable-status/index.d.ts +1 -0
- package/src/lib/components/flowable-status/public-api.d.ts +2 -0
- package/src/lib/components/workflow-designer/action-dialog/action-dialog.component.d.ts +3 -1
- package/src/lib/components/workflow-designer/workflow-data.service.d.ts +3 -1
- package/src/lib/components/workflow-designer/workflow-designer.types.d.ts +2 -2
- package/src/lib/models/FlowableStatus.d.ts +5 -0
- package/src/lib/models/WorkflowAction.d.ts +1 -0
- package/src/lib/models/public-api.d.ts +1 -0
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Component, Output, Input, signal, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@angular/forms';
|
|
4
|
+
import { Validators } from '@angular/forms';
|
|
5
|
+
import { SortDirection, ErrorResponse, ObjectState } from 'verben-workflow-ui/src/lib/models';
|
|
6
|
+
import { BaseDataViewComponent, SharedModule } from 'verben-workflow-ui/src/lib/shared';
|
|
7
|
+
import { BehaviorSubject, Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';
|
|
8
|
+
import * as i1 from 'verben-workflow-ui/src/lib/services';
|
|
9
|
+
import * as i3 from '@angular/common';
|
|
10
|
+
import { CommonModule } from '@angular/common';
|
|
11
|
+
import * as i4 from 'verben-ng-ui';
|
|
12
|
+
import { RouterLink } from '@angular/router';
|
|
13
|
+
|
|
14
|
+
const columns = [
|
|
15
|
+
{
|
|
16
|
+
id: 'date',
|
|
17
|
+
header: 'CREATED',
|
|
18
|
+
accessorKey: 'CreatedAt',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'name',
|
|
22
|
+
header: 'NAME',
|
|
23
|
+
accessorKey: 'Name',
|
|
24
|
+
formControlName: 'Name',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'description',
|
|
28
|
+
header: 'DESCRIPTION',
|
|
29
|
+
accessorKey: 'Description',
|
|
30
|
+
formControlName: 'Description',
|
|
31
|
+
},
|
|
32
|
+
{ id: 'actions', header: 'Actions' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
class FlowableStatusService {
|
|
36
|
+
httpService;
|
|
37
|
+
envSvc;
|
|
38
|
+
BASE_URL = 'Status';
|
|
39
|
+
constructor(httpService, envSvc) {
|
|
40
|
+
this.httpService = httpService;
|
|
41
|
+
this.envSvc = envSvc;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get data with pagination and sorting
|
|
45
|
+
* @param skip Number of records to skip
|
|
46
|
+
* @param limit Number of records to take
|
|
47
|
+
* @param sortParam Sort parameter
|
|
48
|
+
* @param sortOrder Sort order ('asc' or 'desc')
|
|
49
|
+
* @returns Promise containing the data
|
|
50
|
+
*/
|
|
51
|
+
getData(skip, limit, sortParam, sortOrder) {
|
|
52
|
+
const url = `${this.BASE_URL}/GetFlowableStatus/${skip}/${limit}/${sortParam}/${sortOrder}`;
|
|
53
|
+
return this.httpService.get(url);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get data with additional parameter, pagination and sorting
|
|
57
|
+
* @param param Search parameter
|
|
58
|
+
* @param skip Number of records to skip
|
|
59
|
+
* @param limit Number of records to take
|
|
60
|
+
* @param sortParam Sort parameter
|
|
61
|
+
* @param sortOrder Sort order ('asc' or 'desc')
|
|
62
|
+
* @returns Promise containing the filtered data
|
|
63
|
+
*/
|
|
64
|
+
getFlowableStatusWithParam(param, skip, limit, sortParam, sortOrder) {
|
|
65
|
+
const url = `${this.BASE_URL}/GetFlowableStatusWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;
|
|
66
|
+
return this.httpService.get(url);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Save multiple data
|
|
70
|
+
* @param requests Array of data to save
|
|
71
|
+
* @returns Promise containing the save operation result
|
|
72
|
+
*/
|
|
73
|
+
saveFlowableStatuses(requests) {
|
|
74
|
+
const url = `${this.BASE_URL}/SaveFlowableStatus`;
|
|
75
|
+
return this.httpService.post(url, requests);
|
|
76
|
+
}
|
|
77
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, deps: [{ token: i1.HttpWebRequestService }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
78
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, providedIn: 'root' });
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, decorators: [{
|
|
81
|
+
type: Injectable,
|
|
82
|
+
args: [{
|
|
83
|
+
providedIn: 'root',
|
|
84
|
+
}]
|
|
85
|
+
}], ctorParameters: () => [{ type: i1.HttpWebRequestService }, { type: i1.EnvironmentService }] });
|
|
86
|
+
|
|
87
|
+
class FlowableStatusState {
|
|
88
|
+
updating$ = new BehaviorSubject(false);
|
|
89
|
+
data$ = new BehaviorSubject([]);
|
|
90
|
+
searchTerm$ = new BehaviorSubject('');
|
|
91
|
+
queryParams$ = new BehaviorSubject({
|
|
92
|
+
skip: 0,
|
|
93
|
+
limit: 20,
|
|
94
|
+
sortParam: 'CreatedAt',
|
|
95
|
+
sortOrder: SortDirection.Desc,
|
|
96
|
+
});
|
|
97
|
+
filterParams$ = new BehaviorSubject([]);
|
|
98
|
+
isUpdating$() {
|
|
99
|
+
return this.updating$.asObservable();
|
|
100
|
+
}
|
|
101
|
+
setUpdating(isUpdating) {
|
|
102
|
+
this.updating$.next(isUpdating);
|
|
103
|
+
}
|
|
104
|
+
getRequests$() {
|
|
105
|
+
return this.data$.asObservable();
|
|
106
|
+
}
|
|
107
|
+
setRequests(data) {
|
|
108
|
+
this.data$.next(data);
|
|
109
|
+
}
|
|
110
|
+
getSearchTerm$() {
|
|
111
|
+
return this.searchTerm$.asObservable();
|
|
112
|
+
}
|
|
113
|
+
getSearchTermValue() {
|
|
114
|
+
return this.searchTerm$.getValue();
|
|
115
|
+
}
|
|
116
|
+
setSearchTerm(term) {
|
|
117
|
+
this.searchTerm$.next(term);
|
|
118
|
+
}
|
|
119
|
+
getFilterParams$() {
|
|
120
|
+
return this.filterParams$.asObservable();
|
|
121
|
+
}
|
|
122
|
+
setFilterParams(params) {
|
|
123
|
+
this.filterParams$.next(params);
|
|
124
|
+
}
|
|
125
|
+
getQueryParams$() {
|
|
126
|
+
return this.queryParams$.asObservable();
|
|
127
|
+
}
|
|
128
|
+
getQueryParamsValue() {
|
|
129
|
+
return this.queryParams$.getValue();
|
|
130
|
+
}
|
|
131
|
+
updateQueryParams(params) {
|
|
132
|
+
this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });
|
|
133
|
+
}
|
|
134
|
+
addRequest(task) {
|
|
135
|
+
const currentValue = this.data$.getValue();
|
|
136
|
+
this.data$.next([task, ...currentValue]);
|
|
137
|
+
}
|
|
138
|
+
resetPagination() {
|
|
139
|
+
const currentParams = this.queryParams$.getValue();
|
|
140
|
+
this.queryParams$.next({ ...currentParams, skip: 0 });
|
|
141
|
+
}
|
|
142
|
+
updateRequest(updatedRequest) {
|
|
143
|
+
const data = this.data$.getValue();
|
|
144
|
+
const index = data.findIndex((r) => r.Code === updatedRequest.Code);
|
|
145
|
+
if (index !== -1) {
|
|
146
|
+
data[index] = updatedRequest;
|
|
147
|
+
this.data$.next([...data]);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
removeRequest(code) {
|
|
151
|
+
const currentValue = this.data$.getValue();
|
|
152
|
+
this.data$.next(currentValue.filter((r) => r.Code !== code));
|
|
153
|
+
}
|
|
154
|
+
appendRequests(newRequests) {
|
|
155
|
+
const currentRequests = this.data$.getValue();
|
|
156
|
+
this.data$.next([...currentRequests, ...newRequests]);
|
|
157
|
+
}
|
|
158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
159
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, providedIn: 'root' });
|
|
160
|
+
}
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, decorators: [{
|
|
162
|
+
type: Injectable,
|
|
163
|
+
args: [{
|
|
164
|
+
providedIn: 'root',
|
|
165
|
+
}]
|
|
166
|
+
}] });
|
|
167
|
+
|
|
168
|
+
class FlowableStatusFacade {
|
|
169
|
+
service;
|
|
170
|
+
state;
|
|
171
|
+
utilService;
|
|
172
|
+
searchSubject = new Subject();
|
|
173
|
+
destroy$ = new Subject();
|
|
174
|
+
constructor(service, state, utilService) {
|
|
175
|
+
this.service = service;
|
|
176
|
+
this.state = state;
|
|
177
|
+
this.utilService = utilService;
|
|
178
|
+
this.searchSubject
|
|
179
|
+
.pipe(debounceTime(1000), distinctUntilChanged(), takeUntil(this.destroy$))
|
|
180
|
+
.subscribe((searchTerm) => {
|
|
181
|
+
this.handleSearch(searchTerm);
|
|
182
|
+
});
|
|
183
|
+
this.isUpdating$().subscribe((loading) => {
|
|
184
|
+
this.utilService.sendBI(loading);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
isUpdating$() {
|
|
188
|
+
return this.state.isUpdating$();
|
|
189
|
+
}
|
|
190
|
+
getRequests$() {
|
|
191
|
+
return this.state.getRequests$();
|
|
192
|
+
}
|
|
193
|
+
getQueryParams$() {
|
|
194
|
+
return this.state.getQueryParams$();
|
|
195
|
+
}
|
|
196
|
+
getSearchTerm$() {
|
|
197
|
+
return this.state.getSearchTerm$();
|
|
198
|
+
}
|
|
199
|
+
// Search handling
|
|
200
|
+
search(term) {
|
|
201
|
+
this.searchSubject.next(term);
|
|
202
|
+
}
|
|
203
|
+
async handleSearch(searchTerm) {
|
|
204
|
+
this.state.setSearchTerm(searchTerm);
|
|
205
|
+
this.state.resetPagination();
|
|
206
|
+
try {
|
|
207
|
+
this.state.setUpdating(true);
|
|
208
|
+
if (searchTerm.trim()) {
|
|
209
|
+
await this.loadRequestsWithParam(searchTerm);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
await this.loadRequests();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error('Search failed:', error);
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
219
|
+
finally {
|
|
220
|
+
this.state.setUpdating(false);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async filter(filterParams) {
|
|
224
|
+
this.state.resetPagination();
|
|
225
|
+
this.state.setFilterParams(filterParams);
|
|
226
|
+
}
|
|
227
|
+
addNewRequest(task) {
|
|
228
|
+
this.state.addRequest(task);
|
|
229
|
+
}
|
|
230
|
+
async loadRequests() {
|
|
231
|
+
try {
|
|
232
|
+
this.state.setUpdating(true);
|
|
233
|
+
const params = this.state.getQueryParamsValue();
|
|
234
|
+
const requests = await this.service.getData(params.skip, params.limit, params.sortParam || 'CreatedDate', params.sortOrder);
|
|
235
|
+
if (requests instanceof ErrorResponse) {
|
|
236
|
+
this.utilService.showError(requests.ErrorMsg);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.state.setRequests(requests.Result);
|
|
240
|
+
this.state.updateQueryParams({ skip: requests.Skip });
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.error('Failed to load requests:', error);
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
this.state.setUpdating(false);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async loadRequestsWithParam(param) {
|
|
251
|
+
try {
|
|
252
|
+
this.state.setUpdating(true);
|
|
253
|
+
const params = this.state.getQueryParamsValue();
|
|
254
|
+
const requests = await this.service.getFlowableStatusWithParam(param, params.skip, params.limit, params.sortParam || 'CreatedDate', params.sortOrder);
|
|
255
|
+
if (requests instanceof ErrorResponse) {
|
|
256
|
+
this.utilService.showError(requests.ErrorMsg);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
this.state.setRequests(requests.Result);
|
|
260
|
+
this.state.updateQueryParams({ skip: requests.Skip });
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
console.error('Failed to load requests with param:', error);
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
this.state.setUpdating(false);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
updateQueryParams(params) {
|
|
271
|
+
this.state.updateQueryParams(params);
|
|
272
|
+
}
|
|
273
|
+
async addRequest(request) {
|
|
274
|
+
try {
|
|
275
|
+
this.state.setUpdating(true);
|
|
276
|
+
const newRequest = { ...request };
|
|
277
|
+
const response = await this.service.saveFlowableStatuses([newRequest]);
|
|
278
|
+
if (response instanceof ErrorResponse) {
|
|
279
|
+
this.utilService.showError(response.ErrorMsg);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
this.state.resetPagination();
|
|
283
|
+
await this.loadRequests(); // Reload to get server-side changes
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error('Failed to add request:', error);
|
|
287
|
+
this.state.removeRequest(request.Code);
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
finally {
|
|
291
|
+
this.state.setUpdating(false);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
async updateRequest(request) {
|
|
295
|
+
try {
|
|
296
|
+
this.state.setUpdating(true);
|
|
297
|
+
const response = await this.service.saveFlowableStatuses([request]);
|
|
298
|
+
if (response instanceof ErrorResponse) {
|
|
299
|
+
this.utilService.showError(response.ErrorMsg);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
this.state.updateRequest(request);
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
console.error('Failed to update request:', error);
|
|
306
|
+
throw error;
|
|
307
|
+
}
|
|
308
|
+
finally {
|
|
309
|
+
this.state.setUpdating(false);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Load more handling
|
|
313
|
+
async loadMore(queue = false) {
|
|
314
|
+
try {
|
|
315
|
+
this.state.setUpdating(true);
|
|
316
|
+
const currentParams = this.state.getQueryParamsValue();
|
|
317
|
+
// Update skip value
|
|
318
|
+
const newSkip = currentParams.skip + currentParams.limit;
|
|
319
|
+
// Load and append data
|
|
320
|
+
const response = await this.service.getData(currentParams.skip, currentParams.limit, currentParams.sortParam || 'CreatedDate', currentParams.sortOrder);
|
|
321
|
+
if (response instanceof ErrorResponse) {
|
|
322
|
+
this.utilService.showError(response.ErrorMsg);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
this.state.appendRequests(response.Result);
|
|
326
|
+
this.state.updateQueryParams({
|
|
327
|
+
skip: newSkip,
|
|
328
|
+
limit: currentParams.limit,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
console.error('Load more failed:', error);
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
finally {
|
|
336
|
+
this.state.setUpdating(false);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Load more handling
|
|
340
|
+
async loadData(skip, limit) {
|
|
341
|
+
try {
|
|
342
|
+
this.state.setUpdating(true);
|
|
343
|
+
const response = await this.service.getData(skip, limit, 'CreatedDate', SortDirection.Desc);
|
|
344
|
+
if (response instanceof ErrorResponse) {
|
|
345
|
+
this.utilService.showError(response.ErrorMsg);
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
return response.Result;
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
console.error('Load more failed:', error);
|
|
352
|
+
throw error;
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
this.state.setUpdating(false);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, deps: [{ token: FlowableStatusService }, { token: FlowableStatusState }, { token: i1.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
359
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, providedIn: 'root' });
|
|
360
|
+
}
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, decorators: [{
|
|
362
|
+
type: Injectable,
|
|
363
|
+
args: [{
|
|
364
|
+
providedIn: 'root',
|
|
365
|
+
}]
|
|
366
|
+
}], ctorParameters: () => [{ type: FlowableStatusService }, { type: FlowableStatusState }, { type: i1.UtilService }] });
|
|
367
|
+
|
|
368
|
+
class FlowableStatusFormComponent {
|
|
369
|
+
fb;
|
|
370
|
+
onSave = new EventEmitter();
|
|
371
|
+
switchView = new EventEmitter();
|
|
372
|
+
get currentData() {
|
|
373
|
+
return this._currentData;
|
|
374
|
+
}
|
|
375
|
+
set currentData(value) {
|
|
376
|
+
this._currentData = value;
|
|
377
|
+
if (value?.data) {
|
|
378
|
+
this.form.patchValue({
|
|
379
|
+
Name: value.data.Name || '',
|
|
380
|
+
Description: value.data.Description || '',
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
this.form.reset();
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
_currentData = null;
|
|
388
|
+
form;
|
|
389
|
+
constructor(fb) {
|
|
390
|
+
this.fb = fb;
|
|
391
|
+
this.form = this.fb.group({
|
|
392
|
+
Name: ['', { validators: [Validators.required] }],
|
|
393
|
+
Description: ['', { validators: [Validators.required] }],
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
handleSubmit() {
|
|
397
|
+
if (this.form.valid) {
|
|
398
|
+
this.onSave.emit(this.form.value);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFormComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
402
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlowableStatusFormComponent, selector: "flowable-status-form", inputs: { currentData: "currentData" }, outputs: { onSave: "onSave", switchView: "switchView" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
|
|
403
|
+
}
|
|
404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFormComponent, decorators: [{
|
|
405
|
+
type: Component,
|
|
406
|
+
args: [{ selector: 'flowable-status-form', template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n" }]
|
|
407
|
+
}], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { onSave: [{
|
|
408
|
+
type: Output
|
|
409
|
+
}], switchView: [{
|
|
410
|
+
type: Output
|
|
411
|
+
}], currentData: [{
|
|
412
|
+
type: Input
|
|
413
|
+
}] } });
|
|
414
|
+
|
|
415
|
+
class FlowableStatusComponent extends BaseDataViewComponent {
|
|
416
|
+
cdr;
|
|
417
|
+
facade;
|
|
418
|
+
fb;
|
|
419
|
+
config = {
|
|
420
|
+
dataSource: [],
|
|
421
|
+
columns: columns,
|
|
422
|
+
cardDataMapper: (status) => ({
|
|
423
|
+
selected: false,
|
|
424
|
+
title: status.Name,
|
|
425
|
+
data: status,
|
|
426
|
+
body: [
|
|
427
|
+
{ title: 'Name', value: status.Name },
|
|
428
|
+
{ title: 'Description', value: status.Description },
|
|
429
|
+
],
|
|
430
|
+
children: [],
|
|
431
|
+
}),
|
|
432
|
+
onDetailView: (status) => {
|
|
433
|
+
// Custom detail view logic
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
formGroupConfig;
|
|
437
|
+
constructor(cdr, facade, fb) {
|
|
438
|
+
super();
|
|
439
|
+
this.cdr = cdr;
|
|
440
|
+
this.facade = facade;
|
|
441
|
+
this.fb = fb;
|
|
442
|
+
this.loadData = this.loadData.bind(this);
|
|
443
|
+
this.formGroupConfig = signal({
|
|
444
|
+
controls: {
|
|
445
|
+
Name: this.fb.control('', [Validators.required]),
|
|
446
|
+
Description: this.fb.control('', [Validators.required]),
|
|
447
|
+
},
|
|
448
|
+
});
|
|
449
|
+
this.facade.getRequests$().subscribe((data) => {
|
|
450
|
+
this.data.set(data);
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
loadInitialData() {
|
|
454
|
+
try {
|
|
455
|
+
this.facade.loadRequests();
|
|
456
|
+
}
|
|
457
|
+
catch (error) {
|
|
458
|
+
// Handle error
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
getCardDataByIdentifier(code) {
|
|
462
|
+
return this.cardData()?.find(({ data }) => data.data.Code === code);
|
|
463
|
+
}
|
|
464
|
+
async loadMore() {
|
|
465
|
+
try {
|
|
466
|
+
await this.facade.loadMore();
|
|
467
|
+
}
|
|
468
|
+
catch (error) {
|
|
469
|
+
// Handle error
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
async onSave(data) {
|
|
473
|
+
const payload = {
|
|
474
|
+
...this.currentData?.data,
|
|
475
|
+
...data,
|
|
476
|
+
// DataState: ObjectState.Changed,
|
|
477
|
+
};
|
|
478
|
+
await this.facade.addRequest(payload);
|
|
479
|
+
}
|
|
480
|
+
handleSearch(event) {
|
|
481
|
+
this.facade.search(event.value);
|
|
482
|
+
}
|
|
483
|
+
handleFetchedExport({ skip, limit }) {
|
|
484
|
+
this.facade.loadData(skip, limit).then((data) => {
|
|
485
|
+
if (data) {
|
|
486
|
+
this.handleExport(data);
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
async loadData(range) {
|
|
491
|
+
const data = await this.facade.loadData(range.skip, range.limit);
|
|
492
|
+
return data ?? [];
|
|
493
|
+
}
|
|
494
|
+
onStateChange(event) {
|
|
495
|
+
console.log(`State changed for ${event.key}:`, event.value);
|
|
496
|
+
switch (event.key) {
|
|
497
|
+
case 'create':
|
|
498
|
+
const timestamp = new Date();
|
|
499
|
+
var newForm = {
|
|
500
|
+
Name: '',
|
|
501
|
+
Description: '',
|
|
502
|
+
TenantId: '',
|
|
503
|
+
ServiceName: '',
|
|
504
|
+
id: crypto.randomUUID(),
|
|
505
|
+
Id: '',
|
|
506
|
+
CreatedAt: new Date(),
|
|
507
|
+
UpdatedAt: new Date(),
|
|
508
|
+
DataState: ObjectState.New,
|
|
509
|
+
Code: '',
|
|
510
|
+
};
|
|
511
|
+
this.data.update((prev) => [newForm, ...prev]);
|
|
512
|
+
// console.log(newForm);
|
|
513
|
+
break;
|
|
514
|
+
default:
|
|
515
|
+
break;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FlowableStatusFacade }, { token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
519
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlowableStatusComponent, selector: "lib-flowable-status", usesInheritance: true, ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\" (createClick)=\"vdv.toggleView()\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\" (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\">\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Name\" [formControl]=\"control\" placeHolder=\"Enter Name\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Description\" [formControl]=\"control\" placeHolder=\"Enter Description\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-isEditing=\"isEditing\" let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"edit\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"deleteRow()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n\n <ng-template #cellEdit let-value let-deleteRow let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"desc\"\n class=\"text-[10px] font-light\">Description:</label>\n <span id=\"desc\" class=\"text-sm\">{{\n item.data.Description\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label for=\"name\"\n class=\"text-[10px] font-light text-[#404040]\">Name</label>\n <span id=\"name\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <flowable-status-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></flowable-status-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i4.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i4.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i4.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i4.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i4.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i4.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i4.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i4.DataColumnsComponent, selector: "lib-data-columns", inputs: ["columns", "enableDragAndDrop", "maxVisibleItems"], outputs: ["columnsUpdated"] }, { kind: "component", type: i4.DataXportComponent, selector: "lib-data-xport", inputs: ["data", "columns", "useImportKey", "dataFetchUrl", "dataQueryParameters", "dataQueryFunction"], outputs: ["exportDataEvent", "exportDataRangeEvent"] }, { kind: "component", type: i4.DataSortComponent, selector: "lib-data-sort", inputs: ["columns", "data", "enableDragAndDrop"], outputs: ["sortApplied", "resetFilter"] }, { kind: "component", type: FlowableStatusFormComponent, selector: "flowable-status-form", inputs: ["currentData"], outputs: ["onSave", "switchView"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
520
|
+
}
|
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusComponent, decorators: [{
|
|
522
|
+
type: Component,
|
|
523
|
+
args: [{ selector: 'lib-flowable-status', template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\" (createClick)=\"vdv.toggleView()\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\" (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\">\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Name\" [formControl]=\"control\" placeHolder=\"Enter Name\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Description\" [formControl]=\"control\" placeHolder=\"Enter Description\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-isEditing=\"isEditing\" let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"edit\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"deleteRow()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n\n <ng-template #cellEdit let-value let-deleteRow let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"desc\"\n class=\"text-[10px] font-light\">Description:</label>\n <span id=\"desc\" class=\"text-sm\">{{\n item.data.Description\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label for=\"name\"\n class=\"text-[10px] font-light text-[#404040]\">Name</label>\n <span id=\"name\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <flowable-status-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></flowable-status-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
524
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: FlowableStatusFacade }, { type: i1$1.FormBuilder }] });
|
|
525
|
+
|
|
526
|
+
class FlowableStatusModule {
|
|
527
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
528
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, declarations: [FlowableStatusComponent, FlowableStatusFormComponent], imports: [CommonModule, SharedModule, RouterLink], exports: [FlowableStatusComponent] });
|
|
529
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, imports: [CommonModule, SharedModule] });
|
|
530
|
+
}
|
|
531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, decorators: [{
|
|
532
|
+
type: NgModule,
|
|
533
|
+
args: [{
|
|
534
|
+
declarations: [FlowableStatusComponent, FlowableStatusFormComponent],
|
|
535
|
+
imports: [CommonModule, SharedModule, RouterLink],
|
|
536
|
+
exports: [FlowableStatusComponent],
|
|
537
|
+
}]
|
|
538
|
+
}] });
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Generated bundle index. Do not edit.
|
|
542
|
+
*/
|
|
543
|
+
|
|
544
|
+
export { FlowableStatusComponent, FlowableStatusModule };
|
|
545
|
+
//# sourceMappingURL=verben-workflow-ui-src-lib-components-flowable-status.mjs.map
|