@unipin/angular-applet 18.6.7 → 18.6.8

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 (97) hide show
  1. package/fesm2022/unipin-angular-applet.mjs +181 -211
  2. package/fesm2022/unipin-angular-applet.mjs.map +1 -1
  3. package/lib/components/approval/detail/approval-detail.component.d.ts +2 -1
  4. package/lib/components/index.d.ts +1 -1
  5. package/lib/components/tabs/index.d.ts +7 -3
  6. package/lib/components/tabs/tab-content/tab-content.component.d.ts +1 -1
  7. package/lib/components/tabs/tab-group/tab-group.component.d.ts +7 -5
  8. package/package.json +1 -3
  9. package/public-api.d.ts +1 -1
  10. package/esm2022/graphql/generated.mjs +0 -570
  11. package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +0 -79
  12. package/esm2022/lib/components/approval/form/approval-form.component.mjs +0 -128
  13. package/esm2022/lib/components/approval/index.mjs +0 -3
  14. package/esm2022/lib/components/approval/list/approval-list.component.mjs +0 -113
  15. package/esm2022/lib/components/approval/services/approval.service.mjs +0 -46
  16. package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +0 -124
  17. package/esm2022/lib/components/audit/index.mjs +0 -3
  18. package/esm2022/lib/components/audit/list/audit-list.component.mjs +0 -81
  19. package/esm2022/lib/components/audit/service/audit.service.mjs +0 -49
  20. package/esm2022/lib/components/audit/types/audit-detail-form.type.mjs +0 -2
  21. package/esm2022/lib/components/buttons/group/btn-group.component.mjs +0 -45
  22. package/esm2022/lib/components/buttons/group/interfaces/btn-group-config.interface.mjs +0 -2
  23. package/esm2022/lib/components/buttons/index.mjs +0 -3
  24. package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +0 -48
  25. package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +0 -54
  26. package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +0 -23
  27. package/esm2022/lib/components/containers/column-container/column-container.component.mjs +0 -79
  28. package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +0 -23
  29. package/esm2022/lib/components/containers/index.mjs +0 -6
  30. package/esm2022/lib/components/containers/list-container/index.mjs +0 -3
  31. package/esm2022/lib/components/containers/list-container/interfaces/list-container-config.interface.mjs +0 -2
  32. package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +0 -58
  33. package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +0 -57
  34. package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +0 -40
  35. package/esm2022/lib/components/filter/filter.component.mjs +0 -121
  36. package/esm2022/lib/components/filter/index.mjs +0 -2
  37. package/esm2022/lib/components/filter/interfaces/filter-config.interface.mjs +0 -2
  38. package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +0 -2
  39. package/esm2022/lib/components/filter/interfaces/filter-search-event.interface.mjs +0 -2
  40. package/esm2022/lib/components/forms/country-input/form-country-input.component.mjs +0 -122
  41. package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +0 -157
  42. package/esm2022/lib/components/forms/date/form-date.component.mjs +0 -109
  43. package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +0 -49
  44. package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +0 -68
  45. package/esm2022/lib/components/forms/index.mjs +0 -11
  46. package/esm2022/lib/components/forms/input/form-input.component.mjs +0 -94
  47. package/esm2022/lib/components/forms/number/form-number.component.mjs +0 -97
  48. package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +0 -38
  49. package/esm2022/lib/components/forms/password/form-password.component.mjs +0 -100
  50. package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +0 -132
  51. package/esm2022/lib/components/forms/select/form-select.component.mjs +0 -116
  52. package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +0 -88
  53. package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +0 -111
  54. package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +0 -109
  55. package/esm2022/lib/components/grids/index.mjs +0 -4
  56. package/esm2022/lib/components/grids/interfaces/grid-config.interface.mjs +0 -2
  57. package/esm2022/lib/components/grids/services/grid.service.mjs +0 -25
  58. package/esm2022/lib/components/index.mjs +0 -9
  59. package/esm2022/lib/components/infinite-scroll/directive/infinite-scroll.directive.mjs +0 -43
  60. package/esm2022/lib/components/infinite-scroll/index.mjs +0 -3
  61. package/esm2022/lib/components/infinite-scroll/infinite-scroll.component.mjs +0 -36
  62. package/esm2022/lib/components/tabs/index.mjs +0 -4
  63. package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +0 -39
  64. package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +0 -47
  65. package/esm2022/lib/components/tabs/tabs.component.module.mjs +0 -29
  66. package/esm2022/lib/guards/auth/auth.guard.mjs +0 -10
  67. package/esm2022/lib/guards/index.mjs +0 -2
  68. package/esm2022/lib/interceptors/header/header.interceptor.mjs +0 -20
  69. package/esm2022/lib/interceptors/index.mjs +0 -3
  70. package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +0 -45
  71. package/esm2022/lib/interfaces/index.mjs +0 -2
  72. package/esm2022/lib/interfaces/user/user.interface.mjs +0 -2
  73. package/esm2022/lib/modules/index.mjs +0 -3
  74. package/esm2022/lib/modules/micro-frontend/index.mjs +0 -2
  75. package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +0 -55
  76. package/esm2022/lib/modules/micro-frontend/utils/mf-global-state.util.mjs +0 -14
  77. package/esm2022/lib/modules/permission/directive/permission.directive.mjs +0 -41
  78. package/esm2022/lib/modules/permission/guards/permission.guard.mjs +0 -26
  79. package/esm2022/lib/modules/permission/index.mjs +0 -7
  80. package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +0 -15
  81. package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +0 -52
  82. package/esm2022/lib/modules/permission/permission.module.mjs +0 -20
  83. package/esm2022/lib/modules/permission/services/permission.service.mjs +0 -47
  84. package/esm2022/lib/resolvers/auth/auth.resolver.mjs +0 -87
  85. package/esm2022/lib/resolvers/index.mjs +0 -2
  86. package/esm2022/lib/services/auth/auth.service.mjs +0 -145
  87. package/esm2022/lib/services/country/country.service.mjs +0 -43
  88. package/esm2022/lib/services/currency/currency.service.mjs +0 -40
  89. package/esm2022/lib/services/index.mjs +0 -5
  90. package/esm2022/lib/services/profile/profile.service.mjs +0 -71
  91. package/esm2022/lib/utils/contrast-color-generator/contrast-color-generator.util.mjs +0 -16
  92. package/esm2022/lib/utils/form-error-message/form-error-message.util.mjs +0 -21
  93. package/esm2022/lib/utils/format-capitalize/format-capitalize.util.mjs +0 -18
  94. package/esm2022/lib/utils/index.mjs +0 -4
  95. package/esm2022/public-api.mjs +0 -10
  96. package/esm2022/unipin-angular-applet.mjs +0 -2
  97. package/lib/components/tabs/tabs.component.module.d.ts +0 -9
@@ -1,79 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
- import { NavigationEnd } from '@angular/router';
3
- import { filter } from 'rxjs';
4
- import { IonicModule } from '@ionic/angular';
5
- import { ApprovalFormComponent } from '../form/approval-form.component';
6
- import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
7
- import { ColumnHeaderContainerComponent } from '../../containers/colum-header-container/column-header-container.component';
8
- import { TabsComponentModule } from '../../tabs/tabs.component.module';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/router";
11
- import * as i2 from "@ionic/angular";
12
- import * as i3 from "../../tabs/tab-group/tab-group.component";
13
- import * as i4 from "../../tabs/tab-content/tab-content.component";
14
- export class ApprovalDetailComponent {
15
- constructor(router, activatedRoute) {
16
- this.router = router;
17
- this.activatedRoute = activatedRoute;
18
- this.btnConfig = [];
19
- this.guid = '';
20
- }
21
- ngOnInit() {
22
- this.sub = this.activatedRoute.queryParams.subscribe((params) => {
23
- if (params) {
24
- this.guids = params['guids'];
25
- this.isApprove = params['isApprove'] === 'true';
26
- this.approvalGroupGuid = params['approvalGroupGuid'];
27
- }
28
- });
29
- }
30
- ngAfterViewInit() {
31
- if (this.guids) {
32
- this.setChildGuid(this.guids);
33
- this.changeTab(this.activatedRoute.snapshot.fragment);
34
- }
35
- else {
36
- this.setChildGuid([this.activatedRoute.children[0].snapshot.params['guid']]);
37
- this.changeTab(this.activatedRoute.snapshot.fragment);
38
- this.sub = this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe({
39
- next: () => {
40
- const newGuid = this.activatedRoute.children[0].snapshot.params['guid'];
41
- if (this.guid !== newGuid) {
42
- this.guid = newGuid;
43
- this.setChildGuid([this.guid]);
44
- }
45
- }
46
- });
47
- }
48
- }
49
- ngOnDestroy() {
50
- this.sub.unsubscribe();
51
- }
52
- changeTab(f) {
53
- switch (f) {
54
- default:
55
- this.btnConfig = this.formComponent?.btnConfig ?? [];
56
- }
57
- }
58
- setChildGuid(guids) {
59
- this.formComponent?.setGuid(guids, this.approvalGroupGuid, this.isApprove);
60
- }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalDetailComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: ApprovalDetailComponent, isStandalone: true, selector: "up-approval-detail", host: { classAttribute: "d-block h-100" }, viewQueries: [{ propertyName: "formComponent", first: true, predicate: ApprovalFormComponent, descendants: true }], ngImport: i0, template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n @if (!formComponent?.isLoading) {\n <up-btn-group id=\"approval-detail-button\" [config]=\"btnConfig\" button />\n }\n @else {\n <ion-skeleton-text class=\"m-0 sk-btn\" button />\n }\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "ngmodule", type: TabsComponentModule }, { kind: "component", type: i3.TabGroupComponent, selector: "up-tab-group", outputs: ["onChange"] }, { kind: "component", type: i4.TabContentComponent, selector: "up-tab-content", inputs: ["header"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: ColumnHeaderContainerComponent, selector: "up-column-header-container", inputs: ["header", "prevUrl"] }, { kind: "component", type: ApprovalFormComponent, selector: "up-approval-form", inputs: ["isLoading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
- }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalDetailComponent, decorators: [{
65
- type: Component,
66
- args: [{ standalone: true, selector: 'up-approval-detail', changeDetection: ChangeDetectionStrategy.OnPush, host: {
67
- class: 'd-block h-100'
68
- }, imports: [
69
- IonicModule,
70
- TabsComponentModule,
71
- ButtonGroupComponent,
72
- ColumnHeaderContainerComponent,
73
- ApprovalFormComponent
74
- ], template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n @if (!formComponent?.isLoading) {\n <up-btn-group id=\"approval-detail-button\" [config]=\"btnConfig\" button />\n }\n @else {\n <ion-skeleton-text class=\"m-0 sk-btn\" button />\n }\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n" }]
75
- }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { formComponent: [{
76
- type: ViewChild,
77
- args: [ApprovalFormComponent]
78
- }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFrQixhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDM0gsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQW1CdkUsTUFBTSxPQUFPLHVCQUF1QjtJQVVsQyxZQUNxQixNQUFjLEVBQ2QsY0FBOEI7UUFEOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVQ1QyxjQUFTLEdBQXdCLEVBQUUsQ0FBQztRQUVqQyxTQUFJLEdBQVcsRUFBRSxDQUFDO0lBUXhCLENBQUM7SUFFRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEdB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O3NCQUFyRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb25maWcgfSBmcm9tICcuLi8uLi9idXR0b25zL2dyb3VwL2ludGVyZmFjZXMvYnRuLWdyb3VwLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwcm92YWxGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvYnRuLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5IZWFkZXJDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250YWluZXJzL2NvbHVtLWhlYWRlci1jb250YWluZXIvY29sdW1uLWhlYWRlci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYnNDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi90YWJzL3RhYnMuY29tcG9uZW50Lm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWFwcHJvdmFsLWRldGFpbCcsXG4gIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtYmxvY2sgaC0xMDAnXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBJb25pY01vZHVsZSxcbiAgICBUYWJzQ29tcG9uZW50TW9kdWxlLFxuICAgIEJ1dHRvbkdyb3VwQ29tcG9uZW50LFxuICAgIENvbHVtbkhlYWRlckNvbnRhaW5lckNvbXBvbmVudCxcbiAgICBBcHByb3ZhbEZvcm1Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbERldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKEFwcHJvdmFsRm9ybUNvbXBvbmVudCkgcHVibGljIGZvcm1Db21wb25lbnQ/OiBBcHByb3ZhbEZvcm1Db21wb25lbnQ7XG4gIHB1YmxpYyBidG5Db25maWc6IEJ1dHRvbkdyb3VwQ29uZmlnW10gPSBbXTtcbiAgcHJvdGVjdGVkIGd1aWRzPzogc3RyaW5nW107XG4gIHByb3RlY3RlZCBndWlkOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIHN1YiE6IFN1YnNjcmlwdGlvbjsgIFxuICBwcm90ZWN0ZWQgaXNBcHByb3ZlPzogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGFwcHJvdmFsR3JvdXBHdWlkPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICB0aGlzLmd1aWRzID0gcGFyYW1zWydndWlkcyddO1xuICAgICAgICB0aGlzLmlzQXBwcm92ZSA9IHBhcmFtc1snaXNBcHByb3ZlJ10gPT09ICd0cnVlJztcblxuICAgICAgICB0aGlzLmFwcHJvdmFsR3JvdXBHdWlkID0gcGFyYW1zWydhcHByb3ZhbEdyb3VwR3VpZCddO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lke1xuICAgIGlmICh0aGlzLmd1aWRzKSB7XG4gICAgICB0aGlzLnNldENoaWxkR3VpZCh0aGlzLmd1aWRzKTtcbiAgICAgIHRoaXMuY2hhbmdlVGFiKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZnJhZ21lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldENoaWxkR3VpZChbdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlblswXS5zbmFwc2hvdC5wYXJhbXNbJ2d1aWQnXV0pO1xuICAgICAgdGhpcy5jaGFuZ2VUYWIodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCk7XG5cbiAgICAgIHRoaXMuc3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdHdWlkOiBzdHJpbmcgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuWzBdLnNuYXBzaG90LnBhcmFtc1snZ3VpZCddO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZ3VpZCAhPT0gbmV3R3VpZCkge1xuICAgICAgICAgICAgdGhpcy5ndWlkID0gbmV3R3VpZDtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hpbGRHdWlkKFsgdGhpcy5ndWlkIF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWR7IFxuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7IFxuICB9XG5cbiAgcHVibGljIGNoYW5nZVRhYihmOiBzdHJpbmcgfCBudWxsKTogdm9pZHtcbiAgICBzd2l0Y2ggKGYpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYnRuQ29uZmlnID0gdGhpcy5mb3JtQ29tcG9uZW50Py5idG5Db25maWc/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q2hpbGRHdWlkKGd1aWRzOiBzdHJpbmdbXSk6IHZvaWR7XG4gICAgdGhpcy5mb3JtQ29tcG9uZW50Py5zZXRHdWlkKGd1aWRzLCB0aGlzLmFwcHJvdmFsR3JvdXBHdWlkLCB0aGlzLmlzQXBwcm92ZSk7XG4gIH1cbn1cbiIsIjx1cC1jb2x1bW4taGVhZGVyLWNvbnRhaW5lciBoZWFkZXI9XCJBcHByb3ZhbCBEZXRhaWxcIiBwcmV2VXJsPVwiL2FwcHJvdmFsXCIgY2xhc3M9XCJiZy13aGl0ZVwiPlxuICAgIEBpZiAoIWZvcm1Db21wb25lbnQ/LmlzTG9hZGluZykge1xuICAgICAgICA8dXAtYnRuLWdyb3VwIGlkPVwiYXBwcm92YWwtZGV0YWlsLWJ1dHRvblwiIFtjb25maWddPVwiYnRuQ29uZmlnXCIgYnV0dG9uIC8+XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIHNrLWJ0blwiIGJ1dHRvbiAvPlxuICAgIH1cblxuICAgIDx1cC10YWItZ3JvdXAgY2xhc3M9XCJoLTEwMFwiIChvbkNoYW5nZSk9XCJjaGFuZ2VUYWIoJGV2ZW50KVwiPlxuICAgICAgICA8dXAtdGFiLWNvbnRlbnQgaGVhZGVyPVwiRGV0YWlsXCIgZnJhZ21lbnQ9XCJkZXRhaWxcIj5cbiAgICAgICAgICAgIDx1cC1hcHByb3ZhbC1mb3JtIC8+XG4gICAgICAgIDwvdXAtdGFiLWNvbnRlbnQ+XG4gICAgPC91cC10YWItZ3JvdXA+XG48L3VwLWNvbHVtbi1oZWFkZXItY29udGFpbmVyPlxuIl19
@@ -1,128 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { DatePipe, JsonPipe } from '@angular/common';
3
- import { IonicModule } from '@ionic/angular';
4
- import { ApprovalStatusEnum } from '../../../../graphql/generated';
5
- import { FormInputComponent } from '../../forms/input/form-input.component';
6
- import { FormTextareaComponent } from '../../forms/textarea/form-textarea.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "../services/approval.service";
10
- import * as i3 from "../../grids/services/grid.service";
11
- import * as i4 from "@ionic/angular";
12
- import * as i5 from "../../../modules/permission/services/permission.service";
13
- export class ApprovalFormComponent {
14
- constructor(router, ch, service, gridService, alertCtrl, permService) {
15
- this.router = router;
16
- this.ch = ch;
17
- this.service = service;
18
- this.gridService = gridService;
19
- this.alertCtrl = alertCtrl;
20
- this.permService = permService;
21
- this.isLoading = true;
22
- this.btnConfig = [];
23
- this.data = [];
24
- }
25
- ngOnDestroy() {
26
- this.sub?.unsubscribe();
27
- }
28
- setGuid(guids, approvalGroupGuid, isApprove) {
29
- this.guids = guids;
30
- if (approvalGroupGuid) {
31
- this.approvalGroupGuid = approvalGroupGuid;
32
- }
33
- this.btnConfig.length = 0;
34
- this.setLoading(true);
35
- this.sub = this.service.query({ guids, status: [ApprovalStatusEnum.Approved, ApprovalStatusEnum.Declined, ApprovalStatusEnum.Pending] }, 'data permission reason').subscribe({
36
- next: ({ data: { approvalMsApprovals: { data } } }) => {
37
- if (!data || data.length === 0) {
38
- this.router.navigateByUrl('approval');
39
- return;
40
- }
41
- this.data = data;
42
- if (data.length === 1) {
43
- const { status, permission } = data[0];
44
- if (status === ApprovalStatusEnum.Pending) {
45
- const perm = permission.split('.');
46
- if (this.permService.checkPermission(perm[0], perm[1], perm[2])) {
47
- this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval', disabled: false, onClick: this.request.bind(this) }, { label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
48
- }
49
- }
50
- }
51
- else {
52
- let dataCount = 0;
53
- data.map(({ permission, status }) => {
54
- if (status === ApprovalStatusEnum.Pending) {
55
- const perm = permission.split('.');
56
- if (this.permService.checkPermission(perm[0], perm[1], perm[2])) {
57
- dataCount++;
58
- }
59
- if (dataCount === data.length) {
60
- if (isApprove) {
61
- this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval(s)', disabled: false, onClick: this.request.bind(this) });
62
- }
63
- else {
64
- this.btnConfig.push({ label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
65
- }
66
- }
67
- }
68
- });
69
- }
70
- this.setLoading(false);
71
- },
72
- error: ({ message }) => {
73
- this.showAlert('Error', message);
74
- this.router.navigateByUrl('approval');
75
- }
76
- });
77
- }
78
- request(btn) {
79
- const isApprove = btn.color !== 'danger';
80
- this.showAlert('Confirm', `Are you sure want to ${isApprove ? 'approve the approval?' : 'decline the approval? Please input the reason if you want to decline.'}`, [
81
- { text: 'Cancel', handler: () => btn.toggleLoading() },
82
- {
83
- text: `${isApprove ? 'Approve' : 'Decline'}`,
84
- handler: ({ reason }) => {
85
- this.sub?.unsubscribe();
86
- this.sub = this.service.request({
87
- reason,
88
- isApprove,
89
- guids: this.guids,
90
- approvalGroupGuid: this.approvalGroupGuid
91
- }).subscribe({
92
- next: () => {
93
- this.showAlert('Success', `Approval ${isApprove ? 'approved' : 'declined'}`);
94
- this.router.navigateByUrl('approval');
95
- this.gridService.refreshGridCache('grid-approval-list');
96
- },
97
- error: ({ message }) => {
98
- btn.toggleLoading();
99
- this.showAlert('Error', message);
100
- }
101
- });
102
- }
103
- }
104
- ], [{ name: 'reason', type: 'textarea', placeholder: 'Reason' }]);
105
- }
106
- setLoading(b) {
107
- this.isLoading = b;
108
- this.ch.markForCheck();
109
- }
110
- async showAlert(header, message, buttons = ['OK'], inputs = []) { (await this.alertCtrl.create({ header, message, buttons, inputs })).present(); }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalFormComponent, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.ApprovalService }, { token: i3.GridService }, { token: i4.AlertController }, { token: i5.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: ApprovalFormComponent, isStandalone: true, selector: "up-approval-form", inputs: { isLoading: "isLoading" }, host: { classAttribute: "px-4 pb-4 d-block" }, ngImport: i0, template: "@if (isLoading) {\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n \n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 sk-input\" />\n}\n@else {\n @for (d of data; track $index) {\n @if (data.length > 1) {\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ $index + 1 }}</h5>\n </div>\n }\n \n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n\n <up-textarea label=\"JSON\" [disabled]=\"true\" [value]=\"d.data | json\" />\n <up-textarea class=\"mt-4\" label=\"Reason\" [disabled]=\"true\" [value]=\"d.reason\" *ngIf=\"d.status !== 'PENDING'\" />\n }\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled"], outputs: ["onInput"] }, { kind: "component", type: FormTextareaComponent, selector: "up-textarea", inputs: ["value", "required", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalFormComponent, decorators: [{
115
- type: Component,
116
- args: [{ standalone: true, selector: 'up-approval-form', changeDetection: ChangeDetectionStrategy.OnPush, host: {
117
- class: 'px-4 pb-4 d-block'
118
- }, imports: [
119
- DatePipe,
120
- JsonPipe,
121
- IonicModule,
122
- FormInputComponent,
123
- FormTextareaComponent
124
- ], template: "@if (isLoading) {\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n \n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 sk-input\" />\n}\n@else {\n @for (d of data; track $index) {\n @if (data.length > 1) {\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ $index + 1 }}</h5>\n </div>\n }\n \n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n\n <up-textarea label=\"JSON\" [disabled]=\"true\" [value]=\"d.data | json\" />\n <up-textarea class=\"mt-4\" label=\"Reason\" [disabled]=\"true\" [value]=\"d.reason\" *ngIf=\"d.status !== 'PENDING'\" />\n }\n}\n" }]
125
- }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.ApprovalService }, { type: i3.GridService }, { type: i4.AlertController }, { type: i5.PermissionService }], propDecorators: { isLoading: [{
126
- type: Input
127
- }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9mb3JtL2FwcHJvdmFsLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHckQsT0FBTyxFQUFnQyxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUs3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQW1CckYsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxZQUNxQixNQUFjLEVBQ2QsRUFBcUIsRUFDckIsT0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsU0FBMEIsRUFDMUIsV0FBOEI7UUFMOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQWJuQyxjQUFTLEdBQVksSUFBSSxD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bnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlLCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGVydEJ1dHRvbiwgQWxlcnRDb250cm9sbGVyLCBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFwcHJvdmFsLCBBcHByb3ZhbFN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvaW50ZXJmYWNlcy9idG4tZ3JvdXAtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHByb3ZhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ3JpZHMvc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcy9wZXJtaXNzaW9uL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy9pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Mb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9sb2FkaW5nL2J0bi1sb2FkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy90ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWFwcHJvdmFsLWZvcm0nLFxuICBzdHlsZVVybDogJy4vYXBwcm92YWwtZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3B4LTQgcGItNCBkLWJsb2NrJ1xuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIEZvcm1UZXh0YXJlYUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBidG5Db25maWc6IEJ1dHRvbkdyb3VwQ29uZmlnW10gPSBbXTtcbiAgcHVibGljIGRhdGE6IEFwcHJvdmFsW10gPSBbXTtcbiAgcHJvdGVjdGVkIGd1aWRzITogc3RyaW5nW107XG4gIHByb3RlY3RlZCBzdWI/OiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBhcHByb3ZhbEdyb3VwR3VpZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogQXBwcm92YWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBwZXJtU2VydmljZTogUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZHtcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRHdWlkKGd1aWRzOiBzdHJpbmdbXSwgYXBwcm92YWxHcm91cEd1aWQ/OiBzdHJpbmcsIGlzQXBwcm92ZT86IGJvb2xlYW4pOiB2b2lke1xuICAgIHRoaXMuZ3VpZHMgPSBndWlkcztcbiAgICBpZiAoYXBwcm92YWxHcm91cEd1aWQpIHtcbiAgICAgIHRoaXMuYXBwcm92YWxHcm91cEd1aWQgPSBhcHByb3ZhbEdyb3VwR3VpZDtcbiAgICB9XG5cbiAgICB0aGlzLmJ0bkNvbmZpZy5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgIHRoaXMuc3ViID0gdGhpcy5zZXJ2aWNlLnF1ZXJ5KHsgZ3VpZHMsIHN0YXR1czogWyBBcHByb3ZhbFN0YXR1c0VudW0uQXBwcm92ZWQsIEFwcHJvdmFsU3RhdHVzRW51bS5EZWNsaW5lZCwgQXBwcm92YWxTdGF0dXNFbnVtLlBlbmRpbmcgXSB9LCAnZGF0YSBwZXJtaXNzaW9uIHJlYXNvbicpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoeyBkYXRhOiB7IGFwcHJvdmFsTXNBcHByb3ZhbHM6IHsgZGF0YSB9fX0pID0+IHtcbiAgICAgICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnYXBwcm92YWwnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIGFueTtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0dXMsIHBlcm1pc3Npb24gfSA9IGRhdGFbMF0gYXMgYW55O1xuXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gQXBwcm92YWxTdGF0dXNFbnVtLlBlbmRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcm06IHN0cmluZ1tdID0gcGVybWlzc2lvbiEuc3BsaXQoJy4nKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucGVybVNlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHBlcm1bMF0sIHBlcm1bMV0sIHBlcm1bMl0pKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnRuQ29uZmlnLnB1c2goXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FwcHJvdmUnLCBpY29uOiAnY2hlY2ttYXJrJywgZGVzY3JpcHRpb246ICdBcHByb3ZlIHRoZSBhcHByb3ZhbCcgLCBkaXNhYmxlZDogZmFsc2UsIG9uQ2xpY2s6IHRoaXMucmVxdWVzdC5iaW5kKHRoaXMpIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0RlY2xpbmUnLCBpY29uOiAnY2xvc2UnLCBkZXNjcmlwdGlvbjogJ0RlY2xpbmUgdGhlIGFwcHJvdmFsJywgY29sb3I6ICdkYW5nZXInLCBkaXNhYmxlZDogZmFsc2UsIG9uQ2xpY2s6IHRoaXMucmVxdWVzdC5iaW5kKHRoaXMpIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGRhdGFDb3VudDogbnVtYmVyID0gMDtcblxuICAgICAgICAgIGRhdGEubWFwKCh7IHBlcm1pc3Npb24sIHN0YXR1cyB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IEFwcHJvdmFsU3RhdHVzRW51bS5QZW5kaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBlcm06IHN0cmluZ1tdID0gcGVybWlzc2lvbi5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBlcm1TZXJ2aWNlLmNoZWNrUGVybWlzc2lvbihwZXJtWzBdLCBwZXJtWzFdLCBwZXJtWzJdKSkge1xuICAgICAgICAgICAgICAgIGRhdGFDb3VudCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGFDb3VudCA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ZlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmJ0bkNvbmZpZy5wdXNoKHsgbGFiZWw6ICdBcHByb3ZlJywgaWNvbjogJ2NoZWNrbWFyaycsIGRlc2NyaXB0aW9uOiAnQXBwcm92ZSB0aGUgYXBwcm92YWwocyknICwgZGlzYWJsZWQ6IGZhbHNlLCBvbkNsaWNrOiB0aGlzLnJlcXVlc3QuYmluZCh0aGlzKSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5idG5Db25maWcucHVzaCh7IGxhYmVsOiAnRGVjbGluZScsIGljb246ICdjbG9zZScsIGRlc2NyaXB0aW9uOiAnRGVjbGluZSB0aGUgYXBwcm92YWwnLCBjb2xvcjogJ2RhbmdlcicsIGRpc2FibGVkOiBmYWxzZSwgb25DbGljazogdGhpcy5yZXF1ZXN0LmJpbmQodGhpcykgfSlcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKHsgbWVzc2FnZSB9KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdFcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhcHByb3ZhbCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlcXVlc3QoYnRuOiBCdXR0b25Mb2FkaW5nQ29tcG9uZW50KTogdm9pZHtcbiAgICBjb25zdCBpc0FwcHJvdmU6IGJvb2xlYW4gPSBidG4uY29sb3IgIT09ICdkYW5nZXInO1xuXG4gICAgdGhpcy5zaG93QWxlcnQoJ0NvbmZpcm0nLCBgQXJlIHlvdSBzdXJlIHdhbnQgdG8gJHsgaXNBcHByb3ZlPyAnYXBwcm92ZSB0aGUgYXBwcm92YWw/JyA6ICdkZWNsaW5lIHRoZSBhcHByb3ZhbD8gUGxlYXNlIGlucHV0IHRoZSByZWFzb24gaWYgeW91IHdhbnQgdG8gZGVjbGluZS4nIH1gLCBbXG4gICAgICB7IHRleHQ6ICdDYW5jZWwnLCBoYW5kbGVyOiAoKSA9PiBidG4udG9nZ2xlTG9hZGluZygpIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IGAkeyBpc0FwcHJvdmU/ICdBcHByb3ZlJyA6ICdEZWNsaW5lJyB9YCxcbiAgICAgICAgaGFuZGxlcjogKHsgcmVhc29uIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIHRoaXMuc3ViID0gdGhpcy5zZXJ2aWNlLnJlcXVlc3Qoe1xuICAgICAgICAgICAgcmVhc29uLFxuICAgICAgICAgICAgaXNBcHByb3ZlLFxuICAgICAgICAgICAgZ3VpZHM6IHRoaXMuZ3VpZHMsXG4gICAgICAgICAgICBhcHByb3ZhbEdyb3VwR3VpZDogdGhpcy5hcHByb3ZhbEdyb3VwR3VpZFxuICAgICAgICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdTdWNjZXNzJywgYEFwcHJvdmFsICR7IGlzQXBwcm92ZT8gJ2FwcHJvdmVkJyA6ICdkZWNsaW5lZCcgfWApO1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhcHByb3ZhbCcpO1xuXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UucmVmcmVzaEdyaWRDYWNoZSgnZ3JpZC1hcHByb3ZhbC1saXN0Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICh7IG1lc3NhZ2UgfTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGJ0bi50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdFcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXSwgW3sgbmFtZTogJ3JlYXNvbicsIHR5cGU6ICd0ZXh0YXJlYScsIHBsYWNlaG9sZGVyOiAnUmVhc29uJyB9XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TG9hZGluZyhiOiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGI7XG4gICAgdGhpcy5jaC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzaG93QWxlcnQoaGVhZGVyOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgYnV0dG9uczogKEFsZXJ0QnV0dG9uIHwgc3RyaW5nKVtdID0gWydPSyddLCBpbnB1dHM6IGFueVtdID0gW10pOiBQcm9taXNlPHZvaWQ+eyAoYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHsgaGVhZGVyLCBtZXNzYWdlLCBidXR0b25zLCBpbnB1dHMgfSkpLnByZXNlbnQoKTsgfVxufVxuIiwiQGlmIChpc0xvYWRpbmcpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBzay1pbnB1dFwiIC8+XG59XG5AZWxzZSB7XG4gICAgQGZvciAoZCBvZiBkYXRhOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChkYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBiLTMgcHQtMlwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG9jdW1lbnRcIiAvPlxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm0tMFwiPkFwcHJvdmFsIHt7ICRpbmRleCArIDEgfX08L2g1PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgPHVwLWlucHV0IGNsYXNzPVwibWItNFwiIGxhYmVsPVwiRW50aXR5XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5lbnRpdHlcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlJlbWFya1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQucmVtYXJrXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJDcmVhdGVkIEF0XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5jcmVhdGVkQXQgfCBkYXRlOidkZCBNTU0geXl5eSBISDptbSdcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlN0YXR1c1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQuc3RhdHVzXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8dXAtdGV4dGFyZWEgbGFiZWw9XCJKU09OXCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5kYXRhIHwganNvblwiIC8+XG4gICAgICAgIDx1cC10ZXh0YXJlYSBjbGFzcz1cIm10LTRcIiBsYWJlbD1cIlJlYXNvblwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQucmVhc29uXCIgKm5nSWY9XCJkLnN0YXR1cyAhPT0gJ1BFTkRJTkcnXCIgLz5cbiAgICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export { ApprovalListComponent } from './list/approval-list.component';
2
- export { ApprovalDetailComponent } from './detail/approval-detail.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcHByb3ZhbExpc3RDb21wb25lbnQgfSBmcm9tICcuL2xpc3QvYXBwcm92YWwtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgQXBwcm92YWxEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2RldGFpbC9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50JztcbiJdfQ==
@@ -1,113 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { formatDate } from '@angular/common';
3
- import { map } from 'rxjs';
4
- import { ApprovalStatusEnum } from '../../../../graphql/generated';
5
- import { FilterComponent } from '../../filter/filter.component';
6
- import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
7
- import { GridPaginationComponent } from '../../grids/grid-pagination/grid-pagination.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/router";
10
- import * as i2 from "../services/approval.service";
11
- import * as i3 from "@ionic/angular";
12
- export class ApprovalListComponent {
13
- constructor(entities, router, route, service, alertCtrl) {
14
- this.entities = entities;
15
- this.router = router;
16
- this.route = route;
17
- this.service = service;
18
- this.alertCtrl = alertCtrl;
19
- this.gridConfig = {
20
- noRowText: 'Approval not found',
21
- colDefs: [
22
- { headerName: 'Entity', field: 'entity', checkboxSelection: ({ data: d }) => this.isCheckboxSelectable(d?.approvalGroup) },
23
- { headerName: 'Remark', field: 'remark' },
24
- { headerName: 'Source Platform', field: 'sourcePlatform' },
25
- { headerName: 'Status', field: 'status', maxWidth: 100, cellRenderer: ({ value }) => value ? `<div class="badge m-auto bg-${value === ApprovalStatusEnum.Pending ? 'warning' : value === ApprovalStatusEnum.Approved ? 'success' : 'danger'}">${value}</div>` : '' },
26
- { headerName: 'Type', field: 'type', maxWidth: 100 },
27
- { headerName: 'Created Date', field: 'createdAt', sort: 'desc', valueFormatter: ({ value }) => value ? formatDate(value, 'dd MMM yyyy HH:mm', 'en-US') : '' }
28
- ],
29
- getData: (page, pageSize, sortBy, dir) => {
30
- const policy = this.input.page === page ? 'no-cache' : undefined;
31
- this.input.page = page;
32
- this.input.sortBy = sortBy;
33
- this.input.pageSize = pageSize;
34
- this.input.sortDirection = dir;
35
- return this.service.query(this.input, '', policy).pipe(map(({ data: { approvalMsApprovals: { data, totalRecord: t } } }) => ({ data, totalRecord: t })));
36
- }
37
- };
38
- this.filterConfig = {
39
- mode: 'advanced',
40
- fields: [
41
- { key: 'status', label: 'Status', type: 'select', initialValue: ['PENDING'], options: [
42
- { label: 'Approved', value: ['APPROVED'] },
43
- { label: 'Declined', value: ['DECLINED'] },
44
- { label: 'Pending', value: ['PENDING'] }
45
- ] },
46
- { key: 'type', label: 'Type', type: 'select', options: [
47
- { label: 'Creation', value: ['CREATION'] },
48
- { label: 'Deletion', value: ['DELETION'] },
49
- { label: 'Linkage', value: ['LINKAGE'] },
50
- { label: 'Unlink', value: ['UNLINK'] },
51
- { label: 'Update', value: ['UPDATE'] }
52
- ] }
53
- ]
54
- };
55
- this.btnConfig = [
56
- { label: 'Approve', icon: 'checkmark', description: 'Approve the approvals', disabled: true, onClick: this.multipleApproval.bind(this) },
57
- { label: 'Decline', icon: 'close', description: 'Decline the approvals', color: 'danger', disabled: true, onClick: this.multipleApproval.bind(this) }
58
- ];
59
- this.input = { page: 0, pageSize: 50, entity: this.entities };
60
- }
61
- setGridApi({ api }) {
62
- this.gridApi = api;
63
- }
64
- openDetail({ guid }) {
65
- this.router.navigate([`/approval/${guid}`], { preserveFragment: true });
66
- }
67
- selectApprovals() {
68
- const dataGrid = this.gridApi.getSelectedRows();
69
- this.btnConfig[0].disabled = this.btnConfig[1].disabled = dataGrid.length < 1;
70
- this.selectedApprovalGroupGuid = dataGrid.length === 0 ? undefined : dataGrid[0].approvalGroup.guid;
71
- this.gridApi.refreshCells({ force: true });
72
- }
73
- search({ data }) {
74
- this.input.type = data?.type;
75
- this.input.status = data?.status;
76
- this.gridApi.getSelectedNodes().forEach((e) => e.setSelected(false));
77
- this.gridApi.refreshInfiniteCache();
78
- }
79
- isCheckboxSelectable(approvalGroup) {
80
- if (!approvalGroup)
81
- return false;
82
- if (approvalGroup.guid === this.selectedApprovalGroupGuid)
83
- return true;
84
- return true;
85
- }
86
- multipleApproval(btn) {
87
- btn.toggleLoading();
88
- this.router.navigate([`/approval/approval-group`], {
89
- preserveFragment: true,
90
- queryParams: {
91
- isApprove: btn.color !== 'danger',
92
- approvalGroupGuid: this.selectedApprovalGroupGuid,
93
- guids: this.gridApi.getSelectedRows().map(({ guid }) => guid)
94
- }
95
- });
96
- }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalListComponent, deps: [{ token: 'ENTITIES' }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ApprovalService }, { token: i3.AlertController }], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: ApprovalListComponent, isStandalone: true, selector: "up-approval-list", host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection", "getRowClass"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }] }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalListComponent, decorators: [{
101
- type: Component,
102
- args: [{ standalone: true, selector: 'up-approval-list', host: {
103
- class: 'd-flex flex-column h-100 w-100'
104
- }, imports: [
105
- FilterComponent,
106
- ButtonGroupComponent,
107
- GridPaginationComponent
108
- ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n" }]
109
- }], ctorParameters: () => [{ type: undefined, decorators: [{
110
- type: Inject,
111
- args: ['ENTITIES']
112
- }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ApprovalService }, { type: i3.AlertController }] });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvbGlzdC9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9saXN0L2FwcHJvdmFsLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFJdkMsT0FBTyxFQUFtQyxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBTXBHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7Ozs7QUFnQmhHLE1BQU0sT0FBTyxxQkFBcUI7SUFrRGhDLFlBQ3NDLFFBQWtCLEVBQ25DLE1BQWMsRUFDZCxLQUFxQixFQUNyQixPQUF3QixFQUN4QixTQUEwQjtRQUpULGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBckQvQixlQUFVLEdBQWU7WUFDdkMsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixP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eyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgQXBwcm92YWxDcml0ZXJpYSwgQXBwcm92YWxHcm91cCwgQXBwcm92YWxTdGF0dXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3JhcGhxbC9nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgR3JpZENvbmZpZyB9IGZyb20gJy4uLy4uL2dyaWRzL2ludGVyZmFjZXMvZ3JpZC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlckNvbmZpZyB9IGZyb20gJy4uLy4uL2ZpbHRlci9pbnRlcmZhY2VzL2ZpbHRlci1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclNlYXJjaEV2ZW50IH0gZnJvbSAnLi4vLi4vZmlsdGVyL2ludGVyZmFjZXMvZmlsdGVyLXNlYXJjaC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb25maWcgfSBmcm9tICcuLi8uLi9idXR0b25zL2dyb3VwL2ludGVyZmFjZXMvYnRuLWdyb3VwLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwcm92YWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvYnRuLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Mb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9sb2FkaW5nL2J0bi1sb2FkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmlkUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dyaWRzL2dyaWQtcGFnaW5hdGlvbi9ncmlkLXBhZ2luYXRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtYXBwcm92YWwtbGlzdCcsXG4gIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkLWZsZXggZmxleC1jb2x1bW4gaC0xMDAgdy0xMDAnXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgR3JpZFBhZ2luYXRpb25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbExpc3RDb21wb25lbnQge1xuXG4gIHB1YmxpYyByZWFkb25seSBncmlkQ29uZmlnOiBHcmlkQ29uZmlnID0ge1xuICAgIG5vUm93VGV4dDogJ0FwcHJvdmFsIG5vdCBmb3VuZCcsXG4gICAgY29sRGVmczogW1xuICAgICAgeyBoZWFkZXJOYW1lOiAnRW50aXR5JywgZmllbGQ6ICdlbnRpdHknLCBjaGVja2JveFNlbGVjdGlvbjogKHsgZGF0YTogZCB9KSA9PiB0aGlzLmlzQ2hlY2tib3hTZWxlY3RhYmxlKGQ/LmFwcHJvdmFsR3JvdXApIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdSZW1hcmsnLCBmaWVsZDogJ3JlbWFyaycgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1NvdXJjZSBQbGF0Zm9ybScsIGZpZWxkOiAnc291cmNlUGxhdGZvcm0nIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdTdGF0dXMnLCBmaWVsZDogJ3N0YXR1cycsIG1heFdpZHRoOiAxMDAsIGNlbGxSZW5kZXJlcjogKHsgdmFsdWUgfTogYW55KSA9PiB2YWx1ZT8gYDxkaXYgY2xhc3M9XCJiYWRnZSBtLWF1dG8gYmctJHsgdmFsdWUgPT09IEFwcHJvdmFsU3RhdHVzRW51bS5QZW5kaW5nPyAnd2FybmluZycgOiB2YWx1ZSA9PT0gQXBwcm92YWxTdGF0dXNFbnVtLkFwcHJvdmVkPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ31cIj4keyB2YWx1ZSB9PC9kaXY+YCA6ICcnIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdUeXBlJywgZmllbGQ6ICd0eXBlJywgbWF4V2lkdGg6IDEwMCB9LFxuICAgICAgeyBoZWFkZXJOYW1lOiAnQ3JlYXRlZCBEYXRlJywgZmllbGQ6ICdjcmVhdGVkQXQnLCBzb3J0OiAnZGVzYycsIHZhbHVlRm9ybWF0dGVyOiAoeyB2YWx1ZSB9KSA9PiB2YWx1ZT8gZm9ybWF0RGF0ZSh2YWx1ZSwgJ2RkIE1NTSB5eXl5IEhIOm1tJywgJ2VuLVVTJykgOiAnJyB9XG4gICAgXSxcbiAgICBnZXREYXRhOiAocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyLCBzb3J0Qnk6IHN0cmluZywgZGlyOiAnYXNjJyB8ICdkZXNjJyk6IE9ic2VydmFibGU8eyBkYXRhOiBhbnksIHRvdGFsUmVjb3JkOiBudW1iZXIgfT4gPT4ge1xuICAgICAgY29uc3QgcG9saWN5OiBGZXRjaFBvbGljeSB8IHVuZGVmaW5lZCA9IHRoaXMuaW5wdXQucGFnZSA9PT0gcGFnZT8gJ25vLWNhY2hlJyA6IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5pbnB1dC5wYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuaW5wdXQuc29ydEJ5ID0gc29ydEJ5O1xuICAgICAgdGhpcy5pbnB1dC5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgdGhpcy5pbnB1dC5zb3J0RGlyZWN0aW9uID0gZGlyO1xuXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnF1ZXJ5KHRoaXMuaW5wdXQsICcnLCBwb2xpY3kpLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkYXRhOiB7IGFwcHJvdmFsTXNBcHByb3ZhbHM6IHsgZGF0YSwgdG90YWxSZWNvcmQ6IHQgfSB9fSkgPT4gKHsgZGF0YSwgdG90YWxSZWNvcmQ6IHQhIH0pKVxuICAgICAgKTtcbiAgICB9XG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZyA9IHtcbiAgICBtb2RlOiAnYWR2YW5jZWQnLFxuICAgIGZpZWxkczogW1xuICAgICAgeyBrZXk6ICdzdGF0dXMnLCBsYWJlbDogJ1N0YXR1cycsIHR5cGU6ICdzZWxlY3QnLCBpbml0aWFsVmFsdWU6IFsgJ1BFTkRJTkcnIF0sIG9wdGlvbnM6IFtcbiAgICAgICAgeyBsYWJlbDogJ0FwcHJvdmVkJywgdmFsdWU6IFsgJ0FQUFJPVkVEJyBdIGFzIGFueSB9LFxuICAgICAgICB7IGxhYmVsOiAnRGVjbGluZWQnLCB2YWx1ZTogWyAnREVDTElORUQnIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdQZW5kaW5nJywgdmFsdWU6IFsgJ1BFTkRJTkcnIF0gYXMgYW55IH1cbiAgICAgIF19LFxuICAgICAgeyBrZXk6ICd0eXBlJywgbGFiZWw6ICdUeXBlJywgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFtcbiAgICAgICAgeyBsYWJlbDogJ0NyZWF0aW9uJywgdmFsdWU6IFsgJ0NSRUFUSU9OJyBdIGFzIGFueSB9LFxuICAgICAgICB7IGxhYmVsOiAnRGVsZXRpb24nLCB2YWx1ZTogWyAnREVMRVRJT04nIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdMaW5rYWdlJywgdmFsdWU6IFsgJ0xJTktBR0UnIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdVbmxpbmsnLCB2YWx1ZTogWyAnVU5MSU5LJyBdIGFzIGFueSB9LFxuICAgICAgICB7IGxhYmVsOiAnVXBkYXRlJywgdmFsdWU6IFsgJ1VQREFURScgXSBhcyBhbnkgfVxuICAgICAgXX1cbiAgICBdXG4gIH07XG4gIHB1YmxpYyBidG5Db25maWc6IEJ1dHRvbkdyb3VwQ29uZmlnW10gPSBbXG4gICAgeyBsYWJlbDogJ0FwcHJvdmUnLCBpY29uOiAnY2hlY2ttYXJrJywgZGVzY3JpcHRpb246ICdBcHByb3ZlIHRoZSBhcHByb3ZhbHMnICwgZGlzYWJsZWQ6IHRydWUsIG9uQ2xpY2s6IHRoaXMubXVsdGlwbGVBcHByb3ZhbC5iaW5kKHRoaXMpIH0sXG4gICAgeyBsYWJlbDogJ0RlY2xpbmUnLCBpY29uOiAnY2xvc2UnLCBkZXNjcmlwdGlvbjogJ0RlY2xpbmUgdGhlIGFwcHJvdmFscycsIGNvbG9yOiAnZGFuZ2VyJywgZGlzYWJsZWQ6IHRydWUsIG9uQ2xpY2s6IHRoaXMubXVsdGlwbGVBcHByb3ZhbC5iaW5kKHRoaXMpIH1cbiAgXTtcbiAgcHJvdGVjdGVkIGdyaWRBcGkhOiBHcmlkQXBpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRBcHByb3ZhbEdyb3VwR3VpZD86IHN0cmluZztcbiAgcHJvdGVjdGVkIGlucHV0OiBBcHByb3ZhbENyaXRlcmlhID0geyBwYWdlOiAwLCBwYWdlU2l6ZTogNTAsIGVudGl0eTogdGhpcy5lbnRpdGllcyB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0VOVElUSUVTJykgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzOiBzdHJpbmdbXSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogQXBwcm92YWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlclxuICApIHsgfVxuXG4gIHB1YmxpYyBzZXRHcmlkQXBpKHsgYXBpIH06IEdyaWRSZWFkeUV2ZW50KTogdm9pZHsgXG4gICAgdGhpcy5ncmlkQXBpID0gYXBpOyBcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRGV0YWlsKHsgZ3VpZCB9OiBhbnkpOiB2b2lkeyBcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIGAvYXBwcm92YWwvJHsgZ3VpZCB9YCBdLCB7IHByZXNlcnZlRnJhZ21lbnQ6IHRydWUgfSk7IFxuICB9XG5cbiAgcHVibGljIHNlbGVjdEFwcHJvdmFscygpOiB2b2lke1xuICAgIGNvbnN0IGRhdGFHcmlkOiBhbnlbXSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcblxuICAgIHRoaXMuYnRuQ29uZmlnWzBdLmRpc2FibGVkID0gdGhpcy5idG5Db25maWdbMV0uZGlzYWJsZWQgPSBkYXRhR3JpZC5sZW5ndGggPCAxO1xuXG4gICAgdGhpcy5zZWxlY3RlZEFwcHJvdmFsR3JvdXBHdWlkID0gZGF0YUdyaWQubGVuZ3RoID09PSAwPyB1bmRlZmluZWQgOiBkYXRhR3JpZFswXS5hcHByb3ZhbEdyb3VwLmd1aWQ7XG4gICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hDZWxscyh7IGZvcmNlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaCh7IGRhdGEgfTogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMuaW5wdXQudHlwZSA9IGRhdGE/LnR5cGU7XG4gICAgdGhpcy5pbnB1dC5zdGF0dXMgPSBkYXRhPy5zdGF0dXM7XG5cbiAgICB0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLmZvckVhY2goKGUpID0+IGUuc2V0U2VsZWN0ZWQoZmFsc2UpKTtcbiAgICB0aGlzLmdyaWRBcGkucmVmcmVzaEluZmluaXRlQ2FjaGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NoZWNrYm94U2VsZWN0YWJsZShhcHByb3ZhbEdyb3VwPzogQXBwcm92YWxHcm91cCk6IGJvb2xlYW57XG4gICAgaWYgKCFhcHByb3ZhbEdyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFwcHJvdmFsR3JvdXAuZ3VpZCA9PT0gdGhpcy5zZWxlY3RlZEFwcHJvdmFsR3JvdXBHdWlkKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtdWx0aXBsZUFwcHJvdmFsKGJ0bjogQnV0dG9uTG9hZGluZ0NvbXBvbmVudCk6IHZvaWR7XG4gICAgYnRuLnRvZ2dsZUxvYWRpbmcoKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsgYC9hcHByb3ZhbC9hcHByb3ZhbC1ncm91cGAgXSwge1xuICAgICAgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGlzQXBwcm92ZTogYnRuLmNvbG9yICE9PSAnZGFuZ2VyJyxcbiAgICAgICAgYXBwcm92YWxHcm91cEd1aWQ6IHRoaXMuc2VsZWN0ZWRBcHByb3ZhbEdyb3VwR3VpZCxcbiAgICAgICAgZ3VpZHM6IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKS5tYXAoKHsgZ3VpZCB9KSA9PiBndWlkKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtNCBwLTQgZmxleC1zaHJpbmstMCBmbGV4LXdyYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJtLTBcIj5BcHByb3ZhbDwvaDM+XG5cbiAgICAgICAgPHVwLWJ0bi1ncm91cCBpZD1cImFwcHJvdmFsLWxpc3RcIiBbY29uZmlnXT1cImJ0bkNvbmZpZ1wiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBmbGV4LWdyb3ctMVwiPlxuICAgICAgICA8dXAtZmlsdGVyIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2hcIiBpZD1cImZpbHRlci1hcHByb3ZhbC1saXN0XCIgW2NvbmZpZ109XCJmaWx0ZXJDb25maWdcIiAob25TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBweC0xIHBiLTFcIj5cbiAgICA8dXAtcGFnaW5hdGlvbi1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIGlkPVwiZ3JpZC1hcHByb3ZhbC1saXN0XCIgcm93U2VsZWN0aW9uPVwibXVsdGlwbGVcIiAob25HcmlkUmVhZHkpPVwic2V0R3JpZEFwaSgkZXZlbnQpXCIgKG9uUm93Q2xpY2spPVwib3BlbkRldGFpbCgkZXZlbnQpXCIgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3RBcHByb3ZhbHMoKVwiIC8+XG48L2Rpdj5cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { gql } from 'apollo-angular';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "apollo-angular";
5
- export class ApprovalService {
6
- constructor(apollo) {
7
- this.apollo = apollo;
8
- this.baseAttr = `guid createdAt entity remark sourcePlatform status type approvalGroup { guid }`;
9
- }
10
- query(input, extraAttr = '', fetchPolicy) {
11
- return this.apollo.query({
12
- fetchPolicy,
13
- variables: { input },
14
- query: gql `
15
- query QueryApproval($input: ApprovalCriteria) {
16
- approvalMsApprovals(input: $input) {
17
- data {
18
- ${this.baseAttr}
19
- ${extraAttr}
20
- }
21
- ${input.page === 0 ? 'totalRecord' : ''}
22
- }
23
- }
24
- `
25
- });
26
- }
27
- request(variables) {
28
- return this.apollo.mutate({
29
- variables,
30
- mutation: gql `
31
- mutation ${variables.isApprove ? 'ApproveApproval' : 'DeclineApproval'}($approvalGroupGuid: String, $guids: [String], $isApprove: Boolean, $reason: String) {
32
- approvalMsApproveOrDeclineRequest(approvalGroupGuid: $approvalGroupGuid, guids: $guids, isApprove: $isApprove, reason: $reason)
33
- }
34
- `
35
- });
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalService, providedIn: 'root' }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ApprovalService, decorators: [{
41
- type: Injectable,
42
- args: [{
43
- providedIn: 'root'
44
- }]
45
- }], ctorParameters: () => [{ type: i1.Apollo }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFVLEdBQUcsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ3FCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSGhCLGFBQVEsR0FBVyxnRkFBZ0YsQ0FBQztJQUluSCxDQUFDO0lBRUUsS0FBSyxDQUFDLEtBQXVCLEVBQUUsWUFBb0IsRUFBRSxFQUFFLFdBQXlCO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVztZQUNYLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRTtZQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFBOzs7O2dCQUlDLElBQUksQ0FBQyxRQUFTO2dCQUNkLFNBQVU7O2NBRVosS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRzs7O09BRzdDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxTQUF3RDtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFNBQVM7WUFDVCxRQUFRLEVBQUUsR0FBRyxDQUFBO21CQUNDLFNBQVMsQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBa0I7OztPQUd4RTtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBbkNVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBvbGxvUXVlcnlSZXN1bHQsIEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8sIGdxbCwgTXV0YXRpb25SZXN1bHQgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBBcHByb3ZhbENyaXRlcmlhLCBQYWdlYWJsZVJlc3BvbnNlLCBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxTZXJ2aWNlIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYmFzZUF0dHI6IHN0cmluZyA9IGBndWlkIGNyZWF0ZWRBdCBlbnRpdHkgcmVtYXJrIHNvdXJjZVBsYXRmb3JtIHN0YXR1cyB0eXBlIGFwcHJvdmFsR3JvdXAgeyBndWlkIH1gO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsb1xuICApIHsgfVxuXG4gIHB1YmxpYyBxdWVyeShpbnB1dDogQXBwcm92YWxDcml0ZXJpYSwgZXh0cmFBdHRyOiBzdHJpbmcgPSAnJywgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSk6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8eyBhcHByb3ZhbE1zQXBwcm92YWxzOiBQYWdlYWJsZVJlc3BvbnNlIH0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ucXVlcnkoe1xuICAgICAgZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfSxcbiAgICAgIHF1ZXJ5OiBncWxgXG4gICAgICAgIHF1ZXJ5IFF1ZXJ5QXBwcm92YWwoJGlucHV0OiBBcHByb3ZhbENyaXRlcmlhKSB7XG4gICAgICAgICAgYXBwcm92YWxNc0FwcHJvdmFscyhpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBkYXRhIHtcbiAgICAgICAgICAgICAgJHsgdGhpcy5iYXNlQXR0ciB9XG4gICAgICAgICAgICAgICR7IGV4dHJhQXR0ciB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkeyBpbnB1dC5wYWdlID09PSAwPyAndG90YWxSZWNvcmQnIDogJycgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlcXVlc3QodmFyaWFibGVzOiBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXBwcm92YWxNc0FwcHJvdmVPckRlY2xpbmVSZXF1ZXN0OiBzdHJpbmcgfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgdmFyaWFibGVzLFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gJHsgdmFyaWFibGVzLmlzQXBwcm92ZT8gJ0FwcHJvdmVBcHByb3ZhbCcgOiAnRGVjbGluZUFwcHJvdmFsJyB9KCRhcHByb3ZhbEdyb3VwR3VpZDogU3RyaW5nLCAkZ3VpZHM6IFtTdHJpbmddLCAkaXNBcHByb3ZlOiBCb29sZWFuLCAkcmVhc29uOiBTdHJpbmcpIHtcbiAgICAgICAgICBhcHByb3ZhbE1zQXBwcm92ZU9yRGVjbGluZVJlcXVlc3QoYXBwcm92YWxHcm91cEd1aWQ6ICRhcHByb3ZhbEdyb3VwR3VpZCwgZ3VpZHM6ICRndWlkcywgaXNBcHByb3ZlOiAkaXNBcHByb3ZlLCByZWFzb246ICRyZWFzb24pXG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxufVxuIl19