vcomply-workflow-engine 6.0.92 → 6.0.93
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/lib/sharedComponents/program-list/constant.mjs +7 -2
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +110 -16
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +8 -4
- package/fesm2022/vcomply-workflow-engine.mjs +126 -28
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/program-list/constant.d.ts +5 -0
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +83 -3
- package/lib/sharedComponents/program-list/program-list.module.d.ts +2 -1
- package/package.json +1 -1
- package/esm2022/lib/constants/mock.mjs +0 -152
- package/lib/constants/mock.d.ts +0 -15
|
@@ -7,6 +7,7 @@ import { NoDataModule } from '../../ui-kit/no-data/no-data.module';
|
|
|
7
7
|
import { PopoverModule } from '../../ui-kit/popover/popover.module';
|
|
8
8
|
import { CheckSelectedItemsPipe } from './pipes/check-selected-items.pipes';
|
|
9
9
|
import { LoadersModule } from '../../ui-kit/loaders/loaders.module';
|
|
10
|
+
import { PipesModule } from '../../pipes/pipes.module';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
export class ProgramListModule {
|
|
12
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -16,13 +17,15 @@ export class ProgramListModule {
|
|
|
16
17
|
FormgroupModule,
|
|
17
18
|
NoDataModule,
|
|
18
19
|
PopoverModule,
|
|
19
|
-
LoadersModule
|
|
20
|
+
LoadersModule,
|
|
21
|
+
PipesModule], exports: [ProgramListComponent] }); }
|
|
20
22
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, imports: [CommonModule,
|
|
21
23
|
FormsModule,
|
|
22
24
|
FormgroupModule,
|
|
23
25
|
NoDataModule,
|
|
24
26
|
PopoverModule,
|
|
25
|
-
LoadersModule
|
|
27
|
+
LoadersModule,
|
|
28
|
+
PipesModule] }); }
|
|
26
29
|
}
|
|
27
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, decorators: [{
|
|
28
31
|
type: NgModule,
|
|
@@ -37,11 +40,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
37
40
|
FormgroupModule,
|
|
38
41
|
NoDataModule,
|
|
39
42
|
PopoverModule,
|
|
40
|
-
LoadersModule
|
|
43
|
+
LoadersModule,
|
|
44
|
+
PipesModule
|
|
41
45
|
],
|
|
42
46
|
exports: [
|
|
43
47
|
ProgramListComponent
|
|
44
48
|
]
|
|
45
49
|
}]
|
|
46
50
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0L3Byb2dyYW0tbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBbUJ2RCxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFoQjFCLG9CQUFvQjtZQUNwQixzQkFBc0IsYUFHdEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsV0FBVyxhQUdYLG9CQUFvQjtnSEFHWCxpQkFBaUIsWUFaMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsV0FBVzs7NEZBTUYsaUJBQWlCO2tCQWxCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixXQUFXO3FCQUNkO29CQUNDLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUHJvZ3JhbUxpc3RDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyYW0tbGlzdC9wcm9ncmFtLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1ncm91cE1vZHVsZSB9IGZyb20gXCIuLi8uLi9mb3JtZ3JvdXAvZm9ybWdyb3VwLm1vZHVsZVwiO1xuaW1wb3J0IHsgTm9EYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L25vLWRhdGEvbm8tZGF0YS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IENoZWNrU2VsZWN0ZWRJdGVtc1BpcGUgfSBmcm9tICcuL3BpcGVzL2NoZWNrLXNlbGVjdGVkLWl0ZW1zLnBpcGVzJztcbmltcG9ydCB7IExvYWRlcnNNb2R1bGUgfSBmcm9tICcuLi8uLi91aS1raXQvbG9hZGVycy9sb2FkZXJzLm1vZHVsZSc7XG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBQcm9ncmFtTGlzdENvbXBvbmVudCxcbiAgICBDaGVja1NlbGVjdGVkSXRlbXNQaXBlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxuICAgIE5vRGF0YU1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIExvYWRlcnNNb2R1bGUsXG4gICAgUGlwZXNNb2R1bGVcbl0sXG4gIGV4cG9ydHM6IFtcbiAgICBQcm9ncmFtTGlzdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyYW1MaXN0TW9kdWxlIHsgfVxuIl19
|
|
@@ -2,9 +2,9 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, Optional, EventEmitter, Component, Input, Output, Directive, HostListener, NgModule, Pipe, ViewChild, forwardRef, ElementRef, ChangeDetectionStrategy, createComponent, ViewChildren, HostBinding } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
4
|
import { HttpHeaders, HttpParams, HttpClientModule } from '@angular/common/http';
|
|
5
|
-
import { Subject, BehaviorSubject, map, catchError, of, shareReplay, retry as retry$1, throwError, takeUntil, forkJoin, distinctUntilChanged, take, Subscription } from 'rxjs';
|
|
5
|
+
import { Subject, BehaviorSubject, map, catchError, of, shareReplay, retry as retry$1, throwError, takeUntil as takeUntil$1, forkJoin, distinctUntilChanged, take, Subscription } from 'rxjs';
|
|
6
6
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
7
|
-
import { retry, map as map$1, catchError as catchError$1,
|
|
7
|
+
import { retry, map as map$1, catchError as catchError$1, debounceTime, takeUntil } from 'rxjs/operators';
|
|
8
8
|
import * as i2 from '@vcomply/authorizer';
|
|
9
9
|
import * as i1$1 from '@angular/common';
|
|
10
10
|
import { CommonModule, DatePipe, NgOptimizedImage } from '@angular/common';
|
|
@@ -25163,7 +25163,7 @@ const PAGINATION_OPTIONS = {
|
|
|
25163
25163
|
DEFAULT_CURRENT_PAGE: 1
|
|
25164
25164
|
};
|
|
25165
25165
|
const PROGRAM_TYPE_LIST = [
|
|
25166
|
-
{ name: 'Regulations', id: 'regulations'
|
|
25166
|
+
{ name: 'Regulations', id: 'regulations' },
|
|
25167
25167
|
{ name: 'Standards', id: 'standards' },
|
|
25168
25168
|
{ name: 'Internal Controls', id: 'internal_controls' },
|
|
25169
25169
|
{ name: 'Others', id: 'others' },
|
|
@@ -25174,6 +25174,11 @@ const PROGRAM_OBJECT = {
|
|
|
25174
25174
|
internal_controls: 3,
|
|
25175
25175
|
others: 0,
|
|
25176
25176
|
};
|
|
25177
|
+
const PROGRAM_NO_DATA = {
|
|
25178
|
+
programList: 'No data to display.',
|
|
25179
|
+
categoryList: 'Select a program to view its category.',
|
|
25180
|
+
search: 'No results matched your search criteria.',
|
|
25181
|
+
};
|
|
25177
25182
|
|
|
25178
25183
|
// list-utils.service.ts
|
|
25179
25184
|
class ListUtilsService {
|
|
@@ -25263,16 +25268,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
25263
25268
|
}]
|
|
25264
25269
|
}] });
|
|
25265
25270
|
|
|
25271
|
+
/**
|
|
25272
|
+
* A reusable component for displaying and managing a list of programs with filtering, pagination, and category viewing capabilities.
|
|
25273
|
+
*
|
|
25274
|
+
* Features:
|
|
25275
|
+
* - Program listing with pagination
|
|
25276
|
+
* - Search functionality with debounce
|
|
25277
|
+
* - Program type filtering
|
|
25278
|
+
* - Category viewing for selected programs
|
|
25279
|
+
* - Multi-select capability
|
|
25280
|
+
*
|
|
25281
|
+
* @template T Extends ListItem interface for type safety of list items
|
|
25282
|
+
*/
|
|
25266
25283
|
class ProgramListComponent {
|
|
25267
25284
|
constructor(listUtils, programListApiService) {
|
|
25268
25285
|
this.listUtils = listUtils;
|
|
25269
25286
|
this.programListApiService = programListApiService;
|
|
25287
|
+
/** Array of items to be displayed in the list */
|
|
25270
25288
|
this.items = [];
|
|
25289
|
+
/** Object containing selected items, keyed by program ID */
|
|
25271
25290
|
this.selectedItems = {};
|
|
25272
|
-
|
|
25291
|
+
/** URL configuration object for API endpoints */
|
|
25273
25292
|
this.url = {};
|
|
25293
|
+
/** Event emitted when an item is selected */
|
|
25274
25294
|
this.itemSelected = new EventEmitter();
|
|
25295
|
+
/** Event emitted when an item is deselected */
|
|
25275
25296
|
this.itemDeselected = new EventEmitter();
|
|
25297
|
+
/** Event emitted when the selection changes */
|
|
25276
25298
|
this.itemsSelectedChange = new EventEmitter();
|
|
25277
25299
|
this.tableHeaders = PROGRAM_TABLE_HEADERS;
|
|
25278
25300
|
this.currentPage = PAGINATION_OPTIONS.DEFAULT_CURRENT_PAGE;
|
|
@@ -25288,15 +25310,29 @@ class ProgramListComponent {
|
|
|
25288
25310
|
programList: false,
|
|
25289
25311
|
categoryList: false,
|
|
25290
25312
|
};
|
|
25313
|
+
this.appliedProgramType = [];
|
|
25314
|
+
this.PROGRAM_NO_DATA = PROGRAM_NO_DATA;
|
|
25315
|
+
this.ASSETS = ASSETS;
|
|
25316
|
+
/** Subject for handling debounced search */
|
|
25317
|
+
this.searchSubject = new Subject();
|
|
25318
|
+
/** Subject for cleanup subscriptions */
|
|
25319
|
+
this.destroy$ = new Subject();
|
|
25320
|
+
// Initialize debounced search
|
|
25321
|
+
this.searchSubject.pipe(debounceTime(300), takeUntil(this.destroy$)).subscribe(() => {
|
|
25322
|
+
this.performSearch();
|
|
25323
|
+
});
|
|
25291
25324
|
}
|
|
25325
|
+
/** Initialize component by fetching program list */
|
|
25292
25326
|
ngOnInit() {
|
|
25293
25327
|
this.getProgramList();
|
|
25294
25328
|
}
|
|
25329
|
+
/** Handle changes to inputs */
|
|
25295
25330
|
ngOnChanges(changes) {
|
|
25296
25331
|
if (changes['items'] || changes['selectedItems']) {
|
|
25297
25332
|
this.paginateItems(this.items);
|
|
25298
25333
|
}
|
|
25299
25334
|
}
|
|
25335
|
+
/** Fetch program list from API */
|
|
25300
25336
|
getProgramList() {
|
|
25301
25337
|
this.loaderState.programList = true;
|
|
25302
25338
|
this.programListApiService.getProgramList(this.url.programList).subscribe((res) => {
|
|
@@ -25305,13 +25341,18 @@ class ProgramListComponent {
|
|
|
25305
25341
|
this.loaderState.programList = false;
|
|
25306
25342
|
});
|
|
25307
25343
|
}
|
|
25344
|
+
/**
|
|
25345
|
+
* Load data and initialize pagination
|
|
25346
|
+
* @param data Array of items to load
|
|
25347
|
+
*/
|
|
25308
25348
|
loadData(data) {
|
|
25309
25349
|
this.goToPage(1, data);
|
|
25310
25350
|
}
|
|
25311
|
-
|
|
25312
|
-
|
|
25313
|
-
|
|
25314
|
-
|
|
25351
|
+
/**
|
|
25352
|
+
* Handle item selection/deselection
|
|
25353
|
+
* @param event Selection event
|
|
25354
|
+
* @param item Item being selected/deselected
|
|
25355
|
+
*/
|
|
25315
25356
|
selectItem(event, item) {
|
|
25316
25357
|
if (event) {
|
|
25317
25358
|
if (!this.selectedItems[this.activeProgram.id]) {
|
|
@@ -25327,27 +25368,51 @@ class ProgramListComponent {
|
|
|
25327
25368
|
this.itemDeselected.emit(item);
|
|
25328
25369
|
}
|
|
25329
25370
|
}
|
|
25371
|
+
/**
|
|
25372
|
+
* Deselect a specific item
|
|
25373
|
+
* @param item Item to deselect
|
|
25374
|
+
*/
|
|
25330
25375
|
deselectItem(item) {
|
|
25331
|
-
//this.selectedItems = this.selectedItems.filter(selected => selected.id !== item.id);
|
|
25332
25376
|
this.itemsSelectedChange.emit(this.selectedItems);
|
|
25333
25377
|
this.itemDeselected.emit(item);
|
|
25334
25378
|
}
|
|
25379
|
+
/**
|
|
25380
|
+
* Check if an item is selected
|
|
25381
|
+
* @param item Item to check
|
|
25382
|
+
* @returns Boolean indicating if item is selected
|
|
25383
|
+
*/
|
|
25335
25384
|
isSelected(item) {
|
|
25336
25385
|
return false;
|
|
25337
|
-
// return this.selectionPredicate(item);
|
|
25338
25386
|
}
|
|
25387
|
+
/**
|
|
25388
|
+
* Navigate to specific page
|
|
25389
|
+
* @param page Page number to navigate to
|
|
25390
|
+
* @param data Data to paginate
|
|
25391
|
+
*/
|
|
25339
25392
|
goToPage(page, data) {
|
|
25340
25393
|
this.currentPage = page;
|
|
25341
25394
|
this.paginateItems(data);
|
|
25342
25395
|
}
|
|
25396
|
+
/**
|
|
25397
|
+
* Get array of page numbers for pagination
|
|
25398
|
+
* @returns Array of page numbers
|
|
25399
|
+
*/
|
|
25343
25400
|
getPageNumbers() {
|
|
25344
25401
|
return this.listUtils.getPageNumbers(this.items.length, this.pageSize);
|
|
25345
25402
|
}
|
|
25403
|
+
/**
|
|
25404
|
+
* Paginate items and update view
|
|
25405
|
+
* @param data Data to paginate
|
|
25406
|
+
*/
|
|
25346
25407
|
paginateItems(data) {
|
|
25347
25408
|
this.totalPages = Math.ceil(data.length / this.pageSize);
|
|
25348
25409
|
this.paginatedItems = data;
|
|
25349
25410
|
this.categoryList = [];
|
|
25350
25411
|
}
|
|
25412
|
+
/**
|
|
25413
|
+
* View categories for a selected program
|
|
25414
|
+
* @param item Program to view categories for
|
|
25415
|
+
*/
|
|
25351
25416
|
viewCategory(item) {
|
|
25352
25417
|
if (!item)
|
|
25353
25418
|
return;
|
|
@@ -25360,9 +25425,12 @@ class ProgramListComponent {
|
|
|
25360
25425
|
this.categoryList = this.addParentTreeToCategories(this.categoryList);
|
|
25361
25426
|
});
|
|
25362
25427
|
}
|
|
25428
|
+
/**
|
|
25429
|
+
* Add parent tree information to categories
|
|
25430
|
+
* @param categories Array of categories
|
|
25431
|
+
* @returns Categories with parent tree information
|
|
25432
|
+
*/
|
|
25363
25433
|
addParentTreeToCategories(categories) {
|
|
25364
|
-
console.log('categories', categories);
|
|
25365
|
-
// Create a map for quick lookup of categories by ID
|
|
25366
25434
|
const categoryMap = new Map(categories?.map(category => [category?.id, category]));
|
|
25367
25435
|
function getParentTree(category) {
|
|
25368
25436
|
const parentTree = [];
|
|
@@ -25384,33 +25452,60 @@ class ProgramListComponent {
|
|
|
25384
25452
|
parentTree: getParentTree(category)
|
|
25385
25453
|
}));
|
|
25386
25454
|
}
|
|
25455
|
+
/**
|
|
25456
|
+
* Handle program type filter selection
|
|
25457
|
+
* @param event Selection event
|
|
25458
|
+
* @param item Program type being selected/deselected
|
|
25459
|
+
*/
|
|
25387
25460
|
selectFilter(event, item) {
|
|
25388
25461
|
if (event) {
|
|
25389
25462
|
this.selectedProgramType.push(item.id);
|
|
25390
25463
|
}
|
|
25391
25464
|
else {
|
|
25392
|
-
this.selectedProgramType = this.selectedProgramType.filter((selected) => selected
|
|
25465
|
+
this.selectedProgramType = this.selectedProgramType.filter((selected) => selected !== item.id);
|
|
25393
25466
|
}
|
|
25394
25467
|
}
|
|
25468
|
+
/** Reset all applied filters */
|
|
25395
25469
|
resetFilter() {
|
|
25396
25470
|
this.selectedProgramType = [];
|
|
25397
25471
|
this.onFilterChange();
|
|
25398
25472
|
}
|
|
25473
|
+
/** Apply selected filters to the program list */
|
|
25399
25474
|
onFilterChange() {
|
|
25400
25475
|
if (this.selectedProgramType.length > 0) {
|
|
25401
25476
|
const filteredItems = this.items.filter((item) => this.selectedProgramType.includes(item.type));
|
|
25402
25477
|
this.paginatedItems = this.listUtils.paginate(filteredItems, this.currentPage, this.pageSize);
|
|
25403
25478
|
}
|
|
25404
25479
|
else {
|
|
25405
|
-
this.paginatedItems = this.
|
|
25480
|
+
this.paginatedItems = this.items;
|
|
25481
|
+
}
|
|
25482
|
+
this.appliedProgramType = this.programTypeList.filter((item) => this.selectedProgramType.includes(item.id));
|
|
25483
|
+
}
|
|
25484
|
+
/** Trigger debounced search */
|
|
25485
|
+
search() {
|
|
25486
|
+
this.searchSubject.next(this.searchTerm);
|
|
25487
|
+
}
|
|
25488
|
+
/** Perform search on items */
|
|
25489
|
+
performSearch() {
|
|
25490
|
+
const filteredItems = this.items.filter((item) => item?.name?.toLowerCase().includes(this.searchTerm?.toLowerCase()));
|
|
25491
|
+
const isSelectedProgramAvailable = filteredItems.some((item) => item?.id === this.activeProgram?.id);
|
|
25492
|
+
if (!isSelectedProgramAvailable) {
|
|
25493
|
+
this.categoryList = [];
|
|
25494
|
+
this.activeProgram = null;
|
|
25406
25495
|
}
|
|
25496
|
+
this.paginatedItems = filteredItems;
|
|
25497
|
+
}
|
|
25498
|
+
/** Cleanup subscriptions on component destruction */
|
|
25499
|
+
ngOnDestroy() {
|
|
25500
|
+
this.destroy$.next();
|
|
25501
|
+
this.destroy$.complete();
|
|
25407
25502
|
}
|
|
25408
25503
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListComponent, deps: [{ token: ListUtilsService }, { token: ProgramListApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25409
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgramListComponent, selector: "app-program-list", inputs: { items: "items", selectedItems: "selectedItems", url: "url" }, outputs: { itemSelected: "itemSelected", itemDeselected: "itemDeselected", itemsSelectedChange: "itemsSelectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search...\"\n (keyup)=\"search()\"\n />\n </div>\n <div\n class=\"dynamic-list-filter\"\n appPopover\n (click)=\"programTypePopover.popover()\"\n placement=\"right\"\n >\n <div class=\"filter-text\">All Program Type</div>\n <i class=\"icons filter-icon\">  </i>\n </div>\n </div>\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"paginatedItems?.length > 0 || (loaderState.programList || loaderState.categoryList); else defaultTemplate\"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList;else programListLoader\">\n <div\n *ngFor=\"let item of paginatedItems; let i = index\"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{selectedItems[item.id].length > 1 ? 'CATEGORIES' : 'CATEGORY'}} SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container *ngIf=\"!loaderState.categoryList;else categoryListLoader\">\n <ng-container *ngIf=\"categoryList?.length > 0;else defaultSubCategoryTemplate\"> \n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let item of categoryList; let i = index\"\n > \n <app-cs-checkbox\n [value]=\"item?.id\"\n [ngValue]=\"item.id | checkSelectedItems: selectedItems[activeProgram.id]\"\n (ngValueChange)=\"selectItem($event, item)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ item?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div *ngIf=\"item?.parentTree?.length\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"item?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n \n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n\n<app-popover #programTypePopover>\n <div class=\"new-action-list\">\n <div\n class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\"\n >\n Program Type:\n </div>\n <ul class=\"action-item\">\n <li *ngFor=\"let item of programTypeList\">\n <div class=\"chip-item\">\n <app-cs-checkbox\n [value]=\"item.id\"\n [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\"\n >\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n </ul>\n <div\n class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\"\n >\n <button\n (click)=\"resetFilter();programTypePopover.closePopover('top')\"\n class=\"reset-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n >\n RESET\n </button>\n <button\n (click)=\"onFilterChange(); programTypePopover.closePopover('top')\"\n class=\"apply-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n [class.disabled]=\"selectedProgramType?.length === 0\"\n >\n APPLY\n </button>\n </div>\n </div>\n</app-popover>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .dynamic-list-container{height:calc(100% - 48px)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:2.5rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:13px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:1rem;top:14px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: TableLoaderComponent, selector: "app-table-loader", inputs: ["listSize"] }, { kind: "pipe", type: CheckSelectedItemsPipe, name: "checkSelectedItems" }] }); }
|
|
25504
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgramListComponent, selector: "app-program-list", inputs: { items: "items", selectedItems: "selectedItems", url: "url" }, outputs: { itemSelected: "itemSelected", itemDeselected: "itemDeselected", itemsSelectedChange: "itemsSelectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search...\"\n (keyup)=\"search()\"\n />\n </div>\n <div\n class=\"dynamic-list-filter\"\n appPopover\n (click)=\"programTypePopover.popover()\"\n placement=\"right\"\n >\n <div *ngIf=\"appliedProgramType.length === 0; else selectedTypeFilter\" class=\"filter-text\">Select Program Type</div>\n <ng-template #selectedTypeFilter>\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"appliedProgramType.length\"\n >\n \n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n appliedProgramType[0]?.name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n appliedProgramType[0]?.name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n placement=\"right\"\n *ngIf=\"appliedProgramType.length > 1\"\n >\n +{{ appliedProgramType.length - 1 }}\n </button>\n </div>\n </ng-template>\n <i class=\"icons filter-icon\">  </i>\n </div>\n </div>\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"paginatedItems?.length > 0 || (loaderState.programList || loaderState.categoryList); else defaultTemplate\"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList;else programListLoader\">\n <div\n *ngFor=\"let item of paginatedItems | search: searchTerm : 'name'; let i = index\"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{selectedItems[item.id].length > 1 ? 'CATEGORIES' : 'CATEGORY'}} SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container *ngIf=\"!loaderState.categoryList && !loaderState.programList;else categoryListLoader\">\n <ng-container *ngIf=\"categoryList?.length > 0;else defaultSubCategoryTemplate\"> \n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let item of categoryList; let i = index\"\n > \n <app-cs-checkbox\n [value]=\"item?.id\"\n [ngValue]=\"item.id | checkSelectedItems: selectedItems[activeProgram.id]\"\n (ngValueChange)=\"selectItem($event, item)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ item?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div *ngIf=\"item?.parentTree?.length\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"item?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"\n ASSETS.search_data\n \"\n [noDataText]=\"PROGRAM_NO_DATA.categoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n \n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"\n ASSETS.search_data\n \"\n [noDataText]=\"searchTerm ? PROGRAM_NO_DATA.search : PROGRAM_NO_DATA.programList\"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n\n<app-popover #programTypePopover>\n <div class=\"new-action-list\">\n <div\n class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\"\n >\n Program Type:\n </div>\n <ul class=\"action-item\">\n <li *ngFor=\"let item of programTypeList\">\n <div class=\"chip-item\">\n <app-cs-checkbox\n [value]=\"item.id\"\n [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\"\n >\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n </ul>\n <div\n class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\"\n >\n <button\n (click)=\"resetFilter();programTypePopover.closePopover('top')\"\n class=\"reset-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n >\n RESET\n </button>\n <button\n (click)=\"onFilterChange(); programTypePopover.closePopover('top')\"\n class=\"apply-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n [class.disabled]=\"selectedProgramType?.length === 0\"\n >\n APPLY\n </button>\n </div>\n </div>\n</app-popover>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:2.5rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:13px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:1rem;top:14px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: TableLoaderComponent, selector: "app-table-loader", inputs: ["listSize"] }, { kind: "pipe", type: SearchPipe$1, name: "search" }, { kind: "pipe", type: CheckSelectedItemsPipe, name: "checkSelectedItems" }] }); }
|
|
25410
25505
|
}
|
|
25411
25506
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListComponent, decorators: [{
|
|
25412
25507
|
type: Component,
|
|
25413
|
-
args: [{ selector: 'app-program-list', template: "<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search...\"\n (keyup)=\"search()\"\n />\n </div>\n <div\n class=\"dynamic-list-filter\"\n appPopover\n (click)=\"programTypePopover.popover()\"\n placement=\"right\"\n >\n <div class=\"filter-text\">All Program Type</div>\n <i class=\"icons filter-icon\">  </i>\n </div>\n </div>\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"paginatedItems?.length > 0 || (loaderState.programList || loaderState.categoryList); else defaultTemplate\"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList;else programListLoader\">\n <div\n *ngFor=\"let item of paginatedItems; let i = index\"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{selectedItems[item.id].length > 1 ? 'CATEGORIES' : 'CATEGORY'}} SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container *ngIf=\"!loaderState.categoryList;else categoryListLoader\">\n <ng-container *ngIf=\"categoryList?.length > 0;else defaultSubCategoryTemplate\"> \n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let item of categoryList; let i = index\"\n > \n <app-cs-checkbox\n [value]=\"item?.id\"\n [ngValue]=\"item.id | checkSelectedItems: selectedItems[activeProgram.id]\"\n (ngValueChange)=\"selectItem($event, item)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ item?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div *ngIf=\"item?.parentTree?.length\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"item?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n \n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n\n<app-popover #programTypePopover>\n <div class=\"new-action-list\">\n <div\n class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\"\n >\n Program Type:\n </div>\n <ul class=\"action-item\">\n <li *ngFor=\"let item of programTypeList\">\n <div class=\"chip-item\">\n <app-cs-checkbox\n [value]=\"item.id\"\n [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\"\n >\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n </ul>\n <div\n class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\"\n >\n <button\n (click)=\"resetFilter();programTypePopover.closePopover('top')\"\n class=\"reset-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n >\n RESET\n </button>\n <button\n (click)=\"onFilterChange(); programTypePopover.closePopover('top')\"\n class=\"apply-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n [class.disabled]=\"selectedProgramType?.length === 0\"\n >\n APPLY\n </button>\n </div>\n </div>\n</app-popover>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .dynamic-list-container{height:calc(100% - 48px)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:2.5rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:13px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:1rem;top:14px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
25508
|
+
args: [{ selector: 'app-program-list', template: "<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search...\"\n (keyup)=\"search()\"\n />\n </div>\n <div\n class=\"dynamic-list-filter\"\n appPopover\n (click)=\"programTypePopover.popover()\"\n placement=\"right\"\n >\n <div *ngIf=\"appliedProgramType.length === 0; else selectedTypeFilter\" class=\"filter-text\">Select Program Type</div>\n <ng-template #selectedTypeFilter>\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"appliedProgramType.length\"\n >\n \n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n appliedProgramType[0]?.name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n appliedProgramType[0]?.name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n placement=\"right\"\n *ngIf=\"appliedProgramType.length > 1\"\n >\n +{{ appliedProgramType.length - 1 }}\n </button>\n </div>\n </ng-template>\n <i class=\"icons filter-icon\">  </i>\n </div>\n </div>\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"paginatedItems?.length > 0 || (loaderState.programList || loaderState.categoryList); else defaultTemplate\"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList;else programListLoader\">\n <div\n *ngFor=\"let item of paginatedItems | search: searchTerm : 'name'; let i = index\"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{selectedItems[item.id].length > 1 ? 'CATEGORIES' : 'CATEGORY'}} SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container *ngIf=\"!loaderState.categoryList && !loaderState.programList;else categoryListLoader\">\n <ng-container *ngIf=\"categoryList?.length > 0;else defaultSubCategoryTemplate\"> \n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let item of categoryList; let i = index\"\n > \n <app-cs-checkbox\n [value]=\"item?.id\"\n [ngValue]=\"item.id | checkSelectedItems: selectedItems[activeProgram.id]\"\n (ngValueChange)=\"selectItem($event, item)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ item?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div *ngIf=\"item?.parentTree?.length\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"item?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"\n ASSETS.search_data\n \"\n [noDataText]=\"PROGRAM_NO_DATA.categoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n \n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"\n ASSETS.search_data\n \"\n [noDataText]=\"searchTerm ? PROGRAM_NO_DATA.search : PROGRAM_NO_DATA.programList\"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n\n<app-popover #programTypePopover>\n <div class=\"new-action-list\">\n <div\n class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\"\n >\n Program Type:\n </div>\n <ul class=\"action-item\">\n <li *ngFor=\"let item of programTypeList\">\n <div class=\"chip-item\">\n <app-cs-checkbox\n [value]=\"item.id\"\n [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\"\n >\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n </ul>\n <div\n class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\"\n >\n <button\n (click)=\"resetFilter();programTypePopover.closePopover('top')\"\n class=\"reset-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n >\n RESET\n </button>\n <button\n (click)=\"onFilterChange(); programTypePopover.closePopover('top')\"\n class=\"apply-btn vx-fs-11 vx-fw-500 vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-lh-6\"\n [class.disabled]=\"selectedProgramType?.length === 0\"\n >\n APPLY\n </button>\n </div>\n </div>\n</app-popover>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:2.5rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:13px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:1rem;top:14px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
25414
25509
|
}], ctorParameters: function () { return [{ type: ListUtilsService }, { type: ProgramListApiService }]; }, propDecorators: { items: [{
|
|
25415
25510
|
type: Input
|
|
25416
25511
|
}], selectedItems: [{
|
|
@@ -29384,7 +29479,7 @@ class FrameworkListComponent {
|
|
|
29384
29479
|
}
|
|
29385
29480
|
this.responsibilityService
|
|
29386
29481
|
.getFrameWorkCount(params)
|
|
29387
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29482
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29388
29483
|
.subscribe({
|
|
29389
29484
|
next: (res) => {
|
|
29390
29485
|
this.frameworkCount = {
|
|
@@ -29409,7 +29504,7 @@ class FrameworkListComponent {
|
|
|
29409
29504
|
}
|
|
29410
29505
|
this.responsibilityService
|
|
29411
29506
|
.getFrameWorkList(params)
|
|
29412
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29507
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29413
29508
|
.subscribe({
|
|
29414
29509
|
next: (res) => {
|
|
29415
29510
|
this.frameworkData.data = res.data;
|
|
@@ -29435,7 +29530,7 @@ class FrameworkListComponent {
|
|
|
29435
29530
|
}
|
|
29436
29531
|
this.responsibilityService
|
|
29437
29532
|
.getFrameworkSubCategories(id, params)
|
|
29438
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29533
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29439
29534
|
.subscribe({
|
|
29440
29535
|
next: (res) => {
|
|
29441
29536
|
this.subCategoriesList.from = res.items_from ?? 1;
|
|
@@ -29468,7 +29563,7 @@ class FrameworkListComponent {
|
|
|
29468
29563
|
}
|
|
29469
29564
|
this.responsibilityService
|
|
29470
29565
|
.getFrameworkControls(id, params)
|
|
29471
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29566
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29472
29567
|
.subscribe({
|
|
29473
29568
|
next: (res) => {
|
|
29474
29569
|
this.controlsList = res;
|
|
@@ -31423,7 +31518,7 @@ class WorkflowComplianceComponent {
|
|
|
31423
31518
|
}
|
|
31424
31519
|
this.responsibilityService
|
|
31425
31520
|
.getOrganizationGroups(params)
|
|
31426
|
-
.pipe(takeUntil(this.unSubscribeProgram))
|
|
31521
|
+
.pipe(takeUntil$1(this.unSubscribeProgram))
|
|
31427
31522
|
.subscribe((res) => {
|
|
31428
31523
|
const data = res ?? [];
|
|
31429
31524
|
if (!program_id) {
|
|
@@ -36379,7 +36474,7 @@ class LinkProgramComponent {
|
|
|
36379
36474
|
};
|
|
36380
36475
|
this.restApiService
|
|
36381
36476
|
.apiDelegate(request, 'complianceCategory/programList')
|
|
36382
|
-
.pipe(takeUntil
|
|
36477
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36383
36478
|
.subscribe({
|
|
36384
36479
|
next: (res) => {
|
|
36385
36480
|
this.programData.data = res.data;
|
|
@@ -36415,7 +36510,7 @@ class LinkProgramComponent {
|
|
|
36415
36510
|
};
|
|
36416
36511
|
this.restApiService
|
|
36417
36512
|
.apiDelegate(request, '/subCategories')
|
|
36418
|
-
.pipe(takeUntil
|
|
36513
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36419
36514
|
.subscribe({
|
|
36420
36515
|
next: (res) => {
|
|
36421
36516
|
this.subCategoriesList.from = res.items_from ?? 1;
|
|
@@ -36451,7 +36546,7 @@ class LinkProgramComponent {
|
|
|
36451
36546
|
};
|
|
36452
36547
|
this.restApiService
|
|
36453
36548
|
.apiDelegate(request, '/categoryResponsibilities')
|
|
36454
|
-
.pipe(takeUntil
|
|
36549
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36455
36550
|
.subscribe({
|
|
36456
36551
|
next: (res) => {
|
|
36457
36552
|
this.loader = false;
|
|
@@ -36823,7 +36918,7 @@ class LinkRelatedPoliciesComponent {
|
|
|
36823
36918
|
};
|
|
36824
36919
|
this.policyService
|
|
36825
36920
|
.getPolicyList(request)
|
|
36826
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
36921
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
36827
36922
|
.subscribe({
|
|
36828
36923
|
next: (res) => {
|
|
36829
36924
|
this.loader = false;
|
|
@@ -52664,13 +52759,15 @@ class ProgramListModule {
|
|
|
52664
52759
|
FormgroupModule$1,
|
|
52665
52760
|
NoDataModule,
|
|
52666
52761
|
PopoverModule,
|
|
52667
|
-
LoadersModule
|
|
52762
|
+
LoadersModule,
|
|
52763
|
+
PipesModule], exports: [ProgramListComponent] }); }
|
|
52668
52764
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, imports: [CommonModule,
|
|
52669
52765
|
FormsModule,
|
|
52670
52766
|
FormgroupModule$1,
|
|
52671
52767
|
NoDataModule,
|
|
52672
52768
|
PopoverModule,
|
|
52673
|
-
LoadersModule
|
|
52769
|
+
LoadersModule,
|
|
52770
|
+
PipesModule] }); }
|
|
52674
52771
|
}
|
|
52675
52772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, decorators: [{
|
|
52676
52773
|
type: NgModule,
|
|
@@ -52685,7 +52782,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
52685
52782
|
FormgroupModule$1,
|
|
52686
52783
|
NoDataModule,
|
|
52687
52784
|
PopoverModule,
|
|
52688
|
-
LoadersModule
|
|
52785
|
+
LoadersModule,
|
|
52786
|
+
PipesModule
|
|
52689
52787
|
],
|
|
52690
52788
|
exports: [
|
|
52691
52789
|
ProgramListComponent
|