vcomply-workflow-engine 6.0.92 → 6.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/sharedComponents/program-list/constant.mjs +7 -2
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +110 -16
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +8 -4
- package/fesm2022/vcomply-workflow-engine.mjs +126 -28
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/program-list/constant.d.ts +5 -0
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +83 -3
- package/lib/sharedComponents/program-list/program-list.module.d.ts +2 -1
- package/package.json +1 -1
- package/esm2022/lib/constants/mock.mjs +0 -152
- package/lib/constants/mock.d.ts +0 -15
|
@@ -1,16 +1,34 @@
|
|
|
1
|
-
import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
|
|
2
2
|
import { ListItem } from '../interfaces/list-item.interface';
|
|
3
3
|
import { ListUtilsService } from '../services/list-utils.service';
|
|
4
4
|
import { ProgramListApiService } from '../services/program-list-api.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* A reusable component for displaying and managing a list of programs with filtering, pagination, and category viewing capabilities.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Program listing with pagination
|
|
11
|
+
* - Search functionality with debounce
|
|
12
|
+
* - Program type filtering
|
|
13
|
+
* - Category viewing for selected programs
|
|
14
|
+
* - Multi-select capability
|
|
15
|
+
*
|
|
16
|
+
* @template T Extends ListItem interface for type safety of list items
|
|
17
|
+
*/
|
|
18
|
+
export declare class ProgramListComponent<T extends ListItem> implements OnInit, OnChanges, OnDestroy {
|
|
7
19
|
private listUtils;
|
|
8
20
|
private programListApiService;
|
|
21
|
+
/** Array of items to be displayed in the list */
|
|
9
22
|
items: T[];
|
|
23
|
+
/** Object containing selected items, keyed by program ID */
|
|
10
24
|
selectedItems: any | null;
|
|
25
|
+
/** URL configuration object for API endpoints */
|
|
11
26
|
url: any;
|
|
27
|
+
/** Event emitted when an item is selected */
|
|
12
28
|
itemSelected: EventEmitter<T>;
|
|
29
|
+
/** Event emitted when an item is deselected */
|
|
13
30
|
itemDeselected: EventEmitter<T>;
|
|
31
|
+
/** Event emitted when the selection changes */
|
|
14
32
|
itemsSelectedChange: EventEmitter<T[]>;
|
|
15
33
|
tableHeaders: string[];
|
|
16
34
|
currentPage: number;
|
|
@@ -23,23 +41,85 @@ export declare class ProgramListComponent<T extends ListItem> implements OnInit,
|
|
|
23
41
|
programTypeList: any[];
|
|
24
42
|
selectedProgramType: any[];
|
|
25
43
|
loaderState: any;
|
|
44
|
+
appliedProgramType: any[];
|
|
45
|
+
PROGRAM_NO_DATA: any;
|
|
46
|
+
ASSETS: any;
|
|
47
|
+
/** Subject for handling debounced search */
|
|
48
|
+
private searchSubject;
|
|
49
|
+
/** Subject for cleanup subscriptions */
|
|
50
|
+
private destroy$;
|
|
26
51
|
constructor(listUtils: ListUtilsService, programListApiService: ProgramListApiService);
|
|
52
|
+
/** Initialize component by fetching program list */
|
|
27
53
|
ngOnInit(): void;
|
|
54
|
+
/** Handle changes to inputs */
|
|
28
55
|
ngOnChanges(changes: SimpleChanges): void;
|
|
56
|
+
/** Fetch program list from API */
|
|
29
57
|
getProgramList(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Load data and initialize pagination
|
|
60
|
+
* @param data Array of items to load
|
|
61
|
+
*/
|
|
30
62
|
loadData(data: any): void;
|
|
31
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Handle item selection/deselection
|
|
65
|
+
* @param event Selection event
|
|
66
|
+
* @param item Item being selected/deselected
|
|
67
|
+
*/
|
|
32
68
|
selectItem(event: any, item: any): void;
|
|
69
|
+
/**
|
|
70
|
+
* Deselect a specific item
|
|
71
|
+
* @param item Item to deselect
|
|
72
|
+
*/
|
|
33
73
|
deselectItem(item: T): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check if an item is selected
|
|
76
|
+
* @param item Item to check
|
|
77
|
+
* @returns Boolean indicating if item is selected
|
|
78
|
+
*/
|
|
34
79
|
isSelected(item: T): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Navigate to specific page
|
|
82
|
+
* @param page Page number to navigate to
|
|
83
|
+
* @param data Data to paginate
|
|
84
|
+
*/
|
|
35
85
|
goToPage(page: number, data: any): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get array of page numbers for pagination
|
|
88
|
+
* @returns Array of page numbers
|
|
89
|
+
*/
|
|
36
90
|
getPageNumbers(): number[];
|
|
91
|
+
/**
|
|
92
|
+
* Paginate items and update view
|
|
93
|
+
* @param data Data to paginate
|
|
94
|
+
*/
|
|
37
95
|
paginateItems(data: any): void;
|
|
96
|
+
/**
|
|
97
|
+
* View categories for a selected program
|
|
98
|
+
* @param item Program to view categories for
|
|
99
|
+
*/
|
|
38
100
|
viewCategory(item?: any): void;
|
|
101
|
+
/**
|
|
102
|
+
* Add parent tree information to categories
|
|
103
|
+
* @param categories Array of categories
|
|
104
|
+
* @returns Categories with parent tree information
|
|
105
|
+
*/
|
|
39
106
|
addParentTreeToCategories(categories: any[]): any[];
|
|
107
|
+
/**
|
|
108
|
+
* Handle program type filter selection
|
|
109
|
+
* @param event Selection event
|
|
110
|
+
* @param item Program type being selected/deselected
|
|
111
|
+
*/
|
|
40
112
|
selectFilter(event: any, item: any): void;
|
|
113
|
+
/** Reset all applied filters */
|
|
41
114
|
resetFilter(): void;
|
|
115
|
+
/** Apply selected filters to the program list */
|
|
42
116
|
onFilterChange(): void;
|
|
117
|
+
/** Trigger debounced search */
|
|
118
|
+
search(): void;
|
|
119
|
+
/** Perform search on items */
|
|
120
|
+
private performSearch;
|
|
121
|
+
/** Cleanup subscriptions on component destruction */
|
|
122
|
+
ngOnDestroy(): void;
|
|
43
123
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProgramListComponent<any>, never>;
|
|
44
124
|
static ɵcmp: i0.ɵɵComponentDeclaration<ProgramListComponent<any>, "app-program-list", never, { "items": { "alias": "items"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "url": { "alias": "url"; "required": false; }; }, { "itemSelected": "itemSelected"; "itemDeselected": "itemDeselected"; "itemsSelectedChange": "itemsSelectedChange"; }, never, never, false, never>;
|
|
45
125
|
}
|
|
@@ -7,8 +7,9 @@ import * as i5 from "../../formgroup/formgroup.module";
|
|
|
7
7
|
import * as i6 from "../../ui-kit/no-data/no-data.module";
|
|
8
8
|
import * as i7 from "../../ui-kit/popover/popover.module";
|
|
9
9
|
import * as i8 from "../../ui-kit/loaders/loaders.module";
|
|
10
|
+
import * as i9 from "../../pipes/pipes.module";
|
|
10
11
|
export declare class ProgramListModule {
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProgramListModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ProgramListModule, [typeof i1.ProgramListComponent, typeof i2.CheckSelectedItemsPipe], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.FormgroupModule, typeof i6.NoDataModule, typeof i7.PopoverModule, typeof i8.LoadersModule], [typeof i1.ProgramListComponent]>;
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ProgramListModule, [typeof i1.ProgramListComponent, typeof i2.CheckSelectedItemsPipe], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.FormgroupModule, typeof i6.NoDataModule, typeof i7.PopoverModule, typeof i8.LoadersModule, typeof i9.PipesModule], [typeof i1.ProgramListComponent]>;
|
|
13
14
|
static ɵinj: i0.ɵɵInjectorDeclaration<ProgramListModule>;
|
|
14
15
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vcomply-workflow-engine",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.93",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x ",
|
|
6
6
|
"@angular/core": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x "
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
export const MOCK_PROGRAMS = [
|
|
2
|
-
{
|
|
3
|
-
"id": "A2B4C6",
|
|
4
|
-
"name": "P1",
|
|
5
|
-
"type": "regulations",
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
"id": "X7Y9Z8",
|
|
9
|
-
"name": "Standard A",
|
|
10
|
-
"type": "standards",
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"id": "G7H2J9",
|
|
14
|
-
"name": "Internal Control B",
|
|
15
|
-
"type": "internal_controls",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": "K4L6M1",
|
|
19
|
-
"name": "Other Document C",
|
|
20
|
-
"type": "others",
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "N8P5Q7",
|
|
24
|
-
"name": "Regulation X",
|
|
25
|
-
"type": "regulations",
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "R3S9T4",
|
|
29
|
-
"name": "Standard Y",
|
|
30
|
-
"type": "standards",
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"id": "U6V2W8",
|
|
34
|
-
"name": "Internal Control Z",
|
|
35
|
-
"type": "internal_controls",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "B9C4D7",
|
|
39
|
-
"name": "Other Document D",
|
|
40
|
-
"type": "others",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"id": "E5F8H2",
|
|
44
|
-
"name": "Regulation AA",
|
|
45
|
-
"type": "regulations",
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"id": "J3K7L4",
|
|
49
|
-
"name": "Standard BB",
|
|
50
|
-
"type": "standards",
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"id": "M6N9P5",
|
|
54
|
-
"name": "Internal Control CC",
|
|
55
|
-
"type": "internal_controls",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"id": "Q2R8S3",
|
|
59
|
-
"name": "Other Document E",
|
|
60
|
-
"type": "others",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": "T7U4V1",
|
|
64
|
-
"name": "Regulation BB",
|
|
65
|
-
"type": "regulations",
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"id": "W5X8Y6",
|
|
69
|
-
"name": "Standard CC",
|
|
70
|
-
"type": "standards",
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"id": "Z2A6B9",
|
|
74
|
-
"name": "Internal Control DD",
|
|
75
|
-
"type": "internal_controls",
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"id": "C4D7E2",
|
|
79
|
-
"name": "Other Document F",
|
|
80
|
-
"type": "others",
|
|
81
|
-
},
|
|
82
|
-
];
|
|
83
|
-
export const MOCK_CATEGORIES = [
|
|
84
|
-
{ id: "A2B4C6", name: "P1", description: "Primary regulation document", level: 1, parent: null },
|
|
85
|
-
{ id: "D5E8F3", name: "Standard A", description: "Industry standard document", level: 1, parent: "A2B4C6" },
|
|
86
|
-
{ id: "G7H2J9", name: "Internal Control B", description: "Internal guidelines", level: 1, parent: "A2B4C6" },
|
|
87
|
-
{ id: "K4L6M1", name: "Other Document C", description: "Miscellaneous document", level: 1, parent: "A2B4C6" },
|
|
88
|
-
{ id: "N8P5Q7", name: "Regulation X", description: "Legal framework", level: 2, parent: "A2B4C6" },
|
|
89
|
-
{ id: "R3S9T4", name: "Standard Y", description: "Updated standard", level: 2, parent: "D5E8F3" },
|
|
90
|
-
{ id: "U6V2W8", name: "Internal Control Z", description: "Control procedures", level: 2, parent: "G7H2J9" },
|
|
91
|
-
{ id: "B9C4D7", name: "Other Document D", description: "General information", level: 2, parent: "K4L6M1" },
|
|
92
|
-
{ id: "E5F8H2", name: "Regulation AA", description: "Supplementary regulation", level: 3, parent: "N8P5Q7" },
|
|
93
|
-
{ id: "J3K7L4", name: "Standard BB", description: "New compliance standard", level: 3, parent: "R3S9T4" },
|
|
94
|
-
{ id: "M6N9P5", name: "Internal Control CC", description: "Advanced controls", level: 3, parent: "U6V2W8" },
|
|
95
|
-
{ id: "Q2R8S3", name: "Other Document E", description: "Additional reference", level: 3, parent: "B9C4D7" },
|
|
96
|
-
{ id: "T7U4V1", name: "Regulation BB", description: "Regulatory expansion", level: 4, parent: "E5F8H2" },
|
|
97
|
-
{ id: "W5X8Y6", name: "Standard CC", description: "Industry benchmark", level: 4, parent: "J3K7L4" },
|
|
98
|
-
{ id: "Z2A6B9", name: "Internal Control DD", description: "Internal audit policies", level: 4, parent: "M6N9P5" },
|
|
99
|
-
{ id: "C4D7E2", name: "Other Document F", description: "Extra documentation", level: 4, parent: "Q2R8S3" },
|
|
100
|
-
{ id: "F8H3J6", name: "Regulation CC", description: "Additional compliance rules", level: 5, parent: "T7U4V1" },
|
|
101
|
-
{ id: "K5L9M4", name: "Standard DD", description: "Revised guidelines", level: 5, parent: "W5X8Y6" },
|
|
102
|
-
{ id: "N2P6Q8", name: "Internal Control EE", description: "Operational security measures", level: 5, parent: "Z2A6B9" },
|
|
103
|
-
{ id: "R7S3T5", name: "Other Document G", description: "Supplementary notes", level: 5, parent: "C4D7E2" }
|
|
104
|
-
];
|
|
105
|
-
function addParentTreeToCategories(categories) {
|
|
106
|
-
// Create a map for quick lookup of categories by ID
|
|
107
|
-
const categoryMap = new Map(categories.map(category => [category.id, category]));
|
|
108
|
-
function getParentTree(category) {
|
|
109
|
-
const parentTree = [];
|
|
110
|
-
let currentParent = category.parent;
|
|
111
|
-
while (currentParent) {
|
|
112
|
-
const parentCategory = categoryMap.get(currentParent);
|
|
113
|
-
if (parentCategory) {
|
|
114
|
-
parentTree.push(parentCategory.name);
|
|
115
|
-
currentParent = parentCategory.parent;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return parentTree;
|
|
122
|
-
}
|
|
123
|
-
// First, add parentTree to all categories
|
|
124
|
-
const categoriesWithParentTree = categories.map(category => ({
|
|
125
|
-
...category,
|
|
126
|
-
parentTree: getParentTree(category)
|
|
127
|
-
}));
|
|
128
|
-
// Sort categories to group children with parents
|
|
129
|
-
return categoriesWithParentTree.sort((a, b) => {
|
|
130
|
-
// Compare parent trees first
|
|
131
|
-
const minLength = Math.min(a.parentTree.length, b.parentTree.length);
|
|
132
|
-
for (let i = 0; i < minLength; i++) {
|
|
133
|
-
if (a.parentTree[i] !== b.parentTree[i]) {
|
|
134
|
-
return a.parentTree[i].localeCompare(b.parentTree[i]);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// If one is a parent of the other, parent should come first
|
|
138
|
-
if (a.id === b.parent)
|
|
139
|
-
return -1;
|
|
140
|
-
if (b.id === a.parent)
|
|
141
|
-
return 1;
|
|
142
|
-
// If they share the same parent, sort by name
|
|
143
|
-
if (a.parent === b.parent) {
|
|
144
|
-
return a.name.localeCompare(b.name);
|
|
145
|
-
}
|
|
146
|
-
// If they're at the same level, sort by name
|
|
147
|
-
return a.name.localeCompare(b.name);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
// Example usage:
|
|
151
|
-
const categoriesWithParentTree = addParentTreeToCategories(MOCK_CATEGORIES);
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2NvbnN0YW50cy9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZTtJQUN2QztRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUVwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FHNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUdqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsYUFBYTtLQUd0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUdwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsYUFBYTtRQUNyQixNQUFNLEVB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VSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFFRCw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsQ0FBQztRQUVoQyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFFRCw2Q0FBNkM7UUFDN0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsaUJBQWlCO0FBQ2pCLE1BQU0sd0JBQXdCLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2NrLWRhdGEudHNcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IE1PQ0tfUFJPR1JBTVM6IExpc3RJdGVtW10gPSBbXG4gIHtcbiAgICBcImlkXCI6IFwiQTJCNEM2XCIsXG4gICAgXCJuYW1lXCI6IFwiUDFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlg3WTlaOFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEFcIixcbiAgICBcInR5cGVcIjogXCJzdGFuZGFyZHNcIixcbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkc3SDJKOVwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgQlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJLNEw2TTFcIixcbiAgICBcIm5hbWVcIjogXCJPdGhlciBEb2N1bWVudCBDXCIsXG4gICAgXCJ0eXBlXCI6IFwib3RoZXJzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTjhQNVE3XCIsXG4gICAgXCJuYW1lXCI6IFwiUmVndWxhdGlvbiBYXCIsXG4gICAgXCJ0eXBlXCI6IFwicmVndWxhdGlvbnNcIixcbiAgICBcbiAgICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJSM1M5VDRcIixcbiAgICBcIm5hbWVcIjogXCJTdGFuZGFyZCBZXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG5cbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlU2VjJXOFwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgWlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQjlDNEQ3XCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRFwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkU1RjhIMlwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQUFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkozSzdMNFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEJCXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTTZOOVA1XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBDQ1wiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiUTJSOFMzXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRVwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlQ3VTRWMVwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQkJcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlc1WDhZNlwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIENDXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiWjJBNkI5XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBERFwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQzREN0UyXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRlwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PQ0tfQ0FURUdPUklFUyA9IFsgICAgXG4gIHsgaWQ6IFwiQTJCNEM2XCIsIG5hbWU6IFwiUDFcIiwgZGVzY3JpcHRpb246IFwiUHJpbWFyeSByZWd1bGF0aW9uIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IG51bGwgfSxcbiAgeyBpZDogXCJENUU4RjNcIiwgbmFtZTogXCJTdGFuZGFyZCBBXCIsIGRlc2NyaXB0aW9uOiBcIkluZHVzdHJ5IHN0YW5kYXJkIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJHN0gySjlcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIEJcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgZ3VpZGVsaW5lc1wiLCBsZXZlbDogMSwgcGFyZW50OiBcIkEyQjRDNlwiIH0sXG4gIHsgaWQ6IFwiSzRMNk0xXCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgQ1wiLCBkZXNjcmlwdGlvbjogXCJNaXNjZWxsYW5lb3VzIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJOOFA1UTdcIiwgbmFtZTogXCJSZWd1bGF0aW9uIFhcIiwgZGVzY3JpcHRpb246IFwiTGVnYWwgZnJhbWV3b3JrXCIsIGxldmVsOiAyLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJSM1M5VDRcIiwgbmFtZTogXCJTdGFuZGFyZCBZXCIsIGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgc3RhbmRhcmRcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJENUU4RjNcIiB9LFxuICB7IGlkOiBcIlU2VjJXOFwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgWlwiLCBkZXNjcmlwdGlvbjogXCJDb250cm9sIHByb2NlZHVyZXNcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJHN0gySjlcIiB9LFxuICB7IGlkOiBcIkI5QzREN1wiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IERcIiwgZGVzY3JpcHRpb246IFwiR2VuZXJhbCBpbmZvcm1hdGlvblwiLCBsZXZlbDogMiwgcGFyZW50OiBcIks0TDZNMVwiIH0sXG4gIHsgaWQ6IFwiRTVGOEgyXCIsIG5hbWU6IFwiUmVndWxhdGlvbiBBQVwiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IHJlZ3VsYXRpb25cIiwgbGV2ZWw6IDMsIHBhcmVudDogXCJOOFA1UTdcIiB9LFxuICB7IGlkOiBcIkozSzdMNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEJCXCIsIGRlc2NyaXB0aW9uOiBcIk5ldyBjb21wbGlhbmNlIHN0YW5kYXJkXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiUjNTOVQ0XCIgfSxcbiAgeyBpZDogXCJNNk45UDVcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIENDXCIsIGRlc2NyaXB0aW9uOiBcIkFkdmFuY2VkIGNvbnRyb2xzXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiVTZWMlc4XCIgfSxcbiAgeyBpZDogXCJRMlI4UzNcIiwgbmFtZTogXCJPdGhlciBEb2N1bWVudCBFXCIsIGRlc2NyaXB0aW9uOiBcIkFkZGl0aW9uYWwgcmVmZXJlbmNlXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiQjlDNEQ3XCIgfSxcbiAgeyBpZDogXCJUN1U0VjFcIiwgbmFtZTogXCJSZWd1bGF0aW9uIEJCXCIsIGRlc2NyaXB0aW9uOiBcIlJlZ3VsYXRvcnkgZXhwYW5zaW9uXCIsIGxldmVsOiA0LCBwYXJlbnQ6IFwiRTVGOEgyXCIgfSxcbiAgeyBpZDogXCJXNVg4WTZcIiwgbmFtZTogXCJTdGFuZGFyZCBDQ1wiLCBkZXNjcmlwdGlvbjogXCJJbmR1c3RyeSBiZW5jaG1hcmtcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJKM0s3TDRcIiB9LFxuICB7IGlkOiBcIloyQTZCOVwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgRERcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgYXVkaXQgcG9saWNpZXNcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJNNk45UDVcIiB9LFxuICB7IGlkOiBcIkM0RDdFMlwiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IEZcIiwgZGVzY3JpcHRpb246IFwiRXh0cmEgZG9jdW1lbnRhdGlvblwiLCBsZXZlbDogNCwgcGFyZW50OiBcIlEyUjhTM1wiIH0sXG4gIHsgaWQ6IFwiRjhIM0o2XCIsIG5hbWU6IFwiUmVndWxhdGlvbiBDQ1wiLCBkZXNjcmlwdGlvbjogXCJBZGRpdGlvbmFsIGNvbXBsaWFuY2UgcnVsZXNcIiwgbGV2ZWw6IDUsIHBhcmVudDogXCJUN1U0VjFcIiB9LFxuICB7IGlkOiBcIks1TDlNNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEREXCIsIGRlc2NyaXB0aW9uOiBcIlJldmlzZWQgZ3VpZGVsaW5lc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIlc1WDhZNlwiIH0sXG4gIHsgaWQ6IFwiTjJQNlE4XCIsIG5hbWU6IFwiSW50ZXJuYWwgQ29udHJvbCBFRVwiLCBkZXNjcmlwdGlvbjogXCJPcGVyYXRpb25hbCBzZWN1cml0eSBtZWFzdXJlc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIloyQTZCOVwiIH0sXG4gIHsgaWQ6IFwiUjdTM1Q1XCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgR1wiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IG5vdGVzXCIsIGxldmVsOiA1LCBwYXJlbnQ6IFwiQzREN0UyXCIgfVxuICBcbl1cblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsZXZlbDogbnVtYmVyO1xuICBwYXJlbnQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDYXRlZ29yeVdpdGhQYXJlbnRUcmVlIGV4dGVuZHMgQ2F0ZWdvcnkge1xuICBwYXJlbnRUcmVlOiBzdHJpbmdbXTtcbn1cblxuZnVuY3Rpb24gYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKTogQ2F0ZWdvcnlXaXRoUGFyZW50VHJlZVtdIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXAgb2YgY2F0ZWdvcmllcyBieSBJRFxuICBjb25zdCBjYXRlZ29yeU1hcCA9IG5ldyBNYXAoY2F0ZWdvcmllcy5tYXAoY2F0ZWdvcnkgPT4gW2NhdGVnb3J5LmlkLCBjYXRlZ29yeV0pKTtcblxuICBmdW5jdGlvbiBnZXRQYXJlbnRUcmVlKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwYXJlbnRUcmVlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50UGFyZW50ID0gY2F0ZWdvcnkucGFyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudENhdGVnb3J5ID0gY2F0ZWdvcnlNYXAuZ2V0KGN1cnJlbnRQYXJlbnQpO1xuICAgICAgaWYgKHBhcmVudENhdGVnb3J5KSB7XG4gICAgICAgIHBhcmVudFRyZWUucHVzaChwYXJlbnRDYXRlZ29yeS5uYW1lKTtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudENhdGVnb3J5LnBhcmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRUcmVlO1xuICB9XG5cbiAgLy8gRmlyc3QsIGFkZCBwYXJlbnRUcmVlIHRvIGFsbCBjYXRlZ29yaWVzXG4gIGNvbnN0IGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZSA9IGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+ICh7XG4gICAgLi4uY2F0ZWdvcnksXG4gICAgcGFyZW50VHJlZTogZ2V0UGFyZW50VHJlZShjYXRlZ29yeSlcbiAgfSkpO1xuXG4gIC8vIFNvcnQgY2F0ZWdvcmllcyB0byBncm91cCBjaGlsZHJlbiB3aXRoIHBhcmVudHNcbiAgcmV0dXJuIGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgLy8gQ29tcGFyZSBwYXJlbnQgdHJlZXMgZmlyc3RcbiAgICBjb25zdCBtaW5MZW5ndGggPSBNYXRoLm1pbihhLnBhcmVudFRyZWUubGVuZ3RoLCBiLnBhcmVudFRyZWUubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbkxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYS5wYXJlbnRUcmVlW2ldICE9PSBiLnBhcmVudFRyZWVbaV0pIHtcbiAgICAgICAgcmV0dXJuIGEucGFyZW50VHJlZVtpXS5sb2NhbGVDb21wYXJlKGIucGFyZW50VHJlZVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgb25lIGlzIGEgcGFyZW50IG9mIHRoZSBvdGhlciwgcGFyZW50IHNob3VsZCBjb21lIGZpcnN0XG4gICAgaWYgKGEuaWQgPT09IGIucGFyZW50KSByZXR1cm4gLTE7XG4gICAgaWYgKGIuaWQgPT09IGEucGFyZW50KSByZXR1cm4gMTtcblxuICAgIC8vIElmIHRoZXkgc2hhcmUgdGhlIHNhbWUgcGFyZW50LCBzb3J0IGJ5IG5hbWVcbiAgICBpZiAoYS5wYXJlbnQgPT09IGIucGFyZW50KSB7XG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGV5J3JlIGF0IHRoZSBzYW1lIGxldmVsLCBzb3J0IGJ5IG5hbWVcbiAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgfSk7XG59XG5cbi8vIEV4YW1wbGUgdXNhZ2U6XG5jb25zdCBjYXRlZ29yaWVzV2l0aFBhcmVudFRyZWUgPSBhZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKE1PQ0tfQ0FURUdPUklFUyk7Il19
|
package/lib/constants/mock.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ListItem } from '../sharedComponents/program-list/interfaces/list-item.interface';
|
|
2
|
-
export declare const MOCK_PROGRAMS: ListItem[];
|
|
3
|
-
export declare const MOCK_CATEGORIES: ({
|
|
4
|
-
id: string;
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
level: number;
|
|
8
|
-
parent: null;
|
|
9
|
-
} | {
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
description: string;
|
|
13
|
-
level: number;
|
|
14
|
-
parent: string;
|
|
15
|
-
})[];
|