vcomply-workflow-engine 6.0.92 → 6.0.94
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 +114 -16
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +8 -4
- package/fesm2022/vcomply-workflow-engine.mjs +130 -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 +84 -3
- package/lib/sharedComponents/program-list/program-list.module.d.ts +2 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -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,64 @@ 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;
|
|
25406
25481
|
}
|
|
25482
|
+
this.appliedProgramType = this.programTypeList.filter((item) => this.selectedProgramType.includes(item.id));
|
|
25483
|
+
this.checkCategoryAvailbility();
|
|
25484
|
+
}
|
|
25485
|
+
checkCategoryAvailbility() {
|
|
25486
|
+
const isSelectedProgramAvailable = this.paginatedItems.some((item) => item?.id === this.activeProgram?.id);
|
|
25487
|
+
if (!isSelectedProgramAvailable) {
|
|
25488
|
+
this.categoryList = [];
|
|
25489
|
+
this.activeProgram = null;
|
|
25490
|
+
}
|
|
25491
|
+
}
|
|
25492
|
+
/** Trigger debounced search */
|
|
25493
|
+
search() {
|
|
25494
|
+
this.searchSubject.next(this.searchTerm);
|
|
25495
|
+
}
|
|
25496
|
+
/** Perform search on items */
|
|
25497
|
+
performSearch() {
|
|
25498
|
+
const filteredItems = this.items.filter((item) => item?.name?.toLowerCase().includes(this.searchTerm?.toLowerCase()));
|
|
25499
|
+
this.paginatedItems = filteredItems;
|
|
25500
|
+
this.checkCategoryAvailbility();
|
|
25501
|
+
}
|
|
25502
|
+
/** Cleanup subscriptions on component destruction */
|
|
25503
|
+
ngOnDestroy() {
|
|
25504
|
+
this.destroy$.next();
|
|
25505
|
+
this.destroy$.complete();
|
|
25407
25506
|
}
|
|
25408
25507
|
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" }] }); }
|
|
25508
|
+
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
25509
|
}
|
|
25411
25510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListComponent, decorators: [{
|
|
25412
25511
|
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"] }]
|
|
25512
|
+
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
25513
|
}], ctorParameters: function () { return [{ type: ListUtilsService }, { type: ProgramListApiService }]; }, propDecorators: { items: [{
|
|
25415
25514
|
type: Input
|
|
25416
25515
|
}], selectedItems: [{
|
|
@@ -29384,7 +29483,7 @@ class FrameworkListComponent {
|
|
|
29384
29483
|
}
|
|
29385
29484
|
this.responsibilityService
|
|
29386
29485
|
.getFrameWorkCount(params)
|
|
29387
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29486
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29388
29487
|
.subscribe({
|
|
29389
29488
|
next: (res) => {
|
|
29390
29489
|
this.frameworkCount = {
|
|
@@ -29409,7 +29508,7 @@ class FrameworkListComponent {
|
|
|
29409
29508
|
}
|
|
29410
29509
|
this.responsibilityService
|
|
29411
29510
|
.getFrameWorkList(params)
|
|
29412
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29511
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29413
29512
|
.subscribe({
|
|
29414
29513
|
next: (res) => {
|
|
29415
29514
|
this.frameworkData.data = res.data;
|
|
@@ -29435,7 +29534,7 @@ class FrameworkListComponent {
|
|
|
29435
29534
|
}
|
|
29436
29535
|
this.responsibilityService
|
|
29437
29536
|
.getFrameworkSubCategories(id, params)
|
|
29438
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29537
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29439
29538
|
.subscribe({
|
|
29440
29539
|
next: (res) => {
|
|
29441
29540
|
this.subCategoriesList.from = res.items_from ?? 1;
|
|
@@ -29468,7 +29567,7 @@ class FrameworkListComponent {
|
|
|
29468
29567
|
}
|
|
29469
29568
|
this.responsibilityService
|
|
29470
29569
|
.getFrameworkControls(id, params)
|
|
29471
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
29570
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
29472
29571
|
.subscribe({
|
|
29473
29572
|
next: (res) => {
|
|
29474
29573
|
this.controlsList = res;
|
|
@@ -31423,7 +31522,7 @@ class WorkflowComplianceComponent {
|
|
|
31423
31522
|
}
|
|
31424
31523
|
this.responsibilityService
|
|
31425
31524
|
.getOrganizationGroups(params)
|
|
31426
|
-
.pipe(takeUntil(this.unSubscribeProgram))
|
|
31525
|
+
.pipe(takeUntil$1(this.unSubscribeProgram))
|
|
31427
31526
|
.subscribe((res) => {
|
|
31428
31527
|
const data = res ?? [];
|
|
31429
31528
|
if (!program_id) {
|
|
@@ -36379,7 +36478,7 @@ class LinkProgramComponent {
|
|
|
36379
36478
|
};
|
|
36380
36479
|
this.restApiService
|
|
36381
36480
|
.apiDelegate(request, 'complianceCategory/programList')
|
|
36382
|
-
.pipe(takeUntil
|
|
36481
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36383
36482
|
.subscribe({
|
|
36384
36483
|
next: (res) => {
|
|
36385
36484
|
this.programData.data = res.data;
|
|
@@ -36415,7 +36514,7 @@ class LinkProgramComponent {
|
|
|
36415
36514
|
};
|
|
36416
36515
|
this.restApiService
|
|
36417
36516
|
.apiDelegate(request, '/subCategories')
|
|
36418
|
-
.pipe(takeUntil
|
|
36517
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36419
36518
|
.subscribe({
|
|
36420
36519
|
next: (res) => {
|
|
36421
36520
|
this.subCategoriesList.from = res.items_from ?? 1;
|
|
@@ -36451,7 +36550,7 @@ class LinkProgramComponent {
|
|
|
36451
36550
|
};
|
|
36452
36551
|
this.restApiService
|
|
36453
36552
|
.apiDelegate(request, '/categoryResponsibilities')
|
|
36454
|
-
.pipe(takeUntil
|
|
36553
|
+
.pipe(takeUntil(this.unsubscribe))
|
|
36455
36554
|
.subscribe({
|
|
36456
36555
|
next: (res) => {
|
|
36457
36556
|
this.loader = false;
|
|
@@ -36823,7 +36922,7 @@ class LinkRelatedPoliciesComponent {
|
|
|
36823
36922
|
};
|
|
36824
36923
|
this.policyService
|
|
36825
36924
|
.getPolicyList(request)
|
|
36826
|
-
.pipe(takeUntil(this.unsubscribe))
|
|
36925
|
+
.pipe(takeUntil$1(this.unsubscribe))
|
|
36827
36926
|
.subscribe({
|
|
36828
36927
|
next: (res) => {
|
|
36829
36928
|
this.loader = false;
|
|
@@ -52664,13 +52763,15 @@ class ProgramListModule {
|
|
|
52664
52763
|
FormgroupModule$1,
|
|
52665
52764
|
NoDataModule,
|
|
52666
52765
|
PopoverModule,
|
|
52667
|
-
LoadersModule
|
|
52766
|
+
LoadersModule,
|
|
52767
|
+
PipesModule], exports: [ProgramListComponent] }); }
|
|
52668
52768
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, imports: [CommonModule,
|
|
52669
52769
|
FormsModule,
|
|
52670
52770
|
FormgroupModule$1,
|
|
52671
52771
|
NoDataModule,
|
|
52672
52772
|
PopoverModule,
|
|
52673
|
-
LoadersModule
|
|
52773
|
+
LoadersModule,
|
|
52774
|
+
PipesModule] }); }
|
|
52674
52775
|
}
|
|
52675
52776
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListModule, decorators: [{
|
|
52676
52777
|
type: NgModule,
|
|
@@ -52685,7 +52786,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
52685
52786
|
FormgroupModule$1,
|
|
52686
52787
|
NoDataModule,
|
|
52687
52788
|
PopoverModule,
|
|
52688
|
-
LoadersModule
|
|
52789
|
+
LoadersModule,
|
|
52790
|
+
PipesModule
|
|
52689
52791
|
],
|
|
52690
52792
|
exports: [
|
|
52691
52793
|
ProgramListComponent
|