@yomotech/view-toolkit 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/ng-package.json +7 -0
  2. package/package.json +36 -22
  3. package/src/lib/app-version.ts +2 -0
  4. package/src/lib/containers/card/card.component.css +0 -0
  5. package/src/lib/containers/card/card.component.html +449 -0
  6. package/src/lib/containers/card/card.component.ts +471 -0
  7. package/src/lib/containers/form/form.component.css +0 -0
  8. package/src/lib/containers/form/form.component.html +1 -0
  9. package/src/lib/containers/form/form.component.ts +12 -0
  10. package/src/lib/containers/grid/grid.component.css +0 -0
  11. package/src/lib/containers/grid/grid.component.html +1 -0
  12. package/src/lib/containers/grid/grid.component.ts +12 -0
  13. package/src/lib/containers/pagination/pagination.component.css +0 -0
  14. package/src/lib/containers/pagination/pagination.component.html +1 -0
  15. package/src/lib/containers/pagination/pagination.component.ts +12 -0
  16. package/src/lib/services/app-version-reset.service.ts +59 -0
  17. package/src/lib/services/config.service.ts +128 -0
  18. package/src/lib/services/couchdb.ts +224 -0
  19. package/src/lib/services/mobile-keycloak.service.ts +116 -0
  20. package/src/lib/services/network-log.service.ts +27 -0
  21. package/src/lib/services/notification.service.ts +26 -0
  22. package/src/lib/services/pouchdb.service.ts +183 -0
  23. package/src/lib/services/request.service.ts +125 -0
  24. package/src/lib/services/utility.service.ts +593 -0
  25. package/src/lib/view-toolkit.module.ts +25 -0
  26. package/src/lib/view-toolkit.spec.ts +23 -0
  27. package/src/lib/view-toolkit.ts +15 -0
  28. package/src/public-api.ts +22 -0
  29. package/tsconfig.lib.json +17 -0
  30. package/tsconfig.lib.prod.json +11 -0
  31. package/tsconfig.spec.json +15 -0
  32. package/fesm2022/abdulahad-view-toolkit.mjs +0 -94
  33. package/fesm2022/abdulahad-view-toolkit.mjs.map +0 -1
  34. package/fesm2022/abdulahad061-view-toolkit.mjs +0 -94
  35. package/fesm2022/abdulahad061-view-toolkit.mjs.map +0 -1
  36. package/fesm2022/yomotech-view-toolkit.mjs +0 -95
  37. package/fesm2022/yomotech-view-toolkit.mjs.map +0 -1
  38. package/types/abdulahad-view-toolkit.d.ts +0 -33
  39. package/types/abdulahad061-view-toolkit.d.ts +0 -33
  40. package/types/yomotech-view-toolkit.d.ts +0 -30
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/view-toolkit",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,23 +1,37 @@
1
- {
2
- "name": "@yomotech/view-toolkit",
3
- "version": "0.0.1",
4
- "peerDependencies": {
5
- "@angular/common": "^21.1.0",
6
- "@angular/core": "^21.1.0"
7
- },
8
- "dependencies": {
9
- "tslib": "^2.3.0"
10
- },
11
- "sideEffects": false,
12
- "module": "fesm2022/yomotech-view-toolkit.mjs",
13
- "typings": "types/yomotech-view-toolkit.d.ts",
14
- "exports": {
15
- "./package.json": {
16
- "default": "./package.json"
17
- },
18
- ".": {
19
- "types": "./types/yomotech-view-toolkit.d.ts",
20
- "default": "./fesm2022/yomotech-view-toolkit.mjs"
21
- }
22
- }
1
+ {
2
+ "name": "@yomotech/view-toolkit",
3
+ "version": "0.0.3",
4
+ "peerDependencies": {
5
+ "@angular/animations": "^21.1.2",
6
+ "@angular/cdk": "^21.1.2",
7
+ "@angular/common": "^21.1.2",
8
+ "@angular/core": "^21.1.2",
9
+ "@angular/forms": "^21.1.2",
10
+ "@angular/material": "^21.1.2",
11
+ "@angular/platform-browser": "^21.1.2",
12
+ "@angular/router": "^21.1.2",
13
+ "@ant-design/icons-angular": "^21.0.0",
14
+ "@byteowls/capacitor-oauth2": "^5.0.0",
15
+ "@capacitor/app": "^7.1.0",
16
+ "@capacitor/browser": "^7.0.2",
17
+ "@capacitor/core": "^7.2.0",
18
+ "@capacitor/preferences": "^7.0.1",
19
+ "@ionic/angular": "^8.0.0",
20
+ "@stripe/stripe-js": "^5.5.0",
21
+ "angular-oauth2-oidc": "^17.0.2",
22
+ "jszip": "^3.10.1",
23
+ "ng-zorro-antd": "^21.1.0",
24
+ "ngx-toastr": "^19.1.0",
25
+ "pouchdb": "^9.0.0",
26
+ "pouchdb-core": "^9.0.0",
27
+ "primeflex": "^4.0.0",
28
+ "primeicons": "^7.0.0",
29
+ "primeng": "^21.1.1",
30
+ "rxjs": "~7.8.0",
31
+ "zone.js": "^0.16.0"
32
+ },
33
+ "dependencies": {
34
+ "tslib": "^2.3.0"
35
+ },
36
+ "sideEffects": false
23
37
  }
@@ -0,0 +1,2 @@
1
+ // AUTO-GENERATED. Do not edit.
2
+ export const APP_VERSION = '1.0.204';
File without changes
@@ -0,0 +1,449 @@
1
+ <!-- Loader Spinner -->
2
+ <div *ngIf="isLoading" class="loader-overlay">
3
+ <div class="spinner"></div>
4
+ </div>
5
+ <span *ngIf="this.selectedLanguageInfo?.selectedLanguage">
6
+ <!-- top pagination on card -->
7
+ <div *ngIf="itemInfo?.layoutSchema?.pagination?.pageSize && itemInfo?.layoutSchema?.pagination?.top">
8
+ <!-- <app-pagination [itemInfo]="itemInfo" [pageSize]="pageSize" [currentPage]="currentPage" [pages]="pages"
9
+ (pageSizeChange)="invokeOnPageSizeChange($event)" (onGoToPage)="invokeGoToPage($event)">
10
+ </app-pagination> -->
11
+ </div>
12
+ <div *ngIf="itemInfo?.header?.elements" [style]="getStyleWithoutClasses(itemInfo?.header?.style).style"
13
+ [class]="getStyleWithoutClasses(itemInfo?.header?.style).classes">
14
+ <span *ngFor="let element of itemInfo.header?.elements; let c = index">
15
+ <ng-container
16
+ [ngSwitch]="element.scope?.reference && itemInfo.propertySchema[getScope(element.scope?.reference)] ? itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.type : 'default'">
17
+
18
+ <!-- String Control -->
19
+ <div *ngSwitchCase="'string'" [class]="element.option?.visible ? 'card-field-wrapper' : 'hidden'">
20
+
21
+ <!-- LABEL -->
22
+ <span *ngIf="element.label?.caption" [style]="getStyleWithoutClasses(element.label?.style).style"
23
+ [class]="element.label?.style?.classes?.[0]">
24
+ {{ element.label.caption }}
25
+ </span>
26
+ </div>
27
+
28
+ <!-- Date control -->
29
+ <div *ngSwitchCase="'date'" class="mb-3">
30
+ <span *ngIf="element.option.protected" [style]="getStyleWithoutClasses(element?.label?.style).style"
31
+ [class]="element?.label?.style?.classes[0]">
32
+ <!-- <app-string [formField]="element" [modalItemInfo]="itemInfo">
33
+ </app-string> -->
34
+ </span>
35
+ <div *ngIf="!element.option.protected"
36
+ [class]="element?.layout == 'horizontal' ? 'horizontal-layout' : ''"
37
+ [ngClass]="element?.style?.classes[0]" [style]="getStyleWithoutClasses(element?.style).style">
38
+ <label [style]="getStyleWithoutClasses(element?.label?.style).style"
39
+ [class]="element?.label?.style?.classes[0]">{{ element.label?.value
40
+ ?
41
+ element.label?.value : element.label?.caption ?
42
+ element.label?.caption :
43
+ itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.caption
44
+ }}</label>
45
+ <p-datepicker (ngModelChange)="dateChangeEvent(element, $event)" [showIcon]="true" type="number"
46
+ inputmode="numeric"
47
+ [dateFormat]="itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.format ? itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()].format : 'yy-mm-dd'"
48
+ [(ngModel)]="itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()].value"
49
+ (onFocus)="forceNumericKeyboard($event)" (onInput)="onDateTyping($event)"
50
+ [class]="element?.scope?.style?.classes[0]"
51
+ [style]="getStyleWithoutClasses(element?.scope?.style).style">
52
+ </p-datepicker>
53
+ </div>
54
+ </div>
55
+
56
+ <!-- Button Control -->
57
+ <div *ngSwitchCase="'default'" [class]="element.option?.visible ? 'row' : 'hidden'"
58
+ (click)="invokeOnCardHeader(element)">
59
+ <button nz-button [style]="getStyleWithoutClasses(element.style).style"
60
+ [class]="element.option.protected ? 'disabled-button' : getStyleWithoutClasses(element.style).classes">
61
+ <ng-container *ngIf="!element.caption; else textContent">
62
+ <i nz-icon [nzType]="element.icon" nzTheme="outline"></i>
63
+ </ng-container>
64
+ <ng-template #textContent>
65
+ {{ element.caption }}
66
+ </ng-template>
67
+ </button>
68
+ </div>
69
+ </ng-container>
70
+ </span>
71
+ </div>
72
+ <div [class]="itemInfo.class" [style]="itemInfo.style">
73
+ <div *ngFor="let record of itemInfo.data; let k = index"
74
+ [ngClass]="itemInfo.layoutSchema.pagination ? itemInfo.layoutSchema.pagination ? cardPerRow + itemInfo.layoutSchema?.stylePerCard?.elementPerRow[k % itemInfo.layoutSchema?.stylePerCard?.elementPerRow.length] : '' : ''">
75
+ <div [class]="itemInfo.layoutSchema?.stylePerCard?.classes[0]">
76
+ <div *ngFor="let layout of itemInfo.layoutSchema.cards">
77
+ <ng-container
78
+ [ngSwitch]="layout?.scope?.reference && itemInfo.propertySchema[getScope(layout.scope?.reference)] ? itemInfo.propertySchema[getScope(layout.scope?.reference)][layout.scope?.reference.split('/').pop()]?.type : layout?.type == 'HorizontalLayout' ? 'HorizontalLayout' : 'default'">
79
+ <!-- Image Control -->
80
+ <div *ngSwitchCase="'image'" [class]="layout.option?.visible ? 'row' : 'hidden'">
81
+ <!-- <img [class]="getStyleWithoutClasses(layout?.scope?.style).classes"
82
+ [style]="getStyleWithoutClasses(layout?.scope?.style).style"
83
+ [src]="layout?.option?.src ? layout?.option?.src : record[layout.scope?.reference.split('/').pop()]"
84
+ alt="{{ layout.label ? layout.label : getProperty(layout.scope?.reference).productSchema.caption }}"
85
+ (click)="showImageDetails(layout.option, record)" /> -->
86
+ </div>
87
+
88
+ <!-- String Control -->
89
+ <div *ngSwitchCase="'string'" [class]="layout.option?.visible ? 'card-field-wrapper' : 'hidden'"
90
+ [style]="getStyleWithoutClasses(layout?.scope?.style).style">
91
+
92
+ <!-- LABEL -->
93
+ <span *ngIf="layout?.label?.caption" [class]="layout.label?.style?.classes?.[0]">
94
+ {{ layout.label.caption }}
95
+ </span>
96
+
97
+ <!-- VALUE -->
98
+ <p *ngIf="layout.option?.protected && layout.option?.visible"
99
+ [class]="getStyleWithoutClasses(layout?.scope?.style).classes"
100
+ (click)="showLinkDetails(layout.option, record)">
101
+ {{
102
+ record?.[layout.scope?.reference.split('/').pop()]
103
+ ?? itemInfo.propertySchema[
104
+ getScope(layout.scope?.reference)
105
+ ]?.[layout.scope?.reference.split('/').pop()]?.default
106
+ ?? '--'
107
+ }}
108
+ </p>
109
+ </div>
110
+
111
+ <!-- Date Control -->
112
+ <div *ngSwitchCase="'date'" [class]="layout.option?.visible ? 'card-field-wrapper' : 'hidden'"
113
+ [style]="getStyleWithoutClasses(layout?.scope?.style).style">
114
+
115
+ <!-- LABEL -->
116
+ <span *ngIf="layout?.label?.caption" [class]="layout.label?.style?.classes?.[0]">
117
+ {{ layout.label.caption }}
118
+ </span>
119
+
120
+ <!-- VALUE -->
121
+ <p *ngIf="layout.option?.protected && layout.option?.visible"
122
+ [class]="getStyleWithoutClasses(layout?.scope?.style).classes"
123
+ (click)="showLinkDetails(layout.option, record)">
124
+ {{
125
+ record?.[layout.scope?.reference.split('/').pop()]
126
+ ?? itemInfo.propertySchema[
127
+ getScope(layout.scope?.reference)
128
+ ]?.[layout.scope?.reference.split('/').pop()]?.default
129
+ ?? '--'
130
+ }}
131
+ </p>
132
+ </div>
133
+
134
+ <!-- Time Control -->
135
+ <div *ngSwitchCase="'time'" [class]="layout.option?.visible ? 'card-field-wrapper' : 'hidden'"
136
+ [style]="getStyleWithoutClasses(layout?.scope?.style).style">
137
+
138
+ <!-- LABEL -->
139
+ <span *ngIf="layout?.label?.caption" [class]="layout.label?.style?.classes?.[0]">
140
+ {{ layout.label.caption }}
141
+ </span>
142
+
143
+ <!-- VALUE -->
144
+ <p *ngIf="layout.option?.protected && layout.option?.visible"
145
+ [class]="getStyleWithoutClasses(layout?.scope?.style).classes"
146
+ (click)="showLinkDetails(layout.option, record)">
147
+ {{
148
+ record?.[layout.scope?.reference.split('/').pop()]
149
+ ?? itemInfo.propertySchema[
150
+ getScope(layout.scope?.reference)
151
+ ]?.[layout.scope?.reference.split('/').pop()]?.default
152
+ ?? '--'
153
+ }}
154
+ </p>
155
+ </div>
156
+
157
+ <!-- number Control -->
158
+ <div *ngSwitchCase="'number'" [class]="layout.option?.visible ? 'row' : 'hidden'">
159
+ <h3 *ngIf="itemInfo.propertySchema[getScope(layout.scope?.reference)] && itemInfo.propertySchema[getScope(layout.scope?.reference)][layout.scope?.reference.split('/').pop()]?.format.currency"
160
+ [class]="getStyleWithoutClasses(layout?.scope?.style).classes"
161
+ [style]="getStyleWithoutClasses(layout?.scope?.style).style">
162
+ {{ record[layout.scope?.reference.split('/').pop()] | currency: layout.option?.currency
163
+ ?
164
+ layout.option.currency
165
+ :
166
+ 'USD' }}
167
+ </h3>
168
+ </div>
169
+
170
+ <!-- Button Control -->
171
+ <div *ngSwitchCase="'default'" [class]="layout.option?.visible ? 'row' : 'hidden'">
172
+ <button [style]="getStyleWithoutClasses(layout?.style).style"
173
+ [class]="layout.option.protected ? 'disabled-button' : getStyleWithoutClasses(layout?.style).classes"
174
+ (click)="invokeButtonClick(layout, record, k)">
175
+ <ng-container *ngIf="!layout.caption; else textContent">
176
+ <i nz-icon [nzType]="layout.icon" nzTheme="outline"></i>
177
+ </ng-container>
178
+ <ng-template #textContent>
179
+ {{ layout.caption }}
180
+ </ng-template>
181
+ </button>
182
+ </div>
183
+
184
+ <!-- HorizontalLayout Control -->
185
+ <div *ngSwitchCase="'HorizontalLayout'">
186
+ <div [class]="getStyleWithoutClasses(layout?.style).classes"
187
+ [style]="getStyleWithoutClasses(layout?.style).style">
188
+ <ng-container *ngFor="let innerLayout of layout.elements">
189
+ <ng-container
190
+ [ngSwitch]="innerLayout.scope?.reference && itemInfo.propertySchema[getScope(innerLayout.scope?.reference)] ? itemInfo.propertySchema[getScope(innerLayout.scope?.reference)][innerLayout.scope?.reference.split('/').pop()]?.type : 'default'">
191
+ <!-- Image Control -->
192
+ <div *ngSwitchCase="'image'"
193
+ [class]="innerLayout.option?.visible ? 'row' : 'hidden'">
194
+ <!-- <img [class]="getStyleWithoutClasses(innerLayout?.scope?.style).classes"
195
+ [style]="getStyleWithoutClasses(innerLayout?.scope?.style).style"
196
+ [src]="innerLayout?.option?.src ? innerLayout?.option?.src : record[innerLayout.scope?.reference.split('/').pop()]"
197
+ alt="{{ innerLayout.label ? innerLayout.label : getProperty(innerLayout.scope?.reference).productSchema.caption }}"
198
+ (click)="showImageDetails(innerLayout.option, record)" /> -->
199
+ </div>
200
+
201
+ <!-- String Control -->
202
+ <div *ngSwitchCase="'string'"
203
+ [class]="innerLayout.option?.visible ? 'card-field-wrapper' : 'hidden'">
204
+
205
+ <!-- LABEL -->
206
+ <span *ngIf="innerLayout.label?.caption"
207
+ [style]="getStyleWithoutClasses(innerLayout.label?.style).style"
208
+ [class]="innerLayout.label?.style?.classes?.[0]">
209
+ {{ innerLayout.label.caption }}
210
+ </span>
211
+
212
+ <!-- VALUE -->
213
+ <h3 *ngIf="innerLayout.option?.protected && innerLayout.option?.visible"
214
+ [class]="getStyleWithoutClasses(innerLayout?.scope?.style).classes"
215
+ [style]="getStyleWithoutClasses(innerLayout?.scope?.style).style"
216
+ (click)="showLinkDetails(innerLayout.option, record)">
217
+
218
+ <!-- DATE FORMAT -->
219
+ <ng-container *ngIf="innerLayout.option?.dateFormat; else checkTime">
220
+ {{
221
+ record?.[innerLayout.scope?.reference.split('/').pop()]
222
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
223
+ innerLayout.option.dateFormat)
224
+ : '--'
225
+ }}
226
+ </ng-container>
227
+
228
+ <!-- TIME FORMAT -->
229
+ <ng-template #checkTime>
230
+ <ng-container
231
+ *ngIf="innerLayout.option?.timeFormat; else normalValue">
232
+ {{
233
+ record?.[innerLayout.scope?.reference.split('/').pop()]
234
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
235
+ innerLayout.option.timeFormat)
236
+ : '--'
237
+ }}
238
+ </ng-container>
239
+ </ng-template>
240
+
241
+ <!-- NORMAL STRING -->
242
+ <ng-template #normalValue>
243
+ {{
244
+ record?.[innerLayout.scope?.reference.split('/').pop()]
245
+ ?? '--'
246
+ }}
247
+ </ng-template>
248
+
249
+ </h3>
250
+ </div>
251
+
252
+ <!-- number Control -->
253
+ <div *ngSwitchCase="'number'"
254
+ [class]="innerLayout.option?.visible ? 'row' : 'hidden'">
255
+ <h3 *ngIf="itemInfo.propertySchema[getScope(innerLayout.scope?.reference)] &&itemInfo.propertySchema[getScope(innerLayout.scope?.reference)][innerLayout.scope?.reference.split('/').pop()]?.format.currency"
256
+ [class]="getStyleWithoutClasses(innerLayout?.scope?.style).classes"
257
+ [style]="getStyleWithoutClasses(innerLayout?.scope?.style).style">
258
+ {{ record[innerLayout.scope?.reference.split('/').pop()] | currency:
259
+ innerLayout.option?.currency ?
260
+ innerLayout.option.currency
261
+ :
262
+ 'USD' }}
263
+ </h3>
264
+ </div>
265
+
266
+ <!-- Date Control -->
267
+ <div *ngSwitchCase="'date'"
268
+ [class]="innerLayout.option?.visible ? 'card-field-wrapper' : 'hidden'">
269
+
270
+ <!-- LABEL -->
271
+ <span *ngIf="innerLayout.label?.caption"
272
+ [style]="getStyleWithoutClasses(innerLayout.label?.style).style"
273
+ [class]="innerLayout.label?.style?.classes?.[0]">
274
+ {{ innerLayout.label.caption }}
275
+ </span>
276
+
277
+ <!-- VALUE -->
278
+ <h3 *ngIf="innerLayout.option?.protected && innerLayout.option?.visible"
279
+ [class]="getStyleWithoutClasses(innerLayout?.scope?.style).classes"
280
+ [style]="getStyleWithoutClasses(innerLayout?.scope?.style).style"
281
+ (click)="showLinkDetails(innerLayout.option, record)">
282
+
283
+ <!-- DATE FORMAT -->
284
+ <ng-container *ngIf="innerLayout.option?.dateFormat; else checkTime">
285
+ {{
286
+ record?.[innerLayout.scope?.reference.split('/').pop()]
287
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
288
+ innerLayout.option.dateFormat)
289
+ : '--'
290
+ }}
291
+ </ng-container>
292
+
293
+ <!-- TIME FORMAT -->
294
+ <ng-template #checkTime>
295
+ <ng-container
296
+ *ngIf="innerLayout.option?.timeFormat; else normalValue">
297
+ {{
298
+ record?.[innerLayout.scope?.reference.split('/').pop()]
299
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
300
+ innerLayout.option.timeFormat)
301
+ : '--'
302
+ }}
303
+ </ng-container>
304
+ </ng-template>
305
+
306
+ <!-- NORMAL STRING -->
307
+ <ng-template #normalValue>
308
+ {{
309
+ record?.[innerLayout.scope?.reference.split('/').pop()]
310
+ ?? '--'
311
+ }}
312
+ </ng-template>
313
+
314
+ </h3>
315
+ </div>
316
+
317
+ <!-- Time Control -->
318
+ <div *ngSwitchCase="'time'"
319
+ [class]="innerLayout.option?.visible ? 'card-field-wrapper' : 'hidden'">
320
+
321
+ <!-- LABEL -->
322
+ <span *ngIf="innerLayout.label?.caption"
323
+ [style]="getStyleWithoutClasses(innerLayout.label?.style).style"
324
+ [class]="innerLayout.label?.style?.classes?.[0]">
325
+ {{ innerLayout.label.caption }}
326
+ </span>
327
+
328
+ <!-- VALUE -->
329
+ <h3 *ngIf="innerLayout.option?.protected && innerLayout.option?.visible"
330
+ [class]="getStyleWithoutClasses(innerLayout?.scope?.style).classes"
331
+ [style]="getStyleWithoutClasses(innerLayout?.scope?.style).style"
332
+ (click)="showLinkDetails(innerLayout.option, record)">
333
+
334
+ <!-- DATE FORMAT -->
335
+ <ng-container *ngIf="innerLayout.option?.dateFormat; else checkTime">
336
+ {{
337
+ record?.[innerLayout.scope?.reference.split('/').pop()]
338
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
339
+ innerLayout.option.dateFormat)
340
+ : '--'
341
+ }}
342
+ </ng-container>
343
+
344
+ <!-- TIME FORMAT -->
345
+ <ng-template #checkTime>
346
+ <ng-container
347
+ *ngIf="innerLayout.option?.timeFormat; else normalValue">
348
+ {{
349
+ record?.[innerLayout.scope?.reference.split('/').pop()]
350
+ ? (record[innerLayout.scope?.reference.split('/').pop()] | date:
351
+ innerLayout.option.timeFormat)
352
+ : '--'
353
+ }}
354
+ </ng-container>
355
+ </ng-template>
356
+
357
+ <!-- NORMAL STRING -->
358
+ <ng-template #normalValue>
359
+ {{
360
+ record?.[innerLayout.scope?.reference.split('/').pop()]
361
+ ?? '--'
362
+ }}
363
+ </ng-template>
364
+
365
+ </h3>
366
+ </div>
367
+
368
+ <!-- Button Control -->
369
+ <div *ngSwitchCase="'default'">
370
+ <button nz-button [style]="getStyleWithoutClasses(innerLayout?.style).style"
371
+ [class]="innerLayout.option?.visible ? innerLayout.option.protected ? 'disabled-button' : getStyleWithoutClasses(innerLayout?.style).classes : 'hidden'"
372
+ (click)="invokeButtonClick(innerLayout, record, k)">
373
+ <ng-container *ngIf="!innerLayout.caption; else textContent">
374
+ <i nz-icon [nzType]="innerLayout.icon" nzTheme="outline"></i>
375
+ </ng-container>
376
+ <ng-template #textContent>
377
+ {{ innerLayout.caption }}
378
+ </ng-template>
379
+ </button>
380
+ </div>
381
+
382
+ </ng-container>
383
+ </ng-container>
384
+ </div>
385
+ </div>
386
+ </ng-container>
387
+ </div>
388
+ </div>
389
+ </div>
390
+ </div>
391
+ <div *ngIf="itemInfo?.footer?.elements && itemInfo?.data && itemInfo?.data.length"
392
+ [class]="getStyleWithoutClasses(itemInfo?.footer?.style).classes">
393
+ <span *ngFor="let element of itemInfo.footer?.elements; let c = index">
394
+ <ng-container
395
+ [ngSwitch]="element.scope?.reference && itemInfo.propertySchema[getScope(element.scope?.reference)] ? itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.type : 'default'">
396
+
397
+ <!-- Date control -->
398
+ <div *ngSwitchCase="'date'" class="form-group mb-3">
399
+ <span *ngIf="element.option.protected" [style]="getStyleWithoutClasses(element?.label?.style).style"
400
+ [class]="element?.label?.style?.classes[0]">
401
+ <h5>{{
402
+ itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.caption
403
+ }}
404
+ </h5>
405
+ </span>
406
+ <div *ngIf="!element.option.protected">
407
+ <div [class]="element?.layout == 'horizontal' ? 'horizontal-layout' : 'row'">
408
+ <label [style]="getStyleWithoutClasses(element?.label?.style).style"
409
+ [class]="element?.label?.style?.classes[0]">{{ element.label?.value
410
+ ?
411
+ element.label?.value : element.label?.caption ?
412
+ element.label?.caption :
413
+ itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.caption
414
+ }}</label>
415
+
416
+ <nz-date-picker [required]="element.option.required" [name]="element.scope?.reference"
417
+ [nzDisabled]="element?.option?.disabled"
418
+ (ngModelChange)="dateChangeEvent(element, $event)"
419
+ [nzFormat]="itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.format ? itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()]?.format : 'yyyy-MM-dd'"
420
+ [(ngModel)]="itemInfo.propertySchema[getScope(element.scope?.reference)][element.scope?.reference.split('/').pop()].value"
421
+ [style]="getStyleWithoutClasses(element?.style).style"></nz-date-picker>
422
+ </div>
423
+
424
+ </div>
425
+ </div>
426
+
427
+ <!-- Button Control -->
428
+ <div *ngSwitchCase="'default'" [class]="element.option?.visible ? 'row' : 'hidden'"
429
+ (click)="invokeOnCardFooter(element)">
430
+ <button nz-button [style]="getStyleWithoutClasses(element.style).style"
431
+ [class]="element.option.protected ? 'disabled-button' : getStyleWithoutClasses(element.style).classes">
432
+ <ng-container *ngIf="!element.caption; else textContent">
433
+ <i nz-icon [nzType]="element.icon" nzTheme="outline"></i>
434
+ </ng-container>
435
+ <ng-template #textContent>
436
+ {{ element.caption }}
437
+ </ng-template>
438
+ </button>
439
+ </div>
440
+ </ng-container>
441
+ </span>
442
+ </div>
443
+ <!-- bottom pagination on card -->
444
+ <!-- <div *ngIf="itemInfo?.layoutSchema?.pagination && itemInfo?.layoutSchema?.pagination?.bottom">
445
+ <app-pagination [itemInfo]="itemInfo" [pageSize]="pageSize" [currentPage]="currentPage" [pages]="pages"
446
+ (pageSizeChange)="invokeOnPageSizeChange($event)" (onGoToPage)="invokeGoToPage($event)">
447
+ </app-pagination>
448
+ </div> -->
449
+ </span>