vc-create-dashboard 3.1.5 → 3.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"vc-create-dashboard.mjs","sources":["../../../projects/create-dashboard/src/lib/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/text-count.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/constants/assets.constant.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/constant.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/utils/dashboard-edit.utils.ts","../../../projects/create-dashboard/src/lib/configurations.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/pagination.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/configure-widgets.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.html","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.html","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.html","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.html","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/scroll-in-view.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/services/list-utils.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/services/program-list-api.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/table-loader/table-loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/table-loader/table-loader.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search-program.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list/program-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list/program-list.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/list-container/list-container.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/information-block/information-block.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/information-block/information-block.component.html","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.html","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/filter.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.html","../../../projects/create-dashboard/src/lib/ui-kit/select/safe-html.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.html","../../../projects/create-dashboard/src/lib/ui-kit/services/cs-select.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.html","../../../projects/create-dashboard/src/lib/ui-kit/select/select.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.html","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/click-outside.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/pascal.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.html","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/formgroup.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.html","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/directives.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.html","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/v-loader.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/loaders.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.module.ts","../../../projects/create-dashboard/src/public-api.ts","../../../projects/create-dashboard/src/vc-create-dashboard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreateDashboardService {\n constructor() {}\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'textCount',\n standalone: false\n})\nexport class TextCountPipe implements PipeTransform {\n\n transform(value: any, ...args: any[]): any {\n const span = document.createElement('span');\n span.innerHTML = value;\n return span.textContent?.length || span.innerText.length;\n }\n\n}\n","const BASE_URL = 'https://cdn.v-comply.com';\n\nexport const ASSETS = {\n dashBoardIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/what.svg`,\n dashBoardUsersIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/who.svg`,\n dashBoardRcIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/responsibility-center.svg`,\n dashBoardProgramIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/category.svg`,\n dashBoardRiskIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/category.svg`,\n dashBoardTimeFrameIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/when.svg`,\n dashBoardEmailSummariesIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/send-resolution.svg`,\n configure_widget: `${BASE_URL}/libraries/configure-widget/assets/images/configure-widget.svg`,\n overviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/overview.png`,\n responsibilityCalenderWidget: `${BASE_URL}/libraries/configure-widget/assets/images/responsibility-calender.png`,\n responsibilityCenterOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/responsibility-center-overview.png`,\n myResponsibilitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/my-responsibilities.png`,\n keyResponsibilitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/key-responsibilities.png`,\n trendAnalysisWidget: `${BASE_URL}/libraries/configure-widget/assets/images/trend-analysis.png`,\n workroomUpdatesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/workroom-updates.png`,\n recentActivitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/recent-activities.png`,\n exceptionSummaryWidget: `${BASE_URL}/libraries/configure-widget/assets/images/exception-summary.png`,\n riskOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/risk-overview.png`,\n appetiteToleranceWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/appetite-tolerance.png`,\n inherentRCWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/inherent-RC.png`,\n residualRCWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/residual-RC.png`,\n riskCategoryOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/risk-category-overview.png`,\n riskHeatmapWidget: `${BASE_URL}/libraries/configure-widget/assets/images/risk-heatmap.png`,\n inherentCategoriesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/inherent-categories.png`,\n residualCategoriesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/residual-categories.png`,\n tenRiskRatingsWidget: `${BASE_URL}/libraries/configure-widget/assets/images/10-risk-ratings.png`,\n search_data: `${BASE_URL}/libraries/workflow-engine/assets/workflow/search-data.svg`,\n appetite_tolerance: `${BASE_URL}/libraries/configure-widget/assets/images/appetite-tolerance.png`,\n inherent_trend: `${BASE_URL}/libraries/configure-widget/assets/images/inherent-trend.png`,\n residual_trend: `${BASE_URL}/libraries/configure-widget/assets/images/residual-trend.png`,\n risk_trend: `${BASE_URL}/libraries/configure-widget/assets/images/risk-trend.png`,\n policyApproverView: `${BASE_URL}/policy/images/policy-approver-view.svg`,\n responsibilitiesByAssignee: `${BASE_URL}/libraries/configure-widget/assets/images/responsibilitiesByAssignee.png`,\n}\n","// constants.ts\nexport const PROGRAM_TABLE_HEADERS = [\n 'Program Name',\n 'Program Categories'\n ];\n \n export const PAGINATION_OPTIONS = {\n PAGE_SIZE: 30,\n DEFAULT_CURRENT_PAGE: 1\n };\n\n export const PROGRAM_TYPE_LIST = [\n {name: 'Regulations', id: 'regulations'},\n {name: 'Standards', id: 'standards'},\n {name: 'Internal Controls', id: 'internal_controls'},\n {name: 'Others', id: 'others'},\n ];\n\n export const PROGRAM_OBJECT = {\n regulations: 1,\n standards: 2,\n internal_controls: 3,\n others: 0,\n };\n\n export const PROGRAM_NO_DATA = {\n programList: 'No data to display.',\n categoryList: 'Select a Program to view </br> the associated sub-categories.',\n search: 'No results matched your search criteria.',\n }\n\n export const PROGRAM_LIST_API = {\n programList: 'sailsProgramList',\n categoryList: 'sailsProgramCategories',\n };\n \n","/** Shared helpers for custom dashboard create/edit form hydration. */\n\nexport type ProgramSelectionMap = Record<string, any[]>;\n\nexport function normalizeIdArray(value: unknown): number[] {\n if (value == null || value === '') {\n return [];\n }\n const items = Array.isArray(value) ? value : [value];\n return items\n .map((item: unknown) => {\n if (typeof item === 'number' || typeof item === 'string') {\n return Number(item);\n }\n if (typeof item === 'object' && item != null) {\n const obj = item as Record<string, unknown>;\n return Number(\n obj['id'] ??\n obj['programId'] ??\n obj['rcid'] ??\n obj['rc_id'] ??\n obj['rcId'] ??\n obj['item_id']\n );\n }\n return NaN;\n })\n .filter((id: number) => !Number.isNaN(id));\n}\n\nexport function extractProgramIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n const direct = normalizeIdArray(\n data.programs ?? data.programId ?? data.program?.programId ?? data.programIds\n );\n if (direct.length) {\n return direct;\n }\n const allPrograms = data.program?.all_programs;\n if (!Array.isArray(allPrograms) || !allPrograms.length) {\n return [];\n }\n if (typeof allPrograms[0] === 'object') {\n const fromObjects = [\n ...new Set(\n allPrograms\n .map((item: any) =>\n Number(item?.programId ?? item?.program_id ?? item?.parentId)\n )\n .filter((id: number) => !Number.isNaN(id))\n ),\n ];\n if (fromObjects.length) {\n return fromObjects;\n }\n return normalizeIdArray(allPrograms);\n }\n return normalizeIdArray(allPrograms);\n}\n\nexport function extractCategoryIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n return normalizeIdArray(\n data.responsibility_category ??\n data.responsibilityCategory ??\n data.responsibilityCategoryId ??\n data.compliance_category ??\n data.categoryId ??\n data.categoryIds ??\n []\n );\n}\n\nexport function extractRcIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n const fromRcId = normalizeIdArray(data.rcId);\n if (fromRcId.length) {\n return fromRcId;\n }\n return normalizeIdArray(\n data.responsibilityCenters ??\n data.responsibilityCenterId ??\n data.responsibility_center ??\n data.responsibility_centers ??\n data.rcs ??\n []\n );\n}\n\nexport function hasProgramSelectionInMap(\n map: ProgramSelectionMap | null | undefined\n): boolean {\n if (!map || typeof map !== 'object' || Array.isArray(map)) {\n return false;\n }\n return Object.keys(map).some((key) => (map[key] ?? []).length > 0);\n}\n\nexport function normalizeProgramCategories(categories: any[]): any[] {\n return categories.map((category) => ({\n ...category,\n category_id: category.category_id ?? category.id,\n item_name: category.item_name ?? category.name,\n }));\n}\n\nexport function flattenProgramSelectionMap(\n selections: ProgramSelectionMap\n): any[] {\n return Object.keys(selections ?? {}).reduce(\n (acc: any[], key: string) => acc.concat(selections[key] ?? []),\n []\n );\n}\n\nexport function normalizeProgramSelectionMap(\n map: ProgramSelectionMap\n): ProgramSelectionMap | null {\n const normalized: ProgramSelectionMap = {};\n Object.keys(map ?? {}).forEach((programKey) => {\n normalized[String(programKey)] = (map[programKey] ?? []).map((cat) => {\n if (typeof cat === 'number' || typeof cat === 'string') {\n return {\n id: String(cat),\n category_id: Number(cat),\n };\n }\n return {\n ...cat,\n id: String(cat?.id ?? cat?.category_id),\n name: cat?.name ?? cat?.item_name,\n };\n });\n });\n return hasProgramSelectionInMap(normalized) ? normalized : null;\n}\n\nexport function resolveCategoryProgramId(\n cat: any,\n complianceCatalog: any[] = []\n): string {\n const direct =\n cat?.programId ?? cat?.program_id ?? cat?.parentId ?? cat?.program?.id;\n if (direct != null && direct !== '') {\n return String(direct);\n }\n const catId = Number(cat?.category_id ?? cat?.id);\n if (!Number.isNaN(catId)) {\n const found = complianceCatalog.find(\n (c: any) => Number(c?.category_id ?? c?.id) === catId\n );\n if (found) {\n return String(\n found?.programId ?? found?.program_id ?? found?.parentId ?? ''\n );\n }\n }\n return '';\n}\n\nexport function buildProgramSelectionMapFromCategories(\n categories: any[],\n complianceCatalog: any[] = []\n): ProgramSelectionMap {\n const map: ProgramSelectionMap = {};\n (categories ?? []).forEach((cat) => {\n const programKey = resolveCategoryProgramId(cat, complianceCatalog);\n if (!programKey || programKey === 'undefined' || programKey === 'NaN') {\n return;\n }\n if (!map[programKey]) {\n map[programKey] = [];\n }\n map[programKey].push({\n ...cat,\n id: String(cat?.id ?? cat?.category_id),\n name: cat?.name ?? cat?.item_name,\n });\n });\n return map;\n}\n\nexport function parseSailsProgramList(res: any): any[] {\n if (Array.isArray(res?.data?.programs)) {\n return res.data.programs;\n }\n if (Array.isArray(res?.programs)) {\n return res.programs;\n }\n return [];\n}\n\nexport function getEditDashboardCdid(\n data: any,\n dashboardDetails: any,\n dashboardId: string\n): string {\n const row = data ?? dashboardDetails ?? {};\n const core = row?.dashboard_details ?? row?.dashboard ?? row;\n const cdid =\n core?.cdid ??\n core?.cddid ??\n row?.cdid ??\n row?.cddid ??\n dashboardDetails?.cdid ??\n dashboardDetails?.cddid;\n if (cdid != null && cdid !== '') {\n return String(cdid);\n }\n const fallback = dashboardId ?? '';\n if (fallback && !/^\\d+$/.test(String(fallback))) {\n return String(fallback);\n }\n return '';\n}\n\nexport function getSelectedProgramsMap(\n data: any\n): ProgramSelectionMap | undefined {\n const map = data?.program?.selected_programs;\n if (map && typeof map === 'object' && !Array.isArray(map)) {\n return map;\n }\n return undefined;\n}\n\nexport function filterActiveWidgets(widgets: any[]): any[] {\n return (widgets ?? []).filter((w) => !w?.state || w.state === 'ACTIVE');\n}\n","export class Configurations {\n public envConfig: any;\n\n constructor() {\n this.envConfig = {};\n }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, Optional } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { of } from 'rxjs';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { Configurations } from '../../configurations';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreateDashboardService {\n public env!: any;\n\n httpOptions: any;\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n\n this.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n }\n\n /*\n * Fetches the Organization Users List by making an API call\n */\n getOrganizationUsers(url?: any) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'organisationUsersList&paginationType=small' +\n (url.p ? '&p=' + url.p : '') +\n (url.type ? '&type=' + url.type : '') +\n (url.q ? '&q=' + url.q : ''),\n this.httpOptions\n )\n .pipe(\n map((res: any) => {\n return res;\n }),\n retry(2),\n catchError((err) => of(err))\n );\n }\n\n /**\n * Fetches the OrganizationUsers details of users List to set pagination details including number of\n * pages and records limit per page,\n * @param url contains info about type & search query\n */\n getOrganizationUsersCount(url?: any) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'organisationUsersCount&paginationType=small' +\n (url.type ? '&type=' + url.type : '') +\n (url.q ? '&q=' + url.q : ''),\n this.httpOptions\n )\n .pipe(\n map((res) => {\n return res;\n }),\n catchError((err) => of(err))\n );\n }\n\n getCategoryList() {\n return this.http\n .get<any[]>(this.env?.riskGet + 'category/list')\n .pipe(retry(2));\n }\n\n /**\n * Fetches all users by making an API call\n */\n getAllUsers() {\n return this.http\n .get(\n this.env?.organizationGet + 'selectAllUsers&type=all',\n this.httpOptions\n )\n .pipe(retry(2));\n }\n\n /**\n * Fetches all groups by making an API call\n * */\n getAllGroups(params?: HttpParams) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'groupsList&permType=dashboard&memberExists=1',\n { params }\n )\n .pipe(retry(2));\n }\n\n /**\n * Fetches responsibilityCentersList by making an API call\n */\n getResponsibilityCenterList() {\n return this.http\n .get<any[]>(this.env?.organizationGet + 'responsibilityCenterTree')\n .pipe(retry(2));\n }\n\n getComplianceCategoriesList() {\n return this.http\n .get<any[]>(\n this.env.complianceGet + 'complianceCategory/CategoryListTree'\n )\n .pipe(retry(2));\n }\n\n getComplianceCategoriesListFromGlobal() {\n return this.http\n .get<any[]>(\n this.env?.complianceGet +\n 'complianceCategory/CategoryListTree&program=1&isDashboard=true'\n )\n .pipe(retry(2));\n }\n\n submitDashboard(payload: any) {\n return this.http\n .post(this.env.dashboard + 'CreateDashboard', payload)\n .pipe(retry(2));\n }\n\n /**\n * Fetches the Dashboard details for data population to Edit the dashboard\n * @param id\n */\n /** @deprecated Legacy Global-Dashboard edit fetch; custom dashboards use fetchCustomDashboardById + getWidgets. */\n fetchDashboard(id: any) {\n return this.http\n .get(this.env.dashboard + id + '?mode=edit', this.httpOptions)\n .pipe(retry(2));\n }\n\n /**\n * Edit mode only — GET Global-Dashboard/getWidgets?dashboardId={cdid}\n * @param cdid Custom dashboard id (e.g. 438F8KSK22), not numeric record id\n */\n fetchCustomDashboardWidgetDetails(cdid: string) {\n return this.http\n .get(\n `${this.env.dashboard}getWidgets?dashboardId=${encodeURIComponent(cdid)}`,\n this.httpOptions\n )\n .pipe(\n map((res: any) => this.normalizeWidgetDetailsResponse(res)),\n retry(2)\n );\n }\n\n normalizeWidgetDetailsResponse(res: any): {\n widgetArr: any[];\n allWidgetsArray: any[];\n activeWidgetArr: any[];\n } {\n const payload = res?.data ?? res;\n const collect = (...candidates: any[]): any[] => {\n const collected: any[] = [];\n const seen = new Set<string>();\n candidates.forEach((candidate) => {\n if (!Array.isArray(candidate)) {\n return;\n }\n candidate.forEach((widget: any) => {\n const code = widget?.widget_code ?? widget?.widgetCode;\n const key = code != null ? String(code) : JSON.stringify(widget);\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n collected.push(widget);\n });\n });\n return collected;\n };\n\n const widgetArr = collect(\n payload?.widgetArr,\n res?.widgetArr,\n payload?.widget_details,\n Array.isArray(payload) ? payload : null,\n Array.isArray(res?.data) ? res.data : null\n );\n const allWidgetsArray = collect(\n payload?.allWidgetsArray,\n payload?.all_widgets,\n payload?.allWidgets,\n payload?.allWidgetArray,\n payload?.widgets,\n res?.allWidgetsArray,\n res?.all_widgets,\n res?.allWidgets,\n res?.widgets,\n widgetArr\n );\n const activeWidgetArr = collect(\n payload?.activeWidgetArr,\n res?.activeWidgetArr,\n widgetArr\n );\n\n return {\n widgetArr,\n allWidgetsArray: allWidgetsArray.length ? allWidgetsArray : widgetArr,\n activeWidgetArr: activeWidgetArr.length ? activeWidgetArr : widgetArr,\n };\n }\n\n getSailsProgramList() {\n return this.http\n .get(this.env.complianceGet + 'sailsProgramList', this.httpOptions)\n .pipe(retry(2));\n }\n\n getProgramCategories(programId: string | number) {\n return this.http\n .get(\n `${this.env.complianceGet}sailsProgramCategories&id=${programId}`,\n this.httpOptions\n )\n .pipe(retry(2));\n }\n\n /** Full custom dashboard payload (includes responsibilityCenterId, programId, etc.). */\n fetchCustomDashboardById(id: string | number) {\n return this.http\n .get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)\n .pipe(retry(2));\n }\n\n\n\n getUserInformation() {\n return this.http\n .get(\n this.env?.organizationGet + 'users&id=' + this?._ID(),\n this.httpOptions\n )\n .pipe(retry(2));\n }\n _ID() {\n const helper = new JwtHelperService();\n const myRawToken = localStorage.getItem('currentUser') || '{}';\n const isExpired = helper?.isTokenExpired(myRawToken);\n if (isExpired === false) {\n const tokenInfo = helper?.decodeToken(myRawToken);\n return tokenInfo._id;\n }\n return '';\n }\n\n checkDuplicateDashboardName(payload: any) {\n return this.http\n .post(\n this.env.dashboard + 'DuplicateDashboard',\n payload,\n this.httpOptions\n )\n .pipe(retry(2));\n }\ncreateDashboard(payload: any) {\n return this.http.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions)\n}\n\nupdateDashboard(payload: any, id: any) {\n return this.http.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions)\n}\n\nsaveWidgetDetails(payload: any) {\n return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions)\n}\n buildPayload(payload: any) {\n return {\n dashboard: {\n name: payload.dashboard_name,\n description: payload.description[0].content,\n viewer: {\n userId: payload.visible_to_users,\n userGroupId: payload.visible_to_groups,\n },\n responsibilityCenterId: payload.responsibility_center,\n programId: payload.program.all_programs.map((program: any) => program.id),\n timeframe: payload.timeframe.start_date ? {\n from: payload.timeframe.start_date,\n to: payload.timeframe.end_date,\n } : null\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * Service to implement pagination for users while creating an app\n */\nexport class PaginationService {\n currentPage = 1;\n searchValue = '';\n currentValues = new BehaviorSubject({});\n\n constructor() { }\n\n setCurrentState() {\n this.currentValues.next(true);\n }\n reset(){\n this.currentPage = 1;\n this.searchValue = '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBarService {\n snackbarSubject = new Subject<any>();\n constructor() {}\n\n show(message: string, icon?: string) {\n this.snackbarSubject.next({\n show: true,\n message,\n icon,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopoverService {\n stopScroll = false;\n positionX!: number;\n positionY!: number;\n popoverHeight: any;\n popoverWidth: any;\n elementPosition: any;\n elementDirection: any;\n constructor() {\n console.log(this.popoverHeight);\n }\n}\n","import {\n Directive,\n Input,\n ElementRef,\n HostListener,\n Renderer2,\n OnInit,\n AfterViewInit,\n ViewChild,\n OnDestroy,\n} from '@angular/core';\n\n@Directive({\n selector: '[arTooltip]',\n standalone: false\n})\nexport class ToolTipDirective implements OnInit, OnDestroy {\n @Input('arTooltip') tooltipTitle!: string;\n @Input() placement!: string;\n @Input() type: any;\n @Input() tooltipMandatory!: boolean;\n @Input() showTooltip = true;\n @Input() animate!: boolean;\n tooltip!: HTMLElement;\n offset = 8;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n ngOnInit() {}\n @HostListener('mouseenter') onMouseEnter() {\n this.hide();\n this.show();\n }\n @HostListener('mouseover') onMouseOver() {\n this.hide();\n this.show();\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.hide();\n }\n @HostListener('mouseout') onMouseOut() {\n this.hide();\n }\n @HostListener('click') onClick() {\n this.hide();\n }\n ngOnDestroy() {\n this.hide();\n }\n show() {\n if (!this.showTooltip) {\n return;\n }\n this.create();\n const element = this.el.nativeElement;\n if (this.tooltipMandatory === true) {\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n } else {\n if (\n element.scrollWidth * element.scrollHeight >\n element.offsetWidth * element.offsetHeight\n ) {\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n }\n }\n }\n\n hide() {\n if (document.body.contains(this.tooltip)) {\n if (this.renderer) {\n this.renderer.removeChild(\n document.body,\n document.getElementById('tooltip')\n );\n }\n }\n }\n\n create() {\n this.tooltip = this.renderer.createElement('span');\n this.tooltip.setAttribute('id', 'tooltip');\n this.tooltip.innerHTML = this.tooltipTitle;\n this.renderer.appendChild(document.body, this.tooltip);\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\n this.renderer.addClass(this.tooltip, `${this.type}`);\n if (this.animate) {\n this.renderer.addClass(this.tooltip, `animate-${this.placement}`);\n }\n }\n\n setPosition() {\n const hostPos = this.el.nativeElement.getBoundingClientRect();\n const tooltipPos = this.tooltip.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n const w = window.innerWidth;\n const h = window.innerHeight;\n let top;\n let left;\n if (this.placement === 'top') {\n top = hostPos.top - tooltipPos.height - this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.placement === 'bottom') {\n if (hostPos.top + tooltipPos.height > h) {\n top = hostPos.top - tooltipPos.height;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom`);\n this.renderer.addClass(this.tooltip, `ng-tooltip-top`);\n } else {\n top = hostPos.bottom + this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n }\n\n if (this.placement === 'left') {\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - this.offset;\n }\n\n if (this.placement === 'right') {\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + this.offset;\n }\n if (this.placement === 'bottom-right') {\n top = hostPos.bottom + this.offset;\n left = hostPos.left - (tooltipPos.width - 28);\n }\n if (this.placement === 'bottom-left') {\n if (hostPos.top + tooltipPos.height > h - 30) {\n top = hostPos.top - tooltipPos.height;\n console.log('bottom left', hostPos.top - tooltipPos.height);\n left = hostPos.left;\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom-left`);\n this.renderer.addClass(this.tooltip, `ng-tooltip-top-left`);\n } else {\n top = hostPos.bottom + this.offset;\n left = hostPos.left;\n }\n }\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport class DialogRef {\n private readonly afterDialogClosed = new Subject<any>();\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\n constructor() {}\n\n close(result?: any) {\n this.afterDialogClosed.next(result);\n document.body.style.overflow = 'auto';\n }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { widgetDataModel } from '../interfaces/widget-data-model';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { of } from 'rxjs';\nimport { Configurations } from '../../configurations';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigureWidgetsService {\n public env!: any;\n\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n }\n\n // complianceWidgetsData = [\n // {\n // title: 'Overview',\n // id: 'overview_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.overviewWidget,\n // value: 0,\n // },\n // {\n // title: 'Responsibility Calendar',\n // id: 'compliance_calendar_flag',\n // description:\n // 'Displays all responsibilities that are due on a particular day.',\n // widgetImage: ASSETS.responsibilityCalenderWidget,\n // value: 0,\n // },\n // {\n // title: 'Responsibility Center Overview',\n // id: 'responsibility_center_overview_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.overviewWidget,\n // value: 0,\n // },\n // {\n // title: 'My Responsibilities',\n // id: 'my_responsibilities',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.myResponsibilitiesWidget,\n // tabOption: true,\n // value: 0,\n // },\n // {\n // title: 'Key Responsibilities',\n // id: 'key_responsibilities',\n // description:\n // 'Displays all responsibilities that are due on a particular day.',\n // widgetImage: ASSETS.keyResponsibilitiesWidget,\n // tabOption: true,\n // value: 0,\n // },\n // {\n // title: 'Trend Analysis',\n // id: 'trend_analysis_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.trendAnalysisWidget,\n // value: 0,\n // },\n // {\n // title: 'Workroom Updates',\n // id: 'workroom_alert_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.workroomUpdatesWidget,\n // value: 0,\n // },\n // {\n // title: 'Recent Activities',\n // id: 'recent_activity_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.recentActivitiesWidget,\n // value: 0,\n // },\n // {\n // title: 'Exception Summary',\n // id: 'exception_summary_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.exceptionSummaryWidget,\n // value: 0,\n // },\n // ];\n\n riskWidgetsData = [\n {\n title: 'Risk Overview',\n id: 'risk_overview',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\n widgetImage: ASSETS.riskOverviewWidget,\n value: 0,\n },\n {\n title: 'Risk Appetite & Tolerance',\n id: 'risk_appetite_tolerance',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\n widgetImage: ASSETS.appetiteToleranceWidget,\n value: 0,\n },\n {\n title: 'Risk Ratings',\n id: 'risk_ratings',\n description: 'Description.',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Risks Without Controls',\n id: 'risks_without_controls',\n description: 'Description',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Risks Exceeding Risk Tolerance',\n id: 'exceeds_risk_tolerance',\n description: 'description',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating by Responsibility Centers ',\n id: 'inherent_risk_rating_by_responsibility_centers',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\n widgetImage: ASSETS.inherentRCWidget,\n value: 0,\n },\n {\n title: 'Residual Risk Rating by Responsibility Centers ',\n id: 'residual_risk_rating_by_responsibility_centers',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\n widgetImage: ASSETS.residualRCWidget,\n value: 0,\n },\n {\n title: 'Risk Category Overview',\n id: 'risk_category_overview',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\n widgetImage: ASSETS.riskCategoryOverviewWidget,\n value: 0,\n },\n {\n title: 'Risk Heatmap',\n id: 'risk_heatmap',\n description: 'Description.',\n widgetImage: ASSETS.riskHeatmapWidget,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating by Categories',\n id: 'inherent_risk_rating_by_categories',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\n widgetImage: ASSETS.inherentCategoriesWidget,\n value: 0,\n },\n\n {\n title: 'Residual Risk Rating by Categories',\n id: 'residual_risk_rating_by_categories',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\n widgetImage: ASSETS.residualCategoriesWidget,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\n description: 'Description.',\n widgetImage: ASSETS.inherent_trend,\n value: 0,\n },\n {\n title: 'Residual Risk Rating Trend by Responsibility Centers',\n id: 'residual_risk_rating_trend_by_responsibility_centers',\n description: 'Description.',\n widgetImage: ASSETS.residual_trend,\n value: 0,\n },\n {\n title: 'Risk Rating Trend by Categories',\n id: 'risk_rating_trend_by_categories',\n description: 'Description.',\n widgetImage: ASSETS.risk_trend,\n value: 0,\n },\n {\n title: 'Top 5 Risk Ratings',\n id: 'top_5_residual_risk_ratings',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\n widgetImage: ASSETS.tenRiskRatingsWidget,\n value: 0,\n },\n ];\n auditWidgetsData = [];\n policyWidgetsData = [];\n\n // For dashboard view\n dashBoardWidgetUpdate(widGetJson: any) {\n return this.http\n .put(this.env.OrganizationPut + 'dashboardWidgets', widGetJson)\n .pipe(retry(2));\n }\n\n moduleType(identifier: string) {\n if (JSON.stringify(this.riskWidgetsData).includes(identifier)) {\n return 'RISK';\n // } else if (JSON.stringify(this.complianceWidgetsData).includes(identifier)) {\n // return 'COMPLIANCE';\n }\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { PopoverService } from './popover.service';\n\n@Component({\n selector: 'app-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class PopoverComponent implements OnInit {\n @Input() dontCloseonClick = false;\n popoverContainer = false;\n @ViewChild('popoverRatio') popoverRatio!: ElementRef;\n @ViewChild('popoverContent') popoverContent!: ElementRef;\n @Output() closedOnOverlay = new EventEmitter();\n constructor(public popoverService: PopoverService) { }\n showPopover = false;\n leftValue: any;\n topValue: any;\n popoverHeight: any;\n popoverWidth: any;\n positionX!: number;\n positionY!: number;\n ngOnInit(): void { }\n popover() {\n this.popoverContainer = false;\n this.popoverContainer = true;\n setTimeout(() => {\n this.getPosition();\n this.showPopover = true;\n this.popoverService.stopScroll = true;\n // document.body.style.overflow = 'hidden';\n }, 10);\n return false;\n }\n popoverEvent() {\n this.popoverContainer = false;\n this.popoverContainer = true;\n setTimeout(() => {\n // this.getPosition();\n this.positionX = this.popoverService.positionX;\n this.positionY = this.popoverService.positionY;\n this.showPopover = true;\n this.popoverService.stopScroll = true;\n\n }, 10);\n return false;\n }\n closePopover(top?: string) {\n if (!this.dontCloseonClick || top === 'top') {\n this.popoverContainer = false;\n this.showPopover = false;\n this.popoverService.stopScroll = false;\n // document.body.style.overflow = 'auto';\n }\n }\n\n close() {\n this.popoverContainer = false;\n this.showPopover = false;\n this.popoverService.stopScroll = false;\n }\n\n clickedPopover() {\n this.getPosition();\n }\n getPosition() {\n const elementPosition = this.popoverService?.elementPosition;\n const direction = this.popoverService?.elementDirection;\n\n if (!this.popoverRatio?.nativeElement) {\n return;\n }\n\n this.popoverHeight = this.popoverRatio.nativeElement.offsetHeight;\n this.popoverWidth = this.popoverRatio.nativeElement.offsetWidth;\n\n const overflowsBottom = elementPosition.top + elementPosition.height + this.popoverHeight > window.outerHeight - 200;\n\n switch (direction) {\n case 'left':\n this.leftValue = elementPosition.left;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'right':\n this.leftValue = elementPosition.left + elementPosition.width - this.popoverWidth;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'top':\n this.leftValue = elementPosition.left + elementPosition.width;\n this.topValue = elementPosition.top - this.popoverHeight;\n break;\n\n case 'bottom':\n this.leftValue = elementPosition.left + elementPosition.width;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'self-position':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = elementPosition.top - 15;\n break;\n\n case 'top-center':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = (elementPosition.top + elementPosition.height + this.popoverHeight > window.outerHeight)\n ? elementPosition.top + elementPosition.height\n : elementPosition.top - this.popoverHeight;\n break;\n\n case 'center':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = elementPosition.top + elementPosition.height;\n break;\n }\n\n this.positionX = this.leftValue;\n this.positionY = this.topValue;\n }\n}\n","@if (popoverContainer) {\n <div class=\"popover-overlay\" (click)=\"closePopover('top');this.closedOnOverlay.emit();\"></div>\n}\n@if (popoverContainer) {\n <div class=\"action\" [class.active]=\"showPopover\" [style.top.px]=\"positionY\" [style.left.px]=\"positionX\" #popoverRatio id=\"popoverRatio\">\n <div (click)=\"closePopover(); clickedPopover()\" #popoverContent>\n <ng-content></ng-content>\n </div>\n </div>\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { PopoverService } from './popover.service';\n\n@Directive({\n selector: '[appPopover]',\n standalone: false\n})\nexport class PopoverDirective {\n dynamicComponent: any;\n @Input() refrence: any;\n @Input() placement!: string;\n leftValue: any;\n topValue: any;\n constructor(private elRef: ElementRef, private popoverService: PopoverService) {}\n @HostListener('click') click() {\n this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\n this.popoverService.elementDirection = this.placement;\n // this.getPosition();\n }\n\n getPosition() {\n setTimeout(() => {\n // this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\n const elementPositionn = this.elRef.nativeElement.getBoundingClientRect();\n if (this.placement === 'left') {\n this.leftValue = elementPositionn.left;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'right') {\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverService.popoverWidth;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'top') {\n this.leftValue = elementPositionn.left + elementPositionn.width;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n }\n }\n if (this.placement === 'bottom') {\n this.leftValue = elementPositionn.left + elementPositionn.width;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'self-position') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top - 15;\n }\n if (this.placement === 'top-center') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n }\n if (this.placement === 'bottom-center') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top + this.popoverService.popoverHeight;\n }\n this.popoverService.positionX = this.leftValue;\n this.popoverService.positionY = this.topValue;\n }, 10);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { SnackBarService } from '../snack-bar/snack-bar.service';\n\n@Component({\n selector: 'floating-bar',\n templateUrl: './floating-bar.component.html',\n styleUrls: ['./floating-bar.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FloatingBarComponent implements OnInit {\n @Output() cancelEvent = new EventEmitter<string>();\n @Output() submitEvent = new EventEmitter<string>();\n @Output() deleteEvent: EventEmitter<number> = new EventEmitter();\n @Input() text!: boolean;\n @Input() frequencyMessage: any;\n @Input() singleCategory: any;\n @Input() selectedData: any;\n\n constructor(private snackBar: SnackBarService\n ) {\n this.selectedData = [];\n }\n\n ngOnInit(): void {\n }\n cancelFloatingBar() {\n this.cancelEvent.emit();\n }\n submitFloatingBar() {\n if (this.selectedData.length < 1) {\n this.snackBar.show('Select a widget.','alert');\n return\n }\n this.submitEvent.emit(this.selectedData);\n }\n\n deleteSelected(index: number) {\n this.deleteEvent.emit(index);\n }\n\n}\n","<div class=\"lib-floating-bar-container\">\n <div class=\"lib-floating-bar vx-d-flex vx-align-center vx-justify-between vx-p-3\">\n @if (text && !frequencyMessage && !singleCategory) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\">This audit plan needs to be <strong>reviewed</strong> within 2 days after it has been completed.</span>\n </div>\n }\n @if (frequencyMessage && !text) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\" [innerHTML]=\"frequencyMessage\"></span>\n </div>\n }\n @if (singleCategory && !frequencyMessage && !text) {\n <div class=\"left vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-mr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"singleCategory\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{singleCategory}}</span>\n </div>\n </div>\n }\n @if (!singleCategory && !text && !frequencyMessage) {\n <div class=\"left vx-d-flex vx-align-center\">\n @if (selectedData.length) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-mr-2\">\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"deleteSelected(selectedData[0])\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"$safeNavigationMigration(selectedData[0]?.title)\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedData[0]?.title}}</span>\n @if (selectedData?.length > 1) {\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"countPopup.popover()\" placement=\"left\">+{{selectedData?.length - 1}}</button>\n }\n </div>\n }\n @if ((selectedData?.length - 1) === 1) {\n <span class=\"vx-fs-12 vx-paragraph-txt\">Widget Selected</span>\n }\n @if ((selectedData?.length - 1) > 1) {\n <span class=\"vx-fs-12 vx-paragraph-txt\">Widgets Selected</span>\n }\n <app-popover #countPopup [dontCloseonClick]=\"true\">\n <div class=\"lib-floating-bar-action-list\">\n <ul class=\"action-item\">\n @for (data of selectedData | slice: 1; track data; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(data?.title)\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\"><i class=\"icons cross-icon vx-mr-2\" (click)=\"deleteSelected(data)\">&#xe90d;</i>{{data?.title}}</span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel-btn\" (click)=\"cancelFloatingBar()\">Cancel</button>\n <!-- <button class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase\" (click)=\"submitFloatingBar()\">Update</button> -->\n <button class=\"save-btn\" (click)=\"submitFloatingBar()\">Save</button>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-checkbox',\n templateUrl: './cs-checkbox.component.html',\n styleUrls: ['./cs-checkbox.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsCheckboxComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() ngValue: any;\n @Input() value: any;\n @Output() ngValueChange = new EventEmitter<any>();\n constructor() {}\n\n ngOnInit(): void {}\n valueChanged() {\n this.ngValueChange.emit(this.ngValue);\n }\n}\n","<label class=\"checkbox-item\" [class.disabled]=\"disabled\">\n <input type=\"checkbox\" [name]=\"value\" [disabled]=\"disabled\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" />\n <span class=\"checkbox\">\n <span class=\"inner\"></span>\n </span>\n <svg class=\"checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n <span class=\"value\"><ng-content></ng-content></span>\n</label>\n","import { Component, Input, OnInit, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-no-data',\n templateUrl: './no-data.component.html',\n styleUrls: ['./no-data.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class NoDataComponent implements OnInit {\n @Input() action!: any;\n @Input() noDataImage!: string;\n @Input() noDataText = '';\n @Input() noDataButton!: string | boolean;\n @Input() noDataSecButton!: string | boolean;\n @Input() altText!: string;\n @Output() buttonAction = new EventEmitter<object>();\n @Input() smallButton!: boolean;\n @Input() buttonIcon!: any;\n @Input() iconClass!: any;\n constructor() { }\n\n ngOnInit(): void { }\n\n actionEmitter(button: object) {\n this.buttonAction.emit(button);\n }\n}\n","<div class=\"no-data-wrapper\">\n <div class=\"no-data-container\">\n <img [src]=\"noDataImage\" [alt]=\"altText\" class=\"image\" />\n @if (noDataText) {\n <p class=\"text\" [innerHTML]=\"noDataText\"></p>\n }\n @for (button of action; track button) {\n <div class=\"button-row\">\n @if (!button?.buttonIcon) {\n <button (click)=\"actionEmitter(button)\" [innerHTML]=\"$safeNavigationMigration(button?.buttonText)\"\n [class.small]=\"smallButton\"></button>\n }\n @if (button?.buttonIcon) {\n <button (click)=\"actionEmitter(button)\" [class.small]=\"smallButton\">\n <i class=\"icons\" [innerHTML]=\"$safeNavigationMigration(button?.buttonIcon)\"></i> <span\n [innerHTML]=\"$safeNavigationMigration(button?.buttonText)\"></span>\n </button>\n }\n </div>\n }\n</div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'search',\n standalone: false\n})\nexport class SearchPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n if (!value) {\n return null;\n }\n if (!args) {\n return value;\n }\n\n args = args.toLowerCase();\n\n return value.filter((item: any) => {\n return JSON.stringify(item).toLowerCase().includes(args);\n });\n }\n\n}\n","import { ConfigureWidgetsService } from '../../services/configure-widgets.service';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { retry } from 'rxjs/operators';\nimport { widgetDataModel } from '../../interfaces/widget-data-model';\nimport { DialogRef } from '../../../ui-kit/dialog/dialog-ref';\nimport { widgetConfig } from './widget.interface';\nimport { SnackBarService } from '../../../ui-kit/snack-bar/snack-bar.service';\nimport { ASSETS } from '../../constants/assets.constant';\n\n@Component({\n selector: 'app-configure-widgets',\n templateUrl: './configure-widgets.component.html',\n styleUrls: ['./configure-widgets.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ConfigureWidgetsComponent implements OnInit, OnChanges {\n @Output() widgetsDataModified: EventEmitter<any> = new EventEmitter();\n @Output() closeConfigureWidgets: EventEmitter<any> = new EventEmitter();\n checkboxStatus!: any;\n search: string = '';\n checkedArray: Array<{ index: number; status: number }> = [];\n selectedWidgets: Array<widgetDataModel> = [];\n ASSETS = ASSETS;\n module: 'COMPLIANCE' | 'RISK' = 'COMPLIANCE';\n @Input() selectedWidgetsData: any = [];\n @Input() displayedWidgets: any = [];\n @Input() showRisk = false;\n @Input() showCompliance = false;\n @Input() mode = 'CREATE';\n noDataText =\n 'You have not configured any widgets. Click on the <strong>Configure Widgets</strong> button to begin.';\n\n selectedWidgetIds: any = [];\n subResponsibilitiesSelected: boolean = false;\n subKeyResponsibilitiesSelected: boolean = false;\n showWidgets = true;\n complianceWidgetsDisplayCount = 9;\n riskWidgetsDisplayCount = 9;\n\n constructor(\n private dialog: DialogRef,\n public configureWidgetsService: ConfigureWidgetsService,\n private snackBar: SnackBarService,\n ) {}\n\n ngOnChanges() {\n this.selectedWidgets = [];\n\n if (this.mode === 'EDIT') {\n this.applyEditModeWidgetCatalog();\n } else {\n this.applyCreateModeWidgetVisibility();\n this.applySavedWidgetSelection(this.selectedWidgetsData);\n }\n\n this.module = this.showCompliance ? 'COMPLIANCE' : 'RISK';\n this.setSelectedWidgets();\n }\n\n /** EDIT: show full widget catalog; check items present in getWidgets widgetArr. */\n private applyEditModeWidgetCatalog(): void {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n ele.value = false;\n ele.visibility = true;\n (ele.subWidgets ?? []).forEach((sub: any) => {\n sub.value = false;\n sub.visibility = true;\n });\n });\n this.complianceWidgetsDisplayCount = this.widgetsList.COMPLIANCE.filter(\n (w) => w.visibility,\n ).length;\n this.riskWidgetsDisplayCount = 0;\n this.applySavedWidgetSelection(this.selectedWidgetsData);\n }\n\n /** CREATE: limit visible tiles to displayedWidgets when provided. */\n private applyCreateModeWidgetVisibility(): void {\n if (!this.displayedWidgets?.length) {\n return;\n }\n this.setWidgetsVisibilityToFalse();\n this.riskWidgetsDisplayCount = 0;\n this.complianceWidgetsDisplayCount = 0;\n const finalData = [...new Set(this.displayedWidgets)];\n finalData.forEach((element: any) => {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.id !== element.widget_code) {\n return;\n }\n ele.visibility = true;\n if (ele.subWidgets.length > 0) {\n const visibleSubCodes = (element.sub_widgets ?? []).map(\n (subwidget: any) => subwidget.widget_code,\n );\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\n ele.subWidgets[subIndex].visibility = visibleSubCodes.includes(\n subElement.id,\n );\n });\n }\n this.complianceWidgetsDisplayCount++;\n });\n });\n }\n\n private applySavedWidgetSelection(savedWidgets: any[]): void {\n const data = [...new Set(savedWidgets ?? [])];\n data.forEach((element: any) => {\n if (element?.state && element.state !== 'ACTIVE') {\n return;\n }\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.id !== element.widget_code) {\n return;\n }\n ele.value = true;\n if (ele.subWidgets.length > 0 && element.sub_widgets?.length) {\n const activeSubCodes = (element.sub_widgets ?? [])\n .filter((subwidget: any) => subwidget.state === 'ACTIVE')\n .map((subwidget: any) => subwidget.widget_code);\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\n ele.subWidgets[subIndex].value = activeSubCodes.includes(\n subElement.id,\n );\n });\n }\n });\n });\n }\n\n ngOnInit(): void {}\n\n widgetsList = {\n COMPLIANCE: [\n {\n title: 'Overview',\n id: 'overview',\n description:\n 'Overview shows the performance of responsibilities and Programs.',\n widgetImage: ASSETS.overviewWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibility Calendar',\n id: 'compliance_calendar_flag',\n description:\n 'The Responsibility Calendar shows the due dates of responsibilities in a calendar format. The responsibilities are color coded to reflect the status of the responsibilities.',\n widgetImage: ASSETS.responsibilityCalenderWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n\n {\n title: 'Responsibilities by Assignee',\n id: 'responsibilities_by_assignee',\n description:\n 'The Responsibilities by Assignee widget shows the performance of responsibilities by users.',\n widgetImage: ASSETS.responsibilitiesByAssignee,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibility Center Overview',\n id: 'responsibility_center_overview_flag',\n description:\n 'The Responsibility Center Overview shows the performance of responsibilities and Responsibility Centers.',\n widgetImage: ASSETS.responsibilityCenterOverviewWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibilities',\n id: 'my_responsibilities',\n description:\n 'This widget shows the performance of the responsibilities that you are required to complete, the responsibilities that you are reviewing and the responsibilities that you are overseeing.',\n widgetImage: ASSETS.myResponsibilitiesWidget,\n tabOption: true,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [\n {\n title: 'My Responsibilities',\n id: 'my_responsibility_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Reviewing',\n id: 'reviewer_responsibility_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Overseeing',\n id: 'cc_responsibility_flag',\n value: false,\n visibility: true,\n },\n ],\n },\n {\n title: 'Key Responsibilities',\n id: 'key_responsibilities',\n description:\n 'This widget shows the performance of key responsibilities that you are required to complete, that you are reviewing, that you are overseeing and that you have assigned to another person.',\n widgetImage: ASSETS.keyResponsibilitiesWidget,\n tabOption: true,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [\n // {\n // title: 'Overview',\n // id: 'key_responsibilities_overview_flag',\n // value: false,\n // visibility: true,\n // },\n {\n title: 'My Responsibilities',\n id: 'key_my_responsibilities_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Reviewing',\n id: 'key_i_am_reviewing_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Overseeing',\n id: 'key_i_am_overseeing_flag',\n value: false,\n visibility: true,\n },\n ],\n },\n {\n title: 'Trend Analysis',\n id: 'trend_analysis_flag',\n description:\n 'The Trend Analysis is a graphical representation of the performance of responsibilities over a period.',\n widgetImage: ASSETS.trendAnalysisWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n ],\n };\n\n selectWidget(\n event: any,\n module: 'COMPLIANCE',\n widgetId: string,\n subWidgetId?: string,\n ) {\n const widgetIndex = this.widgetsList[module].findIndex(\n (ele: any) => ele.id == widgetId,\n );\n const isSubWidgetAddable = this.selectedWidgets.findIndex(\n (widget: any) => widget.id === widgetId,\n );\n if (event) {\n if (\n this.selectedWidgets.length >= 10 &&\n !(subWidgetId && isSubWidgetAddable >= 0)\n ) {\n this.snackBar.show('You cannot add more than 10 widgets.', 'alert');\n this.showWidgets = false;\n setTimeout(() => {\n this.widgetsList[module][widgetIndex].value = false;\n this.showWidgets = true;\n }, 10);\n return;\n }\n this.widgetsList[module][widgetIndex].value = true;\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\n if (!subWidgetId) {\n this.widgetsList[module][widgetIndex].subWidgets.forEach(\n (ele) => (ele.value = true),\n );\n } else {\n const subWidgetIndex = this.widgetsList[module][\n widgetIndex\n ].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\n this.widgetsList[module][widgetIndex].subWidgets[\n subWidgetIndex\n ].value = true;\n }\n }\n } else {\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\n if (!subWidgetId) {\n this.widgetsList[module][widgetIndex].value = false;\n this.widgetsList[module][widgetIndex].subWidgets.forEach(\n (ele: any) => (ele.value = false),\n );\n } else {\n const subWidgetIndex = this.widgetsList[module][\n widgetIndex\n ].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\n this.widgetsList[module][widgetIndex].subWidgets[\n subWidgetIndex\n ].value = false;\n\n const isAllWidgetsRemoved = this.widgetsList[module][\n widgetIndex\n ].subWidgets.every((ele: any) => ele.value == false);\n if (isAllWidgetsRemoved) {\n this.widgetsList[module][widgetIndex].value = false;\n }\n }\n } else {\n this.widgetsList[module][widgetIndex].value = false;\n }\n }\n this.setSelectedWidgets();\n }\n setSelectedWidgets() {\n this.selectedWidgets = [];\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.value) {\n this.selectedWidgets.push(ele);\n }\n });\n // this.widgetsList.RISK.forEach((ele: any) => {\n // if (ele.value) {\n // this.selectedWidgets.push(ele);\n // }\n // });\n }\n\n removeWidget(widget: widgetConfig) {\n const widgetIndex = this.widgetsList[widget.module].findIndex(\n (ele: any) => ele.id == widget.id,\n );\n this.widgetsList[widget.module][widgetIndex].value = false;\n if (this.widgetsList[widget.module][widgetIndex].subWidgets.length > 0) {\n this.widgetsList[widget.module][widgetIndex].subWidgets.forEach(\n (ele: any) => (ele.value = false),\n );\n }\n this.setSelectedWidgets();\n }\n\n onNextClick() {\n this.widgetsDataModified.emit(this.selectedWidgets);\n }\n\n closeConfigureDashboard() {\n this.selectedWidgets = [];\n this.dialog.close();\n this.closeConfigureWidgets.emit(false);\n }\n\n setWidgetsVisibilityToFalse() {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n ele.visibility = false;\n if (ele.subWidgets.length > 0) {\n ele.subWidgets.forEach((subElement: any) => {\n subElement.visibility = false;\n });\n }\n });\n // this.widgetsList.RISK.forEach((ele: any) => {\n // ele.visibility = false;\n // if (ele.subWidgets.length > 0) {\n // ele.subWidgets.forEach((subElement: any) => {\n // subElement.visibility = false;\n // });\n // }\n // });\n }\n}\n","@if (showWidgets) {\n <div class=\"configure-widgets vx-d-block\">\n <div\n class=\"configure-widgets-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"configure-widgets-title vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Widgets\n </div>\n <button\n class=\"configure-widgets-back vx-fs-14 vx-fw-500 vx-label-txt vx-m-0 vx-p-0 vx-d-inline-flex vx-align-center\"\n (click)=\"closeConfigureDashboard()\"\n >\n <i class=\"icons vx-fs-16\">&#xe91d;</i> Back\n </button>\n </div>\n <div class=\"configure-widgets-body\">\n <div class=\"configure-widgets-tab\">\n <ul>\n @if (showCompliance) {\n <li\n [class.active]=\"module === 'COMPLIANCE'\"\n (click)=\"module = 'COMPLIANCE'\"\n >\n <!-- <button>\n Compliance<span>{{ complianceWidgetsDisplayCount }}</span>\n </button> -->\n </li>\n }\n @if (showRisk) {\n <li [class.active]=\"module === 'RISK'\">\n <button (click)=\"module = 'RISK'\">\n Risks<span>{{ riskWidgetsDisplayCount }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n <div class=\"configure-widgets-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" placeholder=\"Search widgets\" [(ngModel)]=\"search\" />\n </div>\n @if ((widgetsList[module] | search : search).length !== 0) {\n <div\n class=\"configure-widgets-list vx-d-flex vx-flex-wrap\"\n >\n @for (widget of widgetsList[module] | search : search; track widget) {\n @if (widget?.visibility) {\n <div class=\"configure-widgets-item\">\n <label class=\"block\">\n <input\n type=\"checkbox\"\n [checked]=\"widget.value\"\n (change)=\"selectWidget($event.target.checked, module, widget.id)\"\n />\n <div class=\"check-icon\">\n <svg\n class=\"check\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"check-circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"check-circle\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n </div>\n <div class=\"configure-widgets-item-head\">\n <h4\n class=\"configure-widgets-item-title\"\n [innerHTML]=\"$safeNavigationMigration(widget?.title)\"\n ></h4>\n <p\n class=\"configure-widgets-item-description\"\n [innerHTML]=\"$safeNavigationMigration(widget?.description)\"\n ></p>\n @if (!widget.value) {\n <button\n class=\"configure-widgets-item-button add\"\n (click)=\"selectWidget(true, module, widget.id)\"\n >\n + ADD\n </button>\n }\n @if (widget.value) {\n <button\n class=\"configure-widgets-item-button remove\"\n (click)=\"selectWidget(false, module, widget.id)\"\n >\n - Remove\n </button>\n }\n </div>\n <div class=\"configure-widgets-item-body\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"$safeNavigationMigration(widget?.widgetImage)\"\n alt=\"\"\n width=\"790\"\n height=\"613\"\n />\n </div>\n @if (widget?.subWidgets?.length > 0) {\n <div\n class=\"floating-option vx-d-flex\"\n >\n @for (subWidget of widget.subWidgets; track subWidget) {\n @if (subWidget.visibility) {\n <app-cs-checkbox\n (ngValueChange)=\"\n selectWidget($event, module, widget.id, subWidget.id)\n \"\n [ngValue]=\"subWidget.value\"\n >{{ subWidget.title }}\n </app-cs-checkbox>\n }\n }\n </div>\n }\n </div>\n </label>\n </div>\n }\n }\n <!-- No Data Image -->\n </div>\n }\n @if ((widgetsList[module] | search : search).length === 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.configure_widget\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n <floating-bar\n (submitEvent)=\"onNextClick()\"\n (cancelEvent)=\"closeConfigureDashboard()\"\n [selectedData]=\"selectedWidgets\"\n (deleteEvent)=\"removeWidget($event)\"\n ></floating-bar>\n </div>\n</div>\n}\n","import { Component, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { Configurations } from '../../../configurations';\n\n@Component({\n selector: 'app-loader-inline',\n templateUrl: './loader-inline.component.html',\n styleUrls: ['./loader-inline.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class LoaderInlineComponent implements OnInit {\n vLoader: any;\n \n public env!: any;\n\n constructor(@Optional() config?: Configurations) {\n if (config) {\n this.env = config.envConfig;\n }\n this.vLoader = this.env.vLoader;\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"inline-loader\">\n <img [ngSrc]=\"vLoader\" alt=\"\" width=\"45\" height=\"45\" />\n <div class=\"loader-index\">\n <div class=\"loader-index-circle\"></div>\n </div>\n</div>\n","import { Component, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { SnackBarService } from '../snack-bar.service';\n\n@Component({\n selector: 'app-snack-bar',\n templateUrl: './snack-bar.component.html',\n styleUrls: ['./snack-bar.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class SnackBarComponent implements OnInit {\n show = false;\n message: string = '--';\n icon: string = '&#xe914;';\n type='alert'\n icons:any = {\n success:'&#xe93d;',\n warning:'&#xe914;',\n info:'&#xe932;',\n alert:'&#xe914;',\n error:'&#xeaae;'\n }\n constructor(private snackbarService: SnackBarService) {}\n\n ngOnInit(): void {\n this.snackbarService.snackbarSubject.subscribe((state) => {\n if(state.icon && Object.keys(this.icons).includes(state?.icon)){\n this.icon = this.icons[state.icon];\n this.type = state?.icon;\n }\n this.message = state.message;\n this.show = state.show;\n setTimeout(() => {\n this.show = false;\n }, 3000);\n });\n }\n close() {\n this.show = false;\n }\n ngOnDestroy() {\n }\n}\n","@if (show) {\n <div class=\"snackbar\">\n <div class=\"snackbar-inner\">\n <div class=\"snackbarText\">\n <!-- &#xe914; -->\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i>\n <span [innerHTML]=\"message\">{{ message }}</span>\n </div>\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\n </div>\n </div>\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[appScrollInView]',\n standalone: false\n})\nexport class ScrollInViewDirective implements OnChanges {\n@Input() appScrollInView = false;\n constructor(private el: ElementRef) {\n }\nngOnChanges(change:SimpleChanges){\n if(change?.appScrollInView && change?.appScrollInView?.currentValue === true){\n this.scroll();\n }\n}\n ngAfterViewInit() {\n // Otherwise Angular throws error: Expression has changed after it was checked.\n this.scroll();\n }\n\n scroll(){\n if(this.appScrollInView){\n window.setTimeout(() => {\n this.el.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center'});\n });\n }\n }\n\n}\n","import { Component, Input, OnInit, EventEmitter, Output, HostListener, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-smiley-dialog',\n templateUrl: './smiley-dialog.component.html',\n styleUrls: ['./smiley-dialog.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class SmileyDialogComponent implements OnInit {\n @Input() message!: string;\n @Input() autoClose!: boolean;\n @Input() actionButtons!: any[];\n @Output() action: EventEmitter<string> = new EventEmitter();\n @Output() closeSmiley: EventEmitter<any> = new EventEmitter();\n\n @HostListener('window:keyup', ['$event']) handleKeyboardEvent(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.smileyCloseEmitter({});\n }\n }\n constructor() {}\n\n ngOnInit(): void {\n if (this.autoClose) {\n setTimeout(() => {\n this.close();\n }, 8000);\n }\n }\n close() {\n this.closeSmiley.emit();\n }\n\n actionEmitter(event: any) {\n this.action.emit(event?.id);\n }\n\n smileyCloseEmitter(event: any) {\n this.closeSmiley.emit();\n }\n}\n","<!-- active -->\n<div class=\"smiley-popup active\">\n <button class=\"close\" (click)=\"smileyCloseEmitter($event)\">\n <i class=\"icons\">&#xe93f;</i>\n </button>\n <div class=\"smiley-container\">\n <div class=\"smiley\">\n <!-- active deactive -->\n <div class=\"smiley-circle active\">\n <div class=\"smiley-circle-inner\">\n <div class=\"eyes\">\n <div class=\"eye\"></div>\n <div class=\"eye\"></div>\n </div>\n <div class=\"mouth\"></div>\n </div>\n </div>\n </div>\n <h3>{{ message }}</h3>\n <div class=\"successSmilyButton\">\n @for (button of actionButtons; track button) {\n <button (click)=\"actionEmitter(button)\" [class]=\"button?.class\">\n {{ button?.buttonText }}\n </button>\n }\n </div>\n <!-- <div class=\"successSmilyButton\"> -->\n <!-- <button>White Button</button>\n <button class=\"blue-btn\">Blue Button</button> -->\n <!-- </div> -->\n</div>\n</div>\n","// list-utils.service.ts\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ListUtilsService {\n paginate<T>(items: T[], currentPage: number, pageSize: number): T[] {\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n return items.slice(startIndex, endIndex);\n }\n\n getPageNumbers(totalItems: number, pageSize: number): number[] {\n const totalPages = Math.ceil(totalItems / pageSize);\n const pages = [];\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n return pages;\n }\n}","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Configurations } from '../../../configurations';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProgramListApiService {\n env!: any;\n\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n }\n\n getProgramList(apiUrl: string): Observable<any> {\n return this.http.get<any>(`${this.env.complianceGet}${apiUrl}`);\n }\n}\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-table-loader',\n templateUrl: './table-loader.component.html',\n styleUrls: ['./table-loader.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class TableLoaderComponent implements OnInit {\n\n @Input() listSize = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"table\">\n <table class=\"table-loader\">\n <tbody>\n @for (data of listSize; track data) {\n <tr>\n <td class=\"serial\">\n <span class=\"serial\"></span>\n </td>\n <td class=\"name\" width=\"50%\">\n <span class=\"loader\"></span>\n </td>\n <td class=\"action\" width=\"50%\">\n <span class=\"loader\"></span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'checkSelectedItems',\n standalone: false\n})\nexport class CheckSelectedItemsPipe implements PipeTransform {\n transform(id: string, selectedItems: any) {\n if(selectedItems) {\n const selectedItem = selectedItems?.find(\n (item: any) => String(item?.id) === String(id)\n );\n if(selectedItem) {\n return true;\n }\n return false;\n }\n return false;\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchProgram',\n standalone: false\n})\nexport class SearchProgramPipe implements PipeTransform {\n transform(items: any[], ...args: any[]): any[] {\n let searchText = args[0];\n const searchKey = args[1];\n if (!items) {\n return [];\n }\n if (!searchText) {\n return items;\n }\n searchText = searchText?.toLowerCase();\n if (items?.length) {\n return items.filter((it: any) => {\n if (!searchKey) {\n return JSON.stringify(it)?.toLowerCase()?.includes(searchText);\n } else if (searchKey) {\n return (\n it[searchKey]?.toString()?.toLowerCase()?.indexOf(searchText) > -1\n );\n }\n });\n } else {\n return [];\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, TemplateRef, OnInit, OnChanges, SimpleChanges, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\nimport { ListItem } from '../interfaces/list-item.interface';\nimport { PROGRAM_TABLE_HEADERS, PAGINATION_OPTIONS, PROGRAM_TYPE_LIST, PROGRAM_NO_DATA } from '../constant';\nimport { ListUtilsService } from '../services/list-utils.service';\nimport { ProgramListApiService } from '../services/program-list-api.service';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ASSETS } from '../../constants/assets.constant';\n/**\n * A reusable component for displaying and managing a list of programs with filtering, pagination, and category viewing capabilities.\n * \n * Features:\n * - Program listing with pagination\n * - Search functionality with debounce\n * - Program type filtering\n * - Category viewing for selected programs\n * - Multi-select capability\n * \n * @template T Extends ListItem interface for type safety of list items\n */\n\ninterface Category {\n id: string;\n name: string;\n parent?: string;\n parentTree?: string[];\n [key: string]: any;\n}\n@Component({\n selector: 'app-program-list',\n templateUrl: './program-list.component.html',\n styleUrls: ['./program-list.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ProgramListComponent<T extends ListItem> implements OnInit, OnChanges, OnDestroy {\n /** Array of items to be displayed in the list */\n @Input() items: T[] = [];\n \n /** Object containing selected items, keyed by program ID */\n @Input() selectedItems: any | null = {};\n \n /** URL configuration object for API endpoints */\n @Input() url: any = {};\n\n /** Event emitted when an item is selected */\n @Output() itemSelected = new EventEmitter<T>();\n \n /** Event emitted when an item is deselected */\n @Output() itemDeselected = new EventEmitter<T>();\n \n /** Event emitted when the selection changes */\n @Output() itemsSelectedChange = new EventEmitter<T[]>();\n\n tableHeaders = PROGRAM_TABLE_HEADERS;\n currentPage = PAGINATION_OPTIONS.DEFAULT_CURRENT_PAGE;\n pageSize = PAGINATION_OPTIONS.PAGE_SIZE;\n totalPages = 0;\n searchTerm = '';\n paginatedItems: T[] = [];\n activeProgram: any | null = null;\n categoryList: any = {};\n programTypeList: any[] = PROGRAM_TYPE_LIST;\n selectedProgramType: any[] = [];\n loaderState: any = {\n programList: false,\n categoryList: false,\n };\n appliedProgramType: any[] = [];\n PROGRAM_NO_DATA: any = PROGRAM_NO_DATA;\n ASSETS: any = ASSETS;\n programCategoryList: any = {};\n\n\n /** Subject for handling debounced search */\n private searchSubject = new Subject<string>();\n \n /** Subject for cleanup subscriptions */\n private destroy$ = new Subject<void>();\n\n constructor(\n private listUtils: ListUtilsService,\n private programListApiService: ProgramListApiService\n ) {\n // Initialize debounced search\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.performSearch();\n });\n }\n\n /** Initialize component by fetching program list */\n ngOnInit(): void {\n this.getProgramList();\n }\n\n /** Handle changes to inputs */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] || changes['selectedItems']) {\n this.paginateItems(this.items);\n this.focusFirstProgramWithSelections();\n }\n }\n\n private focusFirstProgramWithSelections(): void {\n if (!this.items?.length || !this.selectedItems) {\n return;\n }\n const programId = Object.keys(this.selectedItems).find(\n (key) => (this.selectedItems[key] ?? []).length > 0\n );\n if (!programId) {\n return;\n }\n const program = this.items.find(\n (item: any) => String(item?.id) === String(programId)\n );\n if (program && String(this.activeProgram?.id) !== String(program?.id)) {\n this.viewCategory(program);\n }\n }\n\n /** Fetch program list from API */\n getProgramList(): void {\n this.loaderState.programList = true;\n this.programListApiService.getProgramList(this.url.programList).subscribe((res: any) => {\n this.items = Array.isArray(res?.data?.programs) ? res.data.programs : [];\n this.loadData(this.items);\n this.loaderState.programList = false;\n });\n }\n\n /**\n * Load data and initialize pagination\n * @param data Array of items to load\n */\n loadData(data: any): void {\n this.goToPage(1, data);\n }\n\n /**\n * Handle item selection/deselection\n * @param event Selection event\n * @param item Item being selected/deselected\n */\n selectItem(event: any, item: any): void {\n const selectedObject = this.activeProgram.id.toString();\n if (event) {\n if(!this.selectedItems[selectedObject]) {\n this.selectedItems[selectedObject] = [];\n }\n this.selectedItems[selectedObject].push(item);\n } else {\n this.selectedItems[selectedObject] = this.selectedItems[\n this.activeProgram.id\n ].filter(\n (selected: any) => String(selected?.id) !== String(item?.id)\n );\n }\n this.itemsSelectedChange.emit(this.selectedItems);\n }\n\n /**\n * Deselect a specific item\n * @param item Item to deselect\n */\n deselectItem(item: T): void {\n this.itemsSelectedChange.emit(this.selectedItems);\n this.itemDeselected.emit(item);\n }\n\n /**\n * Check if an item is selected\n * @param item Item to check\n * @returns Boolean indicating if item is selected\n */\n isSelected(item: T): boolean {\n return false;\n }\n\n /**\n * Navigate to specific page\n * @param page Page number to navigate to\n * @param data Data to paginate\n */\n goToPage(page: number, data: any): void {\n this.currentPage = page;\n this.paginateItems(data);\n }\n\n /**\n * Get array of page numbers for pagination\n * @returns Array of page numbers\n */\n getPageNumbers(): number[] {\n return this.listUtils.getPageNumbers(this.items?.length ?? 0, this.pageSize);\n }\n\n /**\n * Paginate items and update view\n * @param data Data to paginate\n */\n paginateItems(data: any): void {\n const items = Array.isArray(data) ? data : [];\n this.totalPages = Math.ceil(items.length / this.pageSize) || 0;\n this.paginatedItems = items;\n }\n\n /**\n * View categories for a selected program\n * @param item Program to view categories for\n */\n viewCategory(item?: any): void {\n this.activeProgram = item;\n if(!item || this.categoryList[item.id]) return;\n this.loaderState.categoryList = true;\n this.checkProgramCategoryExists(item?.id);\n }\n\n checkProgramCategoryExists(id: string): void {\n if(this.programCategoryList[id]) {\n this.categoryList[id] = this.addParentTreeToCategories(this.programCategoryList[id]);\n this.loaderState.categoryList = false;\n return;\n }\n this.fetchProgramCategoryList(id);\n }\n\n fetchProgramCategoryList(id: string): void {\n const URL = `${this.url.categoryList}&id=${id}`;\n this.programListApiService.getProgramList(URL).subscribe((res: any) => {\n this.programCategoryList[id] = res?.data?.categories ?? [];\n this.categoryList[id] = this.addParentTreeToCategories(this.programCategoryList[id]);\n this.loaderState.categoryList = false;\n });\n }\n\n\n /**\n * Add parent tree information to categories\n * @param categories Array of categories\n * @returns Categories with parent tree information\n */\n addParentTreeToCategories(categories: any[]): any[] {\n if (!categories?.length) return [];\n\n const categoryMap = new Map(categories.map(category => [category.id, category]));\n\n const getParentTree = (category: Category): string[] => {\n const parentTree: string[] = [];\n let currentParent = category.parent;\n\n while (currentParent) {\n const parentCategory = categoryMap.get(currentParent);\n if (!parentCategory) break;\n \n parentTree.push(parentCategory.name);\n currentParent = parentCategory.parent;\n }\n\n return parentTree;\n };\n\n return categories.map(category => ({\n ...category,\n parentTree: getParentTree(category)\n }));\n\n }\n\n /**\n * Handle program type filter selection\n * @param event Selection event\n * @param item Program type being selected/deselected\n */\n selectFilter(event: any, item: any): void {\n if(event) {\n this.selectedProgramType.push(item.id);\n } else {\n this.selectedProgramType = this.selectedProgramType.filter((selected: any) => selected !== item.id);\n }\n }\n\n /** Reset all applied filters */\n resetFilter(): void {\n this.selectedProgramType = [];\n this.onFilterChange();\n }\n\n /** Apply selected filters to the program list */\n onFilterChange(): void {\n const items = Array.isArray(this.items) ? this.items : [];\n if (this.selectedProgramType.length > 0) {\n const filteredItems = items.filter((item: any) =>\n this.selectedProgramType.includes(item.type)\n );\n this.paginateItems(filteredItems);\n } else {\n this.paginateItems(items);\n }\n\n this.appliedProgramType = this.programTypeList.filter((item: any) => this.selectedProgramType.includes(item.id));\n this.checkCategoryAvailbility();\n \n }\n \n checkCategoryAvailbility(): void {\n const isSelectedProgramAvailable = this.paginatedItems.some((item: any) => item?.id === this.activeProgram?.id);\n if(!isSelectedProgramAvailable) {\n this.categoryList = [];\n this.activeProgram = null;\n }\n }\n\n /** Trigger debounced search */\n search(): void {\n this.searchSubject.next(this.searchTerm);\n }\n\n /** Perform search on items */\n private performSearch(): void {\n const items = Array.isArray(this.items) ? this.items : [];\n const filteredItems = items.filter((item: any) =>\n item?.name?.toLowerCase().includes(this.searchTerm?.toLowerCase())\n );\n this.currentPage = 1;\n this.paginateItems(filteredItems);\n this.checkCategoryAvailbility();\n }\n\n /** Cleanup subscriptions on component destruction */\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n closePopover(event: any): void {\n if(event) {\n this.selectedProgramType = this.appliedProgramType.map((item: any) => item?.id);\n }\n }\n}\n","<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" [(ngModel)]=\"searchTerm\" placeholder=\"Search...\" (keyup)=\"search()\" />\n </div>\n <div class=\"dynamic-list-filter\" appPopover (click)=\"programTypePopover.popover()\" placement=\"right\">\n @if (appliedProgramType.length === 0) {\n <div class=\"filter-text\">\n Select Program Type\n </div>\n } @else {\n @if (appliedProgramType.length) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"$safeNavigationMigration(appliedProgramType[0]?.name)\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ appliedProgramType[0]?.name\n }}</span>\n @if (appliedProgramType.length > 1) {\n <button 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 placement=\"right\">\n +{{ appliedProgramType.length - 1 }}\n </button>\n }\n </div>\n }\n }\n <i class=\"icons filter-icon\"> &#xe9e8; </i>\n </div>\n </div>\n @if (\n paginatedItems?.length > 0 ||\n loaderState.programList || loaderState.categoryList) {\n <div class=\"dynamic-list-table\">\n <div class=\"dynamic-list-header vx-d-flex\">\n @for (header of tableHeaders; track header) {\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\">\n #\n </div>\n <div class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\">\n {{ header }}\n </div>\n </div>\n }\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n @if (!loaderState.programList) {\n @for (\n item of paginatedItems | searchProgram : searchTerm : 'name'; track\n item; let i = $index) {\n <div class=\"list-row\" [class.selected]=\"activeProgram?.id === item.id\" (click)=\"viewCategory(item)\">\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div class=\"list-column name\" [class.with-count]=\"selectedItems[item.id]?.length > 0\">\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n @if (selectedItems[item.id]?.length > 0) {\n <div class=\"list-column count\">\n <div class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\">\n {{ selectedItems[item.id].length }}\n </div>\n <div 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\"\n }}\n SELECTED\n </div>\n </div>\n }\n <div class=\"list-column action\">\n <button class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\">\n <i class=\"icons\"> &#xe970; </i>\n </button>\n </div>\n </div>\n }\n } @else {\n <app-table-loader></app-table-loader>\n }\n </div>\n <div class=\"right-column\">\n @if (\n !loaderState.categoryList && !loaderState.programList) {\n @if (\n categoryList[activeProgram?.id]?.length > 0) {\n @for (\n item of categoryList[activeProgram?.id]; track\n item; let i = $index) {\n <div class=\"list-row vx-pl-2 vx-pr-2\">\n <app-cs-checkbox [value]=\"$safeNavigationMigration(item?.id)\" [ngValue]=\"\n item.id\n | checkSelectedItems : selectedItems[activeProgram?.id]\n \" (ngValueChange)=\"selectItem($event, item)\">\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 @if (item?.parentTree?.length) {\n <div\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 Within\n </div>\n }\n <div class=\"within-value vx-fs-11 vx-paragraph-txt\" [appTooltip]=\"$safeNavigationMigration(item?.parentTree?.join(' > '))\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n }\n } @else {\n <div class=\"sub-no-data\">\n <app-no-data [noDataImage]=\"ASSETS.search_data\" [noDataText]=\"PROGRAM_NO_DATA.categoryList\"></app-no-data>\n </div>\n }\n } @else {\n <app-table-loader></app-table-loader>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"list-no-data-container\">\n <app-no-data [noDataImage]=\"ASSETS.search_data\" [noDataText]=\"\n searchTerm ? PROGRAM_NO_DATA.search : PROGRAM_NO_DATA.programList\n \"></app-no-data>\n </div>\n }\n</div>\n\n<app-popover #programTypePopover (closePopoverEvent)=\"closePopover($event)\" dontCloseonClick=\"true\">\n <div class=\"new-action-list\">\n <div class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\">\n Program Type:\n </div>\n <ul class=\"action-item\">\n @for (item of programTypeList; track item) {\n <li>\n <div class=\"chip-item\">\n <app-cs-checkbox [value]=\"item.id\" [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\">\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n }\n </ul>\n <div class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\">\n <button (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 RESET\n </button>\n <button (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 APPLY\n </button>\n </div>\n </div>\n</app-popover>","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-list-container',\n template: `\n <div class=\"wfe-list-container\">\n <div\n class=\"wfe-list-container-heading vx-d-flex vx-align-center vx-pl-4 vx-pr-4\"\n >\n <i class=\"icons arrow-back vx-mr-2\" (click)=\"onClose()\">&#xe91d;</i>\n <div class=\"vx-fs-14 vx-fw-500 vx-gray-70\">{{ heading }}</div>\n </div>\n <div class=\"wfe-list-container-body\">\n <ng-content select=\"[body]\"></ng-content>\n <div class=\"wfe-list-container-footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./list-container.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ListContainerComponent {\n @Input() heading: string = 'Select Programs & Program Categories';\n @Output() close = new EventEmitter<void>();\n\n onClose() {\n this.close.emit();\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n\n@Component({\n selector: 'app-information-block',\n templateUrl: './information-block.component.html',\n styleUrls: ['./information-block.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class InformationBlockComponent {\n\n constructor() {\n }\n\n\n}\n","<div class=\"information-block vx-mb-3\">\n <div class=\"vx-d-flex\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-2\">\n This dashboard will display those items that have been assigned to both the selected Responsibility Center(s) and\n the Program(s)\n </div>\n\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../dashboard-footer-config';\n\n@Component({\n selector: 'app-dashboard-footer',\n templateUrl: './dashboard-footer.component.html',\n styleUrls: ['./dashboard-footer.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class DashboardFooterComponent implements OnInit {\n @Output() cancelEvent = new EventEmitter();\n @Output() submitEvent = new EventEmitter();\n @Output() deleteEvent = new EventEmitter();\n @Input() footerDetails:DashboardFooterConfig={\n selectedData : [],\n nonRemovableList:[],\n displayElementKey: '',\n elementId: '',\n singularText: '',\n pluralText:'',\n showFrequency:false,\n frequencyText:'',\n isDisabled :false\n\n };\n\n @Input() userButtonColor = '';\n\n constructor() { }\n\n ngOnInit(): void {\n }\n cancelFloatingBar() {\n this.cancelEvent.emit();\n }\n submitFloatingBar() {\n this.submitEvent.emit(this.footerDetails.selectedData);\n }\n\n deleteSelected(element: any) {\n this.deleteEvent.emit(element);\n }\n\n\n}\n","<div class=\"dashboard-floating-bar-container\">\n <div class=\"dashboard-floating-bar vx-d-flex vx-align-center\" [class.vx-justify-end]=\"!(footerDetails.showFrequency || footerDetails.selectedData.length>0)\" [class.vx-justify-between]=\"footerDetails.showFrequency || footerDetails.selectedData.length>0\">\n @if (footerDetails.showFrequency) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\" [innerHTML]=\"footerDetails.frequencyText\"></span>\n </div>\n }\n\n @if (footerDetails.selectedData.length>0) {\n <div class=\"left vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n @if (!footerDetails.nonRemovableList.includes(footerDetails.selectedData[0][footerDetails.elementId])) {\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"deleteSelected(footerDetails.selectedData[0])\">&#xe9ae;</i>\n }\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"footerDetails.selectedData[0][footerDetails.displayElementKey]\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{footerDetails.selectedData[0][footerDetails.displayElementKey]}}</span>\n @if (footerDetails.selectedData.length > 1) {\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" [ngClass]=\"userButtonColor\" appPopover (click)=\"countPopup.popover()\" placement=\"left\">+{{footerDetails.selectedData.length - 1}}</button>\n }\n </div>\n @if (footerDetails?.selectedData?.length>1) {\n @if (footerDetails?.selectedData?.slice(1).length === 1) {\n <span class=\"value vx-ml-2\">{{footerDetails.singularText}}</span>\n }\n @if (footerDetails?.selectedData?.slice(1).length > 1) {\n <span class=\"value vx-ml-2\">{{footerDetails.pluralText}}</span>\n }\n }\n <app-popover #countPopup [dontCloseonClick]=\"true\">\n <div class=\"dashboard-floating-bar-action-list\">\n <ul class=\"action-item\">\n @for (element of footerDetails.selectedData.slice(1); track element; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"element[footerDetails.displayElementKey]\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n @if (!footerDetails.nonRemovableList.includes(element[footerDetails.elementId])) {\n <i class=\"icons cross-icon\" (click)=\"deleteSelected(element)\">&#xe90d;</i>\n } {{element[footerDetails.displayElementKey]}}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel vx-bg-white vx-txt-red vx-fw-500 vx-tt-uppercase\" (click)=\"cancelFloatingBar()\">Cancel</button>\n <!-- <button class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase\" (click)=\"submitFloatingBar()\">Update</button> -->\n <button [class.disabled]=\"footerDetails.isDisabled\" class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-center\" (click)=\"submitFloatingBar()\">Next <i class=\"icons vx-ml-1\">&#xe91e;</i></button>\n </div>\n </div>\n </div>","import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { PaginationService } from '../../create-dashboard-container/services/pagination.service';\n\n@Component({\n selector: 'app-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\n/**\n * Adds place holder for Pagination on the lists\n */\nexport class PaginationComponent implements OnInit, OnChanges {\n start = 1;\n totalCount!: number;\n paginationArray: any[] = [];\n currentPage!: number;\n @Input() totalPages = 1;\n @Input() limit = 1;\n @Input() totalList = 1;\n @Output() paginationFilter = new EventEmitter();\n\n constructor(private paginationService: PaginationService) {\n }\n ngOnChanges() {\n this.currentPage = Number(this.paginationService.currentPage);\n this.start = Number(this.paginationService.currentPage);\n this.rebuildPagination(this.currentPage, this.totalPages);\n }\n\n ngOnInit() {\n this.currentPage = Number(this.paginationService.currentPage);\n this.start = Number(this.paginationService.currentPage);\n this.rebuildPagination(this.currentPage, this.totalPages);\n this.paginationService.currentValues.subscribe(event => {\n if (event && (this.paginationService.currentPage !== this.currentPage)) {\n this.currentPage = this.paginationService.currentPage;\n }\n });\n }\n\n /* In this function we will recreate the pagination structure as per current page and\n total number of pages */\n\n rebuildPagination(currentPage: number, totalCount: number) {\n this.paginationArray = [];\n this.totalCount = totalCount;\n this.currentPage = currentPage;\n if (this.paginationService.currentPage !== this.currentPage) {\n this.paginationService.currentPage = this.currentPage;\n this.paginationFilter.emit(true);\n }\n\n // If there are only 6 pages or less in total, just display all pages without \"...\"\n if (totalCount <= 6) {\n for (let i = 1; i <= totalCount; i++) {\n this.paginationArray.push(i);\n }\n }\n // ELSE display with ...\n else {\n\n // Always print first page button\n this.paginationArray.push(1);\n\n // Print \"...\" if currentPage is > 3\n if (currentPage > 3) {\n // this.paginationArray.push(2);\n this.paginationArray.push('...');\n\n }\n // special case where last page is selected...\n // Without this special case, only 2 buttons would be shown after ... if you were on last page\n if (currentPage === totalCount) {\n this.paginationArray.push(currentPage - 2);\n }\n\n // Print previous number button if currentPage > 2\n if (currentPage > 2) {\n this.paginationArray.push(currentPage - 1);\n }\n\n // Print current page number button as long as it not the first or last page\n if (currentPage !== 1 && currentPage !== totalCount) {\n this.paginationArray.push(currentPage);\n\n }\n\n // print next page number button if currentPage < lastPage - 1\n if (currentPage < totalCount - 1) {\n this.paginationArray.push(currentPage + 1);\n\n }\n\n // special case where first page is selected...\n // Without this special case, only 2 buttons would be shown before ... if you were on first page\n if (currentPage === 1) {\n this.paginationArray.push(currentPage + 2);\n\n }\n\n // print \"...\" if currentPage is < lastPage -2\n if (currentPage < totalCount - 2) {\n this.paginationArray.push('...');\n\n // HTML += \"...\";\n }\n\n // Always print last page button if there is more than 1 page\n if (totalCount > 1) {\n this.paginationArray.push(totalCount);\n\n }\n }\n\n }\n/* In this function we will set current page according to the action performed on browser\n ex: prev next buttons clicks or selecting a particular page */\n\n changePage(prev: string, page: number, next: string) {\n if (prev) {\n if (this.start > 1) {\n this.start--;\n // We have changed the start page, total rebuild the pagination\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n if (next) {\n if (this.start < this.totalCount) {\n this.start++;\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n if (page) {\n this.start = page;\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n}\n","<div class=\"pagination-box\">\n <ul>\n <li><button [class.disabled]=\"currentPage==1\" (click)=\"changePage('prev',0,'')\"><i class=\"icons vx-fs-10\">&#xe96b;</i></button></li>\n @for (page of paginationArray; track page) {\n <li>\n <button [disabled]=\"page=='...'\" [class.disable]=\"page=='...'\" [class.active]=\"currentPage==page\" (click)=\"changePage('',page,'')\">\n @if (page=='...') {\n <i class=\"icons\">&#xe911;</i>\n }{{page!='...'?page : ''}}\n </button>\n </li>\n }\n <li><button [class.disabled]=\"currentPage==totalCount\" (click)=\"changePage('',0,'next')\"><i class=\"icons vx-fs-10\">&#xe970;</i></button></li>\n </ul>\n </div>","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { CreateDashboardService } from '../services/create-dashboard.service';\nimport { PaginationService } from '../services/pagination.service';\nimport { UserListConfiguration } from './user-list.config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-user-list',\n templateUrl: './user-list.component.html',\n styleUrls: ['./user-list.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class UserListComponent implements OnInit {\n @Output() closeUserList = new EventEmitter();\n @Output() saveSelectedUsers = new EventEmitter();\n @Input() selectionType = '';\n @Input() listDetails: UserListConfiguration = {\n displayElementKey: '',\n displayGroupKey: '',\n groupIdkey: '',\n elementIdKey: '',\n tooltipKey: '',\n selectedUsersList: [],\n selectedGroupList: [],\n nonRemovableUsersList: [],\n };\n\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: '',\n elementId: '',\n singularText: 'User selected',\n pluralText: 'Users selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n vLoader = false;\n vLoaderGroups = false;\n ASSETS = ASSETS;\n\n @Input() totalPages = 1;\n @Input() limit = 1;\n @Input() totalList = 1;\n @Input() feature: any;\n @Input() totalgroupscount: any;\n searchList = [];\n searchValue = '';\n searchFilter = '';\n selectedIds: any[] = [];\n selectedList: any[] = [];\n groupdata: any[] = [];\n\n animation = true;\n totalgroups: any;\n total_group_pages: any;\n selectedGroupIds: any[] = [];\n groupsEnabled: any;\n selectedgroupList: any[] = [];\n currentPage = 1;\n constructor(\n public paginationService: PaginationService,\n private dashboardService: CreateDashboardService\n ) {\n this.paginationService.reset();\n this.getOrganizationUsersCount('');\n }\n\n ngOnChanges() {}\n\n ngOnInit(): void {\n this.groupsEnabled = true;\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n if (this.listDetails.selectedUsersList.length > 0) {\n this.selectedList = [...new Set(this.listDetails.selectedUsersList)];\n const selectedData = [...new Set(this.listDetails.selectedUsersList)];\n this.footerDetails.selectedData = selectedData;\n this.footerDetails.nonRemovableList =\n this.listDetails.nonRemovableUsersList;\n this.selectedIds = selectedData.map((ele: any) => {\n if (ele[this.listDetails.elementIdKey]) {\n return ele[this.listDetails.elementIdKey];\n }\n });\n }\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n });\n this.footerDetails.displayElementKey = this.listDetails.displayElementKey;\n this.footerDetails.elementId = this.listDetails.elementIdKey;\n if (this.groupsEnabled) {\n this.getGroupsList({});\n }\n if (this.listDetails.selectedGroupList.length > 0) {\n this.selectedgroupList = [...new Set(this.listDetails.selectedGroupList)];\n const selectedData = [...new Set(this.listDetails.selectedGroupList)];\n this.footerDetails.selectedData = selectedData;\n this.footerDetails.nonRemovableList =\n this.listDetails.nonRemovableUsersList;\n this.selectedGroupIds = selectedData.map((ele: any) => {\n if (ele[this.listDetails.groupIdkey]) {\n return ele[this.listDetails.groupIdkey];\n }\n });\n }\n }\n\n cancelChanges() {}\n removeElement(event: any) {}\n submitChanges() {}\n selectAll(event: any) {\n if (event) {\n this.searchList.forEach((searchElement) => {\n if (\n !this.selectedIds.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n this.selectedList.push(searchElement);\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\n this.footerDetails.selectedData = this.selectedList;\n }\n });\n } else {\n this.searchList.forEach((searchElement) => {\n if (\n !this.listDetails.nonRemovableUsersList.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n const index = this.selectedList.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n searchElement[this.listDetails.elementIdKey]\n );\n this.selectedList.splice(index, 1);\n const filteredList = [...this.selectedList];\n this.footerDetails.selectedData = this.selectedList;\n\n const idIndex = this.selectedIds.findIndex(\n (ele) => ele === searchElement[this.listDetails.elementIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n }\n\n /**\n * Selects all admins and managers at once by making api call.\n * @param event consists boolean value to select of unselect.\n */\n selectAllUsers(event: any) {\n if (event) {\n this.vLoader = true;\n this.dashboardService.getAllUsers().subscribe((res: any) => {\n if (res.length > 1) {\n res.forEach((searchElement: any) => {\n if (\n !this.selectedIds.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n this.selectedList.push(searchElement);\n this.selectedIds.push(\n searchElement[this.listDetails.elementIdKey]\n );\n this.footerDetails.selectedData = this.selectedList;\n }\n });\n }\n this.vLoader = false;\n });\n } else {\n const selectedData = [...new Set(this.selectedList)];\n const index = selectedData.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n this.listDetails.nonRemovableUsersList[0]\n );\n if (index != -1) {\n const owner = Object.assign(selectedData[index]);\n\n this.selectedList = [];\n this.selectedIds = [];\n this.footerDetails.selectedData = [];\n\n this.selectedList.push(owner);\n this.selectedIds.push(owner.member_id);\n this.footerDetails.selectedData = this.selectedList;\n } else {\n this.selectedList = [];\n this.selectedIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n }\n\n selectAllGroups(event: any) {\n let params = new HttpParams();\n params = params.append('fetch_all', 1);\n if (event) {\n this.vLoaderGroups = true;\n this.dashboardService.getAllGroups(params).subscribe((res: any) => {\n if (res.data.length > 1) {\n res.data.forEach((searchElement: any) => {\n if (\n !this.selectedGroupIds.includes(\n searchElement[this.listDetails.groupIdkey]\n )\n ) {\n this.selectedgroupList.push(searchElement);\n this.selectedGroupIds.push(\n searchElement[this.listDetails.groupIdkey]\n );\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n });\n }\n this.vLoaderGroups = false;\n });\n } else {\n this.selectedgroupList = [];\n this.selectedGroupIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n\n selectAllsearchgroups(event: any) {\n if (event) {\n this.groupdata.forEach((searchElement) => {\n if (\n !this.selectedGroupIds.includes(\n searchElement[this.listDetails.groupIdkey]\n )\n ) {\n this.selectedgroupList.push(searchElement);\n this.selectedGroupIds.push(\n searchElement[this.listDetails.groupIdkey]\n );\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n });\n } else {\n this.selectedgroupList = [];\n this.selectedGroupIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n\n /**\n * Selects checked item from the list.\n * In case of user's list calculates number of admins/manages to set visibility(either to all admins/ admins and managers)\n * @param data is the selected element\n */\n selectElement(data: any) {\n if (this.selectedIds.includes(data[this.listDetails.elementIdKey])) {\n if (\n !this.listDetails.nonRemovableUsersList.includes(\n data[this.listDetails.elementIdKey]\n )\n ) {\n const index = this.selectedList.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n data[this.listDetails.elementIdKey]\n );\n this.selectedList.splice(index, 1);\n this.footerDetails.selectedData = this.selectedList;\n\n const idIndex = this.selectedIds.findIndex(\n (ele) => ele === data[this.listDetails.elementIdKey]\n );\n\n this.selectedIds.splice(idIndex, 1);\n }\n } else {\n this.selectedList.push(data);\n this.selectedIds.push(data[this.listDetails.elementIdKey]);\n this.footerDetails.selectedData = this.selectedList;\n }\n }\n\n selectGroupElement(data: any) {\n if (this.selectedGroupIds.includes(data[this.listDetails.groupIdkey])) {\n const index = this.selectedgroupList.findIndex(\n (ele: { [x: string]: any }) =>\n ele[this.listDetails.groupIdkey] === data[this.listDetails.groupIdkey]\n );\n this.selectedgroupList.splice(index, 1);\n this.footerDetails.selectedData = this.selectedgroupList;\n const idIndex = this.selectedGroupIds.findIndex(\n (ele) => ele === data[this.listDetails.groupIdkey]\n );\n this.selectedGroupIds.splice(idIndex, 1);\n } else {\n this.selectedgroupList.push(data);\n this.selectedGroupIds.push(data[this.listDetails.groupIdkey]);\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n }\n /**\n * It is used to set and search value incase of backend driven list to differentiate search list and original list\n */\n setSearchValue() {\n if (this.paginationService.searchValue !== this.searchValue) {\n this.paginationService.currentPage = 1;\n this.paginationService.searchValue = this.searchValue;\n this.paginationFilter(true);\n }\n }\n\n /**\n * it is used check select all condition incase of backend driven search\n */\n checkSelectAll() {\n if (this.searchList.length > 0) {\n const data: boolean = this.searchList.every((ele) =>\n this.selectedIds.includes(ele[this.listDetails.elementIdKey])\n );\n return data;\n } else {\n return false;\n }\n }\n\n /**\n * it is used check select all groups condition incase of backend driven search\n */\n checkSelectAllGroups() {\n if (this.groupdata.length > 0) {\n const data: boolean = this.groupdata.every((ele) =>\n this.selectedGroupIds.includes(ele[this.listDetails.groupIdkey])\n );\n return data;\n } else {\n return false;\n }\n }\n\n /**\n * Filter list user's list based on pagination by making api call\n * @param event specifies a boolean value to call api\n */\n paginationFilter(event: any) {\n if (!event) return;\n if (this.groupsEnabled) {\n this.vLoader = true;\n if (this.currentTab == 'USER') {\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n this.getOrganizationUsersCount({\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n } else {\n this.getGroupsList({\n page:\n this.paginationService.currentPage === 1\n ? ''\n : this.paginationService.currentPage,\n groupName: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n } else {\n this.vLoader = true;\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n this.getOrganizationUsersCount({\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n }\n /**\n * Gets user's list by making api call\n * @param url contains userlist filter details\n */\n getUsersList(url: any) {\n this.vLoader = true;\n\n this.dashboardService\n .getOrganizationUsers(url ? url : '')\n .subscribe((res) => {\n this.searchList = res;\n this.vLoader = false;\n });\n }\n getGroupsList(event: any) {\n this.vLoaderGroups = true;\n let params = new HttpParams();\n if (event.hasOwnProperty('groupName')) {\n params = params.append('groupName', event['groupName']);\n }\n if (event.hasOwnProperty('page') && !this.searchValue) {\n params = params.append('page', event['page']);\n }\n if (this.totalgroupscount > 30 && !this.searchValue) {\n params = params.append('limit', 30);\n }\n this.dashboardService.getAllGroups(params).subscribe((res: any) => {\n this.groupdata = res?.data;\n this.vLoaderGroups = false;\n this.totalgroups = res.total_items;\n this.total_group_pages = res.total_pages;\n });\n }\n\n /**\n * on click on next button from the list, it emits the selected list of elements to parent component.\n */\n onSubmit() {\n // const data = [...new Set(this.selectedList)];\n // data.push(this.selectedgroupList)\n this.saveSelectedUsers.emit({\n users: this.selectedList,\n groups: this.selectedgroupList,\n });\n this.paginationService.reset();\n }\n currentTab = 'USER';\n switchTab(tab: string) {\n this.paginationService.reset();\n this.getOrganizationUsersCount('');\n this.currentTab = tab;\n if (this.currentTab == 'USER') {\n this.searchValue = '';\n this.getUsersList({ p: this.paginationService.currentPage });\n } else {\n this.searchValue = '';\n this.getGroupsList({});\n }\n }\n\n getOrganizationUsersCount(Url: any) {\n this.dashboardService.getOrganizationUsersCount(Url).subscribe((res) => {\n this.totalList = res.total_members;\n if (res.total_members && res.limit_per_page > 1) {\n this.totalPages = res.create_page;\n } else {\n this.totalPages = 1;\n }\n });\n }\n}\n","<div class=\"user-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"user-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Who can view this dashboard?\n </div>\n </div>\n <div class=\"user-list-body\">\n @if (groupsEnabled) {\n <div\n class=\"user-list-tab vx-d-flex vx-align-center vx-mb-2\"\n >\n <button\n (click)=\"switchTab('USER')\"\n class=\"tab-btn vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-4\"\n [class.active]=\"currentTab === 'USER'\"\n >\n USERS\n <span\n class=\"vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\"\n >{{ totalList }}</span\n >\n </button>\n <button\n id=\"switchtab\"\n (click)=\"switchTab('GROUP')\"\n class=\"tab-btn vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-4\"\n [class.active]=\"currentTab === 'GROUP'\"\n >\n USER GROUPS\n <span\n id=\"groupscount\"\n class=\"vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\"\n >{{ totalgroups }}</span\n >\n </button>\n </div>\n }\n\n <div class=\"user-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchValue\"\n placeholder=\"{{\n currentTab === 'USER' ? 'Search User(s)' : 'Search User Group(s)'\n }} who can view this dashboard\"\n (keyup.enter)=\"setSearchValue()\"\n (focusout)=\"setSearchValue()\"\n />\n </div>\n\n @if (currentTab === 'USER') {\n @if (totalPages > 1) {\n <div\n class=\"vx-d-flex vx-align-center vx-justify-end\"\n >\n @if (totalPages > 1 && searchList.length > 1) {\n <div\n class=\"pagination-box\"\n >\n <app-pagination\n (paginationFilter)=\"paginationFilter($event)\"\n [limit]=\"limit\"\n [totalPages]=\"totalPages\"\n [totalList]=\"totalList\"\n ></app-pagination>\n </div>\n }\n </div>\n }\n @if (searchList.length !== 0) {\n <div class=\"user-list-body-top\">\n @if (!searchValue && searchList.length > 1) {\n <app-cs-checkbox\n [ngValue]=\"selectedList.length == totalList\"\n (ngValueChange)=\"selectAllUsers($event)\"\n >\n <strong>{{\n selectedList.length == totalList ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n }\n @if (searchValue && searchList.length > 1) {\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll()\"\n (ngValueChange)=\"selectAll($event)\"\n >\n <strong>{{\n selectedList.length == totalList ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n }\n </div>\n }\n <div class=\"list-of-user\">\n <div\n class=\"selection-list vx-mb-4\"\n [class.with-group]=\"groupsEnabled\"\n [class.with-noData]=\"searchList.length == 0\"\n [class.with-pagination]=\"totalPages > 1 && searchList.length > 1\"\n >\n @if (searchList.length !== 0) {\n <ul>\n @for (data of searchList; track data; let i = $index) {\n <li>\n <app-cs-checkbox\n [disabled]=\"\n listDetails.nonRemovableUsersList.includes(\n data[listDetails.elementIdKey]\n )\n \"\n [ngValue]=\"\n selectedList.length > 0 &&\n selectedIds.includes(data[listDetails.elementIdKey])\n \"\n (ngValueChange)=\"selectElement(data)\"\n [arTooltip]=\"data[listDetails.tooltipKey]\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >{{ data[listDetails.displayElementKey] }}</app-cs-checkbox\n >\n </li>\n }\n </ul>\n }\n @if (!vLoader && searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n }\n </div>\n @if (vLoader) {\n <app-loader-inline></app-loader-inline>\n }\n </div>\n }\n\n @if (currentTab === 'GROUP' && groupsEnabled) {\n @if (groupdata; as groups) {\n @if (true) {\n <div class=\"vx-d-flex vx-align-center vx-justify-end\">\n @if (total_group_pages > 1) {\n <div class=\"pagination-box\">\n <app-pagination\n (paginationFilter)=\"paginationFilter($event)\"\n [limit]=\"limit\"\n [totalPages]=\"total_group_pages\"\n [totalList]=\"totalgroups\"\n ></app-pagination>\n </div>\n }\n </div>\n }\n @if (true) {\n <div\n class=\"user-list-mid vx-mb-4\"\n [class.with-pagination]=\"total_group_pages > 1\"\n >\n @if (groups?.length > 0) {\n <div class=\"user-list-select vx-mb-4\">\n @if (!searchValue && groups.length > 1) {\n <app-cs-checkbox\n [disabled]=\"false\"\n [ngValue]=\"selectedgroupList.length == totalgroups\"\n (ngValueChange)=\"selectAllGroups($event)\"\n >\n <div\n class=\"user-name vx-fs-12 vx-fw-600 vx-label-txt vx-tt-none\"\n >\n {{\n selectedgroupList.length == totalgroups\n ? \"Deselect All\"\n : \"Select All\"\n }}\n </div>\n </app-cs-checkbox>\n }\n @if (searchValue && groups.length > 1) {\n <app-cs-checkbox\n [disabled]=\"false\"\n [ngValue]=\"checkSelectAllGroups()\"\n (ngValueChange)=\"selectAllsearchgroups($event)\"\n >\n <div\n class=\"user-name vx-fs-12 vx-fw-600 vx-label-txt vx-tt-none\"\n >\n {{\n selectedgroupList.length == totalgroups\n ? \"Deselect All\"\n : \"Select All\"\n }}\n </div>\n </app-cs-checkbox>\n }\n </div>\n <div class=\"user-list-item\">\n <ul class=\"vx-m-0 vx-p-0 vx-d-flex\">\n @for (data of groups; track data; let i = $index) {\n <li\n class=\"vx-mb-4\"\n >\n <app-cs-checkbox\n (ngValueChange)=\"selectGroupElement(data)\"\n [disabled]=\"false\"\n [ngValue]=\"\n selectedgroupList.length > 0 &&\n selectedGroupIds.includes(data[listDetails.groupIdkey])\n \"\n >\n <div class=\"user-name vx-d-flex vx-align-center\">\n <div\n class=\"group-name\"\n [arTooltip]=\"data[listDetails.displayGroupKey]\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >\n {{ data[listDetails.displayGroupKey] }}\n </div>\n <span\n id=\"usersofgroup\"\n class=\"counter vx-fs-9 vx-fw-600 vx-pl-1 vx-pr-1 vx-lh-3 vx-tt-uppercase vx-ml-2\"\n >{{ data[\"associatedUsers\"].length }}\n {{\n data[\"associatedUsers\"].length > 1\n ? \"USERS\"\n : \"USER\"\n }}</span\n >\n </div>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (groups?.length == 0 && !vLoaderGroups) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n (searchValue?.length > 0\n ? 'No match found.'\n : 'No data to display.'\n )\n \"\n ></app-no-data>\n }\n @if (vLoaderGroups) {\n <app-loader-inline></app-loader-inline>\n }\n </div>\n }\n }\n }\n\n @if (groupsEnabled) {\n <div class=\"user-floating-bar\">\n <div\n class=\"user-floating-bar-container vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"left vx-d-flex vx-align-center\">\n @if (selectedList?.length) {\n <button\n class=\"counter vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 vx-m-0 vx-pl-1 vx-pr-1\"\n appPopover\n (click)=\"userCount.popover()\"\n placement=\"left\"\n >\n {{ selectedList?.length }}\n </button>\n }\n <div class=\"name vx-fs-12 vx-paragraph-txt vx-ml-2\">\n @if (selectedList?.length === 1) {\n <span\n >User\n {{ selectedgroupList?.length > 0 ? \" & \" : \"selected\" }}</span\n >\n }\n @if (selectedList?.length > 1) {\n <span\n >Users\n {{ selectedgroupList?.length > 0 ? \" & \" : \"are selected\" }}</span\n >\n }\n </div>\n @if (selectedgroupList?.length) {\n <button\n class=\"counter group vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 vx-ml-2 vx-pl-1 vx-pr-1\"\n appPopover\n (click)=\"groupCount.popover()\"\n placement=\"left\"\n >\n {{ selectedgroupList?.length }}\n </button>\n }\n <div class=\"name vx-fs-12 vx-paragraph-txt vx-ml-2\">\n @if (selectedgroupList?.length === 1) {\n <span\n >User Group selected</span\n >\n }\n @if (selectedgroupList?.length > 1) {\n <span\n >User Groups selected</span\n >\n }\n </div>\n <app-popover #userCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (element of selectedList; track element) {\n <li>\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [arTooltip]=\"element.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n @if (\n !listDetails.nonRemovableUsersList.includes(\n $safeNavigationMigration(element?.member_id)\n )\n ) {\n <i\n class=\"icons cross-icon\"\n (click)=\"selectElement(element)\"\n >&#xe90d;</i\n >\n }\n {{ element.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n <app-popover #groupCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (element of selectedgroupList; track element) {\n <li>\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [arTooltip]=\"$safeNavigationMigration(element?.group_name)\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n <i\n class=\"icons cross-icon\"\n (click)=\"selectGroupElement(element)\"\n >&#xe90d;</i\n >\n {{ element?.group_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel\" (click)=\"closeUserList.emit()\">Cancel</button>\n <button [disabled]=\"false\" (click)=\"onSubmit()\">\n Next <i class=\"icons\">&#xe91e;</i>\n </button>\n </div>\n </div>\n </div>\n }\n\n @if (!groupsEnabled) {\n <div class=\"user-list-footer\">\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeUserList.emit(); paginationService.reset()\"\n (deleteEvent)=\"selectElement($event)\"\n (submitEvent)=\"onSubmit()\"\n [userButtonColor]=\"'greenBg'\"\n ></app-dashboard-footer>\n </div>\n }\n </div>\n </div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filter',\n standalone: false\n})\nexport class FilterPipe implements PipeTransform {\n\n transform(items: any[], searchText: string): any[] {\n if (!items) {\n return [];\n }\n if (!searchText) {\n return items;\n }\n searchText = searchText.toLowerCase();\n if(items?.length){\n return items.filter((it: any) => {\n return JSON.stringify(it).toLowerCase().includes(searchText);\n });\n }else{\n return [];\n }\n }\n\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-responsibility-center',\n templateUrl: './responsibility-center.component.html',\n styleUrls: ['./responsibility-center.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ResponsibilityCenterComponent implements OnInit, OnChanges {\n @Output() saveSelectedList = new EventEmitter();\n @Output() closeRcList = new EventEmitter();\n @Input() responsibilityCentersList = [];\n @Input() selectedResponsibilityCenters = [];\n @Input() rcIdKey = '';\n @Input() radioSelection = false;\n ASSETS = ASSETS;\n\n selectedIds: any[] = [];\n selectedIdLookup: Record<string, boolean> = {};\n isAllSelected = false;\n animation = false;\n search = '';\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'item_name',\n elementId: 'item_id',\n singularText: 'Responsibility Center selected',\n pluralText: 'Responsibility Centers selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n constructor() {}\n\n ngOnChanges(): void {\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\n this.selectedIds = this.selectedResponsibilityCenters.map((ele: any) => {\n if (ele[this.rcIdKey]) {\n return ele[this.rcIdKey];\n }\n });\n this.updateSelectionState();\n }\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n }\n\n isSelected(id: any): boolean {\n return id != null && id !== '' && this.selectedIdLookup[id] === true;\n }\n\n selectRc(rc: any, mode: any) {\n if (this.radioSelection) {\n if (mode) {\n this.selectedIds = [];\n this.selectedIds.push(rc);\n }\n this.setList();\n return;\n }\n\n const parentRc = this.findRcById(rc);\n const idsToToggle = [rc, ...this.getDescendantIds(parentRc)];\n if (mode) {\n this.addSelectedIds(idsToToggle);\n } else {\n this.removeSelectedIds(idsToToggle);\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n this.selectRc(event[this.rcIdKey], false);\n }\n\n selectAll(mode: any) {\n if (mode) {\n const list = [...this.responsibilityCentersList];\n this.selectedIds = [];\n list.forEach((element) => {\n this.selectedIds.push(element[this.rcIdKey]);\n });\n } else {\n this.selectedIds = [];\n }\n this.setList();\n }\n\n setList() {\n this.updateSelectionState();\n const data: any = [];\n const rcList = [...new Set(this.responsibilityCentersList)];\n rcList.forEach((element: any) => {\n if (this.isSelected(element[this.rcIdKey])) {\n data.push(element);\n }\n });\n this.selectedResponsibilityCenters = data;\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\n }\n\n private updateSelectionState(): void {\n const lookup: Record<string, boolean> = {};\n this.selectedIds.forEach((id) => {\n if (id != null && id !== '') {\n lookup[id] = true;\n }\n });\n this.selectedIdLookup = lookup;\n const list = this.responsibilityCentersList;\n this.isAllSelected =\n list.length > 0 &&\n list.every((rc: any) => lookup[rc[this.rcIdKey]] === true);\n }\n\n private findRcById(id: any) {\n return this.responsibilityCentersList.find(\n (ele: any) =>\n ele?.[this.rcIdKey] == id ||\n ele?.item_id == id ||\n ele?.rc_id == id ||\n ele?.rcid == id ||\n ele?.id == id\n );\n }\n\n private getNodeId(rc: any) {\n if (!rc) {\n return null;\n }\n return rc[this.rcIdKey] ?? rc.item_id ?? rc.rc_id ?? rc.rcid ?? rc.id;\n }\n\n private resolveSelectedId(id: any) {\n const match = this.findRcById(id);\n return match ? this.getNodeId(match) : id;\n }\n\n private addSelectedIds(ids: any[]) {\n ids.forEach((id) => {\n const resolved = this.resolveSelectedId(id);\n if (resolved != null && resolved !== '' && !this.isSelected(resolved)) {\n this.selectedIds.push(resolved);\n this.selectedIdLookup[resolved] = true;\n }\n });\n }\n\n private removeSelectedIds(ids: any[]) {\n ids.forEach((id) => {\n const resolved = this.resolveSelectedId(id);\n const index = this.selectedIds.findIndex(\n (selected) => selected == id || selected == resolved\n );\n if (index !== -1) {\n this.selectedIds.splice(index, 1);\n }\n });\n }\n\n /** Direct and nested child RC ids for a selected parent. */\n private getDescendantIds(parentRc: any): any[] {\n if (!parentRc) {\n return [];\n }\n\n const parentId = this.getNodeId(parentRc);\n const collected = new Set<string>();\n const visitedNodes = new Set<string>();\n const ids: any[] = [];\n\n const add = (id: any) => {\n if (id == null || id === '' || id == parentId) {\n return;\n }\n const key = String(id);\n if (collected.has(key)) {\n return;\n }\n collected.add(key);\n ids.push(id);\n };\n\n const walkNode = (node: any) => {\n if (!node) {\n return;\n }\n const nodeId = this.getNodeId(node);\n if (nodeId != null && nodeId !== '') {\n const visitKey = String(nodeId);\n if (visitedNodes.has(visitKey)) {\n return;\n }\n visitedNodes.add(visitKey);\n }\n (node.item_child_ids ?? []).forEach((childId: any) => add(childId));\n [...(node.children ?? []), ...(node.items ?? [])].forEach((child: any) => {\n add(this.getNodeId(child));\n walkNode(child);\n });\n };\n walkNode(parentRc);\n\n (parentRc.item_child_ids ?? []).forEach((childId: any) => {\n const childRc = this.findRcById(childId);\n if (childRc && childRc !== parentRc) {\n walkNode(childRc);\n }\n });\n\n const parentPath = Array.isArray(parentRc.rc_name) ? parentRc.rc_name : [];\n this.responsibilityCentersList.forEach((rc: any) => {\n const id = this.getNodeId(rc);\n if (id == parentId) {\n return;\n }\n const ancestorIds = rc?.parent_rc_ids ?? [];\n if (ancestorIds.some((ancestorId: any) => ancestorId == parentId)) {\n add(id);\n return;\n }\n const path = Array.isArray(rc.rc_name) ? rc.rc_name : [];\n if (\n parentPath.length &&\n path.length > parentPath.length &&\n parentPath.every((name: any, i: number) => path[i] === name)\n ) {\n add(id);\n }\n });\n\n return ids;\n }\n\n save() {\n this.saveSelectedList.emit(this.selectedIds);\n }\n\n closeResponsibilityCenterList() {\n this.closeRcList.emit();\n }\n}\n","<div class=\"responsibility-center\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"responsibility-center-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Select Responsibility Center(s)\n </div>\n </div>\n <div class=\"responsibility-center-body\">\n <div class=\"responsibility-center-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"search\"\n placeholder=\"Search Responsibility Center\"\n />\n </div>\n\n @if (responsibilityCentersList | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"isAllSelected\"\n (ngValueChange)=\"selectAll($event)\"\n >\n <strong>{{\n isAllSelected ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <ul class=\"responsibility-center-list\">\n @for (rc of searchList; track rc; let i = $index) {\n <li>\n <app-cs-checkbox\n [ngValue]=\"!!selectedIdLookup[rc.item_id]\"\n (ngValueChange)=\"selectRc(rc.item_id, $event)\"\n >\n <ul class=\"responsibility-center-list-name\">\n @for (entity of rc.rc_name; track entity; let j = $index) {\n <li\n [arTooltip]=\"entity\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n @if (j !== 0) {\n <i class=\"icons\">&#xe910;</i>\n }\n {{ entity }}\n <!-- <span class=\"name\">{{entity}}</span> -->\n </li>\n }\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <div class=\"responsibility-center-footer\">\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeRcList.emit()\"\n (deleteEvent)=\"selectRc($event.item_id, false)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { EditorConfig } from '@vcomply/editor';\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\nimport { CreateDashboardService } from './services/create-dashboard.service';\nimport { PaginationService } from './services/pagination.service';\nimport { UserListConfiguration } from './user-list/user-list.config';\nimport { CreateDashboardForm } from './create-dashboard-config';\nimport { SnackBarService } from '../ui-kit/snack-bar/snack-bar.service';\n\nimport dayjs from 'dayjs';\nimport { forkJoin, Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { PopoverService } from '../ui-kit/popover/popover.service';\nimport { TextCountPipe } from './pipes/text-count.pipe';\nimport { ASSETS } from './constants/assets.constant';\nimport { PROGRAM_LIST_API } from './program-list/constant';\nimport { ListItem } from './program-list/interfaces/list-item.interface';\nimport {\n buildProgramSelectionMapFromCategories,\n extractCategoryIdsFromDashboard,\n extractProgramIdsFromDashboard,\n extractRcIdsFromDashboard,\n filterActiveWidgets,\n flattenProgramSelectionMap,\n getEditDashboardCdid,\n getSelectedProgramsMap,\n hasProgramSelectionInMap,\n normalizeIdArray,\n normalizeProgramCategories,\n normalizeProgramSelectionMap,\n parseSailsProgramList,\n} from './utils/dashboard-edit.utils';\n\n@Component({\n selector: 'app-create-dashboard',\n templateUrl: './create-dashboard.component.html',\n styleUrls: ['./create-dashboard.component.less'],\n providers: [TextCountPipe],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CreateDashboardComponent implements OnInit, OnChanges {\n @Input() feature: any;\n activeSelector = '';\n disabled = false;\n @Input() mode = 'CREATE';\n @Input() dashboardId = '';\n @Input() dashboardDetails: any = null; // for edit dashboard\n /** API dashboard object from createDashboard response (used when navigating after create). */\n private createdDashboard: any = null;\n /** True after CREATE API succeeds; widget save should emit `created` for app redirect. */\n private redirectAfterCreate = false;\n @Output() close = new EventEmitter();\n @Input() createdBy = 0;\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\n animation = true;\n @Input() configureWidget = false;\n ASSETS: any = ASSETS;\n\n totalPages = 1;\n totalList = 1;\n usersList: any[] = [];\n vLoader = true;\n userListLoaded = false;\n groupListLoaded = false;\n rcListLoaded = false;\n hideToDate = false;\n listDetails: UserListConfiguration = {\n selectedUsersList: [],\n selectedGroupList: [],\n nonRemovableUsersList: [],\n displayElementKey: 'member_name',\n displayGroupKey: 'group_name',\n groupIdkey: 'group_id',\n elementIdKey: 'member_id',\n tooltipKey: 'member_email',\n };\n dashboardDescription: EditorConfig = {\n placeholder: 'Description (Max limit: 250 characters)',\n mode: 'prime',\n id: 'description',\n };\n responsibilityCategoriesTree: any = {\n regulations: {\n list: [],\n selectedList: [],\n },\n standards: {\n list: [],\n selectedList: [],\n },\n internalControls: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n allComplianceCategories: any[] = [];\n allRiskCategories: any[] = [];\n showRiskCategory = false;\n showCriteria = true;\n\n dashboardForm: CreateDashboardForm = {\n dashboardName: '',\n dashboardDescriptionText: '',\n selectedViewers: [],\n selectedGroup: [],\n selectedFromDate: undefined,\n selectedToDate: undefined,\n selectedResponsibilityCenters: [],\n selectedResponsibilityCategories: [],\n selectedRiskCategories: [],\n displayCriteria: 'or',\n configureWidget: [],\n frequencyDetails: '',\n selectedFrequencyType: '',\n selectedFrequencies: [0],\n frequencyMessage: '',\n frequencyDate: 1,\n };\n\n openConfigureWidgets = false;\n selectedWidgets: any = [];\n displayedWidgets: any = [];\n\n responsibilityCentersList: any[] = [];\n datePickerOverlay = false;\n dayNames = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n ];\n monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n quarters = [\n 'January, April, July, October',\n 'February, May, August, November',\n 'March, June, September, December',\n ];\n\n showRiskWidgets = false;\n showComplianceWidgets = false;\n isManageRisk: boolean = false;\n\n riskCategoryList = {\n strategic: {\n list: [],\n selectedList: [],\n },\n operational: {\n list: [],\n selectedList: [],\n },\n compliance: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n programListUrl: any = PROGRAM_LIST_API;\n\n private readonly datePickerBaseConfig: IDatePickerConfig = {\n openOnClick: false,\n openOnFocus: false,\n hideInputContainer: true,\n hideOnOutsideClick: true,\n };\n\n fromDatePickerConfig: IDatePickerConfig = {\n ...this.datePickerBaseConfig,\n min: this.getCurrentDate(),\n };\n\n toDatePickerConfig: IDatePickerConfig = {\n ...this.datePickerBaseConfig,\n };\n\n isSmiley!: boolean;\n smileyMessage: string = '';\n groupList: any;\n groupsEnabled: boolean = true;\n totalgroups: any;\n openedDatePicker: string = '';\n selectedPrograms: any = {};\n allProgamSelected: any[] = [];\n private pendingEditRcIds: number[] = [];\n private pendingEditRcEntries: any[] = [];\n private editFormHydrated = false;\n /** Tracks in-flight EDIT hydration HTTP calls; loader stays on until zero. */\n private editHydrationCount = 0;\n\n constructor(\n private createDashboardService: CreateDashboardService,\n private paginationService: PaginationService,\n private cdr: ChangeDetectorRef,\n private snackBar: SnackBarService,\n public popoverService: PopoverService,\n private textCount: TextCountPipe\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.createdBy) {\n this.listDetails.nonRemovableUsersList.push(this.createdBy);\n }\n if (\n this.mode === 'EDIT' &&\n changes['dashboardDetails']?.currentValue &&\n this.rcListLoaded &&\n this.userListLoaded &&\n this.groupListLoaded\n ) {\n this.hydrateEditForm();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(\n event: KeyboardEvent\n ) {\n this.close.emit({ mode: 'discard' });\n this.isSmiley = false;\n }\n\n ngOnInit(): void {\n this.animateContainer();\n this.getRCList();\n this.checkWhetherAllListsLoaded();\n this.getUsersList('');\n this.getGroupList();\n this.getUserInfo();\n }\n \n animateContainer() {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n }\n\n getUserInfo(){\n this.createDashboardService.getUserInformation().subscribe(\n (res: any) => {\n this.setPermission(res?.roleActions);\n const quickLink = res.quick_link;\n if (quickLink.risk) {\n this.showRiskCategory = true;\n } else {\n this.showRiskCategory = false;\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n /**\n * Displays the listing pages the left side of policy form to set and edit the dropdown fields values\n * @param type holds name of particular list is to be displayed\n * @param event contains boolean value to display the list or not\n */\n activateSelector(type: any, event: boolean) {\n if (type == 'frequency' || this.activeSelector == 'frequency') {\n this.showCriteria = false;\n setTimeout(() => {\n this.showCriteria = true;\n }, 1);\n }\n if (type === 'responsibilityCategories' && event) {\n this.syncProgramSelectionMapFromForm();\n this.ensureProgramSelectionMapForList();\n }\n this.activeSelector = event ? type : '';\n }\n\n onProgramSelectionChange(items: ListItem[]): void {\n this.selectedPrograms = items;\n this.allProgamSelected = ([] as any).concat(...Object.values(items));\n }\n\n selectCategory(): void {\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(this.allProgamSelected);\n this.applyResponsibilityCategoryWidgetFilters();\n this.activateSelector('', false);\n }\n\n checkDefaultProgramOnRemove(event: any) {\n this.allProgamSelected = this.allProgamSelected.filter(\n (program: any) => program?.id !== event?.id\n );\n this.removeProgram(event);\n\n }\n\n removeProgram(program: any): void {\n const keys = Object.keys(this.selectedPrograms);\n keys.forEach((key: any) => {\n const index = this.selectedPrograms[key].findIndex(\n (item: any) => item?.id === program?.id\n );\n if (index !== -1) {\n this.selectedPrograms[key].splice(index, 1);\n }\n });\n }\n\n private syncProgramSelectionMapFromForm(): void {\n if (hasProgramSelectionInMap(this.selectedPrograms)) {\n return;\n }\n const flat =\n this.allProgamSelected?.length > 0\n ? this.allProgamSelected\n : this.dashboardForm.selectedResponsibilityCategories ?? [];\n const fromForm = buildProgramSelectionMapFromCategories(\n flat,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(fromForm)) {\n this.applyProgramSelectionMap(fromForm);\n }\n }\n\n private hydrateProgramsFromDashboardData(data: any): boolean {\n if (!data) {\n return false;\n }\n const programsRaw = data?.programs ?? data?.programId ?? data?.programIds;\n if (\n Array.isArray(programsRaw) &&\n programsRaw.length &&\n typeof programsRaw[0] === 'object'\n ) {\n const chips = programsRaw.map((p: any) => ({\n id: p?.id ?? p?.programId,\n category_id: p?.id ?? p?.programId,\n name: p?.name ?? p?.item_name,\n item_name: p?.name ?? p?.item_name,\n programId: p?.id ?? p?.programId,\n }));\n this.allProgamSelected = normalizeProgramCategories(chips);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map = buildProgramSelectionMapFromCategories(\n chips,\n this.allComplianceCategories\n );\n if (Object.keys(map).length) {\n this.selectedPrograms = map;\n }\n return true;\n }\n\n const program = data?.program ?? {};\n const selectedMap = getSelectedProgramsMap(data);\n if (selectedMap && hasProgramSelectionInMap(selectedMap)) {\n this.applyProgramSelectionMap(selectedMap);\n return true;\n }\n\n const allPrograms = program?.all_programs;\n if (Array.isArray(allPrograms) && allPrograms.length) {\n if (typeof allPrograms[0] === 'object') {\n const map = buildProgramSelectionMapFromCategories(\n allPrograms,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(map)) {\n this.applyProgramSelectionMap(map);\n return true;\n }\n this.allProgamSelected = normalizeProgramCategories(allPrograms);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n return this.allProgamSelected.length > 0;\n }\n }\n\n const categoryIds = extractCategoryIdsFromDashboard(data);\n if (categoryIds.length) {\n const stubs = categoryIds.map((id) => ({\n category_id: id,\n id,\n item_name: `Category ${id}`,\n }));\n this.allProgamSelected = normalizeProgramCategories(stubs);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n return true;\n }\n return false;\n }\n\n private applyFlatProgramCategories(categories: any[]): void {\n if (!categories?.length) {\n return;\n }\n this.allProgamSelected = normalizeProgramCategories(categories);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map = buildProgramSelectionMapFromCategories(\n categories,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(map)) {\n this.selectedPrograms = map;\n }\n this.cdr.detectChanges();\n }\n\n private applyResponsibilityCategoryWidgetFilters(): void {\n if (this.dashboardForm.selectedResponsibilityCenters.length !== 0) {\n return;\n }\n if (this.dashboardForm.selectedResponsibilityCategories.length === 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length === 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n\n openFromDatePicker(event?: Event) {\n event?.stopPropagation();\n this.toDatePicker?.api?.close();\n this.openedDatePicker = 'FROM_DATE';\n this.fromDatePicker?.api?.open();\n this.datePickerOverlay = true;\n }\n\n openToDatePicker(event?: Event) {\n event?.stopPropagation();\n this.fromDatePicker?.api?.close();\n this.openedDatePicker = 'TO_DATE';\n this.toDatePicker?.api?.open();\n this.datePickerOverlay = true;\n }\n\n closeFromDatePicker() {\n this.fromDatePicker?.api?.close();\n if (!this.dashboardForm.selectedFromDate) {\n this.dashboardForm.selectedToDate = undefined;\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n this.fromDatePicker.api.close();\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n return;\n }\n let minToDate = this.setToDate(this.dashboardForm.selectedFromDate);\n this.toDatePickerConfig = { ...this.datePickerBaseConfig, min: minToDate };\n\n const fromDate = new Date(minToDate.split('-').reverse().join('-'));\n const toDate = new Date(this.dashboardForm.selectedToDate);\n const inValidDate = fromDate >= toDate ? true : false;\n if (inValidDate) {\n this.dashboardForm.selectedToDate = undefined;\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n }\n\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n\n closeToDatePicker() {\n this.toDatePicker?.api?.close();\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n\n animateImage() {\n const circleImage = document.getElementsByClassName('image');\n }\n\n saveFrequency(eventValues: any) {\n this.dashboardForm.selectedFrequencyType = eventValues.frequencyType;\n this.dashboardForm.selectedFrequencies = eventValues.frequencies;\n this.dashboardForm.frequencyMessage = eventValues.frequencyString;\n this.dashboardForm.frequencyDate = eventValues.selectedDate;\n this.activateSelector('', false);\n }\n\n getCurrentDate() {\n let today = new Date();\n return dayjs(today).format('DD-MM-YYYY');\n }\n\n setToDate(data: string) {\n let today = new Date(data);\n return dayjs(today).format('DD-MM-YYYY');\n }\n\n getFromDate(data: string) {\n let today = new Date(data);\n return (\n today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear()\n );\n }\n\n /**\n * @param data - the date you want to format\n * @returns Date string in YYYY-MM-DD format, e.g. 2026-05-19\n */\n getDateFormate(data: string) {\n return dayjs(data).format('YYYY-MM-DD');\n }\n\n\n configureDashboard() {\n let fieldsStatus = this.validateDashboard();\n if (!fieldsStatus) {\n return;\n }\n this.vLoader = true;\n this.onSubmitDashboard();\n \n }\n\n\n\n /**\n * Get users list by making api call and pre selects all admins by adding to viewers\n * @param url contains query params for organization users api\n */\n getUsersList(url: any) {\n this.createDashboardService.getAllUsers().subscribe((res: any) => {\n this.usersList = res;\n this.userListLoaded = true;\n\n if (this.mode === 'EDIT') {\n } else {\n this.dashboardForm.selectedViewers = this.setList(\n this.usersList,\n [this.createdBy],\n 'member_id'\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.vLoader = false;\n }\n });\n }\n\n getGroupList() {\n this.createDashboardService.getAllGroups().subscribe((res: any) => {\n this.totalgroups = res.total_items;\n this.groupList = res.data;\n this.groupListLoaded = true;\n if (this.mode === 'EDIT') {\n } else {\n this.dashboardForm.selectedGroup = this.setList(\n this.groupList,\n [this.createdBy],\n 'group_id'\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n this.vLoader = false;\n }\n });\n }\n\n\n /**\n * It is to ensure whether all required lists on Policy from is loaded from the api call or not\n */\n checkWhetherAllListsLoaded() {\n // Category trees are no longer eagerly loaded here; these flags were never flipped and blocked EDIT indefinitely.\n if (this.rcListLoaded && this.userListLoaded && this.groupListLoaded) {\n if (this.mode === 'EDIT') {\n this.hydrateEditForm();\n } else {\n this.vLoader = false;\n }\n } else {\n setTimeout(() => {\n this.checkWhetherAllListsLoaded();\n }, 300);\n }\n }\n\n setSelectedWidgets(data: any) {\n if (this.mode === 'CREATE') {\n const widgetsArray: any = [];\n data.forEach((element: any) => {\n let obj: any = {};\n obj.module_name = element.module;\n obj.widget_name = element.title;\n obj.widget_code = element.id;\n obj.sub_widgets = [];\n obj.state = 'ACTIVE';\n if (element.subWidgets.length > 0) {\n element.subWidgets.forEach((subWidget: any) => {\n let subWidgetObject: any = {};\n subWidgetObject.widget_name = subWidget.title;\n subWidgetObject.widget_code = subWidget.id;\n subWidgetObject.state = subWidget.value ? 'ACTIVE' : 'INACTIVE';\n obj.sub_widgets.push(Object.assign(subWidgetObject));\n });\n }\n widgetsArray.push(obj);\n });\n\n this.dashboardForm.configureWidget = widgetsArray;\n } else if (this.mode === 'EDIT') {\n const widgetsArray: any = [];\n\n data.forEach((element: any) => {\n if (\n !this.extractWidgetCodes(this.dashboardForm.configureWidget).includes(\n element.id\n )\n ) {\n let obj: any = {};\n obj.module_name = element.module;\n obj._id = '';\n obj.widget_name = element.title;\n obj.widget_code = element.id;\n obj.sub_widgets = [];\n obj.state = 'ACTIVE';\n if (element.subWidgets.length > 0) {\n element.subWidgets.forEach((subWidget: any) => {\n let subWidgetObject: any = {};\n subWidgetObject._id = '';\n subWidgetObject.widget_name = subWidget.title;\n subWidgetObject.widget_code = subWidget.id;\n subWidgetObject.state = subWidget.value ? 'ACTIVE' : 'INACTIVE';\n obj.sub_widgets.push(subWidgetObject);\n });\n }\n this.dashboardForm.configureWidget.push(obj);\n } else {\n const index = this.selectedWidgets.findIndex(\n (ele: any) => ele.widget_code == element.id\n );\n if (index != -1) {\n this.selectedWidgets[index].state = 'ACTIVE';\n if (this.selectedWidgets[index].sub_widgets.length > 0) {\n this.selectedWidgets[index].sub_widgets.forEach(\n (subWidgetData: any) => {\n const elementIndex = element.subWidgets.findIndex(\n (ele: any) => ele.id == subWidgetData.widget_code\n );\n if (elementIndex != -1) {\n subWidgetData.state = element.subWidgets[elementIndex].value\n ? 'ACTIVE'\n : 'INACTIVE';\n }\n }\n );\n }\n }\n }\n });\n this.dashboardForm.configureWidget.forEach((savedWidget: any) => {\n const index = data.findIndex(\n (dataElement: any) => dataElement.id == savedWidget.widget_code\n );\n if (index == -1) {\n savedWidget.state = 'INACTIVE';\n if (savedWidget.sub_widgets.length > 0) {\n savedWidget.sub_widgets.forEach((saveSubWidget: any) => {\n saveSubWidget.state = 'INACTIVE';\n });\n }\n }\n });\n }\n this.selectedWidgets = data;\n this.openConfigureWidgets = false;\n this.submitDashboard();\n }\n\n extractWidgetCodes(widgets: any[]) {\n const widgetCodes: any[] = [];\n\n widgets?.forEach((widget: any) => {\n if (widget?.widget_code) {\n widgetCodes.push(widget?.widget_code);\n }\n });\n\n return widgetCodes;\n }\n\n closeConfigureWidgets(event: boolean) {\n this.openConfigureWidgets = event;\n }\n\n /**\n * Filter list user's list based on pagination by making api call\n * @param event specifies a boolean value to call api\n */\n paginationFilter(event: any) {\n if (event) {\n this.getUsersList({\n p:\n this.paginationService.currentPage === 1\n ? ''\n : this.paginationService.currentPage,\n type: 'all_except_executive',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n }\n\n getRCList() {\n this.createDashboardService.getResponsibilityCenterList().subscribe(\n (res: any) => {\n this.responsibilityCentersList = this.normalizeRcList(res);\n this.rcListLoaded = true;\n this.applyPendingResponsibilityCenters();\n if (this.mode === 'EDIT') {\n const ids = this.responsibilityCentersList.filter((rc: any) => this.dashboardDetails?.responsibilityCenters.includes(rc.rcid)).map((rc: any) => rc.item_id);\n this.saveSelectedList('rc', ids);\n }\n },\n (err: any) => {\n console.error(err);\n this.rcListLoaded = true;\n this.applyPendingResponsibilityCenters();\n }\n );\n }\n /**\n * #### Description\n *\n * Returns the unique array of object based on unique key\n * @param array\n * @param key\n * @returns\n */\n uniqueByProp(array: any, key: string) {\n return Array.from(\n array\n .reduce(\n (acc: any, item: any) => (\n item && item[key] && acc.set(item[key], item), acc\n ),\n new Map()\n )\n .values()\n );\n }\n\n saveSelectedList(type: string, selectedItems: any) {\n switch (type) {\n case 'rc':\n this.dashboardForm.selectedResponsibilityCenters = this.setList(\n this.responsibilityCentersList,\n selectedItems,\n 'item_id'\n );\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n case 'whoCanView':\n this.dashboardForm.selectedViewers = this.uniqueByProp(\n selectedItems?.users,\n 'member_id'\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.dashboardForm.selectedGroup = this.uniqueByProp(\n selectedItems?.groups,\n 'group_id'\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n break;\n case 'responsibilityCategories':\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(\n Array.isArray(selectedItems)\n ? selectedItems\n : flattenProgramSelectionMap(selectedItems ?? {})\n );\n this.applyResponsibilityCategoryWidgetFilters();\n break;\n case 'riskCategory':\n this.dashboardForm.selectedRiskCategories = selectedItems;\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n }\n this.activateSelector('', false);\n }\n\n remove(type: any, event: any, removeIndex?: any) {\n switch (type) {\n case 'rc':\n const rcIndex =\n this.dashboardForm.selectedResponsibilityCenters.findIndex(\n (rc: any) =>\n rc.rc_id == event.rc_id ||\n rc.item_id == event.item_id ||\n rc.rcid == event.rcid\n );\n if (rcIndex !== -1) {\n const parentRc: any =\n this.dashboardForm.selectedResponsibilityCenters[rcIndex];\n this.dashboardForm.selectedResponsibilityCenters.splice(rcIndex, 1);\n\n if (parentRc?.item_child_ids?.length > 0) {\n parentRc.item_child_ids.forEach((childElement: any) => {\n const childRemoveIndex =\n this.dashboardForm.selectedResponsibilityCenters.findIndex(\n (removeElement: any) =>\n removeElement.rc_id == childElement ||\n removeElement.item_id == childElement ||\n removeElement.rcid == childElement\n );\n if (childRemoveIndex !== -1) {\n this.dashboardForm.selectedResponsibilityCenters.splice(\n childRemoveIndex,\n 1\n );\n }\n });\n }\n }\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n\n case 'whoCanView':\n const reviewerIndex = this.dashboardForm.selectedViewers.findIndex(\n (viewer: any) => viewer.member_id == event.member_id\n );\n this.dashboardForm.selectedViewers.splice(reviewerIndex, 1);\n break;\n case 'whoCanViewGroup':\n const groups = this.dashboardForm.selectedGroup.findIndex(\n (ele: any) => ele?.group_id == event?.group_id\n );\n this.dashboardForm.selectedGroup.splice(groups, 1);\n break;\n case 'responsibilityCategories':\n this.checkDefaultProgramOnRemove(event);\n break;\n\n case 'riskCategory':\n const riskCategoryIndex =\n this.dashboardForm.selectedRiskCategories.findIndex(\n (riskCategory: any) => riskCategory.category_id == event.category_id\n );\n if (riskCategoryIndex !== -1) {\n const parent: any =\n this.dashboardForm.selectedRiskCategories[riskCategoryIndex];\n this.dashboardForm.selectedRiskCategories.splice(\n riskCategoryIndex,\n 1\n );\n if (parent?.child_cat_ids?.length > 0) {\n parent.child_cat_ids.forEach((childElement: any) => {\n const removeIndex =\n this.dashboardForm.selectedRiskCategories.findIndex(\n (removeElement: any) =>\n removeElement.category_id == childElement\n );\n this.dashboardForm.selectedRiskCategories.splice(removeIndex, 1);\n });\n }\n }\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n }\n }\n\n setList(list: any[], ids: any[], key: string) {\n return this.setListByIds(list, ids, [key]);\n }\n\n private setListByIds(list: any[], ids: any[], keys: string[]) {\n const data: any[] = [];\n if (!Array.isArray(list) || !Array.isArray(ids)) {\n return data;\n }\n\n ids.forEach((id: any) => {\n const targetId =id;\n for (const key of keys) {\n const index = list.findIndex(\n (listElement: any) =>\n listElement?.[key] === targetId\n );\n\n if (index !== -1) {\n\n data.push(list[index]);\n break;\n }\n }\n });\n return data;\n }\n\n private flattenRcTree(nodes: any): any[] {\n const flat: any[] = [];\n const walk = (arr: any[]) => {\n (arr ?? []).forEach((node) => {\n if (!node || typeof node !== 'object') {\n return;\n }\n flat.push(node);\n if (Array.isArray(node.children)) {\n walk(node.children);\n }\n if (Array.isArray(node.items)) {\n walk(node.items);\n }\n });\n };\n\n if (Array.isArray(nodes)) {\n walk(nodes);\n return flat.length ? flat : nodes;\n }\n if (Array.isArray(nodes?.data)) {\n walk(nodes.data);\n return flat;\n }\n return [];\n }\n\n private getRcNodeId(rc: any): any {\n return rc?.item_id ?? rc?.rc_id ?? rc?.rcid ?? rc?.id;\n }\n\n private collectNestedChildIds(node: any): any[] {\n const ids: any[] = [];\n const seen = new Set<string>();\n const walk = (n: any) => {\n [...(n?.children ?? []), ...(n?.items ?? [])].forEach((child: any) => {\n if (!child || typeof child !== 'object') {\n return;\n }\n const id = this.getRcNodeId(child);\n const key = String(id);\n if (id != null && id !== '' && !seen.has(key)) {\n seen.add(key);\n ids.push(id);\n }\n walk(child);\n });\n };\n walk(node);\n return ids;\n }\n\n private isNestedRc(parent: any, candidate: any): boolean {\n const parentId = parent?.item_id;\n const candidateId = candidate?.item_id;\n if (parentId == null || candidateId == null || parentId == candidateId) {\n return false;\n }\n\n const ancestorIds = [\n ...(candidate?.parent_rc_ids ?? []),\n candidate?.parentId,\n ...(Array.isArray(candidate?.parent) || candidate?.parent == null\n ? []\n : [candidate.parent]),\n ];\n if (ancestorIds.some((id) => id == parentId)) {\n return true;\n }\n\n const parentPath = Array.isArray(parent?.rc_name) ? parent.rc_name : [];\n const candidatePath = Array.isArray(candidate?.rc_name)\n ? candidate.rc_name\n : [];\n return (\n parentPath.length > 0 &&\n candidatePath.length > parentPath.length &&\n parentPath.every((name: any, i: number) => candidatePath[i] === name)\n );\n }\n\n private resolveAllDescendantIds(parent: any, list: any[]): any[] {\n const parentId = parent?.item_id;\n const rawIds = new Set<any>();\n const add = (id: any) => {\n if (id != null && id !== '' && id != parentId) {\n rawIds.add(id);\n }\n };\n\n (parent?.item_child_ids ?? []).forEach(add);\n this.collectNestedChildIds(parent).forEach(add);\n (list ?? []).forEach((rc: any) => {\n if (this.isNestedRc(parent, rc)) {\n add(rc.item_id);\n }\n });\n\n const resolved: any[] = [];\n const seen = new Set<string>();\n rawIds.forEach((id) => {\n const match = (list ?? []).find(\n (rc: any) =>\n rc?.item_id == id ||\n rc?.rc_id == id ||\n rc?.rcid == id ||\n rc?.id == id\n );\n const resolvedId = match?.item_id ?? id;\n const key = String(resolvedId);\n if (!seen.has(key) && resolvedId != parentId) {\n seen.add(key);\n resolved.push(resolvedId);\n }\n });\n return resolved;\n }\n\n private normalizeRcList(list: any): any[] {\n const items = this.flattenRcTree(list);\n const normalized = items.map((rc: any) => ({\n ...rc,\n rcid: rc?.rcid ?? rc?.rc_id ?? rc?.item_id ?? rc?.id,\n item_id: rc?.item_id ?? rc?.rc_id ?? rc?.rcid ?? rc?.id,\n item_name:\n rc?.item_name ??\n rc?.item_name_string ??\n (Array.isArray(rc?.rc_name) ? rc.rc_name.join(' < ') : rc?.rc_name) ??\n '',\n }));\n\n return normalized.map((rc: any) => ({\n ...rc,\n item_child_ids: this.resolveAllDescendantIds(rc, normalized),\n }));\n }\n\n private resolveRcFromTree(tree: any[], ids: number[]): any[] {\n if (!ids.length || !tree.length) {\n return [];\n }\n const selected: any[] = [];\n const seen = new Set<number>();\n\n ids.forEach((id) => {\n const targetId = Number(id);\n const match = tree.find(\n (rc) =>\n Number(rc?.item_id) === targetId ||\n Number(rc?.rc_id) === targetId ||\n Number(rc?.rcid) === targetId ||\n Number(rc?.id) === targetId ||\n rc?.item_child_ids?.some((childId: any) => Number(childId) === targetId) ||\n rc?.item_parent_ids?.some((parentId: any) => Number(parentId) === targetId)\n );\n if (!match) {\n return;\n }\n const key = Number(match?.item_id ?? match?.rc_id ?? match?.rcid ?? id);\n if (!seen.has(key)) {\n seen.add(key);\n selected.push(match);\n }\n });\n return selected;\n }\n\n private applyPreresolvedRcEntries(): boolean {\n if (!this.pendingEditRcEntries?.length) {\n return false;\n }\n const tree = this.responsibilityCentersList ?? [];\n const selected = this.pendingEditRcEntries.map((entry) => {\n const rcid = Number(entry?.rcid ?? entry?.rc_id ?? entry?.item_id);\n const fromTree =\n tree.find((rc) => Number(rc?.item_id) === rcid) ??\n tree.find((rc) => Number(rc?.rcid) === rcid) ??\n tree.find((rc) => Number(rc?.rc_id) === rcid);\n return fromTree ? { ...fromTree } : { ...entry };\n });\n this.dashboardForm.selectedResponsibilityCenters = selected;\n this.pendingEditRcIds = selected.map((rc) =>\n Number(rc?.rcid ?? rc?.rc_id ?? rc?.item_id)\n );\n return true;\n }\n\n private applyPendingResponsibilityCenters(): void {\n if (this.applyPreresolvedRcEntries()) {\n this.cdr.detectChanges();\n return;\n }\n if (!this.rcListLoaded || !this.pendingEditRcIds.length) {\n return;\n }\n let selected = this.setListByIds(\n this.responsibilityCentersList,\n this.pendingEditRcIds,\n ['item_id', 'rcid', 'rc_id', 'id']\n );\n if (selected.length < this.pendingEditRcIds.length) {\n selected = this.resolveRcFromTree(\n this.responsibilityCentersList,\n this.pendingEditRcIds\n );\n }\n this.dashboardForm.selectedResponsibilityCenters = selected;\n this.cdr.detectChanges();\n }\n\n private beginEditHydration(): void {\n if (this.mode !== 'EDIT') {\n return;\n }\n this.editHydrationCount++;\n this.vLoader = true;\n }\n\n private finishEditHydration(): void {\n if (this.mode !== 'EDIT') {\n return;\n }\n this.editHydrationCount = Math.max(0, this.editHydrationCount - 1);\n if (this.editHydrationCount === 0) {\n this.vLoader = false;\n this.cdr.detectChanges();\n }\n }\n\n private tryCompleteEditHydration(): void {\n if (this.mode === 'EDIT' && this.editHydrationCount === 0) {\n this.vLoader = false;\n this.cdr.detectChanges();\n }\n }\n\n private wrapEditRequest<T>(\n request$: Observable<T>,\n onNext: (value: T) => void\n ): void {\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n request$\n .pipe(finalize(() => this.finishEditHydration()))\n .subscribe({\n next: onNext,\n error: (err) => console.error(err),\n });\n }\n\n private syncProgramsForEdit(data: any): void {\n if (!data) {\n return;\n }\n this.hydrateProgramsFromDashboardData(data);\n this.applyProgramsFromDashboardIds(\n extractProgramIdsFromDashboard(data),\n extractCategoryIdsFromDashboard(data),\n getSelectedProgramsMap(data),\n data?.program\n );\n const categoryIds = extractCategoryIdsFromDashboard(data);\n if (categoryIds.length) {\n const fromCompliance = this.setList(\n this.allComplianceCategories,\n categoryIds,\n 'category_id'\n );\n if (fromCompliance.length && !this.allProgamSelected.length) {\n this.applyFlatProgramCategories(fromCompliance);\n }\n }\n if (\n !this.allProgamSelected.length &&\n this.dashboardForm.selectedResponsibilityCategories.length\n ) {\n this.allProgamSelected = [\n ...this.dashboardForm.selectedResponsibilityCategories,\n ];\n }\n this.syncProgramSelectionMapFromForm();\n }\n\n private applyProgramsFromDashboardIds(\n programIds: number[],\n categoryIds: number[],\n selectedProgramsMap?: Record<string, any[]>,\n programPayload?: { all_programs?: any[]; selected_programs?: any }\n ): void {\n if (categoryIds.length) {\n this.loadProgramsForEdit(\n programIds,\n categoryIds,\n selectedProgramsMap,\n programPayload\n );\n return;\n }\n if (programIds.length) {\n this.resolveProgramIdsForEdit(programIds);\n }\n }\n\n private ensureProgramSelectionMapForList(): void {\n if (hasProgramSelectionInMap(this.selectedPrograms)) {\n return;\n }\n const categoryIds = normalizeIdArray(\n this.dashboardForm.selectedResponsibilityCategories?.map(\n (c: any) => c?.category_id ?? c?.id\n ) ?? []\n );\n const programIds = [\n ...new Set(\n (this.dashboardForm.selectedResponsibilityCategories ?? []).map(\n (c: any) => Number(c?.programId ?? c?.program_id ?? c?.parentId)\n )\n ),\n ].filter((id) => !Number.isNaN(id));\n if (programIds.length || categoryIds.length) {\n this.loadProgramsForEdit(programIds, categoryIds);\n }\n }\n\n private applyProgramSelectionMap(map: Record<string, any[]>): void {\n const normalized = normalizeProgramSelectionMap(map);\n if (!normalized) {\n return;\n }\n this.selectedPrograms = normalized;\n this.allProgamSelected = flattenProgramSelectionMap(this.selectedPrograms);\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(this.allProgamSelected);\n this.cdr.detectChanges();\n }\n\n private categoryMatchesId(cat: any, categoryIdSet: Set<number>): boolean {\n const id = Number(cat?.id);\n const categoryId = Number(cat?.category_id);\n return (\n (!Number.isNaN(id) && categoryIdSet.has(id)) ||\n (!Number.isNaN(categoryId) && categoryIdSet.has(categoryId))\n );\n }\n\n private loadProgramsForEdit(\n programIds: number[],\n categoryIds: number[] = [],\n selectedProgramsMap?: Record<string, any[]>,\n programPayload?: { all_programs?: any[]; selected_programs?: any }\n ): void {\n if (\n selectedProgramsMap &&\n typeof selectedProgramsMap === 'object' &&\n !Array.isArray(selectedProgramsMap) &&\n hasProgramSelectionInMap(selectedProgramsMap)\n ) {\n this.applyProgramSelectionMap(selectedProgramsMap);\n return;\n }\n\n if (\n programPayload &&\n this.hydrateProgramsFromDashboardData({ program: programPayload })\n ) {\n return;\n }\n\n if (!programIds.length && !categoryIds.length) {\n return;\n }\n\n const completeProgramHydration = () => this.finishEditHydration();\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n\n this.createDashboardService.getSailsProgramList().subscribe({\n next: (res: any) => {\n const programs = parseSailsProgramList(res);\n const relevantPrograms =\n programIds.length > 0\n ? programs.filter((p: any) => programIds.includes(Number(p?.id)))\n : programs;\n\n if (!categoryIds.length) {\n if (programIds.length) {\n this.resolveProgramIdsForEdit(programIds, programs);\n }\n completeProgramHydration();\n return;\n }\n\n const categoryIdSet = new Set(categoryIds);\n const programsToFetch =\n relevantPrograms.length > 0 ? relevantPrograms : programs;\n\n if (!programsToFetch.length) {\n completeProgramHydration();\n return;\n }\n\n const categoryRequests = programsToFetch.map((program: any) =>\n this.createDashboardService.getProgramCategories(program.id).pipe(\n map((catRes: any) => ({\n program,\n categories: catRes?.data?.categories ?? catRes?.categories ?? [],\n }))\n )\n );\n forkJoin(categoryRequests)\n .pipe(finalize(() => completeProgramHydration()))\n .subscribe({\n next: (rawResults: unknown) => {\n const results = rawResults as Array<{\n program: any;\n categories: any[];\n }>;\n const map: Record<string, any[]> = {};\n results.forEach(({ program, categories }) => {\n const selected = (categories ?? []).filter((cat: any) =>\n this.categoryMatchesId(cat, categoryIdSet)\n );\n if (selected.length) {\n map[String(program.id)] = selected;\n }\n });\n if (hasProgramSelectionInMap(map)) {\n this.applyProgramSelectionMap(map);\n } else if (this.allProgamSelected.length) {\n this.syncProgramSelectionMapFromForm();\n }\n },\n error: (err) => console.error(err),\n });\n },\n error: (err) => {\n console.error(err);\n completeProgramHydration();\n },\n });\n }\n\n /** Custom dashboards often store program ids only — resolve names for form chips. */\n private resolveProgramIdsForEdit(\n programIds: number[],\n programsFromList?: any[]\n ): void {\n if (!programIds.length) {\n return;\n }\n const apply = (programs: any[]) => {\n const matched = programs.filter((p: any) =>\n programIds.includes(Number(p?.id))\n );\n if (!matched.length) {\n return;\n }\n const chips = matched.map((p: any) => ({\n id: p.id,\n category_id: p.id,\n name: p.name,\n item_name: p.name,\n programId: p.id,\n }));\n this.allProgamSelected = normalizeProgramCategories(chips);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map: Record<string, any[]> = {};\n matched.forEach((p: any) => {\n map[String(p.id)] = [];\n });\n this.selectedPrograms = map;\n this.cdr.detectChanges();\n };\n\n if (programsFromList?.length) {\n apply(programsFromList);\n return;\n }\n\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n this.createDashboardService\n .getSailsProgramList()\n .pipe(finalize(() => this.finishEditHydration()))\n .subscribe({\n next: (res: any) => {\n apply(parseSailsProgramList(res));\n },\n error: (err) => console.error(err),\n });\n }\n\n private buildEditDashboardData(): any {\n const row = this.dashboardDetails ?? {};\n const core = row?.dashboard_details ?? row?.dashboard ?? row;\n const programSource =\n core?.programs \n const rcSource =\n core?.responsibilityCenters\n\n return {\n ...row,\n ...core,\n cdid: core?.cdid ?? row?.cdid,\n dashboard_name: core?.name ?? row?.dashboard_name,\n name: core?.name ?? row?.dashboard_name,\n description: core?.description ?? row?.description,\n viewers: core?.viewers ?? row?.viewers,\n visible_to_users: core?.visible_to_users ?? row?.visible_to_users,\n visible_to_groups: core?.visible_to_groups ?? row?.visible_to_groups,\n programs: programSource,\n programId: extractProgramIdsFromDashboard({\n programs: programSource,\n program: core?.program ?? row?.program,\n }),\n responsibility_category:\n core?.responsibility_category ??\n row?.responsibility_category ??\n core?.responsibilityCategory ??\n [],\n rcId: core.rcId,\n selectedRcEntries:\n row?.selectedRcEntries ??\n core?.selectedRcEntries ??\n [],\n responsibilityCenters: rcSource,\n responsibility_center: rcSource,\n responsibilityCenterId: core.rcId,\n program: core?.program ?? row?.program,\n timeframe:\n core?.timeframe ??\n (row?.time_frame_from || row?.time_frame_to\n ? { from: row?.time_frame_from, to: row?.time_frame_to }\n : undefined),\n time_frame_from:\n core?.timeframe?.from ??\n core?.timeframe?.start_date ??\n row?.time_frame_from,\n time_frame_to:\n core?.timeframe?.to ?? core?.timeframe?.end_date ?? row?.time_frame_to,\n created_by: core?.createdBy ?? core?.created_by ?? row?.created_by,\n createdBy: core?.createdBy ?? core?.created_by ?? row?.createdBy,\n };\n }\n submitted = false;\n\n /**\n * Returns id's from a particular list elements\n * @param list actual selected list\n * @param key contains key to extract id from the list\n */\n returnIds(list: any[], key: string) {\n return list?.map((ele) => {\n if (ele[key]) {\n return ele[key];\n }\n });\n }\n\n /**\n * Validates the data submitted on create dashboard form\n */\n validateDashboard() {\n setTimeout(() => {\n this.submitted = true;\n }, 100);\n const event = this.dashboardForm.dashboardName;\n const re = /&nbsp;|<br>/g;\n this.dashboardForm.dashboardName = event.replace(re, '').trim();\n const description = this.dashboardForm.dashboardDescriptionText;\n this.dashboardForm.dashboardDescriptionText = description\n .replace(re, '')\n .trim();\n if (\n !this.dashboardForm.dashboardName ||\n this.dashboardForm.dashboardName.trim() == '' ||\n this.dashboardForm.dashboardName.length > 30 ||\n this.textCount.transform(this.dashboardForm?.dashboardDescriptionText) >\n 250 ||\n (this.dashboardForm?.selectedFromDate &&\n !this.dashboardForm?.selectedToDate) ||\n (this.dashboardForm.selectedResponsibilityCenters.length == 0)\n ) {\n return false;\n }\n return true;\n }\n\n /**\n * Makes an api call to create a dashboad\n * @param dashboard contains dashboardForm data\n */\n submitDashboard() {\n this.submitted = false;\n const valid = this.validateDashboard();\n if (!valid) {\n return false;\n }\n this.vLoader = true;\n const dashboard = this.dashboardForm;\n const payload: any = {\n viewer: {\n userId: this.returnIds(dashboard.selectedViewers, 'uid'),\n userGroupId: this.returnIds(dashboard.selectedGroup, 'ugid'),\n },\n\n widget_details: dashboard.configureWidget,\n dashboard_id: this.dashboardId,\n };\n \n this.createDashboardService.saveWidgetDetails(payload).subscribe({\n next: (res: any) => {\n // saveWidgetDetails can return freshest bridge id; merge it for redirect.\n const widgetPayload = res?.data ?? res ?? {};\n this.createdDashboard = {\n ...(this.createdDashboard ?? {}),\n ...(widgetPayload?.dashboard ?? {}),\n cddid:\n this.createdDashboard?.cddid ??\n widgetPayload?.cddid ??\n widgetPayload?.cdid ??\n widgetPayload?.dashboard_bridge_id,\n cdid:\n this.createdDashboard?.cdid ??\n widgetPayload?.cdid ??\n widgetPayload?.cddid ??\n widgetPayload?.dashboard_bridge_id,\n dashboard_bridge_id:\n this.createdDashboard?.dashboard_bridge_id ??\n widgetPayload?.dashboard_bridge_id ??\n widgetPayload?.dashboardBridgeId,\n dashboardBridgeId:\n this.createdDashboard?.dashboardBridgeId ??\n widgetPayload?.dashboardBridgeId ??\n widgetPayload?.dashboard_bridge_id,\n };\n this.dashboardId = this.getCreatedDashboardCdid();\n this.vLoader = false;\n this.isSmiley = true;\n this.smileyMessage = this.mode === 'EDIT' ? 'The dashboard has been updated.' : 'The dashboard has been created.';\n setTimeout(() => {\n this.isSmiley = false;\n const cdid = this.getCreatedDashboardCdid();\n const closeMode = this.redirectAfterCreate\n ? 'created'\n : this.mode === 'EDIT'\n ? 'updated'\n : 'created';\n this.redirectAfterCreate = false;\n this.close.emit({\n mode: closeMode,\n id: cdid,\n cdid,\n dashboardBridgeId:\n this.createdDashboard?.dashboard_bridge_id ??\n this.createdDashboard?.dashboardBridgeId,\n dashboard: this.createdDashboard,\n });\n }, 3000);\n },\n error: (error: any) => {\n console.error('saveWidgetDetails error =>', error);\n this.snackBar.show(error.error.statusMessage, 'alert');\n this.vLoader = false;\n }\n })\n\n\n }\n\n closeContainer(message: string) {\n this.close.emit(message);\n }\n\n onSubmitDashboard() {\n const dashboard = this.dashboardForm;\n const payload: any = {\n dashboard_name: dashboard.dashboardName,\n description: [\n {\n content: dashboard.dashboardDescriptionText,\n attachments: [],\n },\n ],\n visible_to_users: this.returnIds(dashboard.selectedViewers, 'uid'),\n visible_to_groups: this.returnIds(dashboard.selectedGroup, 'ugid'),\n responsibility_center: this.returnIds(\n dashboard.selectedResponsibilityCenters,\n 'rcid'\n ),\n responsibility_category: this.returnIds(\n dashboard.selectedResponsibilityCategories,\n 'category_id'\n ),\n risk_category: this.returnIds(\n dashboard.selectedRiskCategories,\n 'category_id'\n ),\n display_criteria:\n dashboard.displayCriteria === 'and'\n ? 'BOTH_RC_AND_CATEGORY'\n : 'RC_OR_CATEGORY',\n\n widget_details: dashboard.configureWidget,\n program: {\n all_programs: this.allProgamSelected,\n selected_programs: this.selectedPrograms,\n },\n timeframe: {\n start_date: dashboard.selectedFromDate\n ? this.getDateFormate(dashboard?.selectedFromDate)\n : '',\n end_date: dashboard.selectedToDate\n ? this.getDateFormate(dashboard?.selectedToDate)\n : '',\n },\n\n };\n const createDashboardPayload = this.createDashboardService.buildPayload(payload);\n this.saveDashboard(createDashboardPayload);\n\n }\n\n saveDashboard(payload: any) {\n let apiCall = this.createDashboardService.createDashboard(payload);\n if(this.mode === 'EDIT') {\n apiCall = this.createDashboardService.updateDashboard(payload, this.dashboardDetails?.recordId);\n }\n apiCall.subscribe({\n next: (res: any) => {\n const wasCreate = this.mode === 'CREATE';\n this.createdDashboard = res?.data?.dashboard ?? null;\n this.dashboardDetails = this.createdDashboard\n this.dashboardId = this.getCreatedDashboardCdid();\n this.dashboardDetails['recordId'] = this.createdDashboard?.id\n this.vLoader = false;\n this.openConfigureWidgets = true;\n this.showComplianceWidgets = false;\n if (wasCreate) {\n this.redirectAfterCreate = true;\n }\n this.mode = 'EDIT'\n\n },\n error: (error: any) => {\n this.vLoader = false;\n if(error.status == 422) {\n this.snackBar.show(\n error.error.statusMessage,\n 'alert'\n ); }\n }\n })\n }\n\n private getCreatedDashboardCdid(): string {\n const dash = this.createdDashboard;\n const cdid =\n dash?.cddid ??\n dash?.cdid ??\n dash?.cdId ??\n dash?.dashboard_bridge_id ??\n dash?.dashboardBridgeId ??\n dash?.dashboard?.dashboard_bridge_id ??\n this.dashboardId;\n return cdid != null && cdid !== '' ? String(cdid) : '';\n }\n\n private hydrateEditForm(): void {\n if (this.editFormHydrated) {\n return;\n }\n this.editFormHydrated = true;\n this.editDashboard();\n }\n\n private applyWidgetsFromGetWidgetsResponse(widgets: {\n widgetArr: any[];\n allWidgetsArray: any[];\n }): void {\n const savedWidgets = filterActiveWidgets(widgets?.widgetArr ?? []);\n const catalogWidgets = widgets?.allWidgetsArray?.length\n ? widgets.allWidgetsArray\n : savedWidgets;\n this.dashboardForm.configureWidget = savedWidgets;\n this.selectedWidgets = [...savedWidgets];\n this.displayedWidgets = [...catalogWidgets];\n }\n\n /** EDIT mode only: GET getWidgets?dashboardId={cdid} */\n private loadEditModeWidgets(cdid: string): void {\n if (this.mode !== 'EDIT' || !cdid) {\n return;\n }\n this.wrapEditRequest(\n this.createDashboardService.fetchCustomDashboardWidgetDetails(cdid),\n (widgets) => {\n this.applyWidgetsFromGetWidgetsResponse(widgets);\n this.cdr.detectChanges();\n }\n );\n }\n\n editDashboard() {\n this.vLoader = true;\n if (this.mode === 'EDIT') {\n this.editHydrationCount = 0;\n }\n const data = this.buildEditDashboardData();\n this.pendingEditRcEntries =\n data?.selectedRcEntries ??\n this.dashboardDetails?.selectedRcEntries ??\n [];\n const editCdid = getEditDashboardCdid(\n data,\n this.dashboardDetails,\n this.dashboardId\n );\n\n this.listDetails.nonRemovableUsersList = [\n data?.createdBy ?? data?.created_by,\n ].filter((x) => x != null);\n this.populateDashboardForm(data);\n\n if (this.mode === 'EDIT' && editCdid) {\n this.loadEditModeWidgets(editCdid);\n }\n\n this.tryCompleteEditHydration();\n }\n\n populateDashboardForm(data: any) {\n try {\n const descriptionBlock = Array.isArray(data?.description)\n ? data.description[0]\n : null;\n const descriptionText =\n descriptionBlock?.content ??\n (typeof data?.description === 'string' ? data.description : '') ??\n data?.dashboardDescriptionText ??\n '';\n\n const visibleUsers = data?.visible_to_users ?? data?.viewers?.userId ?? [];\n const visibleUserIds = data?.viewers?.userId ?? [];\n const visibleGroups = data?.viewers?.userGroupId ?? [];\n const visibleGroupIds = data?.viewers?.userGroupId ?? [];\n this.pendingEditRcEntries =\n data?.selectedRcEntries ??\n this.dashboardDetails?.selectedRcEntries ??\n [];\n this.pendingEditRcIds = extractRcIdsFromDashboard(data);\n this.applyPreresolvedRcEntries();\n const riskCategories = data?.risk_category ?? [];\n const riskCategoryIds = (riskCategories ?? []).map((risk: any) =>\n typeof risk === 'object' ? risk?.category_id ?? risk?.id : risk\n );\n const startDate =\n data?.timeframe?.start_date ??\n data?.timeframe?.from ??\n data?.time_frame_from;\n const endDate =\n data?.timeframe?.end_date ??\n data?.timeframe?.to ??\n data?.time_frame_to;\n this.dashboardForm.dashboardName =\n data?.dashboard_name ?? data?.name ?? '';\n this.dashboardForm.dashboardDescriptionText = descriptionText;\n this.dashboardForm.selectedViewers = this.setListByIds(\n this.usersList,\n visibleUserIds,\n ['member_id', 'uid', 'id']\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.dashboardForm.selectedGroup = this.setListByIds(\n this.groupList,\n visibleGroupIds,\n ['group_id', 'ugid', 'id']\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n this.applyPendingResponsibilityCenters();\n this.syncProgramsForEdit(data);\n this.dashboardForm.selectedRiskCategories =\n this.setList(\n this.allRiskCategories,\n riskCategoryIds,\n 'category_id'\n );\n this.dashboardForm.displayCriteria =\n data?.display_criteria === 'BOTH_RC_AND_CATEGORY' ? 'and' : 'or';\n this.dashboardForm.selectedFromDate = startDate\n ? new Date(startDate)\n : undefined;\n this.dashboardForm.selectedToDate = endDate\n ? new Date(endDate)\n : undefined;\n if (this.mode !== 'EDIT') {\n this.vLoader = false;\n const widgetDetailsRaw =\n data?.widget_details ?? data?.widgets ?? [];\n const widgetDetails = Array.isArray(widgetDetailsRaw)\n ? widgetDetailsRaw\n : [];\n const allWidgetsRaw = data?.all_widgets ?? widgetDetails;\n const allWidgets = Array.isArray(allWidgetsRaw) ? allWidgetsRaw : [];\n this.dashboardForm.configureWidget = widgetDetails;\n this.selectedWidgets =\n widgetDetails.length > 0 ? [...new Set(widgetDetails)] : [];\n this.displayedWidgets =\n allWidgets.length > 0 ? [...new Set(allWidgets)] : [];\n }\n if (startDate) {\n const minToDate = this.setToDate(startDate);\n this.toDatePickerConfig = { ...this.datePickerBaseConfig, min: minToDate };\n }\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('populate dashboard error =>', error);\n this.vLoader = false;\n }\n }\n\n\n ngAfterViewChecked() {\n //your code to update the model\n this.cdr.detectChanges();\n }\n\n setPermission(roleActions: any) {\n let ifExistRisk = roleActions?.find((el: any) => el.moduleName == 'risk');\n ifExistRisk?.subModule?.forEach((module: any) => {\n module?.permissions?.forEach((permission: any) => {\n switch (permission?.code) {\n case 'RRMR': {\n if (permission?.defaultPermission == 1 || permission?.enable == 1) {\n this.isManageRisk = true;\n }\n break;\n }\n }\n });\n });\n }\n\n @HostListener('document:click', ['$event'])\n documentClick(event: MouseEvent): void {\n const fromOpen = !!this.fromDatePicker?.areCalendarsShown;\n const toOpen = !!this.toDatePicker?.areCalendarsShown;\n if (!this.datePickerOverlay && !fromOpen && !toOpen) {\n return;\n }\n\n const targetElement = event?.target as Element | null;\n if (!targetElement?.closest) {\n return;\n }\n\n // Keep calendar open when interacting with the calendar UI itself\n // (including month/year navigation). The full-screen transparent\n // `.dp-popup` backdrop is intentionally treated as an outside click.\n const clickedInsideCalendar = !!targetElement.closest(\n 'dp-day-calendar, dp-month-calendar, dp-day-time-calendar, dp-time-select'\n );\n const clickedOnDateInput = !!targetElement.closest(\n '#from_date, #to_date'\n );\n\n if (clickedInsideCalendar || clickedOnDateInput) {\n return;\n }\n\n if (fromOpen || this.openedDatePicker === 'FROM_DATE') {\n this.closeFromDatePicker();\n }\n if (toOpen || this.openedDatePicker === 'TO_DATE') {\n this.closeToDatePicker();\n }\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n}\n","<app-snack-bar></app-snack-bar>\n@if (!openConfigureWidgets) {\n <div class=\"create-dashboard\">\n <div class=\"create-dashboard-container vx-d-flex vx-justify-end\" [class.animate-slideInRight]=\"animation\">\n @if (activeSelector && activeSelector !== 'name') {\n <div class=\"more-option\">\n @if (activeSelector === 'whoCanView') {\n <app-user-list\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\" (closeUserList)=\"activateSelector('', false)\"\n [totalPages]=\"totalPages\" [totalList]=\"totalList\" [listDetails]=\"listDetails\" [totalgroupscount]=\"totalgroups\"\n [feature]=\"feature\"></app-user-list>\n }\n @if (activeSelector === 'rcList') {\n <app-responsibility-center\n [responsibilityCentersList]=\"responsibilityCentersList\" [radioSelection]=\"false\"\n [selectedResponsibilityCenters]=\"\n dashboardForm.selectedResponsibilityCenters\n \" [rcIdKey]=\"'item_id'\" (saveSelectedList)=\"saveSelectedList('rc', $event)\"\n (closeRcList)=\"activateSelector('', false)\">\n </app-responsibility-center>\n }\n <!-- <app-categories *ngIf=\"activeSelector === 'responsibilityCategories'\"\n [categoryList]=\"responsibilityCategoriesTree\" [allCategories]=\"allComplianceCategories\"\n [categoryIdKey]=\"'category_id'\" [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\n (saveSelectedCategory)=\"\n saveSelectedList('responsibilityCategories', $event)\n \" (closeCategoriesList)=\"activateSelector('', false)\"></app-categories> -->\n @if (activeSelector === 'responsibilityCategories') {\n <app-list-container list\n (close)=\"activateSelector('', false)\">\n <app-program-list body (itemsSelectedChange)=\"onProgramSelectionChange($event)\"\n [selectedItems]=\"selectedPrograms\" [url]=\"programListUrl\"></app-program-list>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-w-100\" footer>\n <div class=\"left-side vx-fs-12 vx-d-flex\">\n @if (allProgamSelected?.length > 0) {\n <button\n class=\"selected-count-box vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\">\n {{ allProgamSelected.length }}\n </button>\n <span class=\"selected-text\">\n Program\n {{ allProgamSelected.length > 1 ? \"Categories\" : \"Category\" }}\n Selected</span>\n }\n </div>\n <div class=\"right-side vx-d-flex\">\n <button class=\"cancelBtn\" (click)=\"activateSelector('', false)\">Cancel</button>\n <button class=\"nextBtn\" (click)=\"activateSelector('', false);\">\n Next <i class=\"icons\">&#xe91e;</i>\n </button>\n </div>\n </div>\n </app-list-container>\n }\n </div>\n }\n <div class=\"vx-dialog-container side-dialog\" [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\">\n @if (vLoader) {\n <app-loader-inline></app-loader-inline>\n }\n <div class=\"form-group\" [class.disabled]=\"disabled\">\n <div class=\"vx-dialog-body-container\" (scroll)=\"animateImage()\"\n [class.hidden-scroll]=\"popoverService.stopScroll\">\n <!-- Dashboard Name -->\n <div class=\"form-group-row\" [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\n <div class=\"image\">\n @if (\n !dashboardForm.dashboardName || activeSelector === 'name'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (dashboardForm.dashboardName && activeSelector !== 'name') {\n <svg class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">Dashboard\n Name\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\">*</span></label>\n <div class=\"vx-input-group\">\n <input class=\"textField\" placeholder=\"Add dashboard name (Max limit: 30 characters).\"\n [(ngModel)]=\"dashboardForm.dashboardName\" (keydown)=\"activeSelector = 'name'\"\n (focusin)=\"activateSelector('name', true)\" (focusout)=\"activateSelector('name', false)\" />\n @if (dashboardForm?.dashboardName?.length > 0) {\n <span class=\"counter\">{{ 30 -\n dashboardForm.dashboardName.length }}</span>\n }\n </div>\n @if (\n submitted &&\n (dashboardForm?.dashboardName?.length > 30 ||\n !dashboardForm?.dashboardName)\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n {{\n dashboardForm.dashboardName.length > 30\n ? \"You have exceeded the maximum character limit of 30 characters.\"\n : \"Please enter a name for this Dashboard.\"\n }}\n </p>\n }\n <div class=\"vx-input-group vx-mt-2\">\n <vcomply-editor [editorConfig]=\"dashboardDescription\"\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"></vcomply-editor>\n @if (dashboardForm?.dashboardDescriptionText?.length > 0) {\n <span class=\"counter\">{{\n 250 -\n ($safeNavigationMigration(dashboardForm?.dashboardDescriptionText) | textCount)\n }}</span>\n }\n </div>\n @if (\n submitted &&\n ($safeNavigationMigration(dashboardForm?.dashboardDescriptionText) | textCount) > 250\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n You have exceeded the maximum character limit of 250\n characters.\n </p>\n }\n </div>\n </div>\n </div>\n <!-- Dashboard Display Criteria -->\n <span class=\"head-label vx-fs-10 vx-fw-500 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-lh-4\">\n Dashboard Display Criteria\n </span>\n <app-information-block></app-information-block>\n <!-- Who -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'whoCanView'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'whoCanView' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n dashboardForm?.selectedViewers?.length == 0 ||\n activeSelector === 'whoCanView'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardUsersIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedViewers?.length > 0 &&\n activeSelector !== 'whoCanView'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">Who\n can view this dashboard?<span class=\"require vx-txt-red vx-fs-16 vx-fw-400\">*</span></label>\n @if (dashboardForm?.selectedViewers?.length == 0) {\n <div\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('whoCanView', true)\">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Who can view this dashboard?\n </div>\n </div>\n }\n @if (dashboardForm?.selectedViewers?.length > 0) {\n <div\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @if (!groupsEnabled) {\n <ng-container id=\"onlyuserslist\">\n @for (\n user of dashboardForm?.selectedViewers?.slice(0, 1)\n ; track\n user) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n user.member_id\n )\n ) {\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"remove('whoCanView', user)\">&#xe9ae;</i>\n }\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"user.member_name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ user.member_name\n }}</span>\n @if (\n dashboardForm?.selectedViewers?.length > 1 &&\n !groupsEnabled\n ) {\n <button\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover (click)=\"userList.popover()\" placement=\"left\">\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\n </button>\n }\n </div>\n }\n <app-popover #userList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n user of $safeNavigationMigration(dashboardForm?.selectedViewers)\n | slice : 1; track\n user; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(user?.member_name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n user.member_id\n ) && !groupsEnabled\n ) {\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanView', user)\">&#xe90d;</i>\n }\n {{ user?.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </ng-container>\n }\n @if (groupsEnabled) {\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\">USER(S)</span>\n <button\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover (click)=\"userCount.popover()\" placement=\"left\">\n {{ dashboardForm?.selectedViewers?.length }}\n </button>\n </div>\n @if (\n dashboardForm?.selectedGroup?.length &&\n dashboardForm?.selectedViewers?.length\n ) {\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n }\n @if (dashboardForm?.selectedGroup?.length) {\n <div id=\"usersandgroups\"\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\">USER GROUP(S)</span>\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 (click)=\"groupCount.popover()\" placement=\"right\">\n {{ dashboardForm?.selectedGroup?.length }}\n </button>\n </div>\n }\n <app-popover #userCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (data of dashboardForm?.selectedViewers; track data) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"data.member_name\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n data.member_id\n )\n ) {\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanView', data)\">&#xe90d;</i>\n }\n {{ data.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n <app-popover #groupCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (data of dashboardForm?.selectedGroup; track data) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"data.group_name\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanViewGroup', data)\">&#xe90d;</i>\n {{ data.group_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'whoCanView') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('whoCanView', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Responsibility Center -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'rcList'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'rcList' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\n activeSelector === 'rcList'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardRcIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\n activeSelector !== 'rcList'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">RESPONSIBILITY\n CENTER(S)</label>\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length == 0\n ) {\n <div class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('rcList', true)\" [class.error]=\"\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\n allProgamSelected?.length ==\n 0 &&\n dashboardForm?.selectedRiskCategories?.length == 0\n \">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Select the Responsibility Center(s) that you would like<br />displayed\n in the Dashboard, if any.\n </div>\n </div>\n }\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 0\n ) {\n <div class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @for (\n rc of dashboardForm?.selectedResponsibilityCenters?.slice(\n 0,\n 1\n )\n ; track\n rc) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"remove('rc', rc)\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"rc.item_name\" placement=\"bottom-left\"\n delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ rc.item_name }}</span>\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 1\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 (click)=\"rcList.popover()\" placement=\"left\">\n +{{\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\n .length\n }}\n </button>\n }\n <app-popover #rcList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n rc of $safeNavigationMigration(dashboardForm?.selectedResponsibilityCenters)\n | slice : 1; track\n rc; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(rc?.item_name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"remove('rc', rc)\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'rcList') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('rcList', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Program -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'responsibilityCategories'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'responsibilityCategories' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n allProgamSelected?.length ==\n 0 || activeSelector === 'responsibilityCategories'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardProgramIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n allProgamSelected?.length > 0 &&\n activeSelector !== 'responsibilityCategories'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">PROGRAM</label>\n @if (\n allProgamSelected?.length == 0\n ) {\n <div class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('responsibilityCategories', true)\" [class.error]=\"\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\n allProgamSelected?.length ==\n 0 &&\n dashboardForm?.selectedRiskCategories?.length == 0\n \">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Select the Program(s) that you would like displayed in\n the<br />Dashboard, if any.\n </div>\n </div>\n }\n @if (\n allProgamSelected?.length > 0\n ) {\n <div class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @for (\n rCategory of allProgamSelected?.slice(\n 0,\n 1\n )\n ; track\n rCategory) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove('responsibilityCategories', rCategory)\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"rCategory.item_name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ rCategory.name\n }}</span>\n @if (\n allProgamSelected\n ?.length > 1\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 (click)=\"rCategoryList.popover()\" placement=\"left\">\n +{{\n allProgamSelected?.slice(\n 1\n ).length\n }}\n </button>\n }\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n rCategory of allProgamSelected\n | slice : 1; track\n rCategory; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(rCategory?.name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"\n remove(\n 'responsibilityCategories',\n rCategory\n )\n \">&#xe90d;</i>\n {{ rCategory?.name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'responsibilityCategories') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('responsibilityCategories', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Timeframe -->\n <div class=\"form-group-row\" [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\n <div class=\"image\">\n @if (\n !dashboardForm?.selectedFromDate ||\n !dashboardForm?.selectedToDate\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardTimeFrameIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedFromDate &&\n dashboardForm?.selectedToDate\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">TIMEFRAME</label>\n <label class=\"vx-control-panel-sub-label\">Select how long the selected information should be displayed.\n Once the selected timeframe expires, the dashboard will automatically be deactivated and no longer\n displayed to users. If no timeframe is selected, the information\n will be displayed permanently.</label>\n <div class=\"input-group vx-d-flex vx-justify-between\">\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input type=\"text\" id=\"from_date\" [value]=\"\n $safeNavigationMigration(dashboardForm?.selectedFromDate) | date : 'dd MMM yyyy'\n \" [placeholder]=\"'From'\" (click)=\"openFromDatePicker($event)\" readonly />\n <dp-date-picker #fromDatePicker [(ngModel)]=\"dashboardForm.selectedFromDate\"\n placeholder=\"Select Date\" (onSelect)=\"\n closeFromDatePicker(); datePickerOverlay = false\n \" [config]=\"fromDatePickerConfig\"></dp-date-picker>\n @if (datePickerOverlay) {\n <div class=\"overlay\" (click)=\"closeFromDatePicker()\"></div>\n }\n </div>\n @if (!hideToDate) {\n <div class=\"date-select\" [class.disabled]=\"!dashboardForm?.selectedFromDate\">\n <i class=\"icons\">&#xe92d;</i>\n <input type=\"text\" id=\"to_date\" [value]=\"\n $safeNavigationMigration(dashboardForm?.selectedToDate) | date : 'dd MMM yyyy'\n \" [placeholder]=\"'To'\" (click)=\"openToDatePicker($event)\" readonly />\n <dp-date-picker #toDatePicker [(ngModel)]=\"dashboardForm.selectedToDate\" placeholder=\"Select Date\"\n (onSelect)=\"\n closeToDatePicker(); datePickerOverlay = false\n \" [config]=\"toDatePickerConfig\"></dp-date-picker>\n @if (datePickerOverlay) {\n <div class=\"overlay\" (click)=\"closeToDatePicker()\"></div>\n }\n </div>\n }\n </div>\n @if (\n submitted &&\n dashboardForm.selectedFromDate &&\n !dashboardForm.selectedToDate\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n Select a time-frame.\n </p>\n }\n </div>\n </div>\n </div>\n <!-- Email Summary -->\n <!-- <div\n class=\"form-group-row\"\n [class.active]=\"activeSelector === 'frequency'\"\n [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'frequency' &&\n activeSelector !== 'name'\n \"\n >\n <div class=\"image\">\n <img\n *ngIf=\"!dashboardForm.frequencyMessage\"\n [ngSrc]=\"ASSETS.dashBoardEmailSummariesIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n <svg\n *ngIf=\"dashboardForm.frequencyMessage\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\n >Email Summaries</label\n >\n <label class=\"vx-control-panel-sub-label\"\n >If you would like to send a summary of this Dashboard, please\n select a frequency(By default VComply sends a weekly\n Summary).</label\n >\n <div\n *ngIf=\"!dashboardForm.frequencyMessage\"\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('frequency', true)\"\n >\n <div\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\n >\n Email Summaries\n </div>\n </div>\n <div\n *ngIf=\"dashboardForm.frequencyMessage\"\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\n [arTooltip]=\"dashboardForm.frequencyMessage\"\n placement=\"bottom-left\"\n type=\"black\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n [innerHTML]=\"dashboardForm.frequencyMessage\"\n ></div>\n <button\n *ngIf=\"\n dashboardForm.frequencyMessage &&\n activeSelector !== 'frequency'\n \"\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('frequency', true)\"\n >\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n </div>\n </div>\n </div>\n </div> -->\n </div>\n <div class=\"button-block\">\n <button class=\"vx-btn block primary\" [disabled]=\"activeSelector && activeSelector !== 'name'\"\n (click)=\"configureDashboard()\">\n Next: Configure Widgets\n </button>\n </div>\n </div>\n <button class=\"close-dialog\" type=\"button\" [disabled]=\"activeSelector && activeSelector !== 'name'\"\n (click)=\"close.emit({ mode: 'discard' })\" [arTooltip]=\"'[Esc] to close'\" placement=\"left\" type=\"black\" delay=\"0\"\n [tooltipMandatory]=\"true\" [class.hide]=\"activeSelector && activeSelector !== 'name'\">\n <i class=\"icons\">&#xe93f;</i>\n </button>\n @if (\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0\n ) {\n <div class=\"global-confirmation-alert\">\n <div class=\"global-confirmation-alert-top\">\n <span class=\"icon-block\">\n <i class=\"icons\">&#xe930;</i>\n </span>\n @if (showRiskCategory) {\n <p class=\"text\">\n Select a Responsibility Center or Risk Category.\n </p>\n }\n @if (!showRiskCategory) {\n <p class=\"text\">\n Select a Responsibility Center.\n </p>\n }\n </div>\n <div class=\"global-confirmation-alert-bottom\">\n <p class=\"message\"></p>\n <div class=\"button-group\">\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\n OKAY\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n\n @if (isSmiley) {\n <app-smiley-dialog [message]=\"smileyMessage\"></app-smiley-dialog>\n }\n\n @if (openConfigureWidgets) {\n <app-configure-widgets [mode]=\"mode\" [displayedWidgets]=\"displayedWidgets\"\n [showRisk]=\"showRiskWidgets\" [showCompliance]=\"!showComplianceWidgets\" [selectedWidgetsData]=\"selectedWidgets\"\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"></app-configure-widgets>\n }","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer:DomSanitizer){}\n transform(html: any) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n}\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, QueryList, ContentChildren, ChangeDetectionStrategy } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { nanoid } from 'nanoid';\n// import { CsOptionComponent } from '../cs-option/cs-option.component';\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'cs-select',\n templateUrl: './cs-select.component.html',\n styleUrls: ['./cs-select.component.less'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CsSelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsSelectComponent implements OnInit {\n @Input() dropdownLabel!: string;\n @Input() dropdownSubLabel!: string;\n @Input() isRequired!: string;\n @Input() placeholder!: string;\n\n // @ContentChildren(CsOptionComponent) op !: QueryList<CsOptionComponent>;\n\n dropdownToggle!: boolean;\n positionReset!: boolean;\n getLeft!: number;\n getTop!: number;\n getWidth!: number;\n maxWidth!: number;\n\n valuePlaceholder!: string;\n private optionList!: ElementRef;\n\n @ViewChild('optionList') set content(content: ElementRef) {\n if (content) {\n // initially setter gets called with undefined\n this.optionList = content;\n }\n }\n name!: string;\n val!: string;\n showOptions!: boolean;\n constructor() {\n this.name = nanoid();\n this.valuePlaceholder = '';\n }\n\n ngOnInit(): void {}\n\n onChange: any = () => {};\n onTouch: any = () => {};\n\n set RadioVal(val: any) {\n if (val !== undefined && val !== null && this.val !== val) {\n this.val = val;\n console.log('VALUE', this.val);\n this.onChange(val);\n this.onTouch(val);\n }\n }\n\n writeValue(value: any): void {\n if(value) {\n this.RadioVal = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n openDropdown(event: any): void {\n this.dropdownToggle = true;\n setTimeout(() => {\n const dropdown = event.target.getBoundingClientRect();\n const selectOption = this.optionList.nativeElement.offsetHeight;\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\n this.getTop = dropdown.top - selectOption;\n } else {\n this.getTop = dropdown.top + dropdown.height;\n }\n this.getLeft = dropdown.left;\n this.getWidth = dropdown.width;\n this.maxWidth = dropdown.width * 1.25;\n this.showOptions = true;\n }, 10);\n }\n closeDropdown(): void {\n this.dropdownToggle = false;\n }\n}\n","<div class=\"selection-wrap\">\n @if (dropdownLabel != undefined) {\n <label class=\"label\">\n {{ dropdownLabel }}\n <span class=\"sub-label\">{{ dropdownSubLabel }}</span>\n @if (isRequired) {\n <span class=\"required\">*</span>\n }\n </label>\n }\n <div class=\"input-group\">\n <span class=\"value\" (click)=\"openDropdown($event)\" (keyup.enter)=\"openDropdown($event)\" tabindex=\"0\" [attr.aria-placeholder]=\"placeholder\" [innerHTML]=\"valuePlaceholder | safeHtml\"></span>\n </div>\n @if (dropdownToggle === true) {\n <div class=\"overlay\" (click)=\"closeDropdown()\"></div>\n }\n @if (dropdownToggle === true) {\n <div class=\"select-options\" #optionList (keyup.Escape)=\"closeDropdown()\"\n (keyup.enter)=\"closeDropdown()\" (click)=\"closeDropdown()\" [style.top.px]=\"getTop\" [style.left.px]=\"getLeft\"\n [style.width.px]=\"getWidth\" [class.active]=\"showOptions\">\n <ng-content select=\"cs-option\"></ng-content>\n </div>\n }\n</div>","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CsSelectService {\n color: any;\n constructor() {\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CsSelectService } from '../../services/cs-select.service';\nimport { CsSelectComponent } from '../cs-select/cs-select.component';\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'cs-option',\n templateUrl: './cs-option.component.html',\n styleUrls: ['./cs-option.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsOptionComponent implements OnInit {\n @Input() value!: string;\n @ViewChild('options') option!: ElementRef;\n @Input() color!: any;\n constructor(public csSelect: CsSelectComponent, public colorSelector: CsSelectService) {\n this.value = '';\n }\n\n ngOnInit(): void { }\n\n change(event: any): void {\n if (this.option) {\n setTimeout(() => {\n this.csSelect.valuePlaceholder = this.option.nativeElement.innerHTML;\n this.colorSelector.color = this.color;\n console.log(this.color);\n }, 1);\n }\n this.csSelect.writeValue(this.value);\n }\n}\n","<div class=\"list\">\n <label>\n <input type=\"radio\" tabindex=\"0\" [value]=\"value\" [name]=\"csSelect.name\" (click)=\"change($event)\" [checked]=\"csSelect.val === this.value\" />\n <span class=\"value\" #options>\n <ng-content></ng-content>\n </span>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CsSelectComponent } from './cs-select/cs-select.component';\nimport { CsOptionComponent } from './cs-option/cs-option.component';\nimport { FormsModule } from '@angular/forms';\nimport { SafeHtmlPipe } from './safe-html.pipe';\n\n@NgModule({\n declarations: [CsSelectComponent, CsOptionComponent, SafeHtmlPipe],\n imports: [FormsModule, CommonModule],\n exports: [CsSelectComponent, CsOptionComponent],\n})\nexport class SelectModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { CategoriesConfig } from './categories-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-categories',\n templateUrl: './categories.component.html',\n styleUrls: ['./categories.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CategoriesComponent implements OnInit {\n ASSETS = ASSETS;\n\n @Input() categoryList: CategoriesConfig = {\n regulations: {\n list: [],\n selectedList: [],\n },\n standards: {\n list: [],\n selectedList: [],\n },\n internalControls: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n @Input() allCategories: any[] = [];\n\n @Input() categoryIdKey: any;\n @Input() selectedCategories: any[] = [];\n\n search = '';\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others' =\n 'regulations';\n selectedIds: any[] = [];\n animation = false;\n blockWidth: any;\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'item_name',\n elementId: 'item_id',\n singularText: 'Program selected',\n pluralText: 'Programs selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n\n @Output() saveSelectedCategory = new EventEmitter();\n @Output() closeList = new EventEmitter();\n @Output() closeCategoriesList = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n this.selectedIds = [];\n if (this.selectedCategories) {\n this.selectedCategories.forEach((element) => {\n this.selectedIds.push(element[this.categoryIdKey]);\n });\n }\n this.setList();\n }\n\n selectCategory(mode: any, activeTab: any, category: any) {\n if (mode) {\n this.selectedIds.push(category[this.categoryIdKey]);\n const rcElement = this.allCategories.findIndex(\n (ele: any) => ele.category_id == category[this.categoryIdKey]\n );\n if (rcElement !== -1) {\n const parentRc: any = this.allCategories[rcElement];\n if (parentRc?.child_cat_ids?.length > 0) {\n parentRc.child_cat_ids.forEach((childElement: any) => {\n if (!this.selectedIds.includes(childElement)) {\n this.selectedIds.push(childElement);\n }\n });\n }\n }\n } else {\n const index = this.selectedIds.findIndex(\n (element: any) => element == category[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n const rcElement = this.allCategories.findIndex(\n (ele: any) => ele.category_id == category[this.categoryIdKey]\n );\n if (rcElement !== -1) {\n const parentRc: any = this.allCategories[rcElement];\n if (parentRc?.child_cat_ids?.length > 0) {\n parentRc.child_cat_ids.forEach((childElement: any) => {\n const removeIndex = this.selectedIds.findIndex(\n (removeElement: any) => removeElement == childElement\n );\n this.selectedIds.splice(removeIndex, 1);\n });\n }\n }\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n const index = this.selectedIds.findIndex(\n (element: any) => element == event[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n this.setList();\n }\n\n selectAll(\n mode: any,\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others'\n ) {\n if (mode) {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\n this.selectedIds.push(element[this.categoryIdKey]);\n }\n });\n } else {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\n let idIndex = this.selectedIds.findIndex(\n (id: any) => id == element[this.categoryIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n this.setList();\n }\n\n setList() {\n const data: any = [];\n const categoryList = [...new Set(this.allCategories)];\n // cloneDeep(this.allCategories)\n const selectedIds = [...new Set(this.selectedIds)];\n // cloneDeep(this.selectedIds);\n this.categoryList.regulations.selectedList = [];\n this.categoryList.standards.selectedList = [];\n this.categoryList.internalControls.selectedList = [];\n this.categoryList.others.selectedList = [];\n\n categoryList.forEach((element: any) => {\n if (selectedIds.includes(element[this.categoryIdKey])) {\n data.push(element);\n }\n });\n this.selectedCategories = data;\n this.footerDetails.selectedData = data;\n\n this.categoryList.regulations.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.regulations.selectedList.push(category);\n }\n });\n this.categoryList.standards.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.standards.selectedList.push(category);\n }\n });\n this.categoryList.internalControls.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.internalControls.selectedList.push(category);\n }\n });\n this.categoryList.others.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.others.selectedList.push(category);\n }\n });\n if (!this.activeTab) {\n this.setActiveTab();\n }\n }\n setActiveTab() {\n if (this.categoryList.regulations.selectedList.length > 0) {\n this.activeTab = 'regulations';\n } else if (this.categoryList.standards.selectedList.length > 0) {\n this.activeTab = 'standards';\n } else if (this.categoryList.internalControls.selectedList.length > 0) {\n this.activeTab = 'internalControls';\n } else if (this.categoryList.others.selectedList.length > 0) {\n this.activeTab = 'others';\n } else {\n this.activeTab = 'regulations';\n }\n }\n\n checkSelectAll(\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others'\n ) {\n const data = this.categoryList[activeTab].list.every((user: any) =>\n this.selectedIds.includes(user[this.categoryIdKey])\n );\n return data;\n }\n\n save() {\n this.saveSelectedCategory.emit(this.selectedCategories);\n }\n\n close() {\n this.closeCategoriesList.emit();\n }\n}\n","<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <span class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Program(s)</span>\n </div>\n <div class=\"category-list-mid\">\n <div class=\"vx-d-flex vx-mb-2\">\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'regulations'\"\n (click)=\"activeTab = 'regulations'\"\n >\n <div class=\"left\">\n <label>REGULATIONS</label>\n @if (categoryList?.regulations?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.regulations?.selectedList?.length }}\n {{\n categoryList?.regulations?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.regulations?.list?.length\n }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'standards'\"\n (click)=\"activeTab = 'standards'\"\n >\n <div class=\"left\">\n <label>STANDARDS</label>\n @if (categoryList?.standards?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.standards?.selectedList?.length }}\n {{\n categoryList?.standards?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.standards?.list?.length }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'internalControls'\"\n (click)=\"activeTab = 'internalControls'\"\n >\n <div class=\"left\">\n <label>INTERNAL CONTROLS</label>\n @if (categoryList?.internalControls?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.internalControls?.selectedList?.length }}\n {{\n categoryList?.internalControls?.selectedList?.length == 1\n ? \"Program\"\n : \"programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.internalControls?.list?.length\n }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'others'\"\n (click)=\"activeTab = 'others'\"\n >\n <div class=\"left\">\n <label>OTHERS</label>\n @if (categoryList?.others?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.others?.selectedList?.length }}\n {{\n categoryList?.others?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.others?.list?.length }}</span>\n </div>\n </div>\n\n <div class=\"category-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\n </div>\n\n @if (categoryList[activeTab].list | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll(activeTab)\"\n (ngValueChange)=\"selectAll($event, activeTab)\"\n >\n <strong>{{\n checkSelectAll(activeTab) ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <div\n class=\"category-list-item vx-mb-4\"\n [class.with-selectAll]=\"searchList.length > 1\"\n >\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\n @for (category of searchList; track category) {\n <li class=\"vx-mb-4\">\n <app-cs-checkbox\n [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\n (ngValueChange)=\"selectCategory($event, activeTab, category)\"\n >\n <ul class=\"categories\">\n @for (entity of category.category_name; track entity; let j = $index) {\n <li\n [arTooltip]=\"entity\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n {{ entity }}\n </li>\n }\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"close()\"\n (deleteEvent)=\"deleteEvent($event)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-radio',\n templateUrl: './cs-radio.component.html',\n styleUrls: ['./cs-radio.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsRadioComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() readonly!: boolean;\n @Input() name!: string;\n @Input() checked!: boolean;\n @Input() value: any;\n @Output() checkedEvent = new EventEmitter();\n constructor() {}\n\n ngOnInit(): void {}\n changeState(evt: any) {\n this.checkedEvent.emit(evt);\n }\n}\n","<label class=\"radio-item\" [class.readonly]=\"readonly\">\n <input type=\"radio\" [disabled]=\"disabled\" [name]=\"name\" [value]=\"value\" [checked]=\"checked\" (change)=\"changeState($event)\" />\n <span class=\"radio\">\n <span class=\"inner\"></span>\n </span>\n <svg class=\"radiomark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"radiomark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <circle class=\"radiomark__check\" cx=\"26\" cy=\"26\" r=\"5\" fill=\"none\" />\n </svg>\n <span class=\"value\"><ng-content></ng-content></span>\n</label>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\n\n\n@Component({\n selector: 'app-frequency',\n templateUrl: './frequency.component.html',\n styleUrls: ['./frequency.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FrequencyComponent implements OnInit,OnChanges {\n animation = true;\n @Input() savedFrequencyTab: string | undefined;\n monthlyDate = 1;\n quarterlyDate = 1;\n @Input() savedFrequencies: any;\n @Input() selectedDate: any;\n frequencyTab = 'weekly';\n showFrequency = true;\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\n selectedDays: any[] = [0];\n selectedMonths: any[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n selectedQuarter = 0;\n @Output() closeFrequencyPopup = new EventEmitter<string>();\n @Output() saveFrequency = new EventEmitter<any>();\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList:[],\n displayElementKey: '',\n elementId: '',\n singularText: '',\n pluralText: '',\n showFrequency: true,\n frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',\n isDisabled: false\n\n };\n showRadio = true;\n constructor(private snackBar:SnackBarService) { }\n ngOnChanges(){\n this.savedFrequencies = [...new Set(this.savedFrequencies)]\n }\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n if (this.savedFrequencyTab) {\n this.changeTab(this.savedFrequencyTab);\n }\n if (this.selectedDate) {\n switch (this.savedFrequencyTab) {\n case 'weekly':\n this.selectedDays = [...new Set(this.savedFrequencies)]\n break;\n case 'monthly':\n this.monthlyDate = this.selectedDate;\n this.selectedMonths = [...new Set(this.savedFrequencies)]\n\n break;\n case 'quarterly':\n this.showRadio = false;\n setTimeout(() => {\n this.showRadio = true\n }, 100);\n this.quarterlyDate = this.selectedDate\n this.selectedQuarter = this.savedFrequencies;\n\n break;\n\n }\n }\n\n }\n closeFrequency() {\n this.closeFrequencyPopup.emit();\n }\n daySelectionChange(event: any, index: any) {\n if (event) { //checkbox was selected\n this.selectedDays.push(index);\n } else {\n let unselectedElementIndex = this.selectedDays.indexOf(index);\n this.selectedDays.splice(unselectedElementIndex, 1);\n }\n this.checkFrequencyValidity();\n }\n monthSelectionChange(event: any, index: any) {\n if (event) {\n this.selectedMonths.push(index);\n } else {\n let unselectedElementIndex = this.selectedMonths.indexOf(index);\n this.selectedMonths.splice(unselectedElementIndex, 1);\n }\n this.checkDateValidity(this.monthlyDate,'monthly')\n this.checkFrequencyValidity();\n }\n\n quarterSelectionChange(event: any, index: any) {\n this.selectedQuarter = index;\n this.checkDateValidity(this.quarterlyDate,'quarterly');\n this.checkFrequencyValidity();\n }\n\n changeTab(tabValue: string) {\n this.frequencyTab = tabValue;\n this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';\n this.footerDetails.isDisabled = false;\n this.setToDefaultValues()\n if (this.frequencyTab === this.savedFrequencyTab) {\n switch (this.frequencyTab) {\n case 'weekly': {\n this.selectedDays = [...this.savedFrequencies];\n this.monthlyDate = 1;\n this.quarterlyDate = 1;\n break;\n }\n case 'monthly': {\n this.selectedMonths = [...this.savedFrequencies];\n this.monthlyDate = this.selectedDate;\n this.quarterlyDate = 1;\n this.checkDateValidity(this.monthlyDate,'monthly')\n break;\n }\n case 'quarterly': {\n this.selectedQuarter = this.savedFrequencies;\n this.quarterlyDate = this.selectedDate;\n this.monthlyDate = 1;\n this.checkDateValidity(this.quarterlyDate,'quarterly')\n break;\n }\n }\n }\n }\n\n setToDefaultValues() {\n this.selectedDays = [0];\n this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n this.selectedQuarter = 0;\n }\n\n submitFrequency() {\n let stringVal = \"Every \";\n let frequencies;\n let selectedDate = 1;\n switch (this.frequencyTab) {\n case 'weekly': {\n if (this.selectedDays.length > 0) {\n this.selectedDays.sort();\n frequencies = this.selectedDays;\n this.selectedDays.forEach((dayIndex, index) => {\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\n })\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n case 'monthly': {\n stringVal = \" of every \";\n if (this.selectedMonths.length > 0) {\n frequencies = this.selectedMonths;\n this.monthNames.forEach((monthNames: string, monthIndex: number) => {\n if (this.selectedMonths.includes(monthIndex)) {\n stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;\n\n }\n })\n let monthDateName;\n if (this.monthlyDate == 1) {\n monthDateName = '1st'\n }\n else if (this.monthlyDate == 2) {\n monthDateName = '2nd'\n }\n else if (this.monthlyDate == 3) {\n monthDateName = '3rd'\n }\n else {\n monthDateName = this.monthlyDate + 'th'\n }\n stringVal = monthDateName + stringVal;\n selectedDate = this.monthlyDate;\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n case 'quarterly': {\n stringVal = \" of every \";\n\n if (this.selectedQuarter >= 0) {\n frequencies = this.selectedQuarter;\n stringVal += this.quarters[this.selectedQuarter];\n selectedDate = this.quarterlyDate;\n let monthDateName;\n if (this.quarterlyDate == 1) {\n monthDateName = '1st'\n }\n else if (this.quarterlyDate == 2) {\n monthDateName = '2nd'\n }\n else if (this.quarterlyDate == 3) {\n monthDateName = '3rd'\n }\n else {\n monthDateName = this.quarterlyDate + 'th'\n }\n stringVal = monthDateName + stringVal;\n selectedDate = this.quarterlyDate;\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n }\n this.saveFrequency.emit({\n frequencyString: stringVal,\n frequencyType: this.frequencyTab,\n frequencies: frequencies,\n selectedDate\n })\n }\n \n checkDateValidity(date:number, type:string){\n if(date>31 || date<1){\n this.snackBar.show('Select valid date.','alert');\n this.footerDetails.isDisabled = true;\n return\n }else{\n this.footerDetails.isDisabled = false;\n }\n const monthList=[{name:'January',maxDays:31,value:0},{name:'February',maxDays:28,value:1},{name:'March',maxDays:31,value:2},\n {name:'April',maxDays:30,value:3},{name:'May',maxDays:31,value:4},{name:'June',maxDays:30,value:5},\n {name:'July',maxDays:31,value:6},{name:'August',maxDays:31,value:7},{name:'September',maxDays:30,value:8},\n {name:'October',maxDays:31,value:9},{name:'November',maxDays:30,value:10},{name:'December',maxDays:31,value:11}]\n switch (type) {\n case 'monthly':\n if(this.selectedMonths.length==1){\n const index = monthList.findIndex((ele:any)=>ele.value==this.selectedMonths[0]);\n if(date<=monthList[index].maxDays){\n this.footerDetails.isDisabled = false;\n \n }else{\n this.snackBar.show('Select valid date.','alert');\n this.footerDetails.isDisabled = true; \n }\n }else if(this.selectedMonths.length==0){\n this.footerDetails.isDisabled = true; \n }else{\n this.footerDetails.isDisabled = false;\n }\n\n break;\n default:\n this.footerDetails.isDisabled = false;\n return true;\n break;\n\n }\n\n}\n\ncheckFrequencyValidity(){\n switch (this.frequencyTab) {\n case 'weekly': {\n if (this.selectedDays.length > 0) {\n this.footerDetails.isDisabled = false;\n\n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n case 'monthly': {\n \n if (this.selectedMonths.length > 0) {\n this.footerDetails.isDisabled = false;\n \n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n case 'quarterly': {\n\n if (this.selectedQuarter >= 0){\n this.footerDetails.isDisabled = false;\n \n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n } \n}\n\n}\n","<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\n </div>\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\n <div class=\"create-frequency-body-inner\">\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\n <div class=\"create-frequency-tab-head\">\n <ul class=\"navigation\">\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\n </ul>\n </div>\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\n <ng-container *ngIf=\"showRadio\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\n </div>\n </div>\n </ng-container> \n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"create-frequency-footer\">\n <app-dashboard-footer \n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\n (submitEvent)=\"submitFrequency()\"\n ></app-dashboard-footer>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n declarations: [PaginationComponent],\n imports: [CommonModule],\n exports: [PaginationComponent],\n})\nexport class PaginationModule {}","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-switch',\n templateUrl: './cs-switch.component.html',\n styleUrls: ['./cs-switch.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsSwitchComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() ngValue: any;\n @Input() value: any;\n @Output() ngValueChange = new EventEmitter<any>();\n @Input() tooltipMessage: any;\n @Input() position: any;\n constructor() {}\n\n ngOnInit(): void {\n // console.log(this.value);\n }\n valueChanged() {\n this.ngValueChange.emit(this.ngValue);\n }\n}\n","<label class=\"cs-switch\" [class.top]=\"position == 'top'\">\n <!-- [class.large]=\"large\" -->\n <span class=\"value\">\n @if (value != undefined) {\n <span [innerHTML]=\"value\"></span>\n }\n <!-- <span class=\"notification\" *ngIf=\"!tooltipMessage\" [arTooltip]=\"tooltipMessage\" placement=\"bottom-right\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\n <i class=\"vc-icons\">&#xe9f3;</i>\n </span> -->\n</span>\n<!-- [class.last]=\"last\" -->\n@if (tooltipMessage === '' || tooltipMessage === undefined) {\n <span class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" [disabled]=\"disabled\" />\n <span class=\"switch-box\">\n <span class=\"switch-ball\"></span>\n </span>\n </span>\n}\n@if (tooltipMessage !== '' && tooltipMessage !== undefined) {\n <span\n class=\"switch\"\n [arTooltip]=\"tooltipMessage\"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" [disabled]=\"disabled\" />\n <span class=\"switch-box\">\n <span class=\"switch-ball\"></span>\n </span>\n </span>\n}\n</label>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-radio-group',\n templateUrl: './cs-radio-group.component.html',\n styleUrls: ['./cs-radio-group.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsRadioGroupComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]',\n standalone: false\n})\nexport class ClickOutsideDirective {\n constructor(private elementRef: ElementRef) {}\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\n\n @HostListener('document:click', ['$event.target']) onMouseEnter(targetElement: any) {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit(null);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pascal',\n standalone: false\n})\nexport class PascalPipe implements PipeTransform {\n transform(value: string, ...args: unknown[]): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\n\n@Component({\n selector: 'app-cs-select',\n templateUrl: './cs-select.component.html',\n styleUrls: ['./cs-select.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsFormSelectComponent implements OnChanges {\n @Input() dataList!: any[];\n @Input() dropdownLabel!: string;\n @Input() displayProperty!: string;\n @Input() selectedValue!: string;\n @Input() isRequired!: boolean;\n @Input() dropdownSubLabel!: string;\n @Input() disabled!: boolean;\n @ViewChild('option') option!: ElementRef;\n\n @Output() selectedData = new EventEmitter();\n @Output() selectedValueChange = new EventEmitter();\n @Input() placeholder: any;\n @Input() stylex: any;\n @Input() valueKey: any;\n @Input() multipleSelect: any;\n @Input() colorProperty!: string;\n\n @Input() colorSelected!: string;\n colorCode!: string;\n\n dropdownOption = false;\n positionReset!: boolean;\n getLeft!: number;\n getTop!: number;\n getWidth!: number;\n maxWidth!: number;\n activeDoropdown = false;\n\n private optionList!: ElementRef;\n\n @ViewChild('optionList') set content(content: ElementRef) {\n if (content) {\n // initially setter gets called with undefined\n this.optionList = content;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedValue) {\n this.selectedValue = this.selectedValue || '--';\n }\n }\n\n openDropdown(event: any): void {\n this.dropdownOption = true;\n setTimeout(() => {\n const dropdown = event.target.getBoundingClientRect();\n const selectOption = this.optionList.nativeElement.offsetHeight;\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\n this.getTop = dropdown.top - selectOption;\n } else {\n this.getTop = dropdown.top + dropdown.height;\n }\n this.getLeft = dropdown.left;\n this.getWidth = dropdown.width;\n this.maxWidth = dropdown.width * 1.25;\n }, 10);\n setTimeout(() => {\n this.activeDoropdown = true;\n }, 100);\n }\n selectOption(selectedData: any) {\n if (typeof selectedData === 'object') {\n this.selectedValue = selectedData[this.displayProperty];\n this.colorSelected = selectedData[this.colorProperty];\n } else {\n this.selectedValue = selectedData;\n }\n this.selectedData.emit(selectedData);\n this.dropdownOption = false;\n }\n closeDropdown() {\n this.dropdownOption = false;\n }\n}\n","<div class=\"input-group\" (clickOutside)=\"dropdownOption = false\">\n @if (dropdownLabel != undefined) {\n <label>\n {{ dropdownLabel }} <span class=\"sub-label\">{{ dropdownSubLabel }}</span> @if (isRequired) {\n <span class=\"required\">*</span>\n }</label\n >\n }\n <div class=\"custom-select-box\" [class.disabled]=\"disabled\">\n @if (!colorProperty) {\n <input\n type=\"text\"\n [class.line]=\"stylex\"\n [placeholder]=\"placeholder\"\n [value]=\"selectedValue | pascal\"\n readonly\n (click)=\"openDropdown($event)\"\n (keyup.enter)=\"openDropdown($event)\"\n (keyup.arrowup)=\"openDropdown($event)\"\n (keyup.arrowdown)=\"openDropdown($event)\"\n />\n }\n @if (colorProperty) {\n <span class=\"show-label\" (click)=\"openDropdown($event)\">\n <span class=\"label\" [innerHTML]=\"selectedValue\" [style.backgroundColor]=\"colorSelected + '1A'\" [style.color]=\"colorSelected\"></span>\n </span>\n }\n <span class=\"arrow\" [class.line]=\"stylex\">\n <i class=\"risk-icons\">&#xe919;</i>\n </span>\n @if (dropdownOption === true) {\n <div class=\"overlay active\" (click)=\"closeDropdown()\"></div>\n }\n @if (dropdownOption === true && !colorProperty) {\n <ul\n class=\"list-of-option\"\n #optionList\n (keyup.Escape)=\"closeDropdown()\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDoropdown\"\n >\n @for (data of dataList; track data) {\n <li>\n <label>\n <input type=\"radio\" [value]=\"data[valueKey]\" name=\"sliceLabel\" (change)=\"selectOption(data)\" #option (keyup.enter)=\"closeDropdown()\" class=\"pointer-none\" />\n @if (displayProperty && displayProperty !== '') {\n <span (click)=\"closeDropdown(); selectOption(data)\" class=\"value\">{{ data[displayProperty] }}</span>\n }\n @if (!displayProperty || displayProperty === '') {\n <span (click)=\"closeDropdown(); selectOption(data)\" class=\"value\">{{ data }}</span>\n }\n </label>\n </li>\n }\n </ul>\n }\n @if (dropdownOption === true && colorProperty) {\n <ul\n class=\"list-of-option\"\n #optionList\n (keyup.Escape)=\"closeDropdown()\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDoropdown\"\n >\n @for (data of dataList; track data) {\n <li>\n <label class=\"colors\">\n <input type=\"radio\" [value]=\"data[valueKey]\" name=\"sliceLabel\" (click)=\"selectOption(data)\" #option (keyup.enter)=\"closeDropdown()\" class=\"pointer-none\" />\n @if (displayProperty && displayProperty !== '') {\n <span\n (click)=\"selectOption(data)\"\n class=\"value\"\n [ngStyle]=\"{ color: data.segment_color }\"\n [style.backgroundColor]=\"data.segment_color + '1A'\"\n >{{ data[displayProperty] }}</span\n >\n }\n @if (!displayProperty || displayProperty === '') {\n <span\n (click)=\"selectOption(data)\"\n class=\"value\"\n [ngStyle]=\"{ color: data.segment_color }\"\n [style.backgroundColor]=\"data.segment_color + '1A'\"\n >{{ data }}</span\n >\n }\n </label>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolTipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [ToolTipDirective],\n imports: [CommonModule],\n exports: [ToolTipDirective],\n})\nexport class TooltipModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchMultiSelect',\n standalone: false\n})\nexport class SearchMultiSelectPipe implements PipeTransform {\n transform(value: any[], key: string, searchKey: string): any[] {\n if (searchKey && searchKey.length > 0) {\n searchKey = searchKey.toLowerCase();\n return value.filter((item) => {\n if (item[key].toLowerCase().includes(searchKey)) {\n return item;\n }\n });\n }\n return value;\n }\n}\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CsCheckboxComponent } from './cs-checkbox/cs-checkbox.component';\nimport { CsRadioComponent } from './cs-radio/cs-radio.component';\nimport { CsSwitchComponent } from './cs-switch/cs-switch.component';\nimport { CsRadioGroupComponent } from './cs-radio-group/cs-radio-group.component';\nimport { CsFormSelectComponent } from './cs-select/cs-select.component';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { PascalPipe } from './pipes/pascal.pipe';\nimport { SearchMultiSelectPipe } from './pipes/searchMultiSelect.pipe';\nimport { ClickOutsideDirective } from './click-outside.directive';\n\n@NgModule({\n declarations: [\n CsCheckboxComponent,\n CsRadioComponent,\n CsSwitchComponent,\n CsRadioGroupComponent,\n CsFormSelectComponent,\n PascalPipe,\n SearchMultiSelectPipe,\n ClickOutsideDirective,\n ],\n imports: [CommonModule, FormsModule, TooltipModule],\n exports: [\n CsCheckboxComponent,\n CsRadioComponent,\n CsSwitchComponent,\n CsRadioGroupComponent,\n CsFormSelectComponent,\n SearchMultiSelectPipe,\n ],\n})\nexport class FormgroupModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverComponent } from './popover.component';\nimport { PopoverDirective } from './popover.directive';\nimport { PopoverService } from './popover.service';\n\n@NgModule({\n declarations: [PopoverComponent, PopoverDirective],\n imports: [CommonModule],\n exports: [PopoverComponent, PopoverDirective],\n providers: [PopoverService],\n})\nexport class PopoverModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DashboardFooterComponent } from './dashboard-footer/dashboard-footer.component';\nimport { PopoverModule } from '../popover/popover.module';\nimport { TooltipModule } from '../tooltip/tooltip.module'\n\n\n\n@NgModule({\n declarations: [\n DashboardFooterComponent\n ],\n imports: [\n CommonModule,\n PopoverModule,\n TooltipModule\n ],\n exports:[\n DashboardFooterComponent\n ]\n})\nexport class DashboardFooterModule { }\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[appInsertion]',\n standalone: false\n})\nexport class InsertionDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","export class DialogConfig<D = any> {\n data?: D;\n position?: any;\n background?: any;\n pointer?: any;\n}\n","import {\n Component,\n Type,\n ViewChild,\n OnDestroy,\n ComponentRef,\n AfterViewInit,\n ChangeDetectorRef,\n OnInit,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { InsertionDirective } from './insertion.directive';\nimport { Subject } from 'rxjs';\nimport { DialogRef } from './dialog-ref';\nimport { DialogConfig } from './dialog-config';\nimport {\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Router,\n} from '@angular/router';\n\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\n componentRef!: ComponentRef<any>;\n position: any;\n background: any;\n pointer: any;\n @ViewChild(InsertionDirective, { static: true })\n insertionPoint!: InsertionDirective;\n animation = true;\n\n private readonly onDialogClose = new Subject<any>();\n public onClose = this.onDialogClose.asObservable();\n\n childComponentType!: Type<any>;\n\n constructor(\n private cd: ChangeDetectorRef,\n private dialogRef: DialogRef,\n public config: DialogConfig,\n private router: Router\n ) {\n // this.componentRef = this.componentRef;\n // this.animate = this.animate;\n // this.insertionPoint = this.insertionPoint;\n // this.childComponentType = this.childComponentType;\n }\n ngOnInit() {\n this.position = this.config.position;\n this.background = this.config.background;\n document.body.style.overflow = 'hidden';\n setTimeout(() => {\n this.animation = false;\n }, 200);\n this.routeAction();\n }\n\n routeAction() {\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationStart) {\n // Show loading indicator\n }\n if (event instanceof NavigationEnd) {\n // Hide loading indicator\n this.dialogRef.close();\n }\n if (event instanceof NavigationError) {\n // Hide loading indicator\n // Present error to user\n }\n });\n }\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n this.cd.detectChanges();\n }\n\n onOverlayClicked(evt: MouseEvent) {\n // this.dialogRef.close();\n }\n\n onDialogClicked(evt: MouseEvent) {\n evt.stopPropagation();\n }\n\n loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertionPoint.viewContainerRef;\n viewContainerRef.clear();\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n close(data?: any) {\n this.onDialogClose.next(data);\n document.body.style.overflow = 'auto';\n }\n}\n","<div\n class=\"overlay\"\n (click)=\"onOverlayClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER',\n black: background === 'black'\n }\" [class.pointer-none]=\"pointer === 'none'\"\n>\n <div\n class=\"dialog\"\n [class.animate]=\"animation\"\n (click)=\"onDialogClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER'\n }\"\n >\n <ng-template appInsertion></ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DialogComponent } from './dialog.component';\nimport { InsertionDirective } from './insertion.directive';\nimport { DialogRef } from './dialog-ref';\n@NgModule({\n imports: [CommonModule],\n declarations: [DialogComponent, InsertionDirective],\n providers: [DialogRef]\n})\nexport class DialogModule {}\n","import { Injector, Type, InjectionToken } from '@angular/core';\n\nexport class DialogInjector implements Injector {\n constructor(\n private parentDialogInjector: Injector,\n private dialogAdditionalTokens: WeakMap<any, any>\n ) {}\n\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T;\n // get(token: any, notFoundValue?: any){return; }\n get(token: any, notFoundValue?: any) {\n const value = this.dialogAdditionalTokens.get(token);\n if (value) {\n return value;\n }\n return this.parentDialogInjector.get<any>(token, notFoundValue);\n }\n}\n","import { Injectable, ApplicationRef, Injector, EnvironmentInjector, Type, EmbeddedViewRef, ComponentRef, createComponent } from '@angular/core';\nimport { DialogModule } from './dialog.module';\nimport { DialogComponent } from './dialog.component';\nimport { DialogInjector } from './dialog-injector';\nimport { DialogConfig } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\n\n@Injectable({\n providedIn: DialogModule,\n})\nexport class DialogService {\n dialogComponentRef!: ComponentRef<DialogComponent>;\n\n constructor(private appRef: ApplicationRef, private injector: Injector, private environmentInjector: EnvironmentInjector) {}\n\n public open(componentType: Type<any>, config: DialogConfig) {\n const dialogRef = this.appendDialogComponentToBody(config);\n\n this.dialogComponentRef.instance.childComponentType = componentType;\n\n return dialogRef;\n }\n\n private appendDialogComponentToBody(config: DialogConfig) {\n const map = new WeakMap();\n map.set(DialogConfig, config);\n\n const dialogRef = new DialogRef();\n map.set(DialogRef, dialogRef);\n\n const sub = dialogRef.afterClosed.subscribe(() => {\n this.removeDialogComponentFromBody();\n sub.unsubscribe();\n });\n\n const componentRef = createComponent(DialogComponent, {\n environmentInjector: this.environmentInjector,\n elementInjector: new DialogInjector(this.injector, map),\n });\n\n this.appRef.attachView(componentRef.hostView);\n\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this.dialogComponentRef = componentRef;\n\n this.dialogComponentRef.instance.onClose.subscribe(() => {\n this.removeDialogComponentFromBody();\n });\n\n return dialogRef;\n }\n\n private removeDialogComponentFromBody() {\n this.appRef.detachView(this.dialogComponentRef.hostView);\n this.dialogComponentRef.destroy();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\nimport { DialogService } from '../../ui-kit/dialog/dialog.service';\nimport { EditorConfig } from '@vcomply/editor';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FormGroupComponent implements OnInit {\n @Output() openCategoryList = new EventEmitter<string>();\n @Output() openResponsibilityCenterList = new EventEmitter<string>();\n @Output() openWhoCanViewThis = new EventEmitter<string>();\n @Output() closeCreateDashboard = new EventEmitter<string>();\n @Output() openFrequency = new EventEmitter<string>();\n @Input() disabled!: boolean;\n\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\n datePickerOverlay = false;\n selectedFromDate!: any;\n selectedToDate!: any;\n dashboardName!: any;\n dashboardDescriptionText!: any;\n fieldEmptyErrorMessage: string = 'Enter a value for this input box.';\n fieldLimitExceededErrorMessage: string =\n 'You have exceeded the maximum character limit of XYZ characters.';\n dashboardNameNotUniqueErrorMessage: string =\n 'A dashboard with this name already exists. Specify a different name for the dashboard.';\n dashboardNameError!: string;\n dashboardDescriptionError!: string;\n displayCriteria!: string;\n ASSETS: any = ASSETS;\n\n constructor(private dialog: DialogService) {}\n\n dashboardDescription: EditorConfig = {\n placeholder: 'Description (Max limit: 250 characters)',\n mode: 'prime',\n id: 'description',\n };\n\n fromDatePickerConfig: IDatePickerConfig = {\n min: this.getCurrentDate(),\n };\n\n toDatePickerConfig: IDatePickerConfig = {};\n\n ngOnInit(): void {}\n\n openFromDatePicker() {\n this.fromDatePicker.api.open();\n this.datePickerOverlay = true;\n }\n\n openToDatePicker() {\n this.toDatePicker.api.open();\n this.datePickerOverlay = true;\n }\n\n closeFromDatePicker() {\n let minToDate = this.selectedFromDate?.clone()?.add(1, 'days');\n this.toDatePickerConfig = { min: minToDate, minTime: minToDate };\n\n if (this.selectedToDate && minToDate.diff(this.selectedToDate) > 0) {\n this.selectedToDate = undefined;\n }\n\n this.fromDatePicker.api.close();\n this.datePickerOverlay = false;\n }\n\n closeToDatePicker() {\n this.toDatePicker.api.close();\n this.datePickerOverlay = false;\n }\n\n animateImage() {\n const circleImage = document.getElementsByClassName('image');\n console.log(circleImage);\n }\n\n selectWhoCanViewThis() {\n this.openWhoCanViewThis.emit();\n }\n\n selectResponsibilityCenter() {\n this.openResponsibilityCenterList.emit();\n }\n\n selectCategories() {\n this.openCategoryList.emit();\n }\n\n selectFrequency() {\n this.openFrequency.emit();\n }\n\n configureDashboard() {\n let fieldsStatus = this.verifyFields();\n // if(fieldsStatus) {\n // this.closeCreateDashboard.emit();\n // const ref = this.dialog.open(ConfigureWidgetsComponent, {\n // data: {},\n // position: 'CENTER',\n // pointer: 'none'\n // });\n // }\n }\n\n verifyFields() {\n let allFieldsValid = true;\n this.dashboardNameError = '';\n this.dashboardDescriptionError = '';\n\n if (\n this.dashboardName === null ||\n this.dashboardName === undefined ||\n this.dashboardName === ''\n ) {\n this.dashboardNameError = this.fieldEmptyErrorMessage;\n allFieldsValid = false;\n } else if (this.dashboardName.length > 30) {\n this.dashboardNameError = this.fieldLimitExceededErrorMessage.replace(\n 'XYZ',\n '30'\n );\n allFieldsValid = false;\n } else if (\n this.dashboardDescriptionText === null ||\n this.dashboardDescriptionText === undefined ||\n this.dashboardDescriptionText === ''\n ) {\n this.dashboardDescriptionError = this.fieldEmptyErrorMessage;\n allFieldsValid = false;\n } else if (this.dashboardDescriptionText.length > 250) {\n this.dashboardDescriptionError =\n this.fieldLimitExceededErrorMessage.replace('XYZ', '250');\n allFieldsValid = false;\n }\n return allFieldsValid;\n }\n\n getCurrentDate() {\n let today = new Date();\n return (\n today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear()\n );\n }\n\n displayCriteriaSelected(event: boolean, selection: string) {\n this.displayCriteria = selection;\n }\n}\n","<!-- <p>form-group works!</p> -->\n<div class=\"form-group\" [class.disabled]=\"disabled\">\n <div class=\"vx-dialog-body-container\" (scroll)=\"animateImage()\">\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\"\n >Dashboard Name<span class=\"required\">*</span></label\n >\n <div class=\"vx-input-group\">\n <input\n type=\"text\"\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\n [(ngModel)]=\"dashboardName\"\n />\n @if (dashboardName?.length > 0) {\n <span class=\"counter\">{{\n 30 - dashboardName?.length\n }}</span>\n }\n </div>\n <p class=\"vx-txt-error\">{{ dashboardNameError }}</p>\n <div class=\"vx-input-group\">\n <vcomply-editor\n [editorConfig]=\"dashboardDescription\"\n [(ngModel)]=\"dashboardDescriptionText\"\n ></vcomply-editor>\n @if (dashboardDescriptionText?.length > 0) {\n <span\n class=\"counter\"\n >{{ 250 - dashboardDescriptionText?.length }}</span\n >\n }\n </div>\n <p class=\"vx-txt-error\">{{ dashboardDescriptionError }}</p>\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardUsersIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\"\n >Who can view this dashboard?<span class=\"required\">*</span></label\n >\n <div class=\"selectbox\">\n <input\n type=\"text\"\n placeholder=\"Who can view this dashboard?\"\n readonly\n (click)=\"selectWhoCanViewThis()\"\n />\n </div>\n <div class=\"selected\">\n <div class=\"left\">\n <div class=\"chip-container\">\n <span class=\"chip\">\n <span class=\"value\">Samantha Jones</span>\n </span>\n <span class=\"chip\">\n <i class=\"icons\">&#xe90d;</i>\n <span class=\"value\">Angel Kleven</span>\n </span>\n </div>\n <button class=\"count\">+10</button>\n </div>\n <button class=\"edit\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardRcIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER(S)</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Responsibility Center(s) that you would like displayed in the Dashboard, if any.\"\n (click)=\"selectResponsibilityCenter()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardProgramIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">PROGRAM</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Program that this responsibility relates to.\"\n (click)=\"selectCategories()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardRiskIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">RISK CATEGORIES</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Risk Categories that you would like displayed in the Dashboard, if any.\"\n (click)=\"selectCategories()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardUsersIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">DISPLAY CRITERIA</label>\n <div class=\"radio-group\">\n <app-cs-radio\n (checkedEvent)=\"\n displayCriteriaSelected($event, 'BOTH_RC_AND_CATEGORY')\n \"\n >Those responsibilities that have been assigned to both the\n selected Responsibility Center(s) and the selected\n Categories.</app-cs-radio\n >\n <app-cs-radio\n (checkedEvent)=\"displayCriteriaSelected($event, 'RC_OR_CATEGORY')\"\n >Those responsibilities that have been assigned to either the\n selected Responsibility Center(s) or the selected\n Categories.</app-cs-radio\n >\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardTimeFrameIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">TIMEFRAME</label>\n <label class=\"vx-control-panel-sub-label\"\n >Select how long you would like the information selected to be\n displayed for. If no timeframe is selected, the information will be\n displayed permanently.</label\n >\n <div class=\"input-group vx-d-flex vx-justify-between\">\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input\n type=\"text\"\n [value]=\"selectedFromDate | date : 'dd MMM yyyy'\"\n [placeholder]=\"'From'\"\n (click)=\"openFromDatePicker()\"\n readonly\n />\n <dp-date-picker\n #fromDatePicker\n [(ngModel)]=\"selectedFromDate\"\n placeholder=\"Select Date\"\n (onSelect)=\"closeFromDatePicker(); datePickerOverlay = false\"\n [config]=\"fromDatePickerConfig\"\n ></dp-date-picker>\n @if (datePickerOverlay) {\n <div\n class=\"overlay\"\n (click)=\"closeFromDatePicker()\"\n ></div>\n }\n </div>\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input\n type=\"text\"\n [value]=\"selectedToDate | date : 'dd MMM yyyy'\"\n [placeholder]=\"'To'\"\n (click)=\"openToDatePicker()\"\n readonly\n />\n <dp-date-picker\n #toDatePicker\n [(ngModel)]=\"selectedToDate\"\n placeholder=\"Select Date\"\n (onSelect)=\"closeToDatePicker(); datePickerOverlay = false\"\n [config]=\"toDatePickerConfig\"\n ></dp-date-picker>\n @if (datePickerOverlay) {\n <div\n class=\"overlay\"\n (click)=\"closeToDatePicker()\"\n ></div>\n }\n </div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <!--active class will appear on open list-->\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardEmailSummariesIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">\n Email Summaries\n <i\n class=\"icons\"\n [arTooltip]=\"'This is a test tooltip'\"\n placement=\"bottom-left\"\n type=\"white\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n ></label\n >\n <label class=\"vx-control-panel-sub-label\">\n If you would like to send a summary of this Dashboard, please select\n a frequency(By default VComply sends a weekly Summary).\n </label>\n <div class=\"selectbox\">\n <input\n type=\"text\"\n placeholder=\"Email Summaries\"\n readonly\n (click)=\"selectFrequency()\"\n />\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button\n class=\"vx-btn block primary\"\n [disabled]=\"disabled\"\n (click)=\"configureDashboard()\"\n >\n Next: Configure Widgets\n </button>\n </div>\n </div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FloatingBarComponent } from './floating-bar.component';\nimport { PopoverModule } from '../popover/popover.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [\n FloatingBarComponent\n ],\n imports: [\n CommonModule,\n PopoverModule,\n TooltipModule\n ],\n exports: [\n FloatingBarComponent\n ]\n})\nexport class FloatingBarModule { }\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { RiskCategoriesConfig } from './risk-categories-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-risk-categories',\n templateUrl: './risk-categories.component.html',\n styleUrls: ['./risk-categories.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class RiskCategoriesComponent implements OnInit {\n ASSETS = ASSETS;\n\n @Input() categoryList: RiskCategoriesConfig = {\n strategic: {\n list: [],\n selectedList: [],\n },\n operational: {\n list: [],\n selectedList: [],\n },\n compliance: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n @Input() allCategories: any[] = [];\n\n @Input() categoryIdKey: any;\n @Input() selectedCategories: any[] = [];\n\n search = '';\n activeTab: 'strategic' | 'operational' | 'compliance' | 'others' =\n 'strategic';\n selectedIds: any[] = [];\n animation = false;\n blockWidth: any;\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'category_name',\n elementId: 'category_id',\n singularText: 'Risk Category selected',\n pluralText: 'Risk Categories selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n\n @Output() saveSelectedCategory = new EventEmitter();\n @Output() closeList = new EventEmitter();\n @Output() closeCategoriesList = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n this.selectedIds = [];\n if (this.selectedCategories) {\n this.selectedCategories.forEach((element) => {\n this.selectedIds.push(element[this.categoryIdKey]);\n });\n }\n this.setList();\n }\n\n selectCategory(mode: any, activeTab: any, category: any) {\n if (mode) {\n this.selectedIds.push(category[this.categoryIdKey]);\n } else {\n const index = this.selectedIds.findIndex(\n (element: any) => element == category[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n const index = this.selectedIds.findIndex(\n (element: any) => element == event[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n this.setList();\n }\n\n selectAll(mode: any, activeTab: string) {\n if (mode) {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const list = this.categoryList[activeTab].list;\n list.forEach((element) => {\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\n this.selectedIds.push(element[this.categoryIdKey]);\n }\n });\n }\n } else {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\n let idIndex = this.selectedIds.findIndex(\n (id: any) => id == element[this.categoryIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n }\n this.setList();\n }\n\n setList() {\n const data: any = [];\n const categoryList = [...new Set(this.allCategories)];\n // cloneDeep(this.allCategories)\n const selectedIds = [...new Set(this.selectedIds)];\n // cloneDeep(this.selectedIds);\n this.categoryList.strategic.selectedList = [];\n this.categoryList.operational.selectedList = [];\n this.categoryList.compliance.selectedList = [];\n this.categoryList.others.selectedList = [];\n\n categoryList.forEach((element: any) => {\n if (selectedIds.includes(element[this.categoryIdKey])) {\n data.push(element);\n }\n });\n this.selectedCategories = data;\n this.footerDetails.selectedData = data;\n\n this.categoryList.strategic.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.strategic.selectedList.push(category);\n }\n });\n this.categoryList.operational.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.operational.selectedList.push(category);\n }\n });\n this.categoryList.compliance.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.compliance.selectedList.push(category);\n }\n });\n this.categoryList.others.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.others.selectedList.push(category);\n }\n });\n if (!this.activeTab) {\n this.setActiveTab();\n }\n }\n setActiveTab() {\n if (this.categoryList.strategic.selectedList.length > 0) {\n this.activeTab = 'strategic';\n } else if (this.categoryList.operational.selectedList.length > 0) {\n this.activeTab = 'operational';\n } else if (this.categoryList.compliance.selectedList.length > 0) {\n this.activeTab = 'compliance';\n } else if (this.categoryList.others.selectedList.length > 0) {\n this.activeTab = 'others';\n } else {\n this.activeTab = 'strategic';\n }\n }\n\n checkSelectAll(activeTab: string) {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const data = this.categoryList[activeTab].list.every((user: any) =>\n this.selectedIds.includes(user[this.categoryIdKey])\n );\n return data;\n }\n }\n\n save() {\n this.saveSelectedCategory.emit(this.selectedCategories);\n }\n\n close() {\n this.closeCategoriesList.emit();\n }\n}\n","<div class=\"risk-category-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"risk-category-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <span class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risk Category(s)</span>\n </div>\n <div class=\"risk-category-list-mid\">\n <div class=\"vx-d-flex vx-mb-2\">\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'strategic'\"\n (click)=\"activeTab = 'strategic'\"\n >\n <div class=\"left\">\n <label>strategic</label>\n @if (categoryList?.strategic?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.strategic?.selectedList?.length }}\n {{\n categoryList?.strategic?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.strategic?.list?.length }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'operational'\"\n (click)=\"activeTab = 'operational'\"\n >\n <div class=\"left\">\n <label>operational</label>\n @if (categoryList?.operational?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.operational?.selectedList?.length }}\n {{\n categoryList?.operational?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.operational?.list?.length\n }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'compliance'\"\n (click)=\"activeTab = 'compliance'\"\n >\n <div class=\"left\">\n <label>compliance</label>\n @if (categoryList?.compliance?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.compliance?.selectedList?.length }}\n {{\n categoryList?.compliance?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.compliance?.list?.length\n }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'others'\"\n (click)=\"activeTab = 'others'\"\n >\n <div class=\"left\">\n <label>OTHERS</label>\n @if (categoryList?.others?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.others?.selectedList?.length }}\n {{\n categoryList?.others?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.others?.list?.length }}</span>\n </div>\n </div>\n\n <div class=\"risk-category-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"search\"\n placeholder=\"Search Risk Category\"\n />\n </div>\n\n @if ($safeNavigationMigration(categoryList[activeTab]?.list) | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll(activeTab)\"\n (ngValueChange)=\"selectAll($event, activeTab)\"\n >\n <strong>{{\n checkSelectAll(activeTab) ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <div\n class=\"risk-category-list-item vx-mb-4\"\n [class.with-selectAll]=\"searchList.length > 1\"\n >\n <ul class=\"risk-category-list-item-ul vx-m-0 vx-p-0\">\n @for (category of searchList; track category) {\n <li class=\"vx-mb-4\">\n <app-cs-checkbox\n [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\n (ngValueChange)=\"selectCategory($event, activeTab, category)\"\n >\n <ul class=\"categories\">\n <li\n [arTooltip]=\"category.category_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n {{ category.category_name }}\n </li>\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"close()\"\n (deleteEvent)=\"deleteEvent($event)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollInViewDirective } from './scroll-in-view.directive';\n\n\n\n@NgModule({\n declarations: [\n ScrollInViewDirective\n ],\n imports: [\n CommonModule\n ],\n exports:[\n ScrollInViewDirective\n ]\n})\nexport class DirectivesModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoDataComponent } from './no-data.component';\n\n@NgModule({\n declarations: [NoDataComponent],\n imports: [CommonModule],\n exports: [NoDataComponent],\n})\nexport class NoDataModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { FloatingBarModule } from '../../ui-kit//floating-bar/floating-bar.module';\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\nimport { FormsModule } from '@angular/forms';\nimport { SearchPipe } from '../pipes/search.pipe';\nimport { ConfigureWidgetsComponent } from './configure-widgets/configure-widgets.component';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\n\n\n\n@NgModule({\n declarations: [\n ConfigureWidgetsComponent, SearchPipe\n ],\n imports: [\n CommonModule,\n FloatingBarModule,\n FormgroupModule,\n FormsModule,\n DirectivesModule,\n NoDataModule,\n NgOptimizedImage\n ],\n exports: [\n ConfigureWidgetsComponent\n ]\n})\nexport class ConfigureWidgetsModule { }\n","import { Component, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { Configurations } from '../../../configurations';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class LoaderComponent implements OnInit {\n vLoader: any;\n \n public env!: any;\n\n constructor(@Optional() config?: Configurations) {\n if (config) {\n this.env = config.envConfig;\n }\n this.vLoader = this.env.vLoader;\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"main-loader\">\n <img [ngSrc]=\"vLoader\" alt=\"\" width=\"45\" height=\"45\" />\n <div class=\"loader-index\">\n <div class=\"loader-index-circle\"></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { LoaderComponent } from './loader/loader.component';\nimport { LoaderInlineComponent } from './loader-inline/loader-inline.component';\n\n@NgModule({\n declarations: [LoaderComponent, LoaderInlineComponent],\n imports: [CommonModule,NgOptimizedImage],\n exports: [LoaderComponent, LoaderInlineComponent],\n})\nexport class VLoaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\n\n@NgModule({\n declarations: [SnackBarComponent],\n imports: [CommonModule],\n exports: [SnackBarComponent],\n})\nexport class SnackBarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SmileyDialogComponent } from './smiley-dialog.component';\n\n@NgModule({\n declarations: [SmileyDialogComponent],\n imports: [CommonModule],\n\n exports: [SmileyDialogComponent],\n})\nexport class SmileyDialogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableLoaderComponent } from './table-loader/table-loader.component';\n\n\n\n@NgModule({\n declarations: [\n TableLoaderComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n TableLoaderComponent\n ]\n})\nexport class LoadersModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ProgramListComponent } from './program-list/program-list.component';\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\nimport { PopoverModule } from '../../ui-kit/popover/popover.module';\nimport { CheckSelectedItemsPipe } from './pipes/check-selected-items.pipes';\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\nimport { LoadersModule } from '../../ui-kit/loaders/loaders.module';\nimport { ListContainerComponent } from './list-container/list-container.component';\nimport { SearchProgramPipe } from '../pipes/search-program.pipe';\nimport { InformationBlockComponent } from './information-block/information-block.component';\n@NgModule({\n declarations: [\n ProgramListComponent,\n CheckSelectedItemsPipe,\n ListContainerComponent,\n SearchProgramPipe,\n InformationBlockComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n FormgroupModule,\n NoDataModule,\n PopoverModule,\n LoadersModule,\n ],\n exports: [\n ProgramListComponent,\n ListContainerComponent,\n InformationBlockComponent\n ]\n})\nexport class ProgramListModule { }\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { VcomplyEditorModule } from '@vcomply/editor';\nimport { DpDatePickerModule } from 'ng2-date-picker';\nimport { FormsModule } from '@angular/forms';\nimport { CreateDashboardComponent } from './create-dashboard.component';\nimport { SelectModule } from '../ui-kit/select/select.module';\nimport { UserListComponent } from './user-list/user-list.component';\nimport { ResponsibilityCenterComponent } from './responsibility-center/responsibility-center.component';\nimport { CategoriesComponent } from './categories/categories.component';\nimport { FrequencyComponent } from './frequency/frequency.component';\nimport { PaginationModule } from '../ui-kit/pagination/pagination.module';\nimport { FormgroupModule } from '../ui-kit/formgroup/formgroup.module';\nimport { DashboardFooterModule } from '../ui-kit/dashboard-footer/dashboard-footer.module';\nimport { FormGroupComponent } from './form-group/form-group.component';\nimport { TooltipModule } from '../ui-kit/tooltip/tooltip.module';\nimport { FloatingBarModule } from '../ui-kit/floating-bar/floating-bar.module';\nimport { DialogModule } from '../ui-kit/dialog/dialog.module';\nimport { Configurations } from '../configurations';\nimport { FilterPipe } from './pipes/filter.pipe';\nimport { RiskCategoriesComponent } from './risk-categories/risk-categories.component';\nimport { ConfigureWidgetsModule } from './configure-widgets/configure-widgets.module';\nimport { PopoverModule } from '../ui-kit/popover/popover.module';\nimport { VLoaderModule } from '../ui-kit/v-loader/v-loader.module';\nimport { SnackBarModule } from '../ui-kit/snack-bar/snack-bar.module';\nimport { NoDataModule } from '../ui-kit/no-data/no-data.module';\nimport { DirectivesModule } from './directives/directives.module';\nimport { SmileyDialogModule } from '../ui-kit/smiley-dialog/smiley-dialog.module';\nimport { TextCountPipe } from './pipes/text-count.pipe';\nimport { ProgramListModule } from './program-list/program-list.module';\n@NgModule({\n declarations: [\n CreateDashboardComponent,\n UserListComponent,\n FormGroupComponent,\n ResponsibilityCenterComponent,\n CategoriesComponent,\n RiskCategoriesComponent,\n FrequencyComponent,\n FilterPipe,\n TextCountPipe,\n ],\n imports: [\n CommonModule,\n VcomplyEditorModule,\n FormgroupModule,\n FormsModule,\n TooltipModule,\n SelectModule,\n DashboardFooterModule,\n PaginationModule,\n FloatingBarModule,\n DialogModule,\n ConfigureWidgetsModule,\n PopoverModule,\n VLoaderModule,\n SnackBarModule,\n NoDataModule,\n DirectivesModule,\n SmileyDialogModule,\n DpDatePickerModule,\n NgOptimizedImage,\n ProgramListModule,\n ],\n exports: [CreateDashboardComponent],\n})\nexport class CreateDashboardModule {\n public static forRoot(\n environmentConfig: Configurations\n ): ModuleWithProviders<CreateDashboardModule> {\n return {\n ngModule: CreateDashboardModule,\n providers: [{ provide: Configurations, useValue: environmentConfig }],\n };\n }\n}\n","/*\n * Public API Surface of create-dashboard\n */\n\n// export * from './lib/create-dashboard.service';\n// export * from './lib/create-dashboard.component';\n// export * from './lib/create-dashboard.module';\n\nexport * from './lib/create-dashboard.service';\nexport * from './lib/create-dashboard-container/create-dashboard.component';\nexport * from './lib/create-dashboard-container/create-dashboard.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CreateDashboardService","i2.Configurations","i1.PopoverService","i1.SnackBarService","i2.PopoverComponent","i3.PopoverDirective","i4.ToolTipDirective","i5","i1","i1.DialogRef","i2.ConfigureWidgetsService","i3.SnackBarService","i4.FloatingBarComponent","i5.CsCheckboxComponent","i6","i7.NoDataComponent","i8","i9.SearchPipe","i1.Configurations","i1.ListUtilsService","i2.ProgramListApiService","i3","i4.CsCheckboxComponent","i5.NoDataComponent","i6.PopoverComponent","i7.PopoverDirective","i8.TableLoaderComponent","i9.CheckSelectedItemsPipe","i10.SearchProgramPipe","i1.PaginationService","i2.CreateDashboardService","i3.CsCheckboxComponent","i4","i5.ToolTipDirective","i6.DashboardFooterComponent","i7.PaginationComponent","i8.PopoverComponent","i9.PopoverDirective","i10.LoaderInlineComponent","i11.NoDataComponent","i1.CsCheckboxComponent","i2","i3.ToolTipDirective","i4.DashboardFooterComponent","i6.FilterPipe","i1.CreateDashboardService","i2.PaginationService","i4.PopoverService","i5.TextCountPipe","i7","i8.ToolTipDirective","i9.ConfigureWidgetsComponent","i10.PopoverComponent","i11.PopoverDirective","i12.LoaderInlineComponent","i13.SnackBarComponent","i14.ScrollInViewDirective","i15.SmileyDialogComponent","i17","i18.ProgramListComponent","i19.ListContainerComponent","i20.InformationBlockComponent","i21.UserListComponent","i22.ResponsibilityCenterComponent","i1.SafeHtmlPipe","i1.CsSelectComponent","i2.CsSelectService","i4.CsRadioComponent","i2.ToolTipDirective","i1.CsRadioComponent","i2.ClickOutsideDirective","i3.PascalPipe","i2.DialogConfig","i5.InsertionDirective","i1.DialogService","i3.CsRadioComponent"],"mappings":"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"}
1
+ {"version":3,"file":"vc-create-dashboard.mjs","names":[],"sources":["../../../projects/create-dashboard/src/lib/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/text-count.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/constants/assets.constant.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/constant.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/utils/dashboard-edit.utils.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/utils/user-timezone-date.util.ts","../../../projects/create-dashboard/src/lib/configurations.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/pagination.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/configure-widgets.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.html","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.html","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.html","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.html","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/scroll-in-view.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/services/list-utils.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/services/program-list-api.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/table-loader/table-loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/table-loader/table-loader.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search-program.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list/program-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list/program-list.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/list-container/list-container.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/information-block/information-block.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/information-block/information-block.component.html","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.html","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/filter.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.html","../../../projects/create-dashboard/src/lib/ui-kit/select/safe-html.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.html","../../../projects/create-dashboard/src/lib/ui-kit/services/cs-select.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.html","../../../projects/create-dashboard/src/lib/ui-kit/select/select.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.html","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.html","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/click-outside.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/pascal.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.html","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/formgroup.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.html","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.html","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/directives.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.html","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/v-loader.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/loaders/loaders.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/program-list/program-list.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreateDashboardService {\n constructor() {}\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'textCount',\n standalone: false\n})\nexport class TextCountPipe implements PipeTransform {\n\n transform(value: any, ...args: any[]): any {\n const span = document.createElement('span');\n span.innerHTML = value;\n return span.textContent?.length || span.innerText.length;\n }\n\n}\n","const BASE_URL = 'https://cdn.v-comply.com';\n\nexport const ASSETS = {\n dashBoardIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/what.svg`,\n dashBoardUsersIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/who.svg`,\n dashBoardRcIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/responsibility-center.svg`,\n dashBoardProgramIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/category.svg`,\n dashBoardRiskIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/category.svg`,\n dashBoardTimeFrameIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/when.svg`,\n dashBoardEmailSummariesIcon: `${BASE_URL}/libraries/workflow-engine/assets/workflow/send-resolution.svg`,\n configure_widget: `${BASE_URL}/libraries/configure-widget/assets/images/configure-widget.svg`,\n overviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/overview.png`,\n responsibilityCalenderWidget: `${BASE_URL}/libraries/configure-widget/assets/images/responsibility-calender.png`,\n responsibilityCenterOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/responsibility-center-overview.png`,\n myResponsibilitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/my-responsibilities.png`,\n keyResponsibilitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/key-responsibilities.png`,\n trendAnalysisWidget: `${BASE_URL}/libraries/configure-widget/assets/images/trend-analysis.png`,\n workroomUpdatesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/workroom-updates.png`,\n recentActivitiesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/recent-activities.png`,\n exceptionSummaryWidget: `${BASE_URL}/libraries/configure-widget/assets/images/exception-summary.png`,\n riskOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/risk-overview.png`,\n appetiteToleranceWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/appetite-tolerance.png`,\n inherentRCWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/inherent-RC.png`,\n residualRCWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/residual-RC.png`,\n riskCategoryOverviewWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/risk-category-overview.png`,\n riskHeatmapWidget: `${BASE_URL}/libraries/configure-widget/assets/images/risk-heatmap.png`,\n inherentCategoriesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/inherent-categories.png`,\n residualCategoriesWidget: `${BASE_URL}/libraries/configure-widget/assets/images/riskV2/residual-categories.png`,\n tenRiskRatingsWidget: `${BASE_URL}/libraries/configure-widget/assets/images/10-risk-ratings.png`,\n search_data: `${BASE_URL}/libraries/workflow-engine/assets/workflow/search-data.svg`,\n appetite_tolerance: `${BASE_URL}/libraries/configure-widget/assets/images/appetite-tolerance.png`,\n inherent_trend: `${BASE_URL}/libraries/configure-widget/assets/images/inherent-trend.png`,\n residual_trend: `${BASE_URL}/libraries/configure-widget/assets/images/residual-trend.png`,\n risk_trend: `${BASE_URL}/libraries/configure-widget/assets/images/risk-trend.png`,\n policyApproverView: `${BASE_URL}/policy/images/policy-approver-view.svg`,\n responsibilitiesByAssignee: `${BASE_URL}/libraries/configure-widget/assets/images/responsibilitiesByAssignee.png`,\n}\n","// constants.ts\nexport const PROGRAM_TABLE_HEADERS = [\n 'Program Name',\n 'Program Categories'\n ];\n \n export const PAGINATION_OPTIONS = {\n PAGE_SIZE: 30,\n DEFAULT_CURRENT_PAGE: 1\n };\n\n export const PROGRAM_TYPE_LIST = [\n {name: 'Regulations', id: 'regulations'},\n {name: 'Standards', id: 'standards'},\n {name: 'Internal Controls', id: 'internal_controls'},\n {name: 'Others', id: 'others'},\n ];\n\n export const PROGRAM_OBJECT = {\n regulations: 1,\n standards: 2,\n internal_controls: 3,\n others: 0,\n };\n\n export const PROGRAM_NO_DATA = {\n programList: 'No data to display.',\n categoryList: 'Select a Program to view </br> the associated sub-categories.',\n search: 'No results matched your search criteria.',\n }\n\n export const PROGRAM_LIST_API = {\n programList: 'sailsProgramList',\n categoryList: 'sailsProgramCategories',\n };\n \n","/** Shared helpers for custom dashboard create/edit form hydration. */\n\nexport type ProgramSelectionMap = Record<string, any[]>;\n\nexport function normalizeIdArray(value: unknown): number[] {\n if (value == null || value === '') {\n return [];\n }\n const items = Array.isArray(value) ? value : [value];\n return items\n .map((item: unknown) => {\n if (typeof item === 'number' || typeof item === 'string') {\n return Number(item);\n }\n if (typeof item === 'object' && item != null) {\n const obj = item as Record<string, unknown>;\n return Number(\n obj['id'] ??\n obj['programId'] ??\n obj['rcid'] ??\n obj['rc_id'] ??\n obj['rcId'] ??\n obj['item_id']\n );\n }\n return NaN;\n })\n .filter((id: number) => !Number.isNaN(id));\n}\n\nexport function extractProgramIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n const direct = normalizeIdArray(\n data.programs ?? data.programId ?? data.program?.programId ?? data.programIds\n );\n if (direct.length) {\n return direct;\n }\n const allPrograms = data.program?.all_programs;\n if (!Array.isArray(allPrograms) || !allPrograms.length) {\n return [];\n }\n if (typeof allPrograms[0] === 'object') {\n const fromObjects = [\n ...new Set(\n allPrograms\n .map((item: any) =>\n Number(item?.programId ?? item?.program_id ?? item?.parentId)\n )\n .filter((id: number) => !Number.isNaN(id))\n ),\n ];\n if (fromObjects.length) {\n return fromObjects;\n }\n return normalizeIdArray(allPrograms);\n }\n return normalizeIdArray(allPrograms);\n}\n\nexport function extractCategoryIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n return normalizeIdArray(\n data.responsibility_category ??\n data.responsibilityCategory ??\n data.responsibilityCategoryId ??\n data.compliance_category ??\n data.categoryId ??\n data.categoryIds ??\n []\n );\n}\n\nexport function extractRcIdsFromDashboard(data: any): number[] {\n if (!data) {\n return [];\n }\n const fromRcId = normalizeIdArray(data.rcId);\n if (fromRcId.length) {\n return fromRcId;\n }\n return normalizeIdArray(\n data.responsibilityCenters ??\n data.responsibilityCenterId ??\n data.responsibility_center ??\n data.responsibility_centers ??\n data.rcs ??\n []\n );\n}\n\nexport function hasProgramSelectionInMap(\n map: ProgramSelectionMap | null | undefined\n): boolean {\n if (!map || typeof map !== 'object' || Array.isArray(map)) {\n return false;\n }\n return Object.keys(map).some((key) => (map[key] ?? []).length > 0);\n}\n\nexport function normalizeProgramCategories(categories: any[]): any[] {\n return categories.map((category) => ({\n ...category,\n category_id: category.category_id ?? category.id,\n item_name: category.item_name ?? category.name,\n }));\n}\n\nexport function flattenProgramSelectionMap(\n selections: ProgramSelectionMap\n): any[] {\n return Object.keys(selections ?? {}).reduce(\n (acc: any[], key: string) => acc.concat(selections[key] ?? []),\n []\n );\n}\n\nexport function normalizeProgramSelectionMap(\n map: ProgramSelectionMap\n): ProgramSelectionMap | null {\n const normalized: ProgramSelectionMap = {};\n Object.keys(map ?? {}).forEach((programKey) => {\n normalized[String(programKey)] = (map[programKey] ?? []).map((cat) => {\n if (typeof cat === 'number' || typeof cat === 'string') {\n return {\n id: String(cat),\n category_id: Number(cat),\n };\n }\n return {\n ...cat,\n id: String(cat?.id ?? cat?.category_id),\n name: cat?.name ?? cat?.item_name,\n };\n });\n });\n return hasProgramSelectionInMap(normalized) ? normalized : null;\n}\n\nexport function resolveCategoryProgramId(\n cat: any,\n complianceCatalog: any[] = []\n): string {\n const direct =\n cat?.programId ?? cat?.program_id ?? cat?.parentId ?? cat?.program?.id;\n if (direct != null && direct !== '') {\n return String(direct);\n }\n const catId = Number(cat?.category_id ?? cat?.id);\n if (!Number.isNaN(catId)) {\n const found = complianceCatalog.find(\n (c: any) => Number(c?.category_id ?? c?.id) === catId\n );\n if (found) {\n return String(\n found?.programId ?? found?.program_id ?? found?.parentId ?? ''\n );\n }\n }\n return '';\n}\n\nexport function buildProgramSelectionMapFromCategories(\n categories: any[],\n complianceCatalog: any[] = []\n): ProgramSelectionMap {\n const map: ProgramSelectionMap = {};\n (categories ?? []).forEach((cat) => {\n const programKey = resolveCategoryProgramId(cat, complianceCatalog);\n if (!programKey || programKey === 'undefined' || programKey === 'NaN') {\n return;\n }\n if (!map[programKey]) {\n map[programKey] = [];\n }\n map[programKey].push({\n ...cat,\n id: String(cat?.id ?? cat?.category_id),\n name: cat?.name ?? cat?.item_name,\n });\n });\n return map;\n}\n\nexport function parseSailsProgramList(res: any): any[] {\n if (Array.isArray(res?.data?.programs)) {\n return res.data.programs;\n }\n if (Array.isArray(res?.programs)) {\n return res.programs;\n }\n return [];\n}\n\nexport function getEditDashboardCdid(\n data: any,\n dashboardDetails: any,\n dashboardId: string\n): string {\n const row = data ?? dashboardDetails ?? {};\n const core = row?.dashboard_details ?? row?.dashboard ?? row;\n const cdid =\n core?.cdid ??\n core?.cddid ??\n row?.cdid ??\n row?.cddid ??\n dashboardDetails?.cdid ??\n dashboardDetails?.cddid;\n if (cdid != null && cdid !== '') {\n return String(cdid);\n }\n const fallback = dashboardId ?? '';\n if (fallback && !/^\\d+$/.test(String(fallback))) {\n return String(fallback);\n }\n return '';\n}\n\nexport function getSelectedProgramsMap(\n data: any\n): ProgramSelectionMap | undefined {\n const map = data?.program?.selected_programs;\n if (map && typeof map === 'object' && !Array.isArray(map)) {\n return map;\n }\n return undefined;\n}\n\nexport function filterActiveWidgets(widgets: any[]): any[] {\n return (widgets ?? []).filter((w) => !w?.state || w.state === 'ACTIVE');\n}\n","/**\n * Calendar day `DD-MM-YYYY` for an instant in an IANA timezone.\n * Used as the date-picker min so past days follow the VComply user timezone.\n * Falls back to the device calendar day only when timezone is missing or invalid.\n */\nexport function formatCalendarDateInTimeZone(\n date: Date,\n timeZone?: string | null\n): string {\n if (!timeZone) {\n return formatDeviceCalendarDate(date);\n }\n\n try {\n const parts = new Intl.DateTimeFormat('en-US', {\n timeZone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }).formatToParts(date);\n const get = (type: Intl.DateTimeFormatPartTypes) =>\n parts.find((part) => part.type === type)?.value ?? '';\n const day = get('day');\n const month = get('month');\n const year = get('year');\n if (!day || !month || !year) {\n return formatDeviceCalendarDate(date);\n }\n return `${day}-${month}-${year}`;\n } catch (error) {\n console.error(error);\n return formatDeviceCalendarDate(date);\n }\n}\n\nfunction formatDeviceCalendarDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n return `${day}-${month}-${date.getFullYear()}`;\n}\n","export class Configurations {\n public envConfig: any;\n\n constructor() {\n this.envConfig = {};\n }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, Optional } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { of } from 'rxjs';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { Configurations } from '../../configurations';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreateDashboardService {\n public env!: any;\n\n httpOptions: any;\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n\n this.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n }\n\n /*\n * Fetches the Organization Users List by making an API call\n */\n getOrganizationUsers(url?: any) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'organisationUsersList&paginationType=small' +\n (url.p ? '&p=' + url.p : '') +\n (url.type ? '&type=' + url.type : '') +\n (url.q ? '&q=' + url.q : ''),\n this.httpOptions\n )\n .pipe(\n map((res: any) => {\n return res;\n }),\n retry(2),\n catchError((err) => of(err))\n );\n }\n\n /**\n * Fetches the OrganizationUsers details of users List to set pagination details including number of\n * pages and records limit per page,\n * @param url contains info about type & search query\n */\n getOrganizationUsersCount(url?: any) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'organisationUsersCount&paginationType=small' +\n (url.type ? '&type=' + url.type : '') +\n (url.q ? '&q=' + url.q : ''),\n this.httpOptions\n )\n .pipe(\n map((res) => {\n return res;\n }),\n catchError((err) => of(err))\n );\n }\n\n getCategoryList() {\n return this.http\n .get<any[]>(this.env?.riskGet + 'category/list')\n .pipe(retry(2));\n }\n\n /**\n * Fetches all users by making an API call\n */\n getAllUsers() {\n return this.http\n .get(\n this.env?.organizationGet + 'selectAllUsers&type=all',\n this.httpOptions\n )\n .pipe(retry(2));\n }\n\n /**\n * Fetches all groups by making an API call\n * */\n getAllGroups(params?: HttpParams) {\n return this.http\n .get(\n this.env?.organizationGet +\n 'groupsList&permType=dashboard&memberExists=1',\n { params }\n )\n .pipe(retry(2));\n }\n\n /**\n * Fetches responsibilityCentersList by making an API call\n */\n getResponsibilityCenterList() {\n return this.http\n .get<any[]>(this.env?.organizationGet + 'responsibilityCenterTree')\n .pipe(retry(2));\n }\n\n getComplianceCategoriesList() {\n return this.http\n .get<any[]>(\n this.env.complianceGet + 'complianceCategory/CategoryListTree'\n )\n .pipe(retry(2));\n }\n\n getComplianceCategoriesListFromGlobal() {\n return this.http\n .get<any[]>(\n this.env?.complianceGet +\n 'complianceCategory/CategoryListTree&program=1&isDashboard=true'\n )\n .pipe(retry(2));\n }\n\n submitDashboard(payload: any) {\n return this.http\n .post(this.env.dashboard + 'CreateDashboard', payload)\n .pipe(retry(2));\n }\n\n /**\n * Fetches the Dashboard details for data population to Edit the dashboard\n * @param id\n */\n /** @deprecated Legacy Global-Dashboard edit fetch; custom dashboards use fetchCustomDashboardById + getWidgets. */\n fetchDashboard(id: any) {\n return this.http\n .get(this.env.dashboard + id + '?mode=edit', this.httpOptions)\n .pipe(retry(2));\n }\n\n /**\n * Edit mode only — GET Global-Dashboard/getWidgets?dashboardId={cdid}\n * @param cdid Custom dashboard id (e.g. 438F8KSK22), not numeric record id\n */\n fetchCustomDashboardWidgetDetails(cdid: string) {\n return this.http\n .get(\n `${this.env.dashboard}getWidgets?dashboardId=${encodeURIComponent(cdid)}`,\n this.httpOptions\n )\n .pipe(\n map((res: any) => this.normalizeWidgetDetailsResponse(res)),\n retry(2)\n );\n }\n\n normalizeWidgetDetailsResponse(res: any): {\n widgetArr: any[];\n allWidgetsArray: any[];\n activeWidgetArr: any[];\n } {\n const payload = res?.data ?? res;\n const collect = (...candidates: any[]): any[] => {\n const collected: any[] = [];\n const seen = new Set<string>();\n candidates.forEach((candidate) => {\n if (!Array.isArray(candidate)) {\n return;\n }\n candidate.forEach((widget: any) => {\n const code = widget?.widget_code ?? widget?.widgetCode;\n const key = code != null ? String(code) : JSON.stringify(widget);\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n collected.push(widget);\n });\n });\n return collected;\n };\n\n const widgetArr = collect(\n payload?.widgetArr,\n res?.widgetArr,\n payload?.widget_details,\n Array.isArray(payload) ? payload : null,\n Array.isArray(res?.data) ? res.data : null\n );\n const allWidgetsArray = collect(\n payload?.allWidgetsArray,\n payload?.all_widgets,\n payload?.allWidgets,\n payload?.allWidgetArray,\n payload?.widgets,\n res?.allWidgetsArray,\n res?.all_widgets,\n res?.allWidgets,\n res?.widgets,\n widgetArr\n );\n const activeWidgetArr = collect(\n payload?.activeWidgetArr,\n res?.activeWidgetArr,\n widgetArr\n );\n\n return {\n widgetArr,\n allWidgetsArray: allWidgetsArray.length ? allWidgetsArray : widgetArr,\n activeWidgetArr: activeWidgetArr.length ? activeWidgetArr : widgetArr,\n };\n }\n\n getSailsProgramList() {\n return this.http\n .get(this.env.complianceGet + 'sailsProgramList', this.httpOptions)\n .pipe(retry(2));\n }\n\n getProgramCategories(programId: string | number) {\n return this.http\n .get(\n `${this.env.complianceGet}sailsProgramCategories&id=${programId}`,\n this.httpOptions\n )\n .pipe(retry(2));\n }\n\n /** Full custom dashboard payload (includes responsibilityCenterId, programId, etc.). */\n fetchCustomDashboardById(id: string | number) {\n return this.http\n .get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)\n .pipe(retry(2));\n }\n\n\n\n getUserInformation() {\n return this.http\n .get(\n this.env?.organizationGet + 'users&id=' + this?._ID(),\n this.httpOptions\n )\n .pipe(retry(2));\n }\n _ID() {\n const helper = new JwtHelperService();\n const myRawToken = localStorage.getItem('currentUser') || '{}';\n const isExpired = helper?.isTokenExpired(myRawToken);\n if (isExpired === false) {\n const tokenInfo = helper?.decodeToken(myRawToken);\n return tokenInfo._id;\n }\n return '';\n }\n\n /**\n * JWT timezone used until organization/?mode=users timezone is loaded.\n */\n getTokenTimezone(): string {\n try {\n const stored = localStorage.getItem('currentUser');\n if (!stored) {\n return '';\n }\n const token = JSON.parse(stored)?.token;\n if (!token) {\n return '';\n }\n const helper = new JwtHelperService();\n const tokenInfo = helper.decodeToken(token);\n let user = tokenInfo?.user;\n if (typeof user === 'string') {\n user = JSON.parse(user);\n }\n return user?.timezone || '';\n } catch (error) {\n console.error(error);\n return '';\n }\n }\n\n checkDuplicateDashboardName(payload: any) {\n return this.http\n .post(\n this.env.dashboard + 'DuplicateDashboard',\n payload,\n this.httpOptions\n )\n .pipe(retry(2));\n }\ncreateDashboard(payload: any) {\n return this.http.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions)\n}\n\nupdateDashboard(payload: any, id: any) {\n return this.http.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions)\n}\n\nsaveWidgetDetails(payload: any) {\n return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions)\n}\n buildPayload(payload: any) {\n return {\n dashboard: {\n name: payload.dashboard_name,\n description: payload.description[0].content,\n viewer: {\n userId: payload.visible_to_users,\n userGroupId: payload.visible_to_groups,\n },\n responsibilityCenterId: payload.responsibility_center,\n programId: payload.program.all_programs.map((program: any) => program.id),\n timeframe: payload.timeframe.start_date ? {\n from: payload.timeframe.start_date,\n to: payload.timeframe.end_date,\n } : null\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * Service to implement pagination for users while creating an app\n */\nexport class PaginationService {\n currentPage = 1;\n searchValue = '';\n currentValues = new BehaviorSubject({});\n\n constructor() { }\n\n setCurrentState() {\n this.currentValues.next(true);\n }\n reset(){\n this.currentPage = 1;\n this.searchValue = '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBarService {\n snackbarSubject = new Subject<any>();\n constructor() {}\n\n show(message: string, icon?: string) {\n this.snackbarSubject.next({\n show: true,\n message,\n icon,\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopoverService {\n stopScroll = false;\n positionX!: number;\n positionY!: number;\n popoverHeight: any;\n popoverWidth: any;\n elementPosition: any;\n elementDirection: any;\n constructor() {\n console.log(this.popoverHeight);\n }\n}\n","import {\n Directive,\n Input,\n ElementRef,\n HostListener,\n Renderer2,\n OnInit,\n AfterViewInit,\n ViewChild,\n OnDestroy,\n} from '@angular/core';\n\n@Directive({\n selector: '[arTooltip]',\n standalone: false\n})\nexport class ToolTipDirective implements OnInit, OnDestroy {\n @Input('arTooltip') tooltipTitle!: string;\n @Input() placement!: string;\n @Input() type: any;\n @Input() tooltipMandatory!: boolean;\n @Input() showTooltip = true;\n @Input() animate!: boolean;\n tooltip!: HTMLElement;\n offset = 8;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n ngOnInit() {}\n @HostListener('mouseenter') onMouseEnter() {\n this.hide();\n this.show();\n }\n @HostListener('mouseover') onMouseOver() {\n this.hide();\n this.show();\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.hide();\n }\n @HostListener('mouseout') onMouseOut() {\n this.hide();\n }\n @HostListener('click') onClick() {\n this.hide();\n }\n ngOnDestroy() {\n this.hide();\n }\n show() {\n if (!this.showTooltip) {\n return;\n }\n this.create();\n const element = this.el.nativeElement;\n if (this.tooltipMandatory === true) {\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n } else {\n if (\n element.scrollWidth * element.scrollHeight >\n element.offsetWidth * element.offsetHeight\n ) {\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n }\n }\n }\n\n hide() {\n if (document.body.contains(this.tooltip)) {\n if (this.renderer) {\n this.renderer.removeChild(\n document.body,\n document.getElementById('tooltip')\n );\n }\n }\n }\n\n create() {\n this.tooltip = this.renderer.createElement('span');\n this.tooltip.setAttribute('id', 'tooltip');\n this.tooltip.innerHTML = this.tooltipTitle;\n this.renderer.appendChild(document.body, this.tooltip);\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\n this.renderer.addClass(this.tooltip, `${this.type}`);\n if (this.animate) {\n this.renderer.addClass(this.tooltip, `animate-${this.placement}`);\n }\n }\n\n setPosition() {\n const hostPos = this.el.nativeElement.getBoundingClientRect();\n const tooltipPos = this.tooltip.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n const w = window.innerWidth;\n const h = window.innerHeight;\n let top;\n let left;\n if (this.placement === 'top') {\n top = hostPos.top - tooltipPos.height - this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.placement === 'bottom') {\n if (hostPos.top + tooltipPos.height > h) {\n top = hostPos.top - tooltipPos.height;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom`);\n this.renderer.addClass(this.tooltip, `ng-tooltip-top`);\n } else {\n top = hostPos.bottom + this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n }\n\n if (this.placement === 'left') {\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - this.offset;\n }\n\n if (this.placement === 'right') {\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + this.offset;\n }\n if (this.placement === 'bottom-right') {\n top = hostPos.bottom + this.offset;\n left = hostPos.left - (tooltipPos.width - 28);\n }\n if (this.placement === 'bottom-left') {\n if (hostPos.top + tooltipPos.height > h - 30) {\n top = hostPos.top - tooltipPos.height;\n console.log('bottom left', hostPos.top - tooltipPos.height);\n left = hostPos.left;\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom-left`);\n this.renderer.addClass(this.tooltip, `ng-tooltip-top-left`);\n } else {\n top = hostPos.bottom + this.offset;\n left = hostPos.left;\n }\n }\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport class DialogRef {\n private readonly afterDialogClosed = new Subject<any>();\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\n constructor() {}\n\n close(result?: any) {\n this.afterDialogClosed.next(result);\n document.body.style.overflow = 'auto';\n }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { widgetDataModel } from '../interfaces/widget-data-model';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { of } from 'rxjs';\nimport { Configurations } from '../../configurations';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigureWidgetsService {\n public env!: any;\n\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n }\n\n // complianceWidgetsData = [\n // {\n // title: 'Overview',\n // id: 'overview_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.overviewWidget,\n // value: 0,\n // },\n // {\n // title: 'Responsibility Calendar',\n // id: 'compliance_calendar_flag',\n // description:\n // 'Displays all responsibilities that are due on a particular day.',\n // widgetImage: ASSETS.responsibilityCalenderWidget,\n // value: 0,\n // },\n // {\n // title: 'Responsibility Center Overview',\n // id: 'responsibility_center_overview_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.overviewWidget,\n // value: 0,\n // },\n // {\n // title: 'My Responsibilities',\n // id: 'my_responsibilities',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.myResponsibilitiesWidget,\n // tabOption: true,\n // value: 0,\n // },\n // {\n // title: 'Key Responsibilities',\n // id: 'key_responsibilities',\n // description:\n // 'Displays all responsibilities that are due on a particular day.',\n // widgetImage: ASSETS.keyResponsibilitiesWidget,\n // tabOption: true,\n // value: 0,\n // },\n // {\n // title: 'Trend Analysis',\n // id: 'trend_analysis_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.trendAnalysisWidget,\n // value: 0,\n // },\n // {\n // title: 'Workroom Updates',\n // id: 'workroom_alert_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.workroomUpdatesWidget,\n // value: 0,\n // },\n // {\n // title: 'Recent Activities',\n // id: 'recent_activity_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.recentActivitiesWidget,\n // value: 0,\n // },\n // {\n // title: 'Exception Summary',\n // id: 'exception_summary_flag',\n // description:\n // 'Displays all responsibilities that have been assigned to you.',\n // widgetImage: ASSETS.exceptionSummaryWidget,\n // value: 0,\n // },\n // ];\n\n riskWidgetsData = [\n {\n title: 'Risk Overview',\n id: 'risk_overview',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\n widgetImage: ASSETS.riskOverviewWidget,\n value: 0,\n },\n {\n title: 'Risk Appetite & Tolerance',\n id: 'risk_appetite_tolerance',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\n widgetImage: ASSETS.appetiteToleranceWidget,\n value: 0,\n },\n {\n title: 'Risk Ratings',\n id: 'risk_ratings',\n description: 'Description.',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Risks Without Controls',\n id: 'risks_without_controls',\n description: 'Description',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Risks Exceeding Risk Tolerance',\n id: 'exceeds_risk_tolerance',\n description: 'description',\n widgetImage: ASSETS.appetite_tolerance,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating by Responsibility Centers ',\n id: 'inherent_risk_rating_by_responsibility_centers',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\n widgetImage: ASSETS.inherentRCWidget,\n value: 0,\n },\n {\n title: 'Residual Risk Rating by Responsibility Centers ',\n id: 'residual_risk_rating_by_responsibility_centers',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\n widgetImage: ASSETS.residualRCWidget,\n value: 0,\n },\n {\n title: 'Risk Category Overview',\n id: 'risk_category_overview',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\n widgetImage: ASSETS.riskCategoryOverviewWidget,\n value: 0,\n },\n {\n title: 'Risk Heatmap',\n id: 'risk_heatmap',\n description: 'Description.',\n widgetImage: ASSETS.riskHeatmapWidget,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating by Categories',\n id: 'inherent_risk_rating_by_categories',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\n widgetImage: ASSETS.inherentCategoriesWidget,\n value: 0,\n },\n\n {\n title: 'Residual Risk Rating by Categories',\n id: 'residual_risk_rating_by_categories',\n description: 'description',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\n widgetImage: ASSETS.residualCategoriesWidget,\n value: 0,\n },\n {\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\n description: 'Description.',\n widgetImage: ASSETS.inherent_trend,\n value: 0,\n },\n {\n title: 'Residual Risk Rating Trend by Responsibility Centers',\n id: 'residual_risk_rating_trend_by_responsibility_centers',\n description: 'Description.',\n widgetImage: ASSETS.residual_trend,\n value: 0,\n },\n {\n title: 'Risk Rating Trend by Categories',\n id: 'risk_rating_trend_by_categories',\n description: 'Description.',\n widgetImage: ASSETS.risk_trend,\n value: 0,\n },\n {\n title: 'Top 5 Risk Ratings',\n id: 'top_5_residual_risk_ratings',\n description: 'Description.',\n // widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\n widgetImage: ASSETS.tenRiskRatingsWidget,\n value: 0,\n },\n ];\n auditWidgetsData = [];\n policyWidgetsData = [];\n\n // For dashboard view\n dashBoardWidgetUpdate(widGetJson: any) {\n return this.http\n .put(this.env.OrganizationPut + 'dashboardWidgets', widGetJson)\n .pipe(retry(2));\n }\n\n moduleType(identifier: string) {\n if (JSON.stringify(this.riskWidgetsData).includes(identifier)) {\n return 'RISK';\n // } else if (JSON.stringify(this.complianceWidgetsData).includes(identifier)) {\n // return 'COMPLIANCE';\n }\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { PopoverService } from './popover.service';\n\n@Component({\n selector: 'app-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class PopoverComponent implements OnInit {\n @Input() dontCloseonClick = false;\n popoverContainer = false;\n @ViewChild('popoverRatio') popoverRatio!: ElementRef;\n @ViewChild('popoverContent') popoverContent!: ElementRef;\n @Output() closedOnOverlay = new EventEmitter();\n constructor(public popoverService: PopoverService) { }\n showPopover = false;\n leftValue: any;\n topValue: any;\n popoverHeight: any;\n popoverWidth: any;\n positionX!: number;\n positionY!: number;\n ngOnInit(): void { }\n popover() {\n this.popoverContainer = false;\n this.popoverContainer = true;\n setTimeout(() => {\n this.getPosition();\n this.showPopover = true;\n this.popoverService.stopScroll = true;\n // document.body.style.overflow = 'hidden';\n }, 10);\n return false;\n }\n popoverEvent() {\n this.popoverContainer = false;\n this.popoverContainer = true;\n setTimeout(() => {\n // this.getPosition();\n this.positionX = this.popoverService.positionX;\n this.positionY = this.popoverService.positionY;\n this.showPopover = true;\n this.popoverService.stopScroll = true;\n\n }, 10);\n return false;\n }\n closePopover(top?: string) {\n if (!this.dontCloseonClick || top === 'top') {\n this.popoverContainer = false;\n this.showPopover = false;\n this.popoverService.stopScroll = false;\n // document.body.style.overflow = 'auto';\n }\n }\n\n close() {\n this.popoverContainer = false;\n this.showPopover = false;\n this.popoverService.stopScroll = false;\n }\n\n clickedPopover() {\n this.getPosition();\n }\n getPosition() {\n const elementPosition = this.popoverService?.elementPosition;\n const direction = this.popoverService?.elementDirection;\n\n if (!this.popoverRatio?.nativeElement) {\n return;\n }\n\n this.popoverHeight = this.popoverRatio.nativeElement.offsetHeight;\n this.popoverWidth = this.popoverRatio.nativeElement.offsetWidth;\n\n const overflowsBottom = elementPosition.top + elementPosition.height + this.popoverHeight > window.outerHeight - 200;\n\n switch (direction) {\n case 'left':\n this.leftValue = elementPosition.left;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'right':\n this.leftValue = elementPosition.left + elementPosition.width - this.popoverWidth;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'top':\n this.leftValue = elementPosition.left + elementPosition.width;\n this.topValue = elementPosition.top - this.popoverHeight;\n break;\n\n case 'bottom':\n this.leftValue = elementPosition.left + elementPosition.width;\n this.topValue = overflowsBottom\n ? elementPosition.top - this.popoverHeight\n : elementPosition.top + elementPosition.height;\n break;\n\n case 'self-position':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = elementPosition.top - 15;\n break;\n\n case 'top-center':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = (elementPosition.top + elementPosition.height + this.popoverHeight > window.outerHeight)\n ? elementPosition.top + elementPosition.height\n : elementPosition.top - this.popoverHeight;\n break;\n\n case 'center':\n this.leftValue = elementPosition.left + elementPosition.width / 2 - this.popoverWidth / 2;\n this.topValue = elementPosition.top + elementPosition.height;\n break;\n }\n\n this.positionX = this.leftValue;\n this.positionY = this.topValue;\n }\n}\n","@if (popoverContainer) {\n <div class=\"popover-overlay\" (click)=\"closePopover('top');this.closedOnOverlay.emit();\"></div>\n}\n@if (popoverContainer) {\n <div class=\"action\" [class.active]=\"showPopover\" [style.top.px]=\"positionY\" [style.left.px]=\"positionX\" #popoverRatio id=\"popoverRatio\">\n <div (click)=\"closePopover(); clickedPopover()\" #popoverContent>\n <ng-content></ng-content>\n </div>\n </div>\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { PopoverService } from './popover.service';\n\n@Directive({\n selector: '[appPopover]',\n standalone: false\n})\nexport class PopoverDirective {\n dynamicComponent: any;\n @Input() refrence: any;\n @Input() placement!: string;\n leftValue: any;\n topValue: any;\n constructor(private elRef: ElementRef, private popoverService: PopoverService) {}\n @HostListener('click') click() {\n this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\n this.popoverService.elementDirection = this.placement;\n // this.getPosition();\n }\n\n getPosition() {\n setTimeout(() => {\n // this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\n const elementPositionn = this.elRef.nativeElement.getBoundingClientRect();\n if (this.placement === 'left') {\n this.leftValue = elementPositionn.left;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'right') {\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverService.popoverWidth;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'top') {\n this.leftValue = elementPositionn.left + elementPositionn.width;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n }\n }\n if (this.placement === 'bottom') {\n this.leftValue = elementPositionn.left + elementPositionn.width;\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n } else {\n this.topValue = elementPositionn.top + elementPositionn.height;\n }\n }\n if (this.placement === 'self-position') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top - 15;\n }\n if (this.placement === 'top-center') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\n }\n if (this.placement === 'bottom-center') {\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\n this.topValue = elementPositionn.top + this.popoverService.popoverHeight;\n }\n this.popoverService.positionX = this.leftValue;\n this.popoverService.positionY = this.topValue;\n }, 10);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { SnackBarService } from '../snack-bar/snack-bar.service';\n\n@Component({\n selector: 'floating-bar',\n templateUrl: './floating-bar.component.html',\n styleUrls: ['./floating-bar.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FloatingBarComponent implements OnInit {\n @Output() cancelEvent = new EventEmitter<string>();\n @Output() submitEvent = new EventEmitter<string>();\n @Output() deleteEvent: EventEmitter<number> = new EventEmitter();\n @Input() text!: boolean;\n @Input() frequencyMessage: any;\n @Input() singleCategory: any;\n @Input() selectedData: any;\n\n constructor(private snackBar: SnackBarService\n ) {\n this.selectedData = [];\n }\n\n ngOnInit(): void {\n }\n cancelFloatingBar() {\n this.cancelEvent.emit();\n }\n submitFloatingBar() {\n if (this.selectedData.length < 1) {\n this.snackBar.show('Select a widget.','alert');\n return\n }\n this.submitEvent.emit(this.selectedData);\n }\n\n deleteSelected(index: number) {\n this.deleteEvent.emit(index);\n }\n\n}\n","<div class=\"lib-floating-bar-container\">\n <div class=\"lib-floating-bar vx-d-flex vx-align-center vx-justify-between vx-p-3\">\n @if (text && !frequencyMessage && !singleCategory) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\">This audit plan needs to be <strong>reviewed</strong> within 2 days after it has been completed.</span>\n </div>\n }\n @if (frequencyMessage && !text) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\" [innerHTML]=\"frequencyMessage\"></span>\n </div>\n }\n @if (singleCategory && !frequencyMessage && !text) {\n <div class=\"left vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-mr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"singleCategory\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{singleCategory}}</span>\n </div>\n </div>\n }\n @if (!singleCategory && !text && !frequencyMessage) {\n <div class=\"left vx-d-flex vx-align-center\">\n @if (selectedData.length) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2 vx-mr-2\">\n <i class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\" (click)=\"deleteSelected(selectedData[0])\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"$safeNavigationMigration(selectedData[0]?.title)\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedData[0]?.title}}</span>\n @if (selectedData?.length > 1) {\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" appPopover (click)=\"countPopup.popover()\" placement=\"left\">+{{selectedData?.length - 1}}</button>\n }\n </div>\n }\n @if ((selectedData?.length - 1) === 1) {\n <span class=\"vx-fs-12 vx-paragraph-txt\">Widget Selected</span>\n }\n @if ((selectedData?.length - 1) > 1) {\n <span class=\"vx-fs-12 vx-paragraph-txt\">Widgets Selected</span>\n }\n <app-popover #countPopup [dontCloseonClick]=\"true\">\n <div class=\"lib-floating-bar-action-list\">\n <ul class=\"action-item\">\n @for (data of selectedData | slice: 1; track data; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(data?.title)\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\"><i class=\"icons cross-icon vx-mr-2\" (click)=\"deleteSelected(data)\">&#xe90d;</i>{{data?.title}}</span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel-btn\" (click)=\"cancelFloatingBar()\">Cancel</button>\n <!-- <button class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase\" (click)=\"submitFloatingBar()\">Update</button> -->\n <button class=\"save-btn\" (click)=\"submitFloatingBar()\">Save</button>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-checkbox',\n templateUrl: './cs-checkbox.component.html',\n styleUrls: ['./cs-checkbox.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsCheckboxComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() ngValue: any;\n @Input() value: any;\n @Output() ngValueChange = new EventEmitter<any>();\n constructor() {}\n\n ngOnInit(): void {}\n valueChanged() {\n this.ngValueChange.emit(this.ngValue);\n }\n}\n","<label class=\"checkbox-item\" [class.disabled]=\"disabled\">\n <input type=\"checkbox\" [name]=\"value\" [disabled]=\"disabled\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" />\n <span class=\"checkbox\">\n <span class=\"inner\"></span>\n </span>\n <svg class=\"checkmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkmark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkmark__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n <span class=\"value\"><ng-content></ng-content></span>\n</label>\n","import { Component, Input, OnInit, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-no-data',\n templateUrl: './no-data.component.html',\n styleUrls: ['./no-data.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class NoDataComponent implements OnInit {\n @Input() action!: any;\n @Input() noDataImage!: string;\n @Input() noDataText = '';\n @Input() noDataButton!: string | boolean;\n @Input() noDataSecButton!: string | boolean;\n @Input() altText!: string;\n @Output() buttonAction = new EventEmitter<object>();\n @Input() smallButton!: boolean;\n @Input() buttonIcon!: any;\n @Input() iconClass!: any;\n constructor() { }\n\n ngOnInit(): void { }\n\n actionEmitter(button: object) {\n this.buttonAction.emit(button);\n }\n}\n","<div class=\"no-data-wrapper\">\n <div class=\"no-data-container\">\n <img [src]=\"noDataImage\" [alt]=\"altText\" class=\"image\" />\n @if (noDataText) {\n <p class=\"text\" [innerHTML]=\"noDataText\"></p>\n }\n @for (button of action; track button) {\n <div class=\"button-row\">\n @if (!button?.buttonIcon) {\n <button (click)=\"actionEmitter(button)\" [innerHTML]=\"$safeNavigationMigration(button?.buttonText)\"\n [class.small]=\"smallButton\"></button>\n }\n @if (button?.buttonIcon) {\n <button (click)=\"actionEmitter(button)\" [class.small]=\"smallButton\">\n <i class=\"icons\" [innerHTML]=\"$safeNavigationMigration(button?.buttonIcon)\"></i> <span\n [innerHTML]=\"$safeNavigationMigration(button?.buttonText)\"></span>\n </button>\n }\n </div>\n }\n</div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'search',\n standalone: false\n})\nexport class SearchPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n if (!value) {\n return null;\n }\n if (!args) {\n return value;\n }\n\n args = args.toLowerCase();\n\n return value.filter((item: any) => {\n return JSON.stringify(item).toLowerCase().includes(args);\n });\n }\n\n}\n","import { ConfigureWidgetsService } from '../../services/configure-widgets.service';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { retry } from 'rxjs/operators';\nimport { widgetDataModel } from '../../interfaces/widget-data-model';\nimport { DialogRef } from '../../../ui-kit/dialog/dialog-ref';\nimport { widgetConfig } from './widget.interface';\nimport { SnackBarService } from '../../../ui-kit/snack-bar/snack-bar.service';\nimport { ASSETS } from '../../constants/assets.constant';\n\n@Component({\n selector: 'app-configure-widgets',\n templateUrl: './configure-widgets.component.html',\n styleUrls: ['./configure-widgets.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ConfigureWidgetsComponent implements OnInit, OnChanges {\n @Output() widgetsDataModified: EventEmitter<any> = new EventEmitter();\n @Output() closeConfigureWidgets: EventEmitter<any> = new EventEmitter();\n checkboxStatus!: any;\n search: string = '';\n checkedArray: Array<{ index: number; status: number }> = [];\n selectedWidgets: Array<widgetDataModel> = [];\n ASSETS = ASSETS;\n module: 'COMPLIANCE' | 'RISK' = 'COMPLIANCE';\n @Input() selectedWidgetsData: any = [];\n @Input() displayedWidgets: any = [];\n @Input() showRisk = false;\n @Input() showCompliance = false;\n @Input() mode = 'CREATE';\n noDataText =\n 'You have not configured any widgets. Click on the <strong>Configure Widgets</strong> button to begin.';\n\n selectedWidgetIds: any = [];\n subResponsibilitiesSelected: boolean = false;\n subKeyResponsibilitiesSelected: boolean = false;\n showWidgets = true;\n complianceWidgetsDisplayCount = 9;\n riskWidgetsDisplayCount = 9;\n\n constructor(\n private dialog: DialogRef,\n public configureWidgetsService: ConfigureWidgetsService,\n private snackBar: SnackBarService,\n ) {}\n\n ngOnChanges() {\n this.selectedWidgets = [];\n\n if (this.mode === 'EDIT') {\n this.applyEditModeWidgetCatalog();\n } else {\n this.applyCreateModeWidgetVisibility();\n this.applySavedWidgetSelection(this.selectedWidgetsData);\n }\n\n this.module = this.showCompliance ? 'COMPLIANCE' : 'RISK';\n this.setSelectedWidgets();\n }\n\n /** EDIT: show full widget catalog; check items present in getWidgets widgetArr. */\n private applyEditModeWidgetCatalog(): void {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n ele.value = false;\n ele.visibility = true;\n (ele.subWidgets ?? []).forEach((sub: any) => {\n sub.value = false;\n sub.visibility = true;\n });\n });\n this.complianceWidgetsDisplayCount = this.widgetsList.COMPLIANCE.filter(\n (w) => w.visibility,\n ).length;\n this.riskWidgetsDisplayCount = 0;\n this.applySavedWidgetSelection(this.selectedWidgetsData);\n }\n\n /** CREATE: limit visible tiles to displayedWidgets when provided. */\n private applyCreateModeWidgetVisibility(): void {\n if (!this.displayedWidgets?.length) {\n return;\n }\n this.setWidgetsVisibilityToFalse();\n this.riskWidgetsDisplayCount = 0;\n this.complianceWidgetsDisplayCount = 0;\n const finalData = [...new Set(this.displayedWidgets)];\n finalData.forEach((element: any) => {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.id !== element.widget_code) {\n return;\n }\n ele.visibility = true;\n if (ele.subWidgets.length > 0) {\n const visibleSubCodes = (element.sub_widgets ?? []).map(\n (subwidget: any) => subwidget.widget_code,\n );\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\n ele.subWidgets[subIndex].visibility = visibleSubCodes.includes(\n subElement.id,\n );\n });\n }\n this.complianceWidgetsDisplayCount++;\n });\n });\n }\n\n private applySavedWidgetSelection(savedWidgets: any[]): void {\n const data = [...new Set(savedWidgets ?? [])];\n data.forEach((element: any) => {\n if (element?.state && element.state !== 'ACTIVE') {\n return;\n }\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.id !== element.widget_code) {\n return;\n }\n ele.value = true;\n if (ele.subWidgets.length > 0 && element.sub_widgets?.length) {\n const activeSubCodes = (element.sub_widgets ?? [])\n .filter((subwidget: any) => subwidget.state === 'ACTIVE')\n .map((subwidget: any) => subwidget.widget_code);\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\n ele.subWidgets[subIndex].value = activeSubCodes.includes(\n subElement.id,\n );\n });\n }\n });\n });\n }\n\n ngOnInit(): void {}\n\n widgetsList = {\n COMPLIANCE: [\n {\n title: 'Overview',\n id: 'overview',\n description:\n 'Overview shows the performance of responsibilities and Programs.',\n widgetImage: ASSETS.overviewWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibility Calendar',\n id: 'compliance_calendar_flag',\n description:\n 'The Responsibility Calendar shows the due dates of responsibilities in a calendar format. The responsibilities are color coded to reflect the status of the responsibilities.',\n widgetImage: ASSETS.responsibilityCalenderWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n\n {\n title: 'Responsibilities by Assignee',\n id: 'responsibilities_by_assignee',\n description:\n 'The Responsibilities by Assignee widget shows the performance of responsibilities by users.',\n widgetImage: ASSETS.responsibilitiesByAssignee,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibility Center Overview',\n id: 'responsibility_center_overview_flag',\n description:\n 'The Responsibility Center Overview shows the performance of responsibilities and Responsibility Centers.',\n widgetImage: ASSETS.responsibilityCenterOverviewWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n {\n title: 'Responsibilities',\n id: 'my_responsibilities',\n description:\n 'This widget shows the performance of the responsibilities that you are required to complete, the responsibilities that you are reviewing and the responsibilities that you are overseeing.',\n widgetImage: ASSETS.myResponsibilitiesWidget,\n tabOption: true,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [\n {\n title: 'My Responsibilities',\n id: 'my_responsibility_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Reviewing',\n id: 'reviewer_responsibility_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Overseeing',\n id: 'cc_responsibility_flag',\n value: false,\n visibility: true,\n },\n ],\n },\n {\n title: 'Key Responsibilities',\n id: 'key_responsibilities',\n description:\n 'This widget shows the performance of key responsibilities that you are required to complete, that you are reviewing, that you are overseeing and that you have assigned to another person.',\n widgetImage: ASSETS.keyResponsibilitiesWidget,\n tabOption: true,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [\n // {\n // title: 'Overview',\n // id: 'key_responsibilities_overview_flag',\n // value: false,\n // visibility: true,\n // },\n {\n title: 'My Responsibilities',\n id: 'key_my_responsibilities_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Reviewing',\n id: 'key_i_am_reviewing_flag',\n value: false,\n visibility: true,\n },\n {\n title: 'I’m Overseeing',\n id: 'key_i_am_overseeing_flag',\n value: false,\n visibility: true,\n },\n ],\n },\n {\n title: 'Trend Analysis',\n id: 'trend_analysis_flag',\n description:\n 'The Trend Analysis is a graphical representation of the performance of responsibilities over a period.',\n widgetImage: ASSETS.trendAnalysisWidget,\n value: false,\n visibility: true,\n module: 'COMPLIANCE',\n subWidgets: [],\n },\n ],\n };\n\n selectWidget(\n event: any,\n module: 'COMPLIANCE',\n widgetId: string,\n subWidgetId?: string,\n ) {\n const widgetIndex = this.widgetsList[module].findIndex(\n (ele: any) => ele.id == widgetId,\n );\n const isSubWidgetAddable = this.selectedWidgets.findIndex(\n (widget: any) => widget.id === widgetId,\n );\n if (event) {\n if (\n this.selectedWidgets.length >= 10 &&\n !(subWidgetId && isSubWidgetAddable >= 0)\n ) {\n this.snackBar.show('You cannot add more than 10 widgets.', 'alert');\n this.showWidgets = false;\n setTimeout(() => {\n this.widgetsList[module][widgetIndex].value = false;\n this.showWidgets = true;\n }, 10);\n return;\n }\n this.widgetsList[module][widgetIndex].value = true;\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\n if (!subWidgetId) {\n this.widgetsList[module][widgetIndex].subWidgets.forEach(\n (ele) => (ele.value = true),\n );\n } else {\n const subWidgetIndex = this.widgetsList[module][\n widgetIndex\n ].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\n this.widgetsList[module][widgetIndex].subWidgets[\n subWidgetIndex\n ].value = true;\n }\n }\n } else {\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\n if (!subWidgetId) {\n this.widgetsList[module][widgetIndex].value = false;\n this.widgetsList[module][widgetIndex].subWidgets.forEach(\n (ele: any) => (ele.value = false),\n );\n } else {\n const subWidgetIndex = this.widgetsList[module][\n widgetIndex\n ].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\n this.widgetsList[module][widgetIndex].subWidgets[\n subWidgetIndex\n ].value = false;\n\n const isAllWidgetsRemoved = this.widgetsList[module][\n widgetIndex\n ].subWidgets.every((ele: any) => ele.value == false);\n if (isAllWidgetsRemoved) {\n this.widgetsList[module][widgetIndex].value = false;\n }\n }\n } else {\n this.widgetsList[module][widgetIndex].value = false;\n }\n }\n this.setSelectedWidgets();\n }\n setSelectedWidgets() {\n this.selectedWidgets = [];\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n if (ele.value) {\n this.selectedWidgets.push(ele);\n }\n });\n // this.widgetsList.RISK.forEach((ele: any) => {\n // if (ele.value) {\n // this.selectedWidgets.push(ele);\n // }\n // });\n }\n\n removeWidget(widget: widgetConfig) {\n const widgetIndex = this.widgetsList[widget.module].findIndex(\n (ele: any) => ele.id == widget.id,\n );\n this.widgetsList[widget.module][widgetIndex].value = false;\n if (this.widgetsList[widget.module][widgetIndex].subWidgets.length > 0) {\n this.widgetsList[widget.module][widgetIndex].subWidgets.forEach(\n (ele: any) => (ele.value = false),\n );\n }\n this.setSelectedWidgets();\n }\n\n onNextClick() {\n this.widgetsDataModified.emit(this.selectedWidgets);\n }\n\n closeConfigureDashboard() {\n this.selectedWidgets = [];\n this.dialog.close();\n this.closeConfigureWidgets.emit(false);\n }\n\n setWidgetsVisibilityToFalse() {\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\n ele.visibility = false;\n if (ele.subWidgets.length > 0) {\n ele.subWidgets.forEach((subElement: any) => {\n subElement.visibility = false;\n });\n }\n });\n // this.widgetsList.RISK.forEach((ele: any) => {\n // ele.visibility = false;\n // if (ele.subWidgets.length > 0) {\n // ele.subWidgets.forEach((subElement: any) => {\n // subElement.visibility = false;\n // });\n // }\n // });\n }\n}\n","@if (showWidgets) {\n <div class=\"configure-widgets vx-d-block\">\n <div\n class=\"configure-widgets-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"configure-widgets-title vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Widgets\n </div>\n <button\n class=\"configure-widgets-back vx-fs-14 vx-fw-500 vx-label-txt vx-m-0 vx-p-0 vx-d-inline-flex vx-align-center\"\n (click)=\"closeConfigureDashboard()\"\n >\n <i class=\"icons vx-fs-16\">&#xe91d;</i> Back\n </button>\n </div>\n <div class=\"configure-widgets-body\">\n <div class=\"configure-widgets-tab\">\n <ul>\n @if (showCompliance) {\n <li\n [class.active]=\"module === 'COMPLIANCE'\"\n (click)=\"module = 'COMPLIANCE'\"\n >\n <!-- <button>\n Compliance<span>{{ complianceWidgetsDisplayCount }}</span>\n </button> -->\n </li>\n }\n @if (showRisk) {\n <li [class.active]=\"module === 'RISK'\">\n <button (click)=\"module = 'RISK'\">\n Risks<span>{{ riskWidgetsDisplayCount }}</span>\n </button>\n </li>\n }\n </ul>\n </div>\n <div class=\"configure-widgets-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" placeholder=\"Search widgets\" [(ngModel)]=\"search\" />\n </div>\n @if ((widgetsList[module] | search : search).length !== 0) {\n <div\n class=\"configure-widgets-list vx-d-flex vx-flex-wrap\"\n >\n @for (widget of widgetsList[module] | search : search; track widget) {\n @if (widget?.visibility) {\n <div class=\"configure-widgets-item\">\n <label class=\"block\">\n <input\n type=\"checkbox\"\n [checked]=\"widget.value\"\n (change)=\"selectWidget($event.target.checked, module, widget.id)\"\n />\n <div class=\"check-icon\">\n <svg\n class=\"check\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"check-circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"check-circle\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n </div>\n <div class=\"configure-widgets-item-head\">\n <h4\n class=\"configure-widgets-item-title\"\n [innerHTML]=\"$safeNavigationMigration(widget?.title)\"\n ></h4>\n <p\n class=\"configure-widgets-item-description\"\n [innerHTML]=\"$safeNavigationMigration(widget?.description)\"\n ></p>\n @if (!widget.value) {\n <button\n class=\"configure-widgets-item-button add\"\n (click)=\"selectWidget(true, module, widget.id)\"\n >\n + ADD\n </button>\n }\n @if (widget.value) {\n <button\n class=\"configure-widgets-item-button remove\"\n (click)=\"selectWidget(false, module, widget.id)\"\n >\n - Remove\n </button>\n }\n </div>\n <div class=\"configure-widgets-item-body\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"$safeNavigationMigration(widget?.widgetImage)\"\n alt=\"\"\n width=\"790\"\n height=\"613\"\n />\n </div>\n @if (widget?.subWidgets?.length > 0) {\n <div\n class=\"floating-option vx-d-flex\"\n >\n @for (subWidget of widget.subWidgets; track subWidget) {\n @if (subWidget.visibility) {\n <app-cs-checkbox\n (ngValueChange)=\"\n selectWidget($event, module, widget.id, subWidget.id)\n \"\n [ngValue]=\"subWidget.value\"\n >{{ subWidget.title }}\n </app-cs-checkbox>\n }\n }\n </div>\n }\n </div>\n </label>\n </div>\n }\n }\n <!-- No Data Image -->\n </div>\n }\n @if ((widgetsList[module] | search : search).length === 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.configure_widget\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n <floating-bar\n (submitEvent)=\"onNextClick()\"\n (cancelEvent)=\"closeConfigureDashboard()\"\n [selectedData]=\"selectedWidgets\"\n (deleteEvent)=\"removeWidget($event)\"\n ></floating-bar>\n </div>\n</div>\n}\n","import { Component, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { Configurations } from '../../../configurations';\n\n@Component({\n selector: 'app-loader-inline',\n templateUrl: './loader-inline.component.html',\n styleUrls: ['./loader-inline.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class LoaderInlineComponent implements OnInit {\n vLoader: any;\n \n public env!: any;\n\n constructor(@Optional() config?: Configurations) {\n if (config) {\n this.env = config.envConfig;\n }\n this.vLoader = this.env.vLoader;\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"inline-loader\">\n <img [ngSrc]=\"vLoader\" alt=\"\" width=\"45\" height=\"45\" />\n <div class=\"loader-index\">\n <div class=\"loader-index-circle\"></div>\n </div>\n</div>\n","import { Component, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { SnackBarService } from '../snack-bar.service';\n\n@Component({\n selector: 'app-snack-bar',\n templateUrl: './snack-bar.component.html',\n styleUrls: ['./snack-bar.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class SnackBarComponent implements OnInit {\n show = false;\n message: string = '--';\n icon: string = '&#xe914;';\n type='alert'\n icons:any = {\n success:'&#xe93d;',\n warning:'&#xe914;',\n info:'&#xe932;',\n alert:'&#xe914;',\n error:'&#xeaae;'\n }\n constructor(private snackbarService: SnackBarService) {}\n\n ngOnInit(): void {\n this.snackbarService.snackbarSubject.subscribe((state) => {\n if(state.icon && Object.keys(this.icons).includes(state?.icon)){\n this.icon = this.icons[state.icon];\n this.type = state?.icon;\n }\n this.message = state.message;\n this.show = state.show;\n setTimeout(() => {\n this.show = false;\n }, 3000);\n });\n }\n close() {\n this.show = false;\n }\n ngOnDestroy() {\n }\n}\n","@if (show) {\n <div class=\"snackbar\">\n <div class=\"snackbar-inner\">\n <div class=\"snackbarText\">\n <!-- &#xe914; -->\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i>\n <span [innerHTML]=\"message\">{{ message }}</span>\n </div>\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\n </div>\n </div>\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[appScrollInView]',\n standalone: false\n})\nexport class ScrollInViewDirective implements OnChanges {\n@Input() appScrollInView = false;\n constructor(private el: ElementRef) {\n }\nngOnChanges(change:SimpleChanges){\n if(change?.appScrollInView && change?.appScrollInView?.currentValue === true){\n this.scroll();\n }\n}\n ngAfterViewInit() {\n // Otherwise Angular throws error: Expression has changed after it was checked.\n this.scroll();\n }\n\n scroll(){\n if(this.appScrollInView){\n window.setTimeout(() => {\n this.el.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center'});\n });\n }\n }\n\n}\n","import { Component, Input, OnInit, EventEmitter, Output, HostListener, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-smiley-dialog',\n templateUrl: './smiley-dialog.component.html',\n styleUrls: ['./smiley-dialog.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class SmileyDialogComponent implements OnInit {\n @Input() message!: string;\n @Input() autoClose!: boolean;\n @Input() actionButtons!: any[];\n @Output() action: EventEmitter<string> = new EventEmitter();\n @Output() closeSmiley: EventEmitter<any> = new EventEmitter();\n\n @HostListener('window:keyup', ['$event']) handleKeyboardEvent(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.smileyCloseEmitter({});\n }\n }\n constructor() {}\n\n ngOnInit(): void {\n if (this.autoClose) {\n setTimeout(() => {\n this.close();\n }, 8000);\n }\n }\n close() {\n this.closeSmiley.emit();\n }\n\n actionEmitter(event: any) {\n this.action.emit(event?.id);\n }\n\n smileyCloseEmitter(event: any) {\n this.closeSmiley.emit();\n }\n}\n","<!-- active -->\n<div class=\"smiley-popup active\">\n <button class=\"close\" (click)=\"smileyCloseEmitter($event)\">\n <i class=\"icons\">&#xe93f;</i>\n </button>\n <div class=\"smiley-container\">\n <div class=\"smiley\">\n <!-- active deactive -->\n <div class=\"smiley-circle active\">\n <div class=\"smiley-circle-inner\">\n <div class=\"eyes\">\n <div class=\"eye\"></div>\n <div class=\"eye\"></div>\n </div>\n <div class=\"mouth\"></div>\n </div>\n </div>\n </div>\n <h3>{{ message }}</h3>\n <div class=\"successSmilyButton\">\n @for (button of actionButtons; track button) {\n <button (click)=\"actionEmitter(button)\" [class]=\"button?.class\">\n {{ button?.buttonText }}\n </button>\n }\n </div>\n <!-- <div class=\"successSmilyButton\"> -->\n <!-- <button>White Button</button>\n <button class=\"blue-btn\">Blue Button</button> -->\n <!-- </div> -->\n</div>\n</div>\n","// list-utils.service.ts\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ListUtilsService {\n paginate<T>(items: T[], currentPage: number, pageSize: number): T[] {\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n return items.slice(startIndex, endIndex);\n }\n\n getPageNumbers(totalItems: number, pageSize: number): number[] {\n const totalPages = Math.ceil(totalItems / pageSize);\n const pages = [];\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n return pages;\n }\n}","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Configurations } from '../../../configurations';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProgramListApiService {\n env!: any;\n\n constructor(\n private http: HttpClient,\n @Optional() config?: Configurations\n ) {\n if (config) {\n this.env = config.envConfig;\n }\n }\n\n getProgramList(apiUrl: string): Observable<any> {\n return this.http.get<any>(`${this.env.complianceGet}${apiUrl}`);\n }\n}\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-table-loader',\n templateUrl: './table-loader.component.html',\n styleUrls: ['./table-loader.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class TableLoaderComponent implements OnInit {\n\n @Input() listSize = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"table\">\n <table class=\"table-loader\">\n <tbody>\n @for (data of listSize; track data) {\n <tr>\n <td class=\"serial\">\n <span class=\"serial\"></span>\n </td>\n <td class=\"name\" width=\"50%\">\n <span class=\"loader\"></span>\n </td>\n <td class=\"action\" width=\"50%\">\n <span class=\"loader\"></span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'checkSelectedItems',\n standalone: false\n})\nexport class CheckSelectedItemsPipe implements PipeTransform {\n transform(id: string, selectedItems: any) {\n if(selectedItems) {\n const selectedItem = selectedItems?.find(\n (item: any) => String(item?.id) === String(id)\n );\n if(selectedItem) {\n return true;\n }\n return false;\n }\n return false;\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchProgram',\n standalone: false\n})\nexport class SearchProgramPipe implements PipeTransform {\n transform(items: any[], ...args: any[]): any[] {\n let searchText = args[0];\n const searchKey = args[1];\n if (!items) {\n return [];\n }\n if (!searchText) {\n return items;\n }\n searchText = searchText?.toLowerCase();\n if (items?.length) {\n return items.filter((it: any) => {\n if (!searchKey) {\n return JSON.stringify(it)?.toLowerCase()?.includes(searchText);\n } else if (searchKey) {\n return (\n it[searchKey]?.toString()?.toLowerCase()?.indexOf(searchText) > -1\n );\n }\n });\n } else {\n return [];\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, TemplateRef, OnInit, OnChanges, SimpleChanges, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\nimport { ListItem } from '../interfaces/list-item.interface';\nimport { PROGRAM_TABLE_HEADERS, PAGINATION_OPTIONS, PROGRAM_TYPE_LIST, PROGRAM_NO_DATA } from '../constant';\nimport { ListUtilsService } from '../services/list-utils.service';\nimport { ProgramListApiService } from '../services/program-list-api.service';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ASSETS } from '../../constants/assets.constant';\n/**\n * A reusable component for displaying and managing a list of programs with filtering, pagination, and category viewing capabilities.\n * \n * Features:\n * - Program listing with pagination\n * - Search functionality with debounce\n * - Program type filtering\n * - Category viewing for selected programs\n * - Multi-select capability\n * \n * @template T Extends ListItem interface for type safety of list items\n */\n\ninterface Category {\n id: string;\n name: string;\n parent?: string;\n parentTree?: string[];\n [key: string]: any;\n}\n@Component({\n selector: 'app-program-list',\n templateUrl: './program-list.component.html',\n styleUrls: ['./program-list.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ProgramListComponent<T extends ListItem> implements OnInit, OnChanges, OnDestroy {\n /** Array of items to be displayed in the list */\n @Input() items: T[] = [];\n \n /** Object containing selected items, keyed by program ID */\n @Input() selectedItems: any | null = {};\n \n /** URL configuration object for API endpoints */\n @Input() url: any = {};\n\n /** Event emitted when an item is selected */\n @Output() itemSelected = new EventEmitter<T>();\n \n /** Event emitted when an item is deselected */\n @Output() itemDeselected = new EventEmitter<T>();\n \n /** Event emitted when the selection changes */\n @Output() itemsSelectedChange = new EventEmitter<T[]>();\n\n tableHeaders = PROGRAM_TABLE_HEADERS;\n currentPage = PAGINATION_OPTIONS.DEFAULT_CURRENT_PAGE;\n pageSize = PAGINATION_OPTIONS.PAGE_SIZE;\n totalPages = 0;\n searchTerm = '';\n paginatedItems: T[] = [];\n activeProgram: any | null = null;\n categoryList: any = {};\n programTypeList: any[] = PROGRAM_TYPE_LIST;\n selectedProgramType: any[] = [];\n loaderState: any = {\n programList: false,\n categoryList: false,\n };\n appliedProgramType: any[] = [];\n PROGRAM_NO_DATA: any = PROGRAM_NO_DATA;\n ASSETS: any = ASSETS;\n programCategoryList: any = {};\n\n\n /** Subject for handling debounced search */\n private searchSubject = new Subject<string>();\n \n /** Subject for cleanup subscriptions */\n private destroy$ = new Subject<void>();\n\n constructor(\n private listUtils: ListUtilsService,\n private programListApiService: ProgramListApiService\n ) {\n // Initialize debounced search\n this.searchSubject.pipe(\n debounceTime(300),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.performSearch();\n });\n }\n\n /** Initialize component by fetching program list */\n ngOnInit(): void {\n this.getProgramList();\n }\n\n /** Handle changes to inputs */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] || changes['selectedItems']) {\n this.paginateItems(this.items);\n this.focusFirstProgramWithSelections();\n }\n }\n\n private focusFirstProgramWithSelections(): void {\n if (!this.items?.length || !this.selectedItems) {\n return;\n }\n const programId = Object.keys(this.selectedItems).find(\n (key) => (this.selectedItems[key] ?? []).length > 0\n );\n if (!programId) {\n return;\n }\n const program = this.items.find(\n (item: any) => String(item?.id) === String(programId)\n );\n if (program && String(this.activeProgram?.id) !== String(program?.id)) {\n this.viewCategory(program);\n }\n }\n\n /** Fetch program list from API */\n getProgramList(): void {\n this.loaderState.programList = true;\n this.programListApiService.getProgramList(this.url.programList).subscribe((res: any) => {\n this.items = Array.isArray(res?.data?.programs) ? res.data.programs : [];\n this.loadData(this.items);\n this.loaderState.programList = false;\n });\n }\n\n /**\n * Load data and initialize pagination\n * @param data Array of items to load\n */\n loadData(data: any): void {\n this.goToPage(1, data);\n }\n\n /**\n * Handle item selection/deselection\n * @param event Selection event\n * @param item Item being selected/deselected\n */\n selectItem(event: any, item: any): void {\n const selectedObject = this.activeProgram.id.toString();\n if (event) {\n if(!this.selectedItems[selectedObject]) {\n this.selectedItems[selectedObject] = [];\n }\n this.selectedItems[selectedObject].push(item);\n } else {\n this.selectedItems[selectedObject] = this.selectedItems[\n this.activeProgram.id\n ].filter(\n (selected: any) => String(selected?.id) !== String(item?.id)\n );\n }\n this.itemsSelectedChange.emit(this.selectedItems);\n }\n\n /**\n * Deselect a specific item\n * @param item Item to deselect\n */\n deselectItem(item: T): void {\n this.itemsSelectedChange.emit(this.selectedItems);\n this.itemDeselected.emit(item);\n }\n\n /**\n * Check if an item is selected\n * @param item Item to check\n * @returns Boolean indicating if item is selected\n */\n isSelected(item: T): boolean {\n return false;\n }\n\n /**\n * Navigate to specific page\n * @param page Page number to navigate to\n * @param data Data to paginate\n */\n goToPage(page: number, data: any): void {\n this.currentPage = page;\n this.paginateItems(data);\n }\n\n /**\n * Get array of page numbers for pagination\n * @returns Array of page numbers\n */\n getPageNumbers(): number[] {\n return this.listUtils.getPageNumbers(this.items?.length ?? 0, this.pageSize);\n }\n\n /**\n * Paginate items and update view\n * @param data Data to paginate\n */\n paginateItems(data: any): void {\n const items = Array.isArray(data) ? data : [];\n this.totalPages = Math.ceil(items.length / this.pageSize) || 0;\n this.paginatedItems = items;\n }\n\n /**\n * View categories for a selected program\n * @param item Program to view categories for\n */\n viewCategory(item?: any): void {\n this.activeProgram = item;\n if(!item || this.categoryList[item.id]) return;\n this.loaderState.categoryList = true;\n this.checkProgramCategoryExists(item?.id);\n }\n\n checkProgramCategoryExists(id: string): void {\n if(this.programCategoryList[id]) {\n this.categoryList[id] = this.addParentTreeToCategories(this.programCategoryList[id]);\n this.loaderState.categoryList = false;\n return;\n }\n this.fetchProgramCategoryList(id);\n }\n\n fetchProgramCategoryList(id: string): void {\n const URL = `${this.url.categoryList}&id=${id}`;\n this.programListApiService.getProgramList(URL).subscribe((res: any) => {\n this.programCategoryList[id] = res?.data?.categories ?? [];\n this.categoryList[id] = this.addParentTreeToCategories(this.programCategoryList[id]);\n this.loaderState.categoryList = false;\n });\n }\n\n\n /**\n * Add parent tree information to categories\n * @param categories Array of categories\n * @returns Categories with parent tree information\n */\n addParentTreeToCategories(categories: any[]): any[] {\n if (!categories?.length) return [];\n\n const categoryMap = new Map(categories.map(category => [category.id, category]));\n\n const getParentTree = (category: Category): string[] => {\n const parentTree: string[] = [];\n let currentParent = category.parent;\n\n while (currentParent) {\n const parentCategory = categoryMap.get(currentParent);\n if (!parentCategory) break;\n \n parentTree.push(parentCategory.name);\n currentParent = parentCategory.parent;\n }\n\n return parentTree;\n };\n\n return categories.map(category => ({\n ...category,\n parentTree: getParentTree(category)\n }));\n\n }\n\n /**\n * Handle program type filter selection\n * @param event Selection event\n * @param item Program type being selected/deselected\n */\n selectFilter(event: any, item: any): void {\n if(event) {\n this.selectedProgramType.push(item.id);\n } else {\n this.selectedProgramType = this.selectedProgramType.filter((selected: any) => selected !== item.id);\n }\n }\n\n /** Reset all applied filters */\n resetFilter(): void {\n this.selectedProgramType = [];\n this.onFilterChange();\n }\n\n /** Apply selected filters to the program list */\n onFilterChange(): void {\n const items = Array.isArray(this.items) ? this.items : [];\n if (this.selectedProgramType.length > 0) {\n const filteredItems = items.filter((item: any) =>\n this.selectedProgramType.includes(item.type)\n );\n this.paginateItems(filteredItems);\n } else {\n this.paginateItems(items);\n }\n\n this.appliedProgramType = this.programTypeList.filter((item: any) => this.selectedProgramType.includes(item.id));\n this.checkCategoryAvailbility();\n \n }\n \n checkCategoryAvailbility(): void {\n const isSelectedProgramAvailable = this.paginatedItems.some((item: any) => item?.id === this.activeProgram?.id);\n if(!isSelectedProgramAvailable) {\n this.categoryList = [];\n this.activeProgram = null;\n }\n }\n\n /** Trigger debounced search */\n search(): void {\n this.searchSubject.next(this.searchTerm);\n }\n\n /** Perform search on items */\n private performSearch(): void {\n const items = Array.isArray(this.items) ? this.items : [];\n const filteredItems = items.filter((item: any) =>\n item?.name?.toLowerCase().includes(this.searchTerm?.toLowerCase())\n );\n this.currentPage = 1;\n this.paginateItems(filteredItems);\n this.checkCategoryAvailbility();\n }\n\n /** Cleanup subscriptions on component destruction */\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n closePopover(event: any): void {\n if(event) {\n this.selectedProgramType = this.appliedProgramType.map((item: any) => item?.id);\n }\n }\n}\n","<div class=\"dynamic-list-container\">\n <div class=\"vx-d-flex\">\n <div class=\"search-block vx-w-100\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" [(ngModel)]=\"searchTerm\" placeholder=\"Search...\" (keyup)=\"search()\" />\n </div>\n <div class=\"dynamic-list-filter\" appPopover (click)=\"programTypePopover.popover()\" placement=\"right\">\n @if (appliedProgramType.length === 0) {\n <div class=\"filter-text\">\n Select Program Type\n </div>\n } @else {\n @if (appliedProgramType.length) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\" [appTooltip]=\"$safeNavigationMigration(appliedProgramType[0]?.name)\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ appliedProgramType[0]?.name\n }}</span>\n @if (appliedProgramType.length > 1) {\n <button 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 placement=\"right\">\n +{{ appliedProgramType.length - 1 }}\n </button>\n }\n </div>\n }\n }\n <i class=\"icons filter-icon\"> &#xe9e8; </i>\n </div>\n </div>\n @if (\n paginatedItems?.length > 0 ||\n loaderState.programList || loaderState.categoryList) {\n <div class=\"dynamic-list-table\">\n <div class=\"dynamic-list-header vx-d-flex\">\n @for (header of tableHeaders; track header) {\n <div class=\"vx-d-flex vx-w-50 vx-pl-1\">\n <div class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\">\n #\n </div>\n <div class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\">\n {{ header }}\n </div>\n </div>\n }\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n @if (!loaderState.programList) {\n @for (\n item of paginatedItems | searchProgram : searchTerm : 'name'; track\n item; let i = $index) {\n <div class=\"list-row\" [class.selected]=\"activeProgram?.id === item.id\" (click)=\"viewCategory(item)\">\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div class=\"list-column name\" [class.with-count]=\"selectedItems[item.id]?.length > 0\">\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n @if (selectedItems[item.id]?.length > 0) {\n <div class=\"list-column count\">\n <div class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\">\n {{ selectedItems[item.id].length }}\n </div>\n <div 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\"\n }}\n SELECTED\n </div>\n </div>\n }\n <div class=\"list-column action\">\n <button class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\">\n <i class=\"icons\"> &#xe970; </i>\n </button>\n </div>\n </div>\n }\n } @else {\n <app-table-loader></app-table-loader>\n }\n </div>\n <div class=\"right-column\">\n @if (\n !loaderState.categoryList && !loaderState.programList) {\n @if (\n categoryList[activeProgram?.id]?.length > 0) {\n @for (\n item of categoryList[activeProgram?.id]; track\n item; let i = $index) {\n <div class=\"list-row vx-pl-2 vx-pr-2\">\n <app-cs-checkbox [value]=\"$safeNavigationMigration(item?.id)\" [ngValue]=\"\n item.id\n | checkSelectedItems : selectedItems[activeProgram?.id]\n \" (ngValueChange)=\"selectItem($event, item)\">\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 @if (item?.parentTree?.length) {\n <div\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 Within\n </div>\n }\n <div class=\"within-value vx-fs-11 vx-paragraph-txt\" [appTooltip]=\"$safeNavigationMigration(item?.parentTree?.join(' > '))\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\n {{ item?.parentTree?.join(\" > \") }}\n </div>\n </div>\n </span>\n </app-cs-checkbox>\n </div>\n }\n } @else {\n <div class=\"sub-no-data\">\n <app-no-data [noDataImage]=\"ASSETS.search_data\" [noDataText]=\"PROGRAM_NO_DATA.categoryList\"></app-no-data>\n </div>\n }\n } @else {\n <app-table-loader></app-table-loader>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"list-no-data-container\">\n <app-no-data [noDataImage]=\"ASSETS.search_data\" [noDataText]=\"\n searchTerm ? PROGRAM_NO_DATA.search : PROGRAM_NO_DATA.programList\n \"></app-no-data>\n </div>\n }\n</div>\n\n<app-popover #programTypePopover (closePopoverEvent)=\"closePopover($event)\" dontCloseonClick=\"true\">\n <div class=\"new-action-list\">\n <div class=\"program-type-text vx-fs-11 vx-fw-500 vx-gray-60 vx-lh-16 vx-p-2 vx-tt-uppercase\">\n Program Type:\n </div>\n <ul class=\"action-item\">\n @for (item of programTypeList; track item) {\n <li>\n <div class=\"chip-item\">\n <app-cs-checkbox [value]=\"item.id\" [ngValue]=\"selectedProgramType.includes(item.id)\"\n (ngValueChange)=\"selectFilter($event, item)\">\n {{ item?.name }}\n </app-cs-checkbox>\n </div>\n </li>\n }\n </ul>\n <div class=\"program-type-bottom vx-d-flex vx-align-center vx-justify-center vx-pt-3 vx-pb-3\">\n <button (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 RESET\n </button>\n <button (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 APPLY\n </button>\n </div>\n </div>\n</app-popover>","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-list-container',\n template: `\n <div class=\"wfe-list-container\">\n <div\n class=\"wfe-list-container-heading vx-d-flex vx-align-center vx-pl-4 vx-pr-4\"\n >\n <i class=\"icons arrow-back vx-mr-2\" (click)=\"onClose()\">&#xe91d;</i>\n <div class=\"vx-fs-14 vx-fw-500 vx-gray-70\">{{ heading }}</div>\n </div>\n <div class=\"wfe-list-container-body\">\n <ng-content select=\"[body]\"></ng-content>\n <div class=\"wfe-list-container-footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./list-container.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ListContainerComponent {\n @Input() heading: string = 'Select Programs & Program Categories';\n @Output() close = new EventEmitter<void>();\n\n onClose() {\n this.close.emit();\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n\n@Component({\n selector: 'app-information-block',\n templateUrl: './information-block.component.html',\n styleUrls: ['./information-block.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class InformationBlockComponent {\n\n constructor() {\n }\n\n\n}\n","<div class=\"information-block vx-mb-3\">\n <div class=\"vx-d-flex\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-2\">\n This dashboard will display those items that have been assigned to both the selected Responsibility Center(s) and\n the Program(s)\n </div>\n\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../dashboard-footer-config';\n\n@Component({\n selector: 'app-dashboard-footer',\n templateUrl: './dashboard-footer.component.html',\n styleUrls: ['./dashboard-footer.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class DashboardFooterComponent implements OnInit {\n @Output() cancelEvent = new EventEmitter();\n @Output() submitEvent = new EventEmitter();\n @Output() deleteEvent = new EventEmitter();\n @Input() footerDetails:DashboardFooterConfig={\n selectedData : [],\n nonRemovableList:[],\n displayElementKey: '',\n elementId: '',\n singularText: '',\n pluralText:'',\n showFrequency:false,\n frequencyText:'',\n isDisabled :false\n\n };\n\n @Input() userButtonColor = '';\n\n constructor() { }\n\n ngOnInit(): void {\n }\n cancelFloatingBar() {\n this.cancelEvent.emit();\n }\n submitFloatingBar() {\n this.submitEvent.emit(this.footerDetails.selectedData);\n }\n\n deleteSelected(element: any) {\n this.deleteEvent.emit(element);\n }\n\n\n}\n","<div class=\"dashboard-floating-bar-container\">\n <div class=\"dashboard-floating-bar vx-d-flex vx-align-center\" [class.vx-justify-end]=\"!(footerDetails.showFrequency || footerDetails.selectedData.length>0)\" [class.vx-justify-between]=\"footerDetails.showFrequency || footerDetails.selectedData.length>0\">\n @if (footerDetails.showFrequency) {\n <div class=\"left vx-d-flex vx-align-center\">\n <span class=\"value\" [innerHTML]=\"footerDetails.frequencyText\"></span>\n </div>\n }\n\n @if (footerDetails.selectedData.length>0) {\n <div class=\"left vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n @if (!footerDetails.nonRemovableList.includes(footerDetails.selectedData[0][footerDetails.elementId])) {\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"deleteSelected(footerDetails.selectedData[0])\">&#xe9ae;</i>\n }\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"footerDetails.selectedData[0][footerDetails.displayElementKey]\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{footerDetails.selectedData[0][footerDetails.displayElementKey]}}</span>\n @if (footerDetails.selectedData.length > 1) {\n <button class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\" [ngClass]=\"userButtonColor\" appPopover (click)=\"countPopup.popover()\" placement=\"left\">+{{footerDetails.selectedData.length - 1}}</button>\n }\n </div>\n @if (footerDetails?.selectedData?.length>1) {\n @if (footerDetails?.selectedData?.slice(1).length === 1) {\n <span class=\"value vx-ml-2\">{{footerDetails.singularText}}</span>\n }\n @if (footerDetails?.selectedData?.slice(1).length > 1) {\n <span class=\"value vx-ml-2\">{{footerDetails.pluralText}}</span>\n }\n }\n <app-popover #countPopup [dontCloseonClick]=\"true\">\n <div class=\"dashboard-floating-bar-action-list\">\n <ul class=\"action-item\">\n @for (element of footerDetails.selectedData.slice(1); track element; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"element[footerDetails.displayElementKey]\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n @if (!footerDetails.nonRemovableList.includes(element[footerDetails.elementId])) {\n <i class=\"icons cross-icon\" (click)=\"deleteSelected(element)\">&#xe90d;</i>\n } {{element[footerDetails.displayElementKey]}}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel vx-bg-white vx-txt-red vx-fw-500 vx-tt-uppercase\" (click)=\"cancelFloatingBar()\">Cancel</button>\n <!-- <button class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase\" (click)=\"submitFloatingBar()\">Update</button> -->\n <button [class.disabled]=\"footerDetails.isDisabled\" class=\"vx-bg-blue vx-txt-white vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-center\" (click)=\"submitFloatingBar()\">Next <i class=\"icons vx-ml-1\">&#xe91e;</i></button>\n </div>\n </div>\n </div>","import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { PaginationService } from '../../create-dashboard-container/services/pagination.service';\n\n@Component({\n selector: 'app-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\n/**\n * Adds place holder for Pagination on the lists\n */\nexport class PaginationComponent implements OnInit, OnChanges {\n start = 1;\n totalCount!: number;\n paginationArray: any[] = [];\n currentPage!: number;\n @Input() totalPages = 1;\n @Input() limit = 1;\n @Input() totalList = 1;\n @Output() paginationFilter = new EventEmitter();\n\n constructor(private paginationService: PaginationService) {\n }\n ngOnChanges() {\n this.currentPage = Number(this.paginationService.currentPage);\n this.start = Number(this.paginationService.currentPage);\n this.rebuildPagination(this.currentPage, this.totalPages);\n }\n\n ngOnInit() {\n this.currentPage = Number(this.paginationService.currentPage);\n this.start = Number(this.paginationService.currentPage);\n this.rebuildPagination(this.currentPage, this.totalPages);\n this.paginationService.currentValues.subscribe(event => {\n if (event && (this.paginationService.currentPage !== this.currentPage)) {\n this.currentPage = this.paginationService.currentPage;\n }\n });\n }\n\n /* In this function we will recreate the pagination structure as per current page and\n total number of pages */\n\n rebuildPagination(currentPage: number, totalCount: number) {\n this.paginationArray = [];\n this.totalCount = totalCount;\n this.currentPage = currentPage;\n if (this.paginationService.currentPage !== this.currentPage) {\n this.paginationService.currentPage = this.currentPage;\n this.paginationFilter.emit(true);\n }\n\n // If there are only 6 pages or less in total, just display all pages without \"...\"\n if (totalCount <= 6) {\n for (let i = 1; i <= totalCount; i++) {\n this.paginationArray.push(i);\n }\n }\n // ELSE display with ...\n else {\n\n // Always print first page button\n this.paginationArray.push(1);\n\n // Print \"...\" if currentPage is > 3\n if (currentPage > 3) {\n // this.paginationArray.push(2);\n this.paginationArray.push('...');\n\n }\n // special case where last page is selected...\n // Without this special case, only 2 buttons would be shown after ... if you were on last page\n if (currentPage === totalCount) {\n this.paginationArray.push(currentPage - 2);\n }\n\n // Print previous number button if currentPage > 2\n if (currentPage > 2) {\n this.paginationArray.push(currentPage - 1);\n }\n\n // Print current page number button as long as it not the first or last page\n if (currentPage !== 1 && currentPage !== totalCount) {\n this.paginationArray.push(currentPage);\n\n }\n\n // print next page number button if currentPage < lastPage - 1\n if (currentPage < totalCount - 1) {\n this.paginationArray.push(currentPage + 1);\n\n }\n\n // special case where first page is selected...\n // Without this special case, only 2 buttons would be shown before ... if you were on first page\n if (currentPage === 1) {\n this.paginationArray.push(currentPage + 2);\n\n }\n\n // print \"...\" if currentPage is < lastPage -2\n if (currentPage < totalCount - 2) {\n this.paginationArray.push('...');\n\n // HTML += \"...\";\n }\n\n // Always print last page button if there is more than 1 page\n if (totalCount > 1) {\n this.paginationArray.push(totalCount);\n\n }\n }\n\n }\n/* In this function we will set current page according to the action performed on browser\n ex: prev next buttons clicks or selecting a particular page */\n\n changePage(prev: string, page: number, next: string) {\n if (prev) {\n if (this.start > 1) {\n this.start--;\n // We have changed the start page, total rebuild the pagination\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n if (next) {\n if (this.start < this.totalCount) {\n this.start++;\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n if (page) {\n this.start = page;\n this.rebuildPagination(this.start, this.totalCount);\n }\n }\n}\n","<div class=\"pagination-box\">\n <ul>\n <li><button [class.disabled]=\"currentPage==1\" (click)=\"changePage('prev',0,'')\"><i class=\"icons vx-fs-10\">&#xe96b;</i></button></li>\n @for (page of paginationArray; track page) {\n <li>\n <button [disabled]=\"page=='...'\" [class.disable]=\"page=='...'\" [class.active]=\"currentPage==page\" (click)=\"changePage('',page,'')\">\n @if (page=='...') {\n <i class=\"icons\">&#xe911;</i>\n }{{page!='...'?page : ''}}\n </button>\n </li>\n }\n <li><button [class.disabled]=\"currentPage==totalCount\" (click)=\"changePage('',0,'next')\"><i class=\"icons vx-fs-10\">&#xe970;</i></button></li>\n </ul>\n </div>","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { CreateDashboardService } from '../services/create-dashboard.service';\nimport { PaginationService } from '../services/pagination.service';\nimport { UserListConfiguration } from './user-list.config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-user-list',\n templateUrl: './user-list.component.html',\n styleUrls: ['./user-list.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class UserListComponent implements OnInit {\n @Output() closeUserList = new EventEmitter();\n @Output() saveSelectedUsers = new EventEmitter();\n @Input() selectionType = '';\n @Input() listDetails: UserListConfiguration = {\n displayElementKey: '',\n displayGroupKey: '',\n groupIdkey: '',\n elementIdKey: '',\n tooltipKey: '',\n selectedUsersList: [],\n selectedGroupList: [],\n nonRemovableUsersList: [],\n };\n\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: '',\n elementId: '',\n singularText: 'User selected',\n pluralText: 'Users selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n vLoader = false;\n vLoaderGroups = false;\n ASSETS = ASSETS;\n\n @Input() totalPages = 1;\n @Input() limit = 1;\n @Input() totalList = 1;\n @Input() feature: any;\n @Input() totalgroupscount: any;\n searchList = [];\n searchValue = '';\n searchFilter = '';\n selectedIds: any[] = [];\n selectedList: any[] = [];\n groupdata: any[] = [];\n\n animation = true;\n totalgroups: any;\n total_group_pages: any;\n selectedGroupIds: any[] = [];\n groupsEnabled: any;\n selectedgroupList: any[] = [];\n currentPage = 1;\n constructor(\n public paginationService: PaginationService,\n private dashboardService: CreateDashboardService\n ) {\n this.paginationService.reset();\n this.getOrganizationUsersCount('');\n }\n\n ngOnChanges() {}\n\n ngOnInit(): void {\n this.groupsEnabled = true;\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n if (this.listDetails.selectedUsersList.length > 0) {\n this.selectedList = [...new Set(this.listDetails.selectedUsersList)];\n const selectedData = [...new Set(this.listDetails.selectedUsersList)];\n this.footerDetails.selectedData = selectedData;\n this.footerDetails.nonRemovableList =\n this.listDetails.nonRemovableUsersList;\n this.selectedIds = selectedData.map((ele: any) => {\n if (ele[this.listDetails.elementIdKey]) {\n return ele[this.listDetails.elementIdKey];\n }\n });\n }\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n });\n this.footerDetails.displayElementKey = this.listDetails.displayElementKey;\n this.footerDetails.elementId = this.listDetails.elementIdKey;\n if (this.groupsEnabled) {\n this.getGroupsList({});\n }\n if (this.listDetails.selectedGroupList.length > 0) {\n this.selectedgroupList = [...new Set(this.listDetails.selectedGroupList)];\n const selectedData = [...new Set(this.listDetails.selectedGroupList)];\n this.footerDetails.selectedData = selectedData;\n this.footerDetails.nonRemovableList =\n this.listDetails.nonRemovableUsersList;\n this.selectedGroupIds = selectedData.map((ele: any) => {\n if (ele[this.listDetails.groupIdkey]) {\n return ele[this.listDetails.groupIdkey];\n }\n });\n }\n }\n\n cancelChanges() {}\n removeElement(event: any) {}\n submitChanges() {}\n selectAll(event: any) {\n if (event) {\n this.searchList.forEach((searchElement) => {\n if (\n !this.selectedIds.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n this.selectedList.push(searchElement);\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\n this.footerDetails.selectedData = this.selectedList;\n }\n });\n } else {\n this.searchList.forEach((searchElement) => {\n if (\n !this.listDetails.nonRemovableUsersList.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n const index = this.selectedList.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n searchElement[this.listDetails.elementIdKey]\n );\n this.selectedList.splice(index, 1);\n const filteredList = [...this.selectedList];\n this.footerDetails.selectedData = this.selectedList;\n\n const idIndex = this.selectedIds.findIndex(\n (ele) => ele === searchElement[this.listDetails.elementIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n }\n\n /**\n * Selects all admins and managers at once by making api call.\n * @param event consists boolean value to select of unselect.\n */\n selectAllUsers(event: any) {\n if (event) {\n this.vLoader = true;\n this.dashboardService.getAllUsers().subscribe((res: any) => {\n if (res.length > 1) {\n res.forEach((searchElement: any) => {\n if (\n !this.selectedIds.includes(\n searchElement[this.listDetails.elementIdKey]\n )\n ) {\n this.selectedList.push(searchElement);\n this.selectedIds.push(\n searchElement[this.listDetails.elementIdKey]\n );\n this.footerDetails.selectedData = this.selectedList;\n }\n });\n }\n this.vLoader = false;\n });\n } else {\n const selectedData = [...new Set(this.selectedList)];\n const index = selectedData.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n this.listDetails.nonRemovableUsersList[0]\n );\n if (index != -1) {\n const owner = Object.assign(selectedData[index]);\n\n this.selectedList = [];\n this.selectedIds = [];\n this.footerDetails.selectedData = [];\n\n this.selectedList.push(owner);\n this.selectedIds.push(owner.member_id);\n this.footerDetails.selectedData = this.selectedList;\n } else {\n this.selectedList = [];\n this.selectedIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n }\n\n selectAllGroups(event: any) {\n let params = new HttpParams();\n params = params.append('fetch_all', 1);\n if (event) {\n this.vLoaderGroups = true;\n this.dashboardService.getAllGroups(params).subscribe((res: any) => {\n if (res.data.length > 1) {\n res.data.forEach((searchElement: any) => {\n if (\n !this.selectedGroupIds.includes(\n searchElement[this.listDetails.groupIdkey]\n )\n ) {\n this.selectedgroupList.push(searchElement);\n this.selectedGroupIds.push(\n searchElement[this.listDetails.groupIdkey]\n );\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n });\n }\n this.vLoaderGroups = false;\n });\n } else {\n this.selectedgroupList = [];\n this.selectedGroupIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n\n selectAllsearchgroups(event: any) {\n if (event) {\n this.groupdata.forEach((searchElement) => {\n if (\n !this.selectedGroupIds.includes(\n searchElement[this.listDetails.groupIdkey]\n )\n ) {\n this.selectedgroupList.push(searchElement);\n this.selectedGroupIds.push(\n searchElement[this.listDetails.groupIdkey]\n );\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n });\n } else {\n this.selectedgroupList = [];\n this.selectedGroupIds = [];\n this.footerDetails.selectedData = [];\n }\n }\n\n /**\n * Selects checked item from the list.\n * In case of user's list calculates number of admins/manages to set visibility(either to all admins/ admins and managers)\n * @param data is the selected element\n */\n selectElement(data: any) {\n if (this.selectedIds.includes(data[this.listDetails.elementIdKey])) {\n if (\n !this.listDetails.nonRemovableUsersList.includes(\n data[this.listDetails.elementIdKey]\n )\n ) {\n const index = this.selectedList.findIndex(\n (ele) =>\n ele[this.listDetails.elementIdKey] ===\n data[this.listDetails.elementIdKey]\n );\n this.selectedList.splice(index, 1);\n this.footerDetails.selectedData = this.selectedList;\n\n const idIndex = this.selectedIds.findIndex(\n (ele) => ele === data[this.listDetails.elementIdKey]\n );\n\n this.selectedIds.splice(idIndex, 1);\n }\n } else {\n this.selectedList.push(data);\n this.selectedIds.push(data[this.listDetails.elementIdKey]);\n this.footerDetails.selectedData = this.selectedList;\n }\n }\n\n selectGroupElement(data: any) {\n if (this.selectedGroupIds.includes(data[this.listDetails.groupIdkey])) {\n const index = this.selectedgroupList.findIndex(\n (ele: { [x: string]: any }) =>\n ele[this.listDetails.groupIdkey] === data[this.listDetails.groupIdkey]\n );\n this.selectedgroupList.splice(index, 1);\n this.footerDetails.selectedData = this.selectedgroupList;\n const idIndex = this.selectedGroupIds.findIndex(\n (ele) => ele === data[this.listDetails.groupIdkey]\n );\n this.selectedGroupIds.splice(idIndex, 1);\n } else {\n this.selectedgroupList.push(data);\n this.selectedGroupIds.push(data[this.listDetails.groupIdkey]);\n this.footerDetails.selectedData = this.selectedgroupList;\n }\n }\n /**\n * It is used to set and search value incase of backend driven list to differentiate search list and original list\n */\n setSearchValue() {\n if (this.paginationService.searchValue !== this.searchValue) {\n this.paginationService.currentPage = 1;\n this.paginationService.searchValue = this.searchValue;\n this.paginationFilter(true);\n }\n }\n\n /**\n * it is used check select all condition incase of backend driven search\n */\n checkSelectAll() {\n if (this.searchList.length > 0) {\n const data: boolean = this.searchList.every((ele) =>\n this.selectedIds.includes(ele[this.listDetails.elementIdKey])\n );\n return data;\n } else {\n return false;\n }\n }\n\n /**\n * it is used check select all groups condition incase of backend driven search\n */\n checkSelectAllGroups() {\n if (this.groupdata.length > 0) {\n const data: boolean = this.groupdata.every((ele) =>\n this.selectedGroupIds.includes(ele[this.listDetails.groupIdkey])\n );\n return data;\n } else {\n return false;\n }\n }\n\n /**\n * Filter list user's list based on pagination by making api call\n * @param event specifies a boolean value to call api\n */\n paginationFilter(event: any) {\n if (!event) return;\n if (this.groupsEnabled) {\n this.vLoader = true;\n if (this.currentTab == 'USER') {\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n this.getOrganizationUsersCount({\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n } else {\n this.getGroupsList({\n page:\n this.paginationService.currentPage === 1\n ? ''\n : this.paginationService.currentPage,\n groupName: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n } else {\n this.vLoader = true;\n this.getUsersList({\n // p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n this.getOrganizationUsersCount({\n p: this.paginationService.currentPage ?? 1,\n type: '',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n }\n /**\n * Gets user's list by making api call\n * @param url contains userlist filter details\n */\n getUsersList(url: any) {\n this.vLoader = true;\n\n this.dashboardService\n .getOrganizationUsers(url ? url : '')\n .subscribe((res) => {\n this.searchList = res;\n this.vLoader = false;\n });\n }\n getGroupsList(event: any) {\n this.vLoaderGroups = true;\n let params = new HttpParams();\n if (event.hasOwnProperty('groupName')) {\n params = params.append('groupName', event['groupName']);\n }\n if (event.hasOwnProperty('page') && !this.searchValue) {\n params = params.append('page', event['page']);\n }\n if (this.totalgroupscount > 30 && !this.searchValue) {\n params = params.append('limit', 30);\n }\n this.dashboardService.getAllGroups(params).subscribe((res: any) => {\n this.groupdata = res?.data;\n this.vLoaderGroups = false;\n this.totalgroups = res.total_items;\n this.total_group_pages = res.total_pages;\n });\n }\n\n /**\n * on click on next button from the list, it emits the selected list of elements to parent component.\n */\n onSubmit() {\n // const data = [...new Set(this.selectedList)];\n // data.push(this.selectedgroupList)\n this.saveSelectedUsers.emit({\n users: this.selectedList,\n groups: this.selectedgroupList,\n });\n this.paginationService.reset();\n }\n currentTab = 'USER';\n switchTab(tab: string) {\n this.paginationService.reset();\n this.getOrganizationUsersCount('');\n this.currentTab = tab;\n if (this.currentTab == 'USER') {\n this.searchValue = '';\n this.getUsersList({ p: this.paginationService.currentPage });\n } else {\n this.searchValue = '';\n this.getGroupsList({});\n }\n }\n\n getOrganizationUsersCount(Url: any) {\n this.dashboardService.getOrganizationUsersCount(Url).subscribe((res) => {\n this.totalList = res.total_members;\n if (res.total_members && res.limit_per_page > 1) {\n this.totalPages = res.create_page;\n } else {\n this.totalPages = 1;\n }\n });\n }\n}\n","<div class=\"user-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"user-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Who can view this dashboard?\n </div>\n </div>\n <div class=\"user-list-body\">\n @if (groupsEnabled) {\n <div\n class=\"user-list-tab vx-d-flex vx-align-center vx-mb-2\"\n >\n <button\n (click)=\"switchTab('USER')\"\n class=\"tab-btn vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-4\"\n [class.active]=\"currentTab === 'USER'\"\n >\n USERS\n <span\n class=\"vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\"\n >{{ totalList }}</span\n >\n </button>\n <button\n id=\"switchtab\"\n (click)=\"switchTab('GROUP')\"\n class=\"tab-btn vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-lh-4\"\n [class.active]=\"currentTab === 'GROUP'\"\n >\n USER GROUPS\n <span\n id=\"groupscount\"\n class=\"vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\"\n >{{ totalgroups }}</span\n >\n </button>\n </div>\n }\n\n <div class=\"user-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchValue\"\n placeholder=\"{{\n currentTab === 'USER' ? 'Search User(s)' : 'Search User Group(s)'\n }} who can view this dashboard\"\n (keyup.enter)=\"setSearchValue()\"\n (focusout)=\"setSearchValue()\"\n />\n </div>\n\n @if (currentTab === 'USER') {\n @if (totalPages > 1) {\n <div\n class=\"vx-d-flex vx-align-center vx-justify-end\"\n >\n @if (totalPages > 1 && searchList.length > 1) {\n <div\n class=\"pagination-box\"\n >\n <app-pagination\n (paginationFilter)=\"paginationFilter($event)\"\n [limit]=\"limit\"\n [totalPages]=\"totalPages\"\n [totalList]=\"totalList\"\n ></app-pagination>\n </div>\n }\n </div>\n }\n @if (searchList.length !== 0) {\n <div class=\"user-list-body-top\">\n @if (!searchValue && searchList.length > 1) {\n <app-cs-checkbox\n [ngValue]=\"selectedList.length == totalList\"\n (ngValueChange)=\"selectAllUsers($event)\"\n >\n <strong>{{\n selectedList.length == totalList ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n }\n @if (searchValue && searchList.length > 1) {\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll()\"\n (ngValueChange)=\"selectAll($event)\"\n >\n <strong>{{\n selectedList.length == totalList ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n }\n </div>\n }\n <div class=\"list-of-user\">\n <div\n class=\"selection-list vx-mb-4\"\n [class.with-group]=\"groupsEnabled\"\n [class.with-noData]=\"searchList.length == 0\"\n [class.with-pagination]=\"totalPages > 1 && searchList.length > 1\"\n >\n @if (searchList.length !== 0) {\n <ul>\n @for (data of searchList; track data; let i = $index) {\n <li>\n <app-cs-checkbox\n [disabled]=\"\n listDetails.nonRemovableUsersList.includes(\n data[listDetails.elementIdKey]\n )\n \"\n [ngValue]=\"\n selectedList.length > 0 &&\n selectedIds.includes(data[listDetails.elementIdKey])\n \"\n (ngValueChange)=\"selectElement(data)\"\n [arTooltip]=\"data[listDetails.tooltipKey]\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >{{ data[listDetails.displayElementKey] }}</app-cs-checkbox\n >\n </li>\n }\n </ul>\n }\n @if (!vLoader && searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n }\n </div>\n @if (vLoader) {\n <app-loader-inline></app-loader-inline>\n }\n </div>\n }\n\n @if (currentTab === 'GROUP' && groupsEnabled) {\n @if (groupdata; as groups) {\n @if (true) {\n <div class=\"vx-d-flex vx-align-center vx-justify-end\">\n @if (total_group_pages > 1) {\n <div class=\"pagination-box\">\n <app-pagination\n (paginationFilter)=\"paginationFilter($event)\"\n [limit]=\"limit\"\n [totalPages]=\"total_group_pages\"\n [totalList]=\"totalgroups\"\n ></app-pagination>\n </div>\n }\n </div>\n }\n @if (true) {\n <div\n class=\"user-list-mid vx-mb-4\"\n [class.with-pagination]=\"total_group_pages > 1\"\n >\n @if (groups?.length > 0) {\n <div class=\"user-list-select vx-mb-4\">\n @if (!searchValue && groups.length > 1) {\n <app-cs-checkbox\n [disabled]=\"false\"\n [ngValue]=\"selectedgroupList.length == totalgroups\"\n (ngValueChange)=\"selectAllGroups($event)\"\n >\n <div\n class=\"user-name vx-fs-12 vx-fw-600 vx-label-txt vx-tt-none\"\n >\n {{\n selectedgroupList.length == totalgroups\n ? \"Deselect All\"\n : \"Select All\"\n }}\n </div>\n </app-cs-checkbox>\n }\n @if (searchValue && groups.length > 1) {\n <app-cs-checkbox\n [disabled]=\"false\"\n [ngValue]=\"checkSelectAllGroups()\"\n (ngValueChange)=\"selectAllsearchgroups($event)\"\n >\n <div\n class=\"user-name vx-fs-12 vx-fw-600 vx-label-txt vx-tt-none\"\n >\n {{\n selectedgroupList.length == totalgroups\n ? \"Deselect All\"\n : \"Select All\"\n }}\n </div>\n </app-cs-checkbox>\n }\n </div>\n <div class=\"user-list-item\">\n <ul class=\"vx-m-0 vx-p-0 vx-d-flex\">\n @for (data of groups; track data; let i = $index) {\n <li\n class=\"vx-mb-4\"\n >\n <app-cs-checkbox\n (ngValueChange)=\"selectGroupElement(data)\"\n [disabled]=\"false\"\n [ngValue]=\"\n selectedgroupList.length > 0 &&\n selectedGroupIds.includes(data[listDetails.groupIdkey])\n \"\n >\n <div class=\"user-name vx-d-flex vx-align-center\">\n <div\n class=\"group-name\"\n [arTooltip]=\"data[listDetails.displayGroupKey]\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >\n {{ data[listDetails.displayGroupKey] }}\n </div>\n <span\n id=\"usersofgroup\"\n class=\"counter vx-fs-9 vx-fw-600 vx-pl-1 vx-pr-1 vx-lh-3 vx-tt-uppercase vx-ml-2\"\n >{{ data[\"associatedUsers\"].length }}\n {{\n data[\"associatedUsers\"].length > 1\n ? \"USERS\"\n : \"USER\"\n }}</span\n >\n </div>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (groups?.length == 0 && !vLoaderGroups) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n (searchValue?.length > 0\n ? 'No match found.'\n : 'No data to display.'\n )\n \"\n ></app-no-data>\n }\n @if (vLoaderGroups) {\n <app-loader-inline></app-loader-inline>\n }\n </div>\n }\n }\n }\n\n @if (groupsEnabled) {\n <div class=\"user-floating-bar\">\n <div\n class=\"user-floating-bar-container vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"left vx-d-flex vx-align-center\">\n @if (selectedList?.length) {\n <button\n class=\"counter vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 vx-m-0 vx-pl-1 vx-pr-1\"\n appPopover\n (click)=\"userCount.popover()\"\n placement=\"left\"\n >\n {{ selectedList?.length }}\n </button>\n }\n <div class=\"name vx-fs-12 vx-paragraph-txt vx-ml-2\">\n @if (selectedList?.length === 1) {\n <span\n >User\n {{ selectedgroupList?.length > 0 ? \" & \" : \"selected\" }}</span\n >\n }\n @if (selectedList?.length > 1) {\n <span\n >Users\n {{ selectedgroupList?.length > 0 ? \" & \" : \"are selected\" }}</span\n >\n }\n </div>\n @if (selectedgroupList?.length) {\n <button\n class=\"counter group vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 vx-ml-2 vx-pl-1 vx-pr-1\"\n appPopover\n (click)=\"groupCount.popover()\"\n placement=\"left\"\n >\n {{ selectedgroupList?.length }}\n </button>\n }\n <div class=\"name vx-fs-12 vx-paragraph-txt vx-ml-2\">\n @if (selectedgroupList?.length === 1) {\n <span\n >User Group selected</span\n >\n }\n @if (selectedgroupList?.length > 1) {\n <span\n >User Groups selected</span\n >\n }\n </div>\n <app-popover #userCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (element of selectedList; track element) {\n <li>\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [arTooltip]=\"element.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n @if (\n !listDetails.nonRemovableUsersList.includes(\n $safeNavigationMigration(element?.member_id)\n )\n ) {\n <i\n class=\"icons cross-icon\"\n (click)=\"selectElement(element)\"\n >&#xe90d;</i\n >\n }\n {{ element.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n <app-popover #groupCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (element of selectedgroupList; track element) {\n <li>\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [arTooltip]=\"$safeNavigationMigration(element?.group_name)\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n <i\n class=\"icons cross-icon\"\n (click)=\"selectGroupElement(element)\"\n >&#xe90d;</i\n >\n {{ element?.group_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n <div class=\"right vx-d-flex vx-align-center\">\n <button class=\"cancel\" (click)=\"closeUserList.emit()\">Cancel</button>\n <button [disabled]=\"false\" (click)=\"onSubmit()\">\n Next <i class=\"icons\">&#xe91e;</i>\n </button>\n </div>\n </div>\n </div>\n }\n\n @if (!groupsEnabled) {\n <div class=\"user-list-footer\">\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeUserList.emit(); paginationService.reset()\"\n (deleteEvent)=\"selectElement($event)\"\n (submitEvent)=\"onSubmit()\"\n [userButtonColor]=\"'greenBg'\"\n ></app-dashboard-footer>\n </div>\n }\n </div>\n </div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filter',\n standalone: false\n})\nexport class FilterPipe implements PipeTransform {\n\n transform(items: any[], searchText: string): any[] {\n if (!items) {\n return [];\n }\n if (!searchText) {\n return items;\n }\n searchText = searchText.toLowerCase();\n if(items?.length){\n return items.filter((it: any) => {\n return JSON.stringify(it).toLowerCase().includes(searchText);\n });\n }else{\n return [];\n }\n }\n\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-responsibility-center',\n templateUrl: './responsibility-center.component.html',\n styleUrls: ['./responsibility-center.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class ResponsibilityCenterComponent implements OnInit, OnChanges {\n @Output() saveSelectedList = new EventEmitter();\n @Output() closeRcList = new EventEmitter();\n @Input() responsibilityCentersList = [];\n @Input() selectedResponsibilityCenters = [];\n @Input() rcIdKey = '';\n @Input() radioSelection = false;\n ASSETS = ASSETS;\n\n selectedIds: any[] = [];\n selectedIdLookup: Record<string, boolean> = {};\n isAllSelected = false;\n animation = false;\n search = '';\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'item_name',\n elementId: 'item_id',\n singularText: 'Responsibility Center selected',\n pluralText: 'Responsibility Centers selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n constructor() {}\n\n ngOnChanges(): void {\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\n this.selectedIds = this.selectedResponsibilityCenters.map((ele: any) => {\n if (ele[this.rcIdKey]) {\n return ele[this.rcIdKey];\n }\n });\n this.updateSelectionState();\n }\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n }\n\n isSelected(id: any): boolean {\n return id != null && id !== '' && this.selectedIdLookup[id] === true;\n }\n\n selectRc(rc: any, mode: any) {\n if (this.radioSelection) {\n if (mode) {\n this.selectedIds = [];\n this.selectedIds.push(rc);\n }\n this.setList();\n return;\n }\n\n const parentRc = this.findRcById(rc);\n const idsToToggle = [rc, ...this.getDescendantIds(parentRc)];\n if (mode) {\n this.addSelectedIds(idsToToggle);\n } else {\n this.removeSelectedIds(idsToToggle);\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n this.selectRc(event[this.rcIdKey], false);\n }\n\n selectAll(mode: any) {\n if (mode) {\n const list = [...this.responsibilityCentersList];\n this.selectedIds = [];\n list.forEach((element) => {\n this.selectedIds.push(element[this.rcIdKey]);\n });\n } else {\n this.selectedIds = [];\n }\n this.setList();\n }\n\n setList() {\n this.updateSelectionState();\n const data: any = [];\n const rcList = [...new Set(this.responsibilityCentersList)];\n rcList.forEach((element: any) => {\n if (this.isSelected(element[this.rcIdKey])) {\n data.push(element);\n }\n });\n this.selectedResponsibilityCenters = data;\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\n }\n\n private updateSelectionState(): void {\n const lookup: Record<string, boolean> = {};\n this.selectedIds.forEach((id) => {\n if (id != null && id !== '') {\n lookup[id] = true;\n }\n });\n this.selectedIdLookup = lookup;\n const list = this.responsibilityCentersList;\n this.isAllSelected =\n list.length > 0 &&\n list.every((rc: any) => lookup[rc[this.rcIdKey]] === true);\n }\n\n private findRcById(id: any) {\n return this.responsibilityCentersList.find(\n (ele: any) =>\n ele?.[this.rcIdKey] == id ||\n ele?.item_id == id ||\n ele?.rc_id == id ||\n ele?.rcid == id ||\n ele?.id == id\n );\n }\n\n private getNodeId(rc: any) {\n if (!rc) {\n return null;\n }\n return rc[this.rcIdKey] ?? rc.item_id ?? rc.rc_id ?? rc.rcid ?? rc.id;\n }\n\n private resolveSelectedId(id: any) {\n const match = this.findRcById(id);\n return match ? this.getNodeId(match) : id;\n }\n\n private addSelectedIds(ids: any[]) {\n ids.forEach((id) => {\n const resolved = this.resolveSelectedId(id);\n if (resolved != null && resolved !== '' && !this.isSelected(resolved)) {\n this.selectedIds.push(resolved);\n this.selectedIdLookup[resolved] = true;\n }\n });\n }\n\n private removeSelectedIds(ids: any[]) {\n ids.forEach((id) => {\n const resolved = this.resolveSelectedId(id);\n const index = this.selectedIds.findIndex(\n (selected) => selected == id || selected == resolved\n );\n if (index !== -1) {\n this.selectedIds.splice(index, 1);\n }\n });\n }\n\n /** Direct and nested child RC ids for a selected parent. */\n private getDescendantIds(parentRc: any): any[] {\n if (!parentRc) {\n return [];\n }\n\n const parentId = this.getNodeId(parentRc);\n const collected = new Set<string>();\n const visitedNodes = new Set<string>();\n const ids: any[] = [];\n\n const add = (id: any) => {\n if (id == null || id === '' || id == parentId) {\n return;\n }\n const key = String(id);\n if (collected.has(key)) {\n return;\n }\n collected.add(key);\n ids.push(id);\n };\n\n const walkNode = (node: any) => {\n if (!node) {\n return;\n }\n const nodeId = this.getNodeId(node);\n if (nodeId != null && nodeId !== '') {\n const visitKey = String(nodeId);\n if (visitedNodes.has(visitKey)) {\n return;\n }\n visitedNodes.add(visitKey);\n }\n (node.item_child_ids ?? []).forEach((childId: any) => add(childId));\n [...(node.children ?? []), ...(node.items ?? [])].forEach((child: any) => {\n add(this.getNodeId(child));\n walkNode(child);\n });\n };\n walkNode(parentRc);\n\n (parentRc.item_child_ids ?? []).forEach((childId: any) => {\n const childRc = this.findRcById(childId);\n if (childRc && childRc !== parentRc) {\n walkNode(childRc);\n }\n });\n\n const parentPath = Array.isArray(parentRc.rc_name) ? parentRc.rc_name : [];\n this.responsibilityCentersList.forEach((rc: any) => {\n const id = this.getNodeId(rc);\n if (id == parentId) {\n return;\n }\n const ancestorIds = rc?.parent_rc_ids ?? [];\n if (ancestorIds.some((ancestorId: any) => ancestorId == parentId)) {\n add(id);\n return;\n }\n const path = Array.isArray(rc.rc_name) ? rc.rc_name : [];\n if (\n parentPath.length &&\n path.length > parentPath.length &&\n parentPath.every((name: any, i: number) => path[i] === name)\n ) {\n add(id);\n }\n });\n\n return ids;\n }\n\n save() {\n this.saveSelectedList.emit(this.selectedIds);\n }\n\n closeResponsibilityCenterList() {\n this.closeRcList.emit();\n }\n}\n","<div class=\"responsibility-center\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"responsibility-center-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Select Responsibility Center(s)\n </div>\n </div>\n <div class=\"responsibility-center-body\">\n <div class=\"responsibility-center-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"search\"\n placeholder=\"Search Responsibility Center\"\n />\n </div>\n\n @if (responsibilityCentersList | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"isAllSelected\"\n (ngValueChange)=\"selectAll($event)\"\n >\n <strong>{{\n isAllSelected ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <ul class=\"responsibility-center-list\">\n @for (rc of searchList; track rc; let i = $index) {\n <li>\n <app-cs-checkbox\n [ngValue]=\"!!selectedIdLookup[rc.item_id]\"\n (ngValueChange)=\"selectRc(rc.item_id, $event)\"\n >\n <ul class=\"responsibility-center-list-name\">\n @for (entity of rc.rc_name; track entity; let j = $index) {\n <li\n [arTooltip]=\"entity\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n @if (j !== 0) {\n <i class=\"icons\">&#xe910;</i>\n }\n {{ entity }}\n <!-- <span class=\"name\">{{entity}}</span> -->\n </li>\n }\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <div class=\"responsibility-center-footer\">\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeRcList.emit()\"\n (deleteEvent)=\"selectRc($event.item_id, false)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { EditorConfig } from '@vcomply/editor';\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\nimport { CreateDashboardService } from './services/create-dashboard.service';\nimport { PaginationService } from './services/pagination.service';\nimport { UserListConfiguration } from './user-list/user-list.config';\nimport { CreateDashboardForm } from './create-dashboard-config';\nimport { SnackBarService } from '../ui-kit/snack-bar/snack-bar.service';\n\nimport dayjs from 'dayjs';\nimport { forkJoin, Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { PopoverService } from '../ui-kit/popover/popover.service';\nimport { TextCountPipe } from './pipes/text-count.pipe';\nimport { ASSETS } from './constants/assets.constant';\nimport { PROGRAM_LIST_API } from './program-list/constant';\nimport { ListItem } from './program-list/interfaces/list-item.interface';\nimport {\n buildProgramSelectionMapFromCategories,\n extractCategoryIdsFromDashboard,\n extractProgramIdsFromDashboard,\n extractRcIdsFromDashboard,\n filterActiveWidgets,\n flattenProgramSelectionMap,\n getEditDashboardCdid,\n getSelectedProgramsMap,\n hasProgramSelectionInMap,\n normalizeIdArray,\n normalizeProgramCategories,\n normalizeProgramSelectionMap,\n parseSailsProgramList,\n} from './utils/dashboard-edit.utils';\nimport { formatCalendarDateInTimeZone } from './utils/user-timezone-date.util';\n\n@Component({\n selector: 'app-create-dashboard',\n templateUrl: './create-dashboard.component.html',\n styleUrls: ['./create-dashboard.component.less'],\n providers: [TextCountPipe],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CreateDashboardComponent implements OnInit, OnChanges {\n @Input() feature: any;\n activeSelector = '';\n disabled = false;\n @Input() mode = 'CREATE';\n @Input() dashboardId = '';\n @Input() dashboardDetails: any = null; // for edit dashboard\n /** API dashboard object from createDashboard response (used when navigating after create). */\n private createdDashboard: any = null;\n /** True after CREATE API succeeds; widget save should emit `created` for app redirect. */\n private redirectAfterCreate = false;\n @Output() close = new EventEmitter();\n @Input() createdBy = 0;\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\n animation = true;\n @Input() configureWidget = false;\n ASSETS: any = ASSETS;\n\n totalPages = 1;\n totalList = 1;\n usersList: any[] = [];\n vLoader = true;\n userListLoaded = false;\n groupListLoaded = false;\n rcListLoaded = false;\n hideToDate = false;\n listDetails: UserListConfiguration = {\n selectedUsersList: [],\n selectedGroupList: [],\n nonRemovableUsersList: [],\n displayElementKey: 'member_name',\n displayGroupKey: 'group_name',\n groupIdkey: 'group_id',\n elementIdKey: 'member_id',\n tooltipKey: 'member_email',\n };\n dashboardDescription: EditorConfig = {\n placeholder: 'Description (Max limit: 250 characters)',\n mode: 'prime',\n id: 'description',\n };\n responsibilityCategoriesTree: any = {\n regulations: {\n list: [],\n selectedList: [],\n },\n standards: {\n list: [],\n selectedList: [],\n },\n internalControls: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n allComplianceCategories: any[] = [];\n allRiskCategories: any[] = [];\n showRiskCategory = false;\n showCriteria = true;\n\n dashboardForm: CreateDashboardForm = {\n dashboardName: '',\n dashboardDescriptionText: '',\n selectedViewers: [],\n selectedGroup: [],\n selectedFromDate: undefined,\n selectedToDate: undefined,\n selectedResponsibilityCenters: [],\n selectedResponsibilityCategories: [],\n selectedRiskCategories: [],\n displayCriteria: 'or',\n configureWidget: [],\n frequencyDetails: '',\n selectedFrequencyType: '',\n selectedFrequencies: [0],\n frequencyMessage: '',\n frequencyDate: 1,\n };\n\n openConfigureWidgets = false;\n selectedWidgets: any = [];\n displayedWidgets: any = [];\n\n responsibilityCentersList: any[] = [];\n datePickerOverlay = false;\n dayNames = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n ];\n monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n quarters = [\n 'January, April, July, October',\n 'February, May, August, November',\n 'March, June, September, December',\n ];\n\n showRiskWidgets = false;\n showComplianceWidgets = false;\n isManageRisk: boolean = false;\n\n riskCategoryList = {\n strategic: {\n list: [],\n selectedList: [],\n },\n operational: {\n list: [],\n selectedList: [],\n },\n compliance: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n programListUrl: any = PROGRAM_LIST_API;\n\n private readonly datePickerBaseConfig: IDatePickerConfig = {\n openOnClick: false,\n openOnFocus: false,\n hideInputContainer: true,\n hideOnOutsideClick: true,\n dayBtnCssClassCallback: (day) =>\n day.format('DD-MM-YYYY') === this.getCurrentDate()\n ? 'dp-user-current-day'\n : '',\n };\n\n /** organization/?mode=users timezone; JWT timezone is the fallback. */\n private userTimeZone = '';\n\n fromDatePickerConfig: IDatePickerConfig = {\n ...this.datePickerBaseConfig,\n };\n\n toDatePickerConfig: IDatePickerConfig = {\n ...this.datePickerBaseConfig,\n };\n\n isSmiley!: boolean;\n smileyMessage: string = '';\n groupList: any;\n groupsEnabled: boolean = true;\n totalgroups: any;\n openedDatePicker: string = '';\n selectedPrograms: any = {};\n allProgamSelected: any[] = [];\n private pendingEditRcIds: number[] = [];\n private pendingEditRcEntries: any[] = [];\n private editFormHydrated = false;\n /** Tracks in-flight EDIT hydration HTTP calls; loader stays on until zero. */\n private editHydrationCount = 0;\n\n constructor(\n private createDashboardService: CreateDashboardService,\n private paginationService: PaginationService,\n private cdr: ChangeDetectorRef,\n private snackBar: SnackBarService,\n public popoverService: PopoverService,\n private textCount: TextCountPipe\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.createdBy) {\n this.listDetails.nonRemovableUsersList.push(this.createdBy);\n }\n if (\n this.mode === 'EDIT' &&\n changes['dashboardDetails']?.currentValue &&\n this.rcListLoaded &&\n this.userListLoaded &&\n this.groupListLoaded\n ) {\n this.hydrateEditForm();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(\n event: KeyboardEvent\n ) {\n this.close.emit({ mode: 'discard' });\n this.isSmiley = false;\n }\n\n ngOnInit(): void {\n this.applyFromDateMin();\n this.animateContainer();\n this.getRCList();\n this.checkWhetherAllListsLoaded();\n this.getUsersList('');\n this.getGroupList();\n this.getUserInfo();\n }\n \n animateContainer() {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n }\n\n getUserInfo(){\n this.createDashboardService.getUserInformation().subscribe(\n (res: any) => {\n if (res?.timezone) {\n this.userTimeZone = res.timezone;\n this.applyFromDateMin();\n }\n this.setPermission(res?.roleActions);\n const quickLink = res.quick_link;\n if (quickLink.risk) {\n this.showRiskCategory = true;\n } else {\n this.showRiskCategory = false;\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n /**\n * Displays the listing pages the left side of policy form to set and edit the dropdown fields values\n * @param type holds name of particular list is to be displayed\n * @param event contains boolean value to display the list or not\n */\n activateSelector(type: any, event: boolean) {\n if (type == 'frequency' || this.activeSelector == 'frequency') {\n this.showCriteria = false;\n setTimeout(() => {\n this.showCriteria = true;\n }, 1);\n }\n if (type === 'responsibilityCategories' && event) {\n this.syncProgramSelectionMapFromForm();\n this.ensureProgramSelectionMapForList();\n }\n this.activeSelector = event ? type : '';\n }\n\n onProgramSelectionChange(items: ListItem[]): void {\n this.selectedPrograms = items;\n this.allProgamSelected = ([] as any).concat(...Object.values(items));\n }\n\n selectCategory(): void {\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(this.allProgamSelected);\n this.applyResponsibilityCategoryWidgetFilters();\n this.activateSelector('', false);\n }\n\n checkDefaultProgramOnRemove(event: any) {\n this.allProgamSelected = this.allProgamSelected.filter(\n (program: any) => program?.id !== event?.id\n );\n this.removeProgram(event);\n\n }\n\n removeProgram(program: any): void {\n const keys = Object.keys(this.selectedPrograms);\n keys.forEach((key: any) => {\n const index = this.selectedPrograms[key].findIndex(\n (item: any) => item?.id === program?.id\n );\n if (index !== -1) {\n this.selectedPrograms[key].splice(index, 1);\n }\n });\n }\n\n private syncProgramSelectionMapFromForm(): void {\n if (hasProgramSelectionInMap(this.selectedPrograms)) {\n return;\n }\n const flat =\n this.allProgamSelected?.length > 0\n ? this.allProgamSelected\n : this.dashboardForm.selectedResponsibilityCategories ?? [];\n const fromForm = buildProgramSelectionMapFromCategories(\n flat,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(fromForm)) {\n this.applyProgramSelectionMap(fromForm);\n }\n }\n\n private hydrateProgramsFromDashboardData(data: any): boolean {\n if (!data) {\n return false;\n }\n const programsRaw = data?.programs ?? data?.programId ?? data?.programIds;\n if (\n Array.isArray(programsRaw) &&\n programsRaw.length &&\n typeof programsRaw[0] === 'object'\n ) {\n const chips = programsRaw.map((p: any) => ({\n id: p?.id ?? p?.programId,\n category_id: p?.id ?? p?.programId,\n name: p?.name ?? p?.item_name,\n item_name: p?.name ?? p?.item_name,\n programId: p?.id ?? p?.programId,\n }));\n this.allProgamSelected = normalizeProgramCategories(chips);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map = buildProgramSelectionMapFromCategories(\n chips,\n this.allComplianceCategories\n );\n if (Object.keys(map).length) {\n this.selectedPrograms = map;\n }\n return true;\n }\n\n const program = data?.program ?? {};\n const selectedMap = getSelectedProgramsMap(data);\n if (selectedMap && hasProgramSelectionInMap(selectedMap)) {\n this.applyProgramSelectionMap(selectedMap);\n return true;\n }\n\n const allPrograms = program?.all_programs;\n if (Array.isArray(allPrograms) && allPrograms.length) {\n if (typeof allPrograms[0] === 'object') {\n const map = buildProgramSelectionMapFromCategories(\n allPrograms,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(map)) {\n this.applyProgramSelectionMap(map);\n return true;\n }\n this.allProgamSelected = normalizeProgramCategories(allPrograms);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n return this.allProgamSelected.length > 0;\n }\n }\n\n const categoryIds = extractCategoryIdsFromDashboard(data);\n if (categoryIds.length) {\n const stubs = categoryIds.map((id) => ({\n category_id: id,\n id,\n item_name: `Category ${id}`,\n }));\n this.allProgamSelected = normalizeProgramCategories(stubs);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n return true;\n }\n return false;\n }\n\n private applyFlatProgramCategories(categories: any[]): void {\n if (!categories?.length) {\n return;\n }\n this.allProgamSelected = normalizeProgramCategories(categories);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map = buildProgramSelectionMapFromCategories(\n categories,\n this.allComplianceCategories\n );\n if (hasProgramSelectionInMap(map)) {\n this.selectedPrograms = map;\n }\n this.cdr.detectChanges();\n }\n\n private applyResponsibilityCategoryWidgetFilters(): void {\n if (this.dashboardForm.selectedResponsibilityCenters.length !== 0) {\n return;\n }\n if (this.dashboardForm.selectedResponsibilityCategories.length === 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length === 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n\n openFromDatePicker(event?: Event) {\n event?.stopPropagation();\n this.toDatePicker?.api?.close();\n this.openedDatePicker = 'FROM_DATE';\n this.applyFromDateMin();\n this.fromDatePicker?.api?.open();\n this.datePickerOverlay = true;\n }\n\n openToDatePicker(event?: Event) {\n event?.stopPropagation();\n this.fromDatePicker?.api?.close();\n this.openedDatePicker = 'TO_DATE';\n this.toDatePicker?.api?.open();\n this.datePickerOverlay = true;\n }\n\n closeFromDatePicker() {\n this.fromDatePicker?.api?.close();\n if (!this.dashboardForm.selectedFromDate) {\n this.dashboardForm.selectedToDate = undefined;\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n this.fromDatePicker.api.close();\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n return;\n }\n let minToDate = this.setToDate(this.dashboardForm.selectedFromDate);\n this.toDatePickerConfig = { ...this.datePickerBaseConfig, min: minToDate };\n\n const fromDate = new Date(minToDate.split('-').reverse().join('-'));\n const toDate = new Date(this.dashboardForm.selectedToDate);\n const inValidDate = fromDate >= toDate ? true : false;\n if (inValidDate) {\n this.dashboardForm.selectedToDate = undefined;\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n }\n\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n\n closeToDatePicker() {\n this.toDatePicker?.api?.close();\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n\n animateImage() {\n const circleImage = document.getElementsByClassName('image');\n }\n\n saveFrequency(eventValues: any) {\n this.dashboardForm.selectedFrequencyType = eventValues.frequencyType;\n this.dashboardForm.selectedFrequencies = eventValues.frequencies;\n this.dashboardForm.frequencyMessage = eventValues.frequencyString;\n this.dashboardForm.frequencyDate = eventValues.selectedDate;\n this.activateSelector('', false);\n }\n\n getCurrentDate() {\n const timeZone =\n this.userTimeZone || this.createDashboardService.getTokenTimezone();\n return formatCalendarDateInTimeZone(new Date(), timeZone);\n }\n\n /** Disables dates before today in the VComply user timezone. */\n private applyFromDateMin() {\n const config = {\n ...this.datePickerBaseConfig,\n min: this.getCurrentDate(),\n };\n this.fromDatePickerConfig = config;\n if (this.fromDatePicker) {\n this.fromDatePicker.config = config;\n }\n }\n\n setToDate(data: string) {\n let today = new Date(data);\n return dayjs(today).format('DD-MM-YYYY');\n }\n\n getFromDate(data: string) {\n let today = new Date(data);\n return (\n today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear()\n );\n }\n\n /**\n * @param data - the date you want to format\n * @returns Date string in YYYY-MM-DD format, e.g. 2026-05-19\n */\n getDateFormate(data: string) {\n return dayjs(data).format('YYYY-MM-DD');\n }\n\n\n configureDashboard() {\n let fieldsStatus = this.validateDashboard();\n if (!fieldsStatus) {\n return;\n }\n this.vLoader = true;\n this.onSubmitDashboard();\n \n }\n\n\n\n /**\n * Get users list by making api call and pre selects all admins by adding to viewers\n * @param url contains query params for organization users api\n */\n getUsersList(url: any) {\n this.createDashboardService.getAllUsers().subscribe((res: any) => {\n this.usersList = res;\n this.userListLoaded = true;\n\n if (this.mode === 'EDIT') {\n } else {\n this.dashboardForm.selectedViewers = this.setList(\n this.usersList,\n [this.createdBy],\n 'member_id'\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.vLoader = false;\n }\n });\n }\n\n getGroupList() {\n this.createDashboardService.getAllGroups().subscribe((res: any) => {\n this.totalgroups = res.total_items;\n this.groupList = res.data;\n this.groupListLoaded = true;\n if (this.mode === 'EDIT') {\n } else {\n this.dashboardForm.selectedGroup = this.setList(\n this.groupList,\n [this.createdBy],\n 'group_id'\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n this.vLoader = false;\n }\n });\n }\n\n\n /**\n * It is to ensure whether all required lists on Policy from is loaded from the api call or not\n */\n checkWhetherAllListsLoaded() {\n // Category trees are no longer eagerly loaded here; these flags were never flipped and blocked EDIT indefinitely.\n if (this.rcListLoaded && this.userListLoaded && this.groupListLoaded) {\n if (this.mode === 'EDIT') {\n this.hydrateEditForm();\n } else {\n this.vLoader = false;\n }\n } else {\n setTimeout(() => {\n this.checkWhetherAllListsLoaded();\n }, 300);\n }\n }\n\n setSelectedWidgets(data: any) {\n if (this.mode === 'CREATE') {\n const widgetsArray: any = [];\n data.forEach((element: any) => {\n let obj: any = {};\n obj.module_name = element.module;\n obj.widget_name = element.title;\n obj.widget_code = element.id;\n obj.sub_widgets = [];\n obj.state = 'ACTIVE';\n if (element.subWidgets.length > 0) {\n element.subWidgets.forEach((subWidget: any) => {\n let subWidgetObject: any = {};\n subWidgetObject.widget_name = subWidget.title;\n subWidgetObject.widget_code = subWidget.id;\n subWidgetObject.state = subWidget.value ? 'ACTIVE' : 'INACTIVE';\n obj.sub_widgets.push(Object.assign(subWidgetObject));\n });\n }\n widgetsArray.push(obj);\n });\n\n this.dashboardForm.configureWidget = widgetsArray;\n } else if (this.mode === 'EDIT') {\n const widgetsArray: any = [];\n\n data.forEach((element: any) => {\n if (\n !this.extractWidgetCodes(this.dashboardForm.configureWidget).includes(\n element.id\n )\n ) {\n let obj: any = {};\n obj.module_name = element.module;\n obj._id = '';\n obj.widget_name = element.title;\n obj.widget_code = element.id;\n obj.sub_widgets = [];\n obj.state = 'ACTIVE';\n if (element.subWidgets.length > 0) {\n element.subWidgets.forEach((subWidget: any) => {\n let subWidgetObject: any = {};\n subWidgetObject._id = '';\n subWidgetObject.widget_name = subWidget.title;\n subWidgetObject.widget_code = subWidget.id;\n subWidgetObject.state = subWidget.value ? 'ACTIVE' : 'INACTIVE';\n obj.sub_widgets.push(subWidgetObject);\n });\n }\n this.dashboardForm.configureWidget.push(obj);\n } else {\n const index = this.selectedWidgets.findIndex(\n (ele: any) => ele.widget_code == element.id\n );\n if (index != -1) {\n this.selectedWidgets[index].state = 'ACTIVE';\n if (this.selectedWidgets[index].sub_widgets.length > 0) {\n this.selectedWidgets[index].sub_widgets.forEach(\n (subWidgetData: any) => {\n const elementIndex = element.subWidgets.findIndex(\n (ele: any) => ele.id == subWidgetData.widget_code\n );\n if (elementIndex != -1) {\n subWidgetData.state = element.subWidgets[elementIndex].value\n ? 'ACTIVE'\n : 'INACTIVE';\n }\n }\n );\n }\n }\n }\n });\n this.dashboardForm.configureWidget.forEach((savedWidget: any) => {\n const index = data.findIndex(\n (dataElement: any) => dataElement.id == savedWidget.widget_code\n );\n if (index == -1) {\n savedWidget.state = 'INACTIVE';\n if (savedWidget.sub_widgets.length > 0) {\n savedWidget.sub_widgets.forEach((saveSubWidget: any) => {\n saveSubWidget.state = 'INACTIVE';\n });\n }\n }\n });\n }\n this.selectedWidgets = data;\n this.openConfigureWidgets = false;\n this.submitDashboard();\n }\n\n extractWidgetCodes(widgets: any[]) {\n const widgetCodes: any[] = [];\n\n widgets?.forEach((widget: any) => {\n if (widget?.widget_code) {\n widgetCodes.push(widget?.widget_code);\n }\n });\n\n return widgetCodes;\n }\n\n closeConfigureWidgets(event: boolean) {\n this.openConfigureWidgets = event;\n }\n\n /**\n * Filter list user's list based on pagination by making api call\n * @param event specifies a boolean value to call api\n */\n paginationFilter(event: any) {\n if (event) {\n this.getUsersList({\n p:\n this.paginationService.currentPage === 1\n ? ''\n : this.paginationService.currentPage,\n type: 'all_except_executive',\n q: !this.paginationService.searchValue\n ? ''\n : this.paginationService.searchValue,\n });\n }\n }\n\n getRCList() {\n this.createDashboardService.getResponsibilityCenterList().subscribe(\n (res: any) => {\n this.responsibilityCentersList = this.normalizeRcList(res);\n this.rcListLoaded = true;\n this.applyPendingResponsibilityCenters();\n if (this.mode === 'EDIT') {\n const ids = this.responsibilityCentersList.filter((rc: any) => this.dashboardDetails?.responsibilityCenters.includes(rc.rcid)).map((rc: any) => rc.item_id);\n this.saveSelectedList('rc', ids);\n }\n },\n (err: any) => {\n console.error(err);\n this.rcListLoaded = true;\n this.applyPendingResponsibilityCenters();\n }\n );\n }\n /**\n * #### Description\n *\n * Returns the unique array of object based on unique key\n * @param array\n * @param key\n * @returns\n */\n uniqueByProp(array: any, key: string) {\n return Array.from(\n array\n .reduce(\n (acc: any, item: any) => (\n item && item[key] && acc.set(item[key], item), acc\n ),\n new Map()\n )\n .values()\n );\n }\n\n saveSelectedList(type: string, selectedItems: any) {\n switch (type) {\n case 'rc':\n this.dashboardForm.selectedResponsibilityCenters = this.setList(\n this.responsibilityCentersList,\n selectedItems,\n 'item_id'\n );\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n case 'whoCanView':\n this.dashboardForm.selectedViewers = this.uniqueByProp(\n selectedItems?.users,\n 'member_id'\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.dashboardForm.selectedGroup = this.uniqueByProp(\n selectedItems?.groups,\n 'group_id'\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n break;\n case 'responsibilityCategories':\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(\n Array.isArray(selectedItems)\n ? selectedItems\n : flattenProgramSelectionMap(selectedItems ?? {})\n );\n this.applyResponsibilityCategoryWidgetFilters();\n break;\n case 'riskCategory':\n this.dashboardForm.selectedRiskCategories = selectedItems;\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n }\n this.activateSelector('', false);\n }\n\n remove(type: any, event: any, removeIndex?: any) {\n switch (type) {\n case 'rc':\n const rcIndex =\n this.dashboardForm.selectedResponsibilityCenters.findIndex(\n (rc: any) =>\n rc.rc_id == event.rc_id ||\n rc.item_id == event.item_id ||\n rc.rcid == event.rcid\n );\n if (rcIndex !== -1) {\n const parentRc: any =\n this.dashboardForm.selectedResponsibilityCenters[rcIndex];\n this.dashboardForm.selectedResponsibilityCenters.splice(rcIndex, 1);\n\n if (parentRc?.item_child_ids?.length > 0) {\n parentRc.item_child_ids.forEach((childElement: any) => {\n const childRemoveIndex =\n this.dashboardForm.selectedResponsibilityCenters.findIndex(\n (removeElement: any) =>\n removeElement.rc_id == childElement ||\n removeElement.item_id == childElement ||\n removeElement.rcid == childElement\n );\n if (childRemoveIndex !== -1) {\n this.dashboardForm.selectedResponsibilityCenters.splice(\n childRemoveIndex,\n 1\n );\n }\n });\n }\n }\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n\n case 'whoCanView':\n const reviewerIndex = this.dashboardForm.selectedViewers.findIndex(\n (viewer: any) => viewer.member_id == event.member_id\n );\n this.dashboardForm.selectedViewers.splice(reviewerIndex, 1);\n break;\n case 'whoCanViewGroup':\n const groups = this.dashboardForm.selectedGroup.findIndex(\n (ele: any) => ele?.group_id == event?.group_id\n );\n this.dashboardForm.selectedGroup.splice(groups, 1);\n break;\n case 'responsibilityCategories':\n this.checkDefaultProgramOnRemove(event);\n break;\n\n case 'riskCategory':\n const riskCategoryIndex =\n this.dashboardForm.selectedRiskCategories.findIndex(\n (riskCategory: any) => riskCategory.category_id == event.category_id\n );\n if (riskCategoryIndex !== -1) {\n const parent: any =\n this.dashboardForm.selectedRiskCategories[riskCategoryIndex];\n this.dashboardForm.selectedRiskCategories.splice(\n riskCategoryIndex,\n 1\n );\n if (parent?.child_cat_ids?.length > 0) {\n parent.child_cat_ids.forEach((childElement: any) => {\n const removeIndex =\n this.dashboardForm.selectedRiskCategories.findIndex(\n (removeElement: any) =>\n removeElement.category_id == childElement\n );\n this.dashboardForm.selectedRiskCategories.splice(removeIndex, 1);\n });\n }\n }\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\n if (this.dashboardForm.selectedResponsibilityCenters.length == 0) {\n if (this.dashboardForm.selectedResponsibilityCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'COMPLIANCE'\n );\n } else if (this.dashboardForm.selectedRiskCategories.length == 0) {\n this.selectedWidgets = this.selectedWidgets.filter(\n (element: any) => element.module_name != 'RISK'\n );\n }\n }\n break;\n }\n }\n\n setList(list: any[], ids: any[], key: string) {\n return this.setListByIds(list, ids, [key]);\n }\n\n private setListByIds(list: any[], ids: any[], keys: string[]) {\n const data: any[] = [];\n if (!Array.isArray(list) || !Array.isArray(ids)) {\n return data;\n }\n\n ids.forEach((id: any) => {\n const targetId =id;\n for (const key of keys) {\n const index = list.findIndex(\n (listElement: any) =>\n listElement?.[key] === targetId\n );\n\n if (index !== -1) {\n\n data.push(list[index]);\n break;\n }\n }\n });\n return data;\n }\n\n private flattenRcTree(nodes: any): any[] {\n const flat: any[] = [];\n const walk = (arr: any[]) => {\n (arr ?? []).forEach((node) => {\n if (!node || typeof node !== 'object') {\n return;\n }\n flat.push(node);\n if (Array.isArray(node.children)) {\n walk(node.children);\n }\n if (Array.isArray(node.items)) {\n walk(node.items);\n }\n });\n };\n\n if (Array.isArray(nodes)) {\n walk(nodes);\n return flat.length ? flat : nodes;\n }\n if (Array.isArray(nodes?.data)) {\n walk(nodes.data);\n return flat;\n }\n return [];\n }\n\n private getRcNodeId(rc: any): any {\n return rc?.item_id ?? rc?.rc_id ?? rc?.rcid ?? rc?.id;\n }\n\n private collectNestedChildIds(node: any): any[] {\n const ids: any[] = [];\n const seen = new Set<string>();\n const walk = (n: any) => {\n [...(n?.children ?? []), ...(n?.items ?? [])].forEach((child: any) => {\n if (!child || typeof child !== 'object') {\n return;\n }\n const id = this.getRcNodeId(child);\n const key = String(id);\n if (id != null && id !== '' && !seen.has(key)) {\n seen.add(key);\n ids.push(id);\n }\n walk(child);\n });\n };\n walk(node);\n return ids;\n }\n\n private isNestedRc(parent: any, candidate: any): boolean {\n const parentId = parent?.item_id;\n const candidateId = candidate?.item_id;\n if (parentId == null || candidateId == null || parentId == candidateId) {\n return false;\n }\n\n const ancestorIds = [\n ...(candidate?.parent_rc_ids ?? []),\n candidate?.parentId,\n ...(Array.isArray(candidate?.parent) || candidate?.parent == null\n ? []\n : [candidate.parent]),\n ];\n if (ancestorIds.some((id) => id == parentId)) {\n return true;\n }\n\n const parentPath = Array.isArray(parent?.rc_name) ? parent.rc_name : [];\n const candidatePath = Array.isArray(candidate?.rc_name)\n ? candidate.rc_name\n : [];\n return (\n parentPath.length > 0 &&\n candidatePath.length > parentPath.length &&\n parentPath.every((name: any, i: number) => candidatePath[i] === name)\n );\n }\n\n private resolveAllDescendantIds(parent: any, list: any[]): any[] {\n const parentId = parent?.item_id;\n const rawIds = new Set<any>();\n const add = (id: any) => {\n if (id != null && id !== '' && id != parentId) {\n rawIds.add(id);\n }\n };\n\n (parent?.item_child_ids ?? []).forEach(add);\n this.collectNestedChildIds(parent).forEach(add);\n (list ?? []).forEach((rc: any) => {\n if (this.isNestedRc(parent, rc)) {\n add(rc.item_id);\n }\n });\n\n const resolved: any[] = [];\n const seen = new Set<string>();\n rawIds.forEach((id) => {\n const match = (list ?? []).find(\n (rc: any) =>\n rc?.item_id == id ||\n rc?.rc_id == id ||\n rc?.rcid == id ||\n rc?.id == id\n );\n const resolvedId = match?.item_id ?? id;\n const key = String(resolvedId);\n if (!seen.has(key) && resolvedId != parentId) {\n seen.add(key);\n resolved.push(resolvedId);\n }\n });\n return resolved;\n }\n\n private normalizeRcList(list: any): any[] {\n const items = this.flattenRcTree(list);\n const normalized = items.map((rc: any) => ({\n ...rc,\n rcid: rc?.rcid ?? rc?.rc_id ?? rc?.item_id ?? rc?.id,\n item_id: rc?.item_id ?? rc?.rc_id ?? rc?.rcid ?? rc?.id,\n item_name:\n rc?.item_name ??\n rc?.item_name_string ??\n (Array.isArray(rc?.rc_name) ? rc.rc_name.join(' < ') : rc?.rc_name) ??\n '',\n }));\n\n return normalized.map((rc: any) => ({\n ...rc,\n item_child_ids: this.resolveAllDescendantIds(rc, normalized),\n }));\n }\n\n private resolveRcFromTree(tree: any[], ids: number[]): any[] {\n if (!ids.length || !tree.length) {\n return [];\n }\n const selected: any[] = [];\n const seen = new Set<number>();\n\n ids.forEach((id) => {\n const targetId = Number(id);\n const match = tree.find(\n (rc) =>\n Number(rc?.item_id) === targetId ||\n Number(rc?.rc_id) === targetId ||\n Number(rc?.rcid) === targetId ||\n Number(rc?.id) === targetId ||\n rc?.item_child_ids?.some((childId: any) => Number(childId) === targetId) ||\n rc?.item_parent_ids?.some((parentId: any) => Number(parentId) === targetId)\n );\n if (!match) {\n return;\n }\n const key = Number(match?.item_id ?? match?.rc_id ?? match?.rcid ?? id);\n if (!seen.has(key)) {\n seen.add(key);\n selected.push(match);\n }\n });\n return selected;\n }\n\n private applyPreresolvedRcEntries(): boolean {\n if (!this.pendingEditRcEntries?.length) {\n return false;\n }\n const tree = this.responsibilityCentersList ?? [];\n const selected = this.pendingEditRcEntries.map((entry) => {\n const rcid = Number(entry?.rcid ?? entry?.rc_id ?? entry?.item_id);\n const fromTree =\n tree.find((rc) => Number(rc?.item_id) === rcid) ??\n tree.find((rc) => Number(rc?.rcid) === rcid) ??\n tree.find((rc) => Number(rc?.rc_id) === rcid);\n return fromTree ? { ...fromTree } : { ...entry };\n });\n this.dashboardForm.selectedResponsibilityCenters = selected;\n this.pendingEditRcIds = selected.map((rc) =>\n Number(rc?.rcid ?? rc?.rc_id ?? rc?.item_id)\n );\n return true;\n }\n\n private applyPendingResponsibilityCenters(): void {\n if (this.applyPreresolvedRcEntries()) {\n this.cdr.detectChanges();\n return;\n }\n if (!this.rcListLoaded || !this.pendingEditRcIds.length) {\n return;\n }\n let selected = this.setListByIds(\n this.responsibilityCentersList,\n this.pendingEditRcIds,\n ['item_id', 'rcid', 'rc_id', 'id']\n );\n if (selected.length < this.pendingEditRcIds.length) {\n selected = this.resolveRcFromTree(\n this.responsibilityCentersList,\n this.pendingEditRcIds\n );\n }\n this.dashboardForm.selectedResponsibilityCenters = selected;\n this.cdr.detectChanges();\n }\n\n private beginEditHydration(): void {\n if (this.mode !== 'EDIT') {\n return;\n }\n this.editHydrationCount++;\n this.vLoader = true;\n }\n\n private finishEditHydration(): void {\n if (this.mode !== 'EDIT') {\n return;\n }\n this.editHydrationCount = Math.max(0, this.editHydrationCount - 1);\n if (this.editHydrationCount === 0) {\n this.vLoader = false;\n this.cdr.detectChanges();\n }\n }\n\n private tryCompleteEditHydration(): void {\n if (this.mode === 'EDIT' && this.editHydrationCount === 0) {\n this.vLoader = false;\n this.cdr.detectChanges();\n }\n }\n\n private wrapEditRequest<T>(\n request$: Observable<T>,\n onNext: (value: T) => void\n ): void {\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n request$\n .pipe(finalize(() => this.finishEditHydration()))\n .subscribe({\n next: onNext,\n error: (err) => console.error(err),\n });\n }\n\n private syncProgramsForEdit(data: any): void {\n if (!data) {\n return;\n }\n this.hydrateProgramsFromDashboardData(data);\n this.applyProgramsFromDashboardIds(\n extractProgramIdsFromDashboard(data),\n extractCategoryIdsFromDashboard(data),\n getSelectedProgramsMap(data),\n data?.program\n );\n const categoryIds = extractCategoryIdsFromDashboard(data);\n if (categoryIds.length) {\n const fromCompliance = this.setList(\n this.allComplianceCategories,\n categoryIds,\n 'category_id'\n );\n if (fromCompliance.length && !this.allProgamSelected.length) {\n this.applyFlatProgramCategories(fromCompliance);\n }\n }\n if (\n !this.allProgamSelected.length &&\n this.dashboardForm.selectedResponsibilityCategories.length\n ) {\n this.allProgamSelected = [\n ...this.dashboardForm.selectedResponsibilityCategories,\n ];\n }\n this.syncProgramSelectionMapFromForm();\n }\n\n private applyProgramsFromDashboardIds(\n programIds: number[],\n categoryIds: number[],\n selectedProgramsMap?: Record<string, any[]>,\n programPayload?: { all_programs?: any[]; selected_programs?: any }\n ): void {\n if (categoryIds.length) {\n this.loadProgramsForEdit(\n programIds,\n categoryIds,\n selectedProgramsMap,\n programPayload\n );\n return;\n }\n if (programIds.length) {\n this.resolveProgramIdsForEdit(programIds);\n }\n }\n\n private ensureProgramSelectionMapForList(): void {\n if (hasProgramSelectionInMap(this.selectedPrograms)) {\n return;\n }\n const categoryIds = normalizeIdArray(\n this.dashboardForm.selectedResponsibilityCategories?.map(\n (c: any) => c?.category_id ?? c?.id\n ) ?? []\n );\n const programIds = [\n ...new Set(\n (this.dashboardForm.selectedResponsibilityCategories ?? []).map(\n (c: any) => Number(c?.programId ?? c?.program_id ?? c?.parentId)\n )\n ),\n ].filter((id) => !Number.isNaN(id));\n if (programIds.length || categoryIds.length) {\n this.loadProgramsForEdit(programIds, categoryIds);\n }\n }\n\n private applyProgramSelectionMap(map: Record<string, any[]>): void {\n const normalized = normalizeProgramSelectionMap(map);\n if (!normalized) {\n return;\n }\n this.selectedPrograms = normalized;\n this.allProgamSelected = flattenProgramSelectionMap(this.selectedPrograms);\n this.dashboardForm.selectedResponsibilityCategories =\n normalizeProgramCategories(this.allProgamSelected);\n this.cdr.detectChanges();\n }\n\n private categoryMatchesId(cat: any, categoryIdSet: Set<number>): boolean {\n const id = Number(cat?.id);\n const categoryId = Number(cat?.category_id);\n return (\n (!Number.isNaN(id) && categoryIdSet.has(id)) ||\n (!Number.isNaN(categoryId) && categoryIdSet.has(categoryId))\n );\n }\n\n private loadProgramsForEdit(\n programIds: number[],\n categoryIds: number[] = [],\n selectedProgramsMap?: Record<string, any[]>,\n programPayload?: { all_programs?: any[]; selected_programs?: any }\n ): void {\n if (\n selectedProgramsMap &&\n typeof selectedProgramsMap === 'object' &&\n !Array.isArray(selectedProgramsMap) &&\n hasProgramSelectionInMap(selectedProgramsMap)\n ) {\n this.applyProgramSelectionMap(selectedProgramsMap);\n return;\n }\n\n if (\n programPayload &&\n this.hydrateProgramsFromDashboardData({ program: programPayload })\n ) {\n return;\n }\n\n if (!programIds.length && !categoryIds.length) {\n return;\n }\n\n const completeProgramHydration = () => this.finishEditHydration();\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n\n this.createDashboardService.getSailsProgramList().subscribe({\n next: (res: any) => {\n const programs = parseSailsProgramList(res);\n const relevantPrograms =\n programIds.length > 0\n ? programs.filter((p: any) => programIds.includes(Number(p?.id)))\n : programs;\n\n if (!categoryIds.length) {\n if (programIds.length) {\n this.resolveProgramIdsForEdit(programIds, programs);\n }\n completeProgramHydration();\n return;\n }\n\n const categoryIdSet = new Set(categoryIds);\n const programsToFetch =\n relevantPrograms.length > 0 ? relevantPrograms : programs;\n\n if (!programsToFetch.length) {\n completeProgramHydration();\n return;\n }\n\n const categoryRequests = programsToFetch.map((program: any) =>\n this.createDashboardService.getProgramCategories(program.id).pipe(\n map((catRes: any) => ({\n program,\n categories: catRes?.data?.categories ?? catRes?.categories ?? [],\n }))\n )\n );\n forkJoin(categoryRequests)\n .pipe(finalize(() => completeProgramHydration()))\n .subscribe({\n next: (rawResults: unknown) => {\n const results = rawResults as Array<{\n program: any;\n categories: any[];\n }>;\n const map: Record<string, any[]> = {};\n results.forEach(({ program, categories }) => {\n const selected = (categories ?? []).filter((cat: any) =>\n this.categoryMatchesId(cat, categoryIdSet)\n );\n if (selected.length) {\n map[String(program.id)] = selected;\n }\n });\n if (hasProgramSelectionInMap(map)) {\n this.applyProgramSelectionMap(map);\n } else if (this.allProgamSelected.length) {\n this.syncProgramSelectionMapFromForm();\n }\n },\n error: (err) => console.error(err),\n });\n },\n error: (err) => {\n console.error(err);\n completeProgramHydration();\n },\n });\n }\n\n /** Custom dashboards often store program ids only — resolve names for form chips. */\n private resolveProgramIdsForEdit(\n programIds: number[],\n programsFromList?: any[]\n ): void {\n if (!programIds.length) {\n return;\n }\n const apply = (programs: any[]) => {\n const matched = programs.filter((p: any) =>\n programIds.includes(Number(p?.id))\n );\n if (!matched.length) {\n return;\n }\n const chips = matched.map((p: any) => ({\n id: p.id,\n category_id: p.id,\n name: p.name,\n item_name: p.name,\n programId: p.id,\n }));\n this.allProgamSelected = normalizeProgramCategories(chips);\n this.dashboardForm.selectedResponsibilityCategories = [\n ...this.allProgamSelected,\n ];\n const map: Record<string, any[]> = {};\n matched.forEach((p: any) => {\n map[String(p.id)] = [];\n });\n this.selectedPrograms = map;\n this.cdr.detectChanges();\n };\n\n if (programsFromList?.length) {\n apply(programsFromList);\n return;\n }\n\n if (this.mode === 'EDIT') {\n this.beginEditHydration();\n }\n this.createDashboardService\n .getSailsProgramList()\n .pipe(finalize(() => this.finishEditHydration()))\n .subscribe({\n next: (res: any) => {\n apply(parseSailsProgramList(res));\n },\n error: (err) => console.error(err),\n });\n }\n\n private buildEditDashboardData(): any {\n const row = this.dashboardDetails ?? {};\n const core = row?.dashboard_details ?? row?.dashboard ?? row;\n const programSource =\n core?.programs \n const rcSource =\n core?.responsibilityCenters\n\n return {\n ...row,\n ...core,\n cdid: core?.cdid ?? row?.cdid,\n dashboard_name: core?.name ?? row?.dashboard_name,\n name: core?.name ?? row?.dashboard_name,\n description: core?.description ?? row?.description,\n viewers: core?.viewers ?? row?.viewers,\n visible_to_users: core?.visible_to_users ?? row?.visible_to_users,\n visible_to_groups: core?.visible_to_groups ?? row?.visible_to_groups,\n programs: programSource,\n programId: extractProgramIdsFromDashboard({\n programs: programSource,\n program: core?.program ?? row?.program,\n }),\n responsibility_category:\n core?.responsibility_category ??\n row?.responsibility_category ??\n core?.responsibilityCategory ??\n [],\n rcId: core.rcId,\n selectedRcEntries:\n row?.selectedRcEntries ??\n core?.selectedRcEntries ??\n [],\n responsibilityCenters: rcSource,\n responsibility_center: rcSource,\n responsibilityCenterId: core.rcId,\n program: core?.program ?? row?.program,\n timeframe:\n core?.timeframe ??\n (row?.time_frame_from || row?.time_frame_to\n ? { from: row?.time_frame_from, to: row?.time_frame_to }\n : undefined),\n time_frame_from:\n core?.timeframe?.from ??\n core?.timeframe?.start_date ??\n row?.time_frame_from,\n time_frame_to:\n core?.timeframe?.to ?? core?.timeframe?.end_date ?? row?.time_frame_to,\n created_by: core?.createdBy ?? core?.created_by ?? row?.created_by,\n createdBy: core?.createdBy ?? core?.created_by ?? row?.createdBy,\n };\n }\n submitted = false;\n\n /**\n * Returns id's from a particular list elements\n * @param list actual selected list\n * @param key contains key to extract id from the list\n */\n returnIds(list: any[], key: string) {\n return list?.map((ele) => {\n if (ele[key]) {\n return ele[key];\n }\n });\n }\n\n /**\n * Validates the data submitted on create dashboard form\n */\n validateDashboard() {\n setTimeout(() => {\n this.submitted = true;\n }, 100);\n const event = this.dashboardForm.dashboardName;\n const re = /&nbsp;|<br>/g;\n this.dashboardForm.dashboardName = event.replace(re, '').trim();\n const description = this.dashboardForm.dashboardDescriptionText;\n this.dashboardForm.dashboardDescriptionText = description\n .replace(re, '')\n .trim();\n if (\n !this.dashboardForm.dashboardName ||\n this.dashboardForm.dashboardName.trim() == '' ||\n this.dashboardForm.dashboardName.length > 30 ||\n this.textCount.transform(this.dashboardForm?.dashboardDescriptionText) >\n 250 ||\n (this.dashboardForm?.selectedFromDate &&\n !this.dashboardForm?.selectedToDate) ||\n (this.dashboardForm.selectedResponsibilityCenters.length == 0)\n ) {\n return false;\n }\n return true;\n }\n\n /**\n * Makes an api call to create a dashboad\n * @param dashboard contains dashboardForm data\n */\n submitDashboard() {\n this.submitted = false;\n const valid = this.validateDashboard();\n if (!valid) {\n return false;\n }\n this.vLoader = true;\n const dashboard = this.dashboardForm;\n const payload: any = {\n viewer: {\n userId: this.returnIds(dashboard.selectedViewers, 'uid'),\n userGroupId: this.returnIds(dashboard.selectedGroup, 'ugid'),\n },\n\n widget_details: dashboard.configureWidget,\n dashboard_id: this.dashboardId,\n };\n \n this.createDashboardService.saveWidgetDetails(payload).subscribe({\n next: (res: any) => {\n // saveWidgetDetails can return freshest bridge id; merge it for redirect.\n const widgetPayload = res?.data ?? res ?? {};\n this.createdDashboard = {\n ...(this.createdDashboard ?? {}),\n ...(widgetPayload?.dashboard ?? {}),\n cddid:\n this.createdDashboard?.cddid ??\n widgetPayload?.cddid ??\n widgetPayload?.cdid ??\n widgetPayload?.dashboard_bridge_id,\n cdid:\n this.createdDashboard?.cdid ??\n widgetPayload?.cdid ??\n widgetPayload?.cddid ??\n widgetPayload?.dashboard_bridge_id,\n dashboard_bridge_id:\n this.createdDashboard?.dashboard_bridge_id ??\n widgetPayload?.dashboard_bridge_id ??\n widgetPayload?.dashboardBridgeId,\n dashboardBridgeId:\n this.createdDashboard?.dashboardBridgeId ??\n widgetPayload?.dashboardBridgeId ??\n widgetPayload?.dashboard_bridge_id,\n };\n this.dashboardId = this.getCreatedDashboardCdid();\n this.vLoader = false;\n this.isSmiley = true;\n this.smileyMessage = this.mode === 'EDIT' ? 'The dashboard has been updated.' : 'The dashboard has been created.';\n setTimeout(() => {\n this.isSmiley = false;\n const cdid = this.getCreatedDashboardCdid();\n const closeMode = this.redirectAfterCreate\n ? 'created'\n : this.mode === 'EDIT'\n ? 'updated'\n : 'created';\n this.redirectAfterCreate = false;\n this.close.emit({\n mode: closeMode,\n id: cdid,\n cdid,\n dashboardBridgeId:\n this.createdDashboard?.dashboard_bridge_id ??\n this.createdDashboard?.dashboardBridgeId,\n dashboard: this.createdDashboard,\n });\n }, 3000);\n },\n error: (error: any) => {\n console.error('saveWidgetDetails error =>', error);\n this.snackBar.show(error.error.statusMessage, 'alert');\n this.vLoader = false;\n }\n })\n\n\n }\n\n closeContainer(message: string) {\n this.close.emit(message);\n }\n\n onSubmitDashboard() {\n const dashboard = this.dashboardForm;\n const payload: any = {\n dashboard_name: dashboard.dashboardName,\n description: [\n {\n content: dashboard.dashboardDescriptionText,\n attachments: [],\n },\n ],\n visible_to_users: this.returnIds(dashboard.selectedViewers, 'uid'),\n visible_to_groups: this.returnIds(dashboard.selectedGroup, 'ugid'),\n responsibility_center: this.returnIds(\n dashboard.selectedResponsibilityCenters,\n 'rcid'\n ),\n responsibility_category: this.returnIds(\n dashboard.selectedResponsibilityCategories,\n 'category_id'\n ),\n risk_category: this.returnIds(\n dashboard.selectedRiskCategories,\n 'category_id'\n ),\n display_criteria:\n dashboard.displayCriteria === 'and'\n ? 'BOTH_RC_AND_CATEGORY'\n : 'RC_OR_CATEGORY',\n\n widget_details: dashboard.configureWidget,\n program: {\n all_programs: this.allProgamSelected,\n selected_programs: this.selectedPrograms,\n },\n timeframe: {\n start_date: dashboard.selectedFromDate\n ? this.getDateFormate(dashboard?.selectedFromDate)\n : '',\n end_date: dashboard.selectedToDate\n ? this.getDateFormate(dashboard?.selectedToDate)\n : '',\n },\n\n };\n const createDashboardPayload = this.createDashboardService.buildPayload(payload);\n this.saveDashboard(createDashboardPayload);\n\n }\n\n saveDashboard(payload: any) {\n let apiCall = this.createDashboardService.createDashboard(payload);\n if(this.mode === 'EDIT') {\n apiCall = this.createDashboardService.updateDashboard(payload, this.dashboardDetails?.recordId);\n }\n apiCall.subscribe({\n next: (res: any) => {\n const wasCreate = this.mode === 'CREATE';\n this.createdDashboard = res?.data?.dashboard ?? null;\n this.dashboardDetails = this.createdDashboard\n this.dashboardId = this.getCreatedDashboardCdid();\n this.dashboardDetails['recordId'] = this.createdDashboard?.id\n this.vLoader = false;\n this.openConfigureWidgets = true;\n this.showComplianceWidgets = false;\n if (wasCreate) {\n this.redirectAfterCreate = true;\n }\n this.mode = 'EDIT'\n\n },\n error: (error: any) => {\n this.vLoader = false;\n if(error.status == 422) {\n this.snackBar.show(\n error.error.statusMessage,\n 'alert'\n ); }\n }\n })\n }\n\n private getCreatedDashboardCdid(): string {\n const dash = this.createdDashboard;\n const cdid =\n dash?.cddid ??\n dash?.cdid ??\n dash?.cdId ??\n dash?.dashboard_bridge_id ??\n dash?.dashboardBridgeId ??\n dash?.dashboard?.dashboard_bridge_id ??\n this.dashboardId;\n return cdid != null && cdid !== '' ? String(cdid) : '';\n }\n\n private hydrateEditForm(): void {\n if (this.editFormHydrated) {\n return;\n }\n this.editFormHydrated = true;\n this.editDashboard();\n }\n\n private applyWidgetsFromGetWidgetsResponse(widgets: {\n widgetArr: any[];\n allWidgetsArray: any[];\n }): void {\n const savedWidgets = filterActiveWidgets(widgets?.widgetArr ?? []);\n const catalogWidgets = widgets?.allWidgetsArray?.length\n ? widgets.allWidgetsArray\n : savedWidgets;\n this.dashboardForm.configureWidget = savedWidgets;\n this.selectedWidgets = [...savedWidgets];\n this.displayedWidgets = [...catalogWidgets];\n }\n\n /** EDIT mode only: GET getWidgets?dashboardId={cdid} */\n private loadEditModeWidgets(cdid: string): void {\n if (this.mode !== 'EDIT' || !cdid) {\n return;\n }\n this.wrapEditRequest(\n this.createDashboardService.fetchCustomDashboardWidgetDetails(cdid),\n (widgets) => {\n this.applyWidgetsFromGetWidgetsResponse(widgets);\n this.cdr.detectChanges();\n }\n );\n }\n\n editDashboard() {\n this.vLoader = true;\n if (this.mode === 'EDIT') {\n this.editHydrationCount = 0;\n }\n const data = this.buildEditDashboardData();\n this.pendingEditRcEntries =\n data?.selectedRcEntries ??\n this.dashboardDetails?.selectedRcEntries ??\n [];\n const editCdid = getEditDashboardCdid(\n data,\n this.dashboardDetails,\n this.dashboardId\n );\n\n this.listDetails.nonRemovableUsersList = [\n data?.createdBy ?? data?.created_by,\n ].filter((x) => x != null);\n this.populateDashboardForm(data);\n\n if (this.mode === 'EDIT' && editCdid) {\n this.loadEditModeWidgets(editCdid);\n }\n\n this.tryCompleteEditHydration();\n }\n\n populateDashboardForm(data: any) {\n try {\n const descriptionBlock = Array.isArray(data?.description)\n ? data.description[0]\n : null;\n const descriptionText =\n descriptionBlock?.content ??\n (typeof data?.description === 'string' ? data.description : '') ??\n data?.dashboardDescriptionText ??\n '';\n\n const visibleUsers = data?.visible_to_users ?? data?.viewers?.userId ?? [];\n const visibleUserIds = data?.viewers?.userId ?? [];\n const visibleGroups = data?.viewers?.userGroupId ?? [];\n const visibleGroupIds = data?.viewers?.userGroupId ?? [];\n this.pendingEditRcEntries =\n data?.selectedRcEntries ??\n this.dashboardDetails?.selectedRcEntries ??\n [];\n this.pendingEditRcIds = extractRcIdsFromDashboard(data);\n this.applyPreresolvedRcEntries();\n const riskCategories = data?.risk_category ?? [];\n const riskCategoryIds = (riskCategories ?? []).map((risk: any) =>\n typeof risk === 'object' ? risk?.category_id ?? risk?.id : risk\n );\n const startDate =\n data?.timeframe?.start_date ??\n data?.timeframe?.from ??\n data?.time_frame_from;\n const endDate =\n data?.timeframe?.end_date ??\n data?.timeframe?.to ??\n data?.time_frame_to;\n this.dashboardForm.dashboardName =\n data?.dashboard_name ?? data?.name ?? '';\n this.dashboardForm.dashboardDescriptionText = descriptionText;\n this.dashboardForm.selectedViewers = this.setListByIds(\n this.usersList,\n visibleUserIds,\n ['member_id', 'uid', 'id']\n );\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\n this.dashboardForm.selectedGroup = this.setListByIds(\n this.groupList,\n visibleGroupIds,\n ['group_id', 'ugid', 'id']\n );\n this.listDetails.selectedGroupList = this.dashboardForm.selectedGroup;\n this.applyPendingResponsibilityCenters();\n this.syncProgramsForEdit(data);\n this.dashboardForm.selectedRiskCategories =\n this.setList(\n this.allRiskCategories,\n riskCategoryIds,\n 'category_id'\n );\n this.dashboardForm.displayCriteria =\n data?.display_criteria === 'BOTH_RC_AND_CATEGORY' ? 'and' : 'or';\n this.dashboardForm.selectedFromDate = startDate\n ? new Date(startDate)\n : undefined;\n this.dashboardForm.selectedToDate = endDate\n ? new Date(endDate)\n : undefined;\n if (this.mode !== 'EDIT') {\n this.vLoader = false;\n const widgetDetailsRaw =\n data?.widget_details ?? data?.widgets ?? [];\n const widgetDetails = Array.isArray(widgetDetailsRaw)\n ? widgetDetailsRaw\n : [];\n const allWidgetsRaw = data?.all_widgets ?? widgetDetails;\n const allWidgets = Array.isArray(allWidgetsRaw) ? allWidgetsRaw : [];\n this.dashboardForm.configureWidget = widgetDetails;\n this.selectedWidgets =\n widgetDetails.length > 0 ? [...new Set(widgetDetails)] : [];\n this.displayedWidgets =\n allWidgets.length > 0 ? [...new Set(allWidgets)] : [];\n }\n if (startDate) {\n const minToDate = this.setToDate(startDate);\n this.toDatePickerConfig = { ...this.datePickerBaseConfig, min: minToDate };\n }\n this.hideToDate = true;\n setTimeout(() => {\n this.hideToDate = false;\n }, 20);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('populate dashboard error =>', error);\n this.vLoader = false;\n }\n }\n\n\n ngAfterViewChecked() {\n //your code to update the model\n this.cdr.detectChanges();\n }\n\n setPermission(roleActions: any) {\n let ifExistRisk = roleActions?.find((el: any) => el.moduleName == 'risk');\n ifExistRisk?.subModule?.forEach((module: any) => {\n module?.permissions?.forEach((permission: any) => {\n switch (permission?.code) {\n case 'RRMR': {\n if (permission?.defaultPermission == 1 || permission?.enable == 1) {\n this.isManageRisk = true;\n }\n break;\n }\n }\n });\n });\n }\n\n @HostListener('document:click', ['$event'])\n documentClick(event: MouseEvent): void {\n const fromOpen = !!this.fromDatePicker?.areCalendarsShown;\n const toOpen = !!this.toDatePicker?.areCalendarsShown;\n if (!this.datePickerOverlay && !fromOpen && !toOpen) {\n return;\n }\n\n const targetElement = event?.target as Element | null;\n if (!targetElement?.closest) {\n return;\n }\n\n // Keep calendar open when interacting with the calendar UI itself\n // (including month/year navigation). The full-screen transparent\n // `.dp-popup` backdrop is intentionally treated as an outside click.\n const clickedInsideCalendar = !!targetElement.closest(\n 'dp-day-calendar, dp-month-calendar, dp-day-time-calendar, dp-time-select'\n );\n const clickedOnDateInput = !!targetElement.closest(\n '#from_date, #to_date'\n );\n\n if (clickedInsideCalendar || clickedOnDateInput) {\n return;\n }\n\n if (fromOpen || this.openedDatePicker === 'FROM_DATE') {\n this.closeFromDatePicker();\n }\n if (toOpen || this.openedDatePicker === 'TO_DATE') {\n this.closeToDatePicker();\n }\n this.datePickerOverlay = false;\n this.openedDatePicker = '';\n }\n}\n","<app-snack-bar></app-snack-bar>\n@if (!openConfigureWidgets) {\n <div class=\"create-dashboard\">\n <div class=\"create-dashboard-container vx-d-flex vx-justify-end\" [class.animate-slideInRight]=\"animation\">\n @if (activeSelector && activeSelector !== 'name') {\n <div class=\"more-option\">\n @if (activeSelector === 'whoCanView') {\n <app-user-list\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\" (closeUserList)=\"activateSelector('', false)\"\n [totalPages]=\"totalPages\" [totalList]=\"totalList\" [listDetails]=\"listDetails\" [totalgroupscount]=\"totalgroups\"\n [feature]=\"feature\"></app-user-list>\n }\n @if (activeSelector === 'rcList') {\n <app-responsibility-center\n [responsibilityCentersList]=\"responsibilityCentersList\" [radioSelection]=\"false\"\n [selectedResponsibilityCenters]=\"\n dashboardForm.selectedResponsibilityCenters\n \" [rcIdKey]=\"'item_id'\" (saveSelectedList)=\"saveSelectedList('rc', $event)\"\n (closeRcList)=\"activateSelector('', false)\">\n </app-responsibility-center>\n }\n <!-- <app-categories *ngIf=\"activeSelector === 'responsibilityCategories'\"\n [categoryList]=\"responsibilityCategoriesTree\" [allCategories]=\"allComplianceCategories\"\n [categoryIdKey]=\"'category_id'\" [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\n (saveSelectedCategory)=\"\n saveSelectedList('responsibilityCategories', $event)\n \" (closeCategoriesList)=\"activateSelector('', false)\"></app-categories> -->\n @if (activeSelector === 'responsibilityCategories') {\n <app-list-container list\n (close)=\"activateSelector('', false)\">\n <app-program-list body (itemsSelectedChange)=\"onProgramSelectionChange($event)\"\n [selectedItems]=\"selectedPrograms\" [url]=\"programListUrl\"></app-program-list>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-w-100\" footer>\n <div class=\"left-side vx-fs-12 vx-d-flex\">\n @if (allProgamSelected?.length > 0) {\n <button\n class=\"selected-count-box vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\">\n {{ allProgamSelected.length }}\n </button>\n <span class=\"selected-text\">\n Program\n {{ allProgamSelected.length > 1 ? \"Categories\" : \"Category\" }}\n Selected</span>\n }\n </div>\n <div class=\"right-side vx-d-flex\">\n <button class=\"cancelBtn\" (click)=\"activateSelector('', false)\">Cancel</button>\n <button class=\"nextBtn\" (click)=\"activateSelector('', false);\">\n Next <i class=\"icons\">&#xe91e;</i>\n </button>\n </div>\n </div>\n </app-list-container>\n }\n </div>\n }\n <div class=\"vx-dialog-container side-dialog\" [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\">\n @if (vLoader) {\n <app-loader-inline></app-loader-inline>\n }\n <div class=\"form-group\" [class.disabled]=\"disabled\">\n <div class=\"vx-dialog-body-container\" (scroll)=\"animateImage()\"\n [class.hidden-scroll]=\"popoverService.stopScroll\">\n <!-- Dashboard Name -->\n <div class=\"form-group-row\" [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\n <div class=\"image\">\n @if (\n !dashboardForm.dashboardName || activeSelector === 'name'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (dashboardForm.dashboardName && activeSelector !== 'name') {\n <svg class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">Dashboard\n Name\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\">*</span></label>\n <div class=\"vx-input-group\">\n <input class=\"textField\" placeholder=\"Add dashboard name (Max limit: 30 characters).\"\n [(ngModel)]=\"dashboardForm.dashboardName\" (keydown)=\"activeSelector = 'name'\"\n (focusin)=\"activateSelector('name', true)\" (focusout)=\"activateSelector('name', false)\" />\n @if (dashboardForm?.dashboardName?.length > 0) {\n <span class=\"counter\">{{ 30 -\n dashboardForm.dashboardName.length }}</span>\n }\n </div>\n @if (\n submitted &&\n (dashboardForm?.dashboardName?.length > 30 ||\n !dashboardForm?.dashboardName)\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n {{\n dashboardForm.dashboardName.length > 30\n ? \"You have exceeded the maximum character limit of 30 characters.\"\n : \"Please enter a name for this Dashboard.\"\n }}\n </p>\n }\n <div class=\"vx-input-group vx-mt-2\">\n <vcomply-editor [editorConfig]=\"dashboardDescription\"\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"></vcomply-editor>\n @if (dashboardForm?.dashboardDescriptionText?.length > 0) {\n <span class=\"counter\">{{\n 250 -\n ($safeNavigationMigration(dashboardForm?.dashboardDescriptionText) | textCount)\n }}</span>\n }\n </div>\n @if (\n submitted &&\n ($safeNavigationMigration(dashboardForm?.dashboardDescriptionText) | textCount) > 250\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n You have exceeded the maximum character limit of 250\n characters.\n </p>\n }\n </div>\n </div>\n </div>\n <!-- Dashboard Display Criteria -->\n <span class=\"head-label vx-fs-10 vx-fw-500 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-lh-4\">\n Dashboard Display Criteria\n </span>\n <app-information-block></app-information-block>\n <!-- Who -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'whoCanView'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'whoCanView' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n dashboardForm?.selectedViewers?.length == 0 ||\n activeSelector === 'whoCanView'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardUsersIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedViewers?.length > 0 &&\n activeSelector !== 'whoCanView'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">Who\n can view this dashboard?<span class=\"require vx-txt-red vx-fs-16 vx-fw-400\">*</span></label>\n @if (dashboardForm?.selectedViewers?.length == 0) {\n <div\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('whoCanView', true)\">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Who can view this dashboard?\n </div>\n </div>\n }\n @if (dashboardForm?.selectedViewers?.length > 0) {\n <div\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @if (!groupsEnabled) {\n <ng-container id=\"onlyuserslist\">\n @for (\n user of dashboardForm?.selectedViewers?.slice(0, 1)\n ; track\n user) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n user.member_id\n )\n ) {\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"remove('whoCanView', user)\">&#xe9ae;</i>\n }\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"user.member_name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ user.member_name\n }}</span>\n @if (\n dashboardForm?.selectedViewers?.length > 1 &&\n !groupsEnabled\n ) {\n <button\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover (click)=\"userList.popover()\" placement=\"left\">\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\n </button>\n }\n </div>\n }\n <app-popover #userList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n user of $safeNavigationMigration(dashboardForm?.selectedViewers)\n | slice : 1; track\n user; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(user?.member_name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n user.member_id\n ) && !groupsEnabled\n ) {\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanView', user)\">&#xe90d;</i>\n }\n {{ user?.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </ng-container>\n }\n @if (groupsEnabled) {\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\">USER(S)</span>\n <button\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover (click)=\"userCount.popover()\" placement=\"left\">\n {{ dashboardForm?.selectedViewers?.length }}\n </button>\n </div>\n @if (\n dashboardForm?.selectedGroup?.length &&\n dashboardForm?.selectedViewers?.length\n ) {\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n }\n @if (dashboardForm?.selectedGroup?.length) {\n <div id=\"usersandgroups\"\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <span class=\"chipName vx-fs-11 vx-label-txt\">USER GROUP(S)</span>\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 (click)=\"groupCount.popover()\" placement=\"right\">\n {{ dashboardForm?.selectedGroup?.length }}\n </button>\n </div>\n }\n <app-popover #userCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (data of dashboardForm?.selectedViewers; track data) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"data.member_name\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n @if (\n !listDetails.nonRemovableUsersList.includes(\n data.member_id\n )\n ) {\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanView', data)\">&#xe90d;</i>\n }\n {{ data.member_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n <app-popover #groupCount [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (data of dashboardForm?.selectedGroup; track data) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"data.group_name\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"remove('whoCanViewGroup', data)\">&#xe90d;</i>\n {{ data.group_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'whoCanView') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('whoCanView', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Responsibility Center -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'rcList'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'rcList' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\n activeSelector === 'rcList'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardRcIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\n activeSelector !== 'rcList'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">RESPONSIBILITY\n CENTER(S)</label>\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length == 0\n ) {\n <div class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('rcList', true)\" [class.error]=\"\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\n allProgamSelected?.length ==\n 0 &&\n dashboardForm?.selectedRiskCategories?.length == 0\n \">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Select the Responsibility Center(s) that you would like<br />displayed\n in the Dashboard, if any.\n </div>\n </div>\n }\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 0\n ) {\n <div class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @for (\n rc of dashboardForm?.selectedResponsibilityCenters?.slice(\n 0,\n 1\n )\n ; track\n rc) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\" (click)=\"remove('rc', rc)\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"rc.item_name\" placement=\"bottom-left\"\n delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ rc.item_name }}</span>\n @if (\n dashboardForm?.selectedResponsibilityCenters?.length > 1\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 (click)=\"rcList.popover()\" placement=\"left\">\n +{{\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\n .length\n }}\n </button>\n }\n <app-popover #rcList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n rc of $safeNavigationMigration(dashboardForm?.selectedResponsibilityCenters)\n | slice : 1; track\n rc; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(rc?.item_name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"remove('rc', rc)\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'rcList') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('rcList', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Program -->\n <div class=\"form-group-row\" [class.active]=\"activeSelector === 'responsibilityCategories'\" [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'responsibilityCategories' &&\n activeSelector !== 'name'\n \">\n <div class=\"image\">\n @if (\n allProgamSelected?.length ==\n 0 || activeSelector === 'responsibilityCategories'\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardProgramIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n allProgamSelected?.length > 0 &&\n activeSelector !== 'responsibilityCategories'\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">PROGRAM</label>\n @if (\n allProgamSelected?.length == 0\n ) {\n <div class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('responsibilityCategories', true)\" [class.error]=\"\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\n allProgamSelected?.length ==\n 0 &&\n dashboardForm?.selectedRiskCategories?.length == 0\n \">\n <div class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\">\n Select the Program(s) that you would like displayed in\n the<br />Dashboard, if any.\n </div>\n </div>\n }\n @if (\n allProgamSelected?.length > 0\n ) {\n <div class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\">\n @for (\n rCategory of allProgamSelected?.slice(\n 0,\n 1\n )\n ; track\n rCategory) {\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove('responsibilityCategories', rCategory)\">&#xe9ae;</i>\n <span class=\"chipName vx-fs-11 vx-label-txt\" [arTooltip]=\"rCategory.item_name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{ rCategory.name\n }}</span>\n @if (\n allProgamSelected\n ?.length > 1\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 (click)=\"rCategoryList.popover()\" placement=\"left\">\n +{{\n allProgamSelected?.slice(\n 1\n ).length\n }}\n </button>\n }\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\n <div class=\"action-list\">\n <ul class=\"action-item\">\n @for (\n rCategory of allProgamSelected\n | slice : 1; track\n rCategory; let j = $index) {\n <li>\n <div class=\"avatar-card\">\n <span class=\"value\" [arTooltip]=\"$safeNavigationMigration(rCategory?.name)\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n <i class=\"icons cross-icon\" (click)=\"\n remove(\n 'responsibilityCategories',\n rCategory\n )\n \">&#xe90d;</i>\n {{ rCategory?.name }}\n </span>\n </div>\n </li>\n }\n </ul>\n </div>\n </app-popover>\n </div>\n }\n @if (activeSelector !== 'responsibilityCategories') {\n <button\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('responsibilityCategories', true)\">\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Timeframe -->\n <div class=\"form-group-row\" [class.disabled]=\"activeSelector && activeSelector !== 'name'\">\n <div class=\"image\">\n @if (\n !dashboardForm?.selectedFromDate ||\n !dashboardForm?.selectedToDate\n ) {\n <img [ngSrc]=\"ASSETS.dashBoardTimeFrameIcon\" alt=\"\" width=\"36\" height=\"36\" />\n }\n @if (\n dashboardForm?.selectedFromDate &&\n dashboardForm?.selectedToDate\n ) {\n <svg class=\"checkIcon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"checkIcon__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <path class=\"checkIcon__check\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\n </svg>\n }\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\">TIMEFRAME</label>\n <label class=\"vx-control-panel-sub-label\">Select how long the selected information should be displayed.\n Once the selected timeframe expires, the dashboard will automatically be deactivated and no longer\n displayed to users. If no timeframe is selected, the information\n will be displayed permanently.</label>\n <div class=\"input-group vx-d-flex vx-justify-between\">\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input type=\"text\" id=\"from_date\" [value]=\"\n $safeNavigationMigration(dashboardForm?.selectedFromDate) | date : 'dd MMM yyyy'\n \" [placeholder]=\"'From'\" (click)=\"openFromDatePicker($event)\" readonly />\n <dp-date-picker #fromDatePicker [(ngModel)]=\"dashboardForm.selectedFromDate\"\n placeholder=\"Select Date\" theme=\"vcomply-tz\" (onSelect)=\"\n closeFromDatePicker(); datePickerOverlay = false\n \" [config]=\"fromDatePickerConfig\"></dp-date-picker>\n @if (datePickerOverlay) {\n <div class=\"overlay\" (click)=\"closeFromDatePicker()\"></div>\n }\n </div>\n @if (!hideToDate) {\n <div class=\"date-select\" [class.disabled]=\"!dashboardForm?.selectedFromDate\">\n <i class=\"icons\">&#xe92d;</i>\n <input type=\"text\" id=\"to_date\" [value]=\"\n $safeNavigationMigration(dashboardForm?.selectedToDate) | date : 'dd MMM yyyy'\n \" [placeholder]=\"'To'\" (click)=\"openToDatePicker($event)\" readonly />\n <dp-date-picker #toDatePicker [(ngModel)]=\"dashboardForm.selectedToDate\" placeholder=\"Select Date\"\n theme=\"vcomply-tz\" (onSelect)=\"\n closeToDatePicker(); datePickerOverlay = false\n \" [config]=\"toDatePickerConfig\"></dp-date-picker>\n @if (datePickerOverlay) {\n <div class=\"overlay\" (click)=\"closeToDatePicker()\"></div>\n }\n </div>\n }\n </div>\n @if (\n submitted &&\n dashboardForm.selectedFromDate &&\n !dashboardForm.selectedToDate\n ) {\n <p class=\"vx-txt-error\" [appScrollInView]=\"true\">\n Select a time-frame.\n </p>\n }\n </div>\n </div>\n </div>\n <!-- Email Summary -->\n <!-- <div\n class=\"form-group-row\"\n [class.active]=\"activeSelector === 'frequency'\"\n [class.disabled]=\"\n activeSelector &&\n activeSelector !== 'frequency' &&\n activeSelector !== 'name'\n \"\n >\n <div class=\"image\">\n <img\n *ngIf=\"!dashboardForm.frequencyMessage\"\n [ngSrc]=\"ASSETS.dashBoardEmailSummariesIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n <svg\n *ngIf=\"dashboardForm.frequencyMessage\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group vx-d-block\">\n <label\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\n >Email Summaries</label\n >\n <label class=\"vx-control-panel-sub-label\"\n >If you would like to send a summary of this Dashboard, please\n select a frequency(By default VComply sends a weekly\n Summary).</label\n >\n <div\n *ngIf=\"!dashboardForm.frequencyMessage\"\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('frequency', true)\"\n >\n <div\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\n >\n Email Summaries\n </div>\n </div>\n <div\n *ngIf=\"dashboardForm.frequencyMessage\"\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\n [arTooltip]=\"dashboardForm.frequencyMessage\"\n placement=\"bottom-left\"\n type=\"black\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n [innerHTML]=\"dashboardForm.frequencyMessage\"\n ></div>\n <button\n *ngIf=\"\n dashboardForm.frequencyMessage &&\n activeSelector !== 'frequency'\n \"\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n (click)=\"activateSelector('frequency', true)\"\n >\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\n </button>\n </div>\n </div>\n </div>\n </div> -->\n </div>\n <div class=\"button-block\">\n <button class=\"vx-btn block primary\" [disabled]=\"activeSelector && activeSelector !== 'name'\"\n (click)=\"configureDashboard()\">\n Next: Configure Widgets\n </button>\n </div>\n </div>\n <button class=\"close-dialog\" type=\"button\" [disabled]=\"activeSelector && activeSelector !== 'name'\"\n (click)=\"close.emit({ mode: 'discard' })\" [arTooltip]=\"'[Esc] to close'\" placement=\"left\" type=\"black\" delay=\"0\"\n [tooltipMandatory]=\"true\" [class.hide]=\"activeSelector && activeSelector !== 'name'\">\n <i class=\"icons\">&#xe93f;</i>\n </button>\n @if (\n submitted &&\n dashboardForm?.selectedResponsibilityCenters?.length == 0\n ) {\n <div class=\"global-confirmation-alert\">\n <div class=\"global-confirmation-alert-top\">\n <span class=\"icon-block\">\n <i class=\"icons\">&#xe930;</i>\n </span>\n @if (showRiskCategory) {\n <p class=\"text\">\n Select a Responsibility Center or Risk Category.\n </p>\n }\n @if (!showRiskCategory) {\n <p class=\"text\">\n Select a Responsibility Center.\n </p>\n }\n </div>\n <div class=\"global-confirmation-alert-bottom\">\n <p class=\"message\"></p>\n <div class=\"button-group\">\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\n OKAY\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n\n @if (isSmiley) {\n <app-smiley-dialog [message]=\"smileyMessage\"></app-smiley-dialog>\n }\n\n @if (openConfigureWidgets) {\n <app-configure-widgets [mode]=\"mode\" [displayedWidgets]=\"displayedWidgets\"\n [showRisk]=\"showRiskWidgets\" [showCompliance]=\"!showComplianceWidgets\" [selectedWidgetsData]=\"selectedWidgets\"\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"></app-configure-widgets>\n }","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer:DomSanitizer){}\n transform(html: any) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n}\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, QueryList, ContentChildren, ChangeDetectionStrategy } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { nanoid } from 'nanoid';\n// import { CsOptionComponent } from '../cs-option/cs-option.component';\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'cs-select',\n templateUrl: './cs-select.component.html',\n styleUrls: ['./cs-select.component.less'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CsSelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsSelectComponent implements OnInit {\n @Input() dropdownLabel!: string;\n @Input() dropdownSubLabel!: string;\n @Input() isRequired!: string;\n @Input() placeholder!: string;\n\n // @ContentChildren(CsOptionComponent) op !: QueryList<CsOptionComponent>;\n\n dropdownToggle!: boolean;\n positionReset!: boolean;\n getLeft!: number;\n getTop!: number;\n getWidth!: number;\n maxWidth!: number;\n\n valuePlaceholder!: string;\n private optionList!: ElementRef;\n\n @ViewChild('optionList') set content(content: ElementRef) {\n if (content) {\n // initially setter gets called with undefined\n this.optionList = content;\n }\n }\n name!: string;\n val!: string;\n showOptions!: boolean;\n constructor() {\n this.name = nanoid();\n this.valuePlaceholder = '';\n }\n\n ngOnInit(): void {}\n\n onChange: any = () => {};\n onTouch: any = () => {};\n\n set RadioVal(val: any) {\n if (val !== undefined && val !== null && this.val !== val) {\n this.val = val;\n console.log('VALUE', this.val);\n this.onChange(val);\n this.onTouch(val);\n }\n }\n\n writeValue(value: any): void {\n if(value) {\n this.RadioVal = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n openDropdown(event: any): void {\n this.dropdownToggle = true;\n setTimeout(() => {\n const dropdown = event.target.getBoundingClientRect();\n const selectOption = this.optionList.nativeElement.offsetHeight;\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\n this.getTop = dropdown.top - selectOption;\n } else {\n this.getTop = dropdown.top + dropdown.height;\n }\n this.getLeft = dropdown.left;\n this.getWidth = dropdown.width;\n this.maxWidth = dropdown.width * 1.25;\n this.showOptions = true;\n }, 10);\n }\n closeDropdown(): void {\n this.dropdownToggle = false;\n }\n}\n","<div class=\"selection-wrap\">\n @if (dropdownLabel != undefined) {\n <label class=\"label\">\n {{ dropdownLabel }}\n <span class=\"sub-label\">{{ dropdownSubLabel }}</span>\n @if (isRequired) {\n <span class=\"required\">*</span>\n }\n </label>\n }\n <div class=\"input-group\">\n <span class=\"value\" (click)=\"openDropdown($event)\" (keyup.enter)=\"openDropdown($event)\" tabindex=\"0\" [attr.aria-placeholder]=\"placeholder\" [innerHTML]=\"valuePlaceholder | safeHtml\"></span>\n </div>\n @if (dropdownToggle === true) {\n <div class=\"overlay\" (click)=\"closeDropdown()\"></div>\n }\n @if (dropdownToggle === true) {\n <div class=\"select-options\" #optionList (keyup.Escape)=\"closeDropdown()\"\n (keyup.enter)=\"closeDropdown()\" (click)=\"closeDropdown()\" [style.top.px]=\"getTop\" [style.left.px]=\"getLeft\"\n [style.width.px]=\"getWidth\" [class.active]=\"showOptions\">\n <ng-content select=\"cs-option\"></ng-content>\n </div>\n }\n</div>","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CsSelectService {\n color: any;\n constructor() {\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CsSelectService } from '../../services/cs-select.service';\nimport { CsSelectComponent } from '../cs-select/cs-select.component';\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: 'cs-option',\n templateUrl: './cs-option.component.html',\n styleUrls: ['./cs-option.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsOptionComponent implements OnInit {\n @Input() value!: string;\n @ViewChild('options') option!: ElementRef;\n @Input() color!: any;\n constructor(public csSelect: CsSelectComponent, public colorSelector: CsSelectService) {\n this.value = '';\n }\n\n ngOnInit(): void { }\n\n change(event: any): void {\n if (this.option) {\n setTimeout(() => {\n this.csSelect.valuePlaceholder = this.option.nativeElement.innerHTML;\n this.colorSelector.color = this.color;\n console.log(this.color);\n }, 1);\n }\n this.csSelect.writeValue(this.value);\n }\n}\n","<div class=\"list\">\n <label>\n <input type=\"radio\" tabindex=\"0\" [value]=\"value\" [name]=\"csSelect.name\" (click)=\"change($event)\" [checked]=\"csSelect.val === this.value\" />\n <span class=\"value\" #options>\n <ng-content></ng-content>\n </span>\n </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CsSelectComponent } from './cs-select/cs-select.component';\nimport { CsOptionComponent } from './cs-option/cs-option.component';\nimport { FormsModule } from '@angular/forms';\nimport { SafeHtmlPipe } from './safe-html.pipe';\n\n@NgModule({\n declarations: [CsSelectComponent, CsOptionComponent, SafeHtmlPipe],\n imports: [FormsModule, CommonModule],\n exports: [CsSelectComponent, CsOptionComponent],\n})\nexport class SelectModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { CategoriesConfig } from './categories-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-categories',\n templateUrl: './categories.component.html',\n styleUrls: ['./categories.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CategoriesComponent implements OnInit {\n ASSETS = ASSETS;\n\n @Input() categoryList: CategoriesConfig = {\n regulations: {\n list: [],\n selectedList: [],\n },\n standards: {\n list: [],\n selectedList: [],\n },\n internalControls: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n @Input() allCategories: any[] = [];\n\n @Input() categoryIdKey: any;\n @Input() selectedCategories: any[] = [];\n\n search = '';\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others' =\n 'regulations';\n selectedIds: any[] = [];\n animation = false;\n blockWidth: any;\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'item_name',\n elementId: 'item_id',\n singularText: 'Program selected',\n pluralText: 'Programs selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n\n @Output() saveSelectedCategory = new EventEmitter();\n @Output() closeList = new EventEmitter();\n @Output() closeCategoriesList = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n this.selectedIds = [];\n if (this.selectedCategories) {\n this.selectedCategories.forEach((element) => {\n this.selectedIds.push(element[this.categoryIdKey]);\n });\n }\n this.setList();\n }\n\n selectCategory(mode: any, activeTab: any, category: any) {\n if (mode) {\n this.selectedIds.push(category[this.categoryIdKey]);\n const rcElement = this.allCategories.findIndex(\n (ele: any) => ele.category_id == category[this.categoryIdKey]\n );\n if (rcElement !== -1) {\n const parentRc: any = this.allCategories[rcElement];\n if (parentRc?.child_cat_ids?.length > 0) {\n parentRc.child_cat_ids.forEach((childElement: any) => {\n if (!this.selectedIds.includes(childElement)) {\n this.selectedIds.push(childElement);\n }\n });\n }\n }\n } else {\n const index = this.selectedIds.findIndex(\n (element: any) => element == category[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n const rcElement = this.allCategories.findIndex(\n (ele: any) => ele.category_id == category[this.categoryIdKey]\n );\n if (rcElement !== -1) {\n const parentRc: any = this.allCategories[rcElement];\n if (parentRc?.child_cat_ids?.length > 0) {\n parentRc.child_cat_ids.forEach((childElement: any) => {\n const removeIndex = this.selectedIds.findIndex(\n (removeElement: any) => removeElement == childElement\n );\n this.selectedIds.splice(removeIndex, 1);\n });\n }\n }\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n const index = this.selectedIds.findIndex(\n (element: any) => element == event[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n this.setList();\n }\n\n selectAll(\n mode: any,\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others'\n ) {\n if (mode) {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\n this.selectedIds.push(element[this.categoryIdKey]);\n }\n });\n } else {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\n let idIndex = this.selectedIds.findIndex(\n (id: any) => id == element[this.categoryIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n this.setList();\n }\n\n setList() {\n const data: any = [];\n const categoryList = [...new Set(this.allCategories)];\n // cloneDeep(this.allCategories)\n const selectedIds = [...new Set(this.selectedIds)];\n // cloneDeep(this.selectedIds);\n this.categoryList.regulations.selectedList = [];\n this.categoryList.standards.selectedList = [];\n this.categoryList.internalControls.selectedList = [];\n this.categoryList.others.selectedList = [];\n\n categoryList.forEach((element: any) => {\n if (selectedIds.includes(element[this.categoryIdKey])) {\n data.push(element);\n }\n });\n this.selectedCategories = data;\n this.footerDetails.selectedData = data;\n\n this.categoryList.regulations.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.regulations.selectedList.push(category);\n }\n });\n this.categoryList.standards.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.standards.selectedList.push(category);\n }\n });\n this.categoryList.internalControls.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.internalControls.selectedList.push(category);\n }\n });\n this.categoryList.others.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.others.selectedList.push(category);\n }\n });\n if (!this.activeTab) {\n this.setActiveTab();\n }\n }\n setActiveTab() {\n if (this.categoryList.regulations.selectedList.length > 0) {\n this.activeTab = 'regulations';\n } else if (this.categoryList.standards.selectedList.length > 0) {\n this.activeTab = 'standards';\n } else if (this.categoryList.internalControls.selectedList.length > 0) {\n this.activeTab = 'internalControls';\n } else if (this.categoryList.others.selectedList.length > 0) {\n this.activeTab = 'others';\n } else {\n this.activeTab = 'regulations';\n }\n }\n\n checkSelectAll(\n activeTab: 'standards' | 'regulations' | 'internalControls' | 'others'\n ) {\n const data = this.categoryList[activeTab].list.every((user: any) =>\n this.selectedIds.includes(user[this.categoryIdKey])\n );\n return data;\n }\n\n save() {\n this.saveSelectedCategory.emit(this.selectedCategories);\n }\n\n close() {\n this.closeCategoriesList.emit();\n }\n}\n","<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <span class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Program(s)</span>\n </div>\n <div class=\"category-list-mid\">\n <div class=\"vx-d-flex vx-mb-2\">\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'regulations'\"\n (click)=\"activeTab = 'regulations'\"\n >\n <div class=\"left\">\n <label>REGULATIONS</label>\n @if (categoryList?.regulations?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.regulations?.selectedList?.length }}\n {{\n categoryList?.regulations?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.regulations?.list?.length\n }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'standards'\"\n (click)=\"activeTab = 'standards'\"\n >\n <div class=\"left\">\n <label>STANDARDS</label>\n @if (categoryList?.standards?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.standards?.selectedList?.length }}\n {{\n categoryList?.standards?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.standards?.list?.length }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'internalControls'\"\n (click)=\"activeTab = 'internalControls'\"\n >\n <div class=\"left\">\n <label>INTERNAL CONTROLS</label>\n @if (categoryList?.internalControls?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.internalControls?.selectedList?.length }}\n {{\n categoryList?.internalControls?.selectedList?.length == 1\n ? \"Program\"\n : \"programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.internalControls?.list?.length\n }}</span>\n </div>\n <div\n class=\"category-list-card\"\n [class.active]=\"activeTab == 'others'\"\n (click)=\"activeTab = 'others'\"\n >\n <div class=\"left\">\n <label>OTHERS</label>\n @if (categoryList?.others?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.others?.selectedList?.length }}\n {{\n categoryList?.others?.selectedList?.length == 1\n ? \"Program\"\n : \"Programs\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.others?.list?.length }}</span>\n </div>\n </div>\n\n <div class=\"category-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\n </div>\n\n @if (categoryList[activeTab].list | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll(activeTab)\"\n (ngValueChange)=\"selectAll($event, activeTab)\"\n >\n <strong>{{\n checkSelectAll(activeTab) ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <div\n class=\"category-list-item vx-mb-4\"\n [class.with-selectAll]=\"searchList.length > 1\"\n >\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\n @for (category of searchList; track category) {\n <li class=\"vx-mb-4\">\n <app-cs-checkbox\n [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\n (ngValueChange)=\"selectCategory($event, activeTab, category)\"\n >\n <ul class=\"categories\">\n @for (entity of category.category_name; track entity; let j = $index) {\n <li\n [arTooltip]=\"entity\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n {{ entity }}\n </li>\n }\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"close()\"\n (deleteEvent)=\"deleteEvent($event)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-radio',\n templateUrl: './cs-radio.component.html',\n styleUrls: ['./cs-radio.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsRadioComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() readonly!: boolean;\n @Input() name!: string;\n @Input() checked!: boolean;\n @Input() value: any;\n @Output() checkedEvent = new EventEmitter();\n constructor() {}\n\n ngOnInit(): void {}\n changeState(evt: any) {\n this.checkedEvent.emit(evt);\n }\n}\n","<label class=\"radio-item\" [class.readonly]=\"readonly\">\n <input type=\"radio\" [disabled]=\"disabled\" [name]=\"name\" [value]=\"value\" [checked]=\"checked\" (change)=\"changeState($event)\" />\n <span class=\"radio\">\n <span class=\"inner\"></span>\n </span>\n <svg class=\"radiomark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\n <circle class=\"radiomark__circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\n <circle class=\"radiomark__check\" cx=\"26\" cy=\"26\" r=\"5\" fill=\"none\" />\n </svg>\n <span class=\"value\"><ng-content></ng-content></span>\n</label>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\n\n\n@Component({\n selector: 'app-frequency',\n templateUrl: './frequency.component.html',\n styleUrls: ['./frequency.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FrequencyComponent implements OnInit,OnChanges {\n animation = true;\n @Input() savedFrequencyTab: string | undefined;\n monthlyDate = 1;\n quarterlyDate = 1;\n @Input() savedFrequencies: any;\n @Input() selectedDate: any;\n frequencyTab = 'weekly';\n showFrequency = true;\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\n selectedDays: any[] = [0];\n selectedMonths: any[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n selectedQuarter = 0;\n @Output() closeFrequencyPopup = new EventEmitter<string>();\n @Output() saveFrequency = new EventEmitter<any>();\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList:[],\n displayElementKey: '',\n elementId: '',\n singularText: '',\n pluralText: '',\n showFrequency: true,\n frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',\n isDisabled: false\n\n };\n showRadio = true;\n constructor(private snackBar:SnackBarService) { }\n ngOnChanges(){\n this.savedFrequencies = [...new Set(this.savedFrequencies)]\n }\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n if (this.savedFrequencyTab) {\n this.changeTab(this.savedFrequencyTab);\n }\n if (this.selectedDate) {\n switch (this.savedFrequencyTab) {\n case 'weekly':\n this.selectedDays = [...new Set(this.savedFrequencies)]\n break;\n case 'monthly':\n this.monthlyDate = this.selectedDate;\n this.selectedMonths = [...new Set(this.savedFrequencies)]\n\n break;\n case 'quarterly':\n this.showRadio = false;\n setTimeout(() => {\n this.showRadio = true\n }, 100);\n this.quarterlyDate = this.selectedDate\n this.selectedQuarter = this.savedFrequencies;\n\n break;\n\n }\n }\n\n }\n closeFrequency() {\n this.closeFrequencyPopup.emit();\n }\n daySelectionChange(event: any, index: any) {\n if (event) { //checkbox was selected\n this.selectedDays.push(index);\n } else {\n let unselectedElementIndex = this.selectedDays.indexOf(index);\n this.selectedDays.splice(unselectedElementIndex, 1);\n }\n this.checkFrequencyValidity();\n }\n monthSelectionChange(event: any, index: any) {\n if (event) {\n this.selectedMonths.push(index);\n } else {\n let unselectedElementIndex = this.selectedMonths.indexOf(index);\n this.selectedMonths.splice(unselectedElementIndex, 1);\n }\n this.checkDateValidity(this.monthlyDate,'monthly')\n this.checkFrequencyValidity();\n }\n\n quarterSelectionChange(event: any, index: any) {\n this.selectedQuarter = index;\n this.checkDateValidity(this.quarterlyDate,'quarterly');\n this.checkFrequencyValidity();\n }\n\n changeTab(tabValue: string) {\n this.frequencyTab = tabValue;\n this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';\n this.footerDetails.isDisabled = false;\n this.setToDefaultValues()\n if (this.frequencyTab === this.savedFrequencyTab) {\n switch (this.frequencyTab) {\n case 'weekly': {\n this.selectedDays = [...this.savedFrequencies];\n this.monthlyDate = 1;\n this.quarterlyDate = 1;\n break;\n }\n case 'monthly': {\n this.selectedMonths = [...this.savedFrequencies];\n this.monthlyDate = this.selectedDate;\n this.quarterlyDate = 1;\n this.checkDateValidity(this.monthlyDate,'monthly')\n break;\n }\n case 'quarterly': {\n this.selectedQuarter = this.savedFrequencies;\n this.quarterlyDate = this.selectedDate;\n this.monthlyDate = 1;\n this.checkDateValidity(this.quarterlyDate,'quarterly')\n break;\n }\n }\n }\n }\n\n setToDefaultValues() {\n this.selectedDays = [0];\n this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n this.selectedQuarter = 0;\n }\n\n submitFrequency() {\n let stringVal = \"Every \";\n let frequencies;\n let selectedDate = 1;\n switch (this.frequencyTab) {\n case 'weekly': {\n if (this.selectedDays.length > 0) {\n this.selectedDays.sort();\n frequencies = this.selectedDays;\n this.selectedDays.forEach((dayIndex, index) => {\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\n })\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n case 'monthly': {\n stringVal = \" of every \";\n if (this.selectedMonths.length > 0) {\n frequencies = this.selectedMonths;\n this.monthNames.forEach((monthNames: string, monthIndex: number) => {\n if (this.selectedMonths.includes(monthIndex)) {\n stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;\n\n }\n })\n let monthDateName;\n if (this.monthlyDate == 1) {\n monthDateName = '1st'\n }\n else if (this.monthlyDate == 2) {\n monthDateName = '2nd'\n }\n else if (this.monthlyDate == 3) {\n monthDateName = '3rd'\n }\n else {\n monthDateName = this.monthlyDate + 'th'\n }\n stringVal = monthDateName + stringVal;\n selectedDate = this.monthlyDate;\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n case 'quarterly': {\n stringVal = \" of every \";\n\n if (this.selectedQuarter >= 0) {\n frequencies = this.selectedQuarter;\n stringVal += this.quarters[this.selectedQuarter];\n selectedDate = this.quarterlyDate;\n let monthDateName;\n if (this.quarterlyDate == 1) {\n monthDateName = '1st'\n }\n else if (this.quarterlyDate == 2) {\n monthDateName = '2nd'\n }\n else if (this.quarterlyDate == 3) {\n monthDateName = '3rd'\n }\n else {\n monthDateName = this.quarterlyDate + 'th'\n }\n stringVal = monthDateName + stringVal;\n selectedDate = this.quarterlyDate;\n } else {\n // nothing was selected\n this.closeFrequency();\n }\n break;\n }\n }\n this.saveFrequency.emit({\n frequencyString: stringVal,\n frequencyType: this.frequencyTab,\n frequencies: frequencies,\n selectedDate\n })\n }\n \n checkDateValidity(date:number, type:string){\n if(date>31 || date<1){\n this.snackBar.show('Select valid date.','alert');\n this.footerDetails.isDisabled = true;\n return\n }else{\n this.footerDetails.isDisabled = false;\n }\n const monthList=[{name:'January',maxDays:31,value:0},{name:'February',maxDays:28,value:1},{name:'March',maxDays:31,value:2},\n {name:'April',maxDays:30,value:3},{name:'May',maxDays:31,value:4},{name:'June',maxDays:30,value:5},\n {name:'July',maxDays:31,value:6},{name:'August',maxDays:31,value:7},{name:'September',maxDays:30,value:8},\n {name:'October',maxDays:31,value:9},{name:'November',maxDays:30,value:10},{name:'December',maxDays:31,value:11}]\n switch (type) {\n case 'monthly':\n if(this.selectedMonths.length==1){\n const index = monthList.findIndex((ele:any)=>ele.value==this.selectedMonths[0]);\n if(date<=monthList[index].maxDays){\n this.footerDetails.isDisabled = false;\n \n }else{\n this.snackBar.show('Select valid date.','alert');\n this.footerDetails.isDisabled = true; \n }\n }else if(this.selectedMonths.length==0){\n this.footerDetails.isDisabled = true; \n }else{\n this.footerDetails.isDisabled = false;\n }\n\n break;\n default:\n this.footerDetails.isDisabled = false;\n return true;\n break;\n\n }\n\n}\n\ncheckFrequencyValidity(){\n switch (this.frequencyTab) {\n case 'weekly': {\n if (this.selectedDays.length > 0) {\n this.footerDetails.isDisabled = false;\n\n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n case 'monthly': {\n \n if (this.selectedMonths.length > 0) {\n this.footerDetails.isDisabled = false;\n \n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n case 'quarterly': {\n\n if (this.selectedQuarter >= 0){\n this.footerDetails.isDisabled = false;\n \n } else {\n this.footerDetails.isDisabled = true;\n }\n break;\n }\n } \n}\n\n}\n","<div class=\"create-frequency\" [class.animate-slideInRight]=\"animation\">\n <div class=\"create-frequency-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4 vx-mb-4\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Frequency</div>\n </div>\n <div class=\"create-frequency-body vx-pl-4 vx-pr-4\">\n <div class=\"create-frequency-body-inner\">\n <div class=\"create-frequency-tab\" [ngSwitch]=\"frequencyTab\">\n <div class=\"create-frequency-tab-head\">\n <ul class=\"navigation\">\n <li><button [class.active]=\"frequencyTab == 'weekly'\" (click)=\"changeTab('weekly')\">Weekly</button></li>\n <li><button [class.active]=\"frequencyTab == 'monthly'\" (click)=\"changeTab('monthly')\">Monthly</button></li>\n <li><button [class.active]=\"frequencyTab == 'quarterly'\" (click)=\"changeTab('quarterly')\">Quarterly</button></li>\n </ul>\n </div>\n <div class=\"create-frequency-tab-body vx-pl-4 vx-pr-4\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">Email Reminder Frequency:</div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'weekly'\">\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let day of dayNames; let dayIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"daySelectionChange($event, dayIndex)\" [ngValue]=\"selectedDays.includes(dayIndex)\">{{day}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list month\" *ngSwitchCase=\"'monthly'\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(monthlyDate,'monthly')\" [(ngModel)]=\"monthlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center vx-flex-wrap\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center\" *ngFor=\"let month of monthNames; let monthIndex = index\">\n <app-cs-checkbox (ngValueChange)=\"monthSelectionChange($event, monthIndex)\" [ngValue]=\"selectedMonths.includes(monthIndex)\">{{month}}</app-cs-checkbox>\n </div>\n </div>\n </div>\n <div class=\"checkbox-list\" *ngSwitchCase=\"'quarterly'\">\n <ng-container *ngIf=\"showRadio\">\n <div class=\"frequency-top vx-d-flex vx-align-center\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">Day</div>\n <input type=\"number\" (focusout)=\"checkDateValidity(quarterlyDate,'quarterly')\" [(ngModel)]=\"quarterlyDate\" class=\"countNum\" onkeydown=\"return event.keyCode !== 190\" min=\"1\" oninput=\"this.value = Math.abs(this.value)\">\n <div class=\"vx-fs-13 vx-paragraph-txt\">of</div>\n </div>\n <div class=\"frequency-checkbox vx-d-flex vx-align-center\">\n <div class=\"frequency-checkbox-item vx-p-3 vx-pr-4 vx-d-flex vx-align-center vx-w-100\" *ngFor=\"let quarter of quarters, let quarterIndex = index\">\n <app-cs-radio (checkedEvent)=\"quarterSelectionChange($event, quarterIndex)\" [checked]=\"selectedQuarter === quarterIndex\">{{quarter}}</app-cs-radio>\n </div>\n </div>\n </ng-container> \n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"create-frequency-footer\">\n <app-dashboard-footer \n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"closeFrequencyPopup.emit()\"\n (submitEvent)=\"submitFrequency()\"\n ></app-dashboard-footer>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n declarations: [PaginationComponent],\n imports: [CommonModule],\n exports: [PaginationComponent],\n})\nexport class PaginationModule {}","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-switch',\n templateUrl: './cs-switch.component.html',\n styleUrls: ['./cs-switch.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsSwitchComponent implements OnInit {\n @Input() disabled!: boolean;\n @Input() ngValue: any;\n @Input() value: any;\n @Output() ngValueChange = new EventEmitter<any>();\n @Input() tooltipMessage: any;\n @Input() position: any;\n constructor() {}\n\n ngOnInit(): void {\n // console.log(this.value);\n }\n valueChanged() {\n this.ngValueChange.emit(this.ngValue);\n }\n}\n","<label class=\"cs-switch\" [class.top]=\"position == 'top'\">\n <!-- [class.large]=\"large\" -->\n <span class=\"value\">\n @if (value != undefined) {\n <span [innerHTML]=\"value\"></span>\n }\n <!-- <span class=\"notification\" *ngIf=\"!tooltipMessage\" [arTooltip]=\"tooltipMessage\" placement=\"bottom-right\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\n <i class=\"vc-icons\">&#xe9f3;</i>\n </span> -->\n</span>\n<!-- [class.last]=\"last\" -->\n@if (tooltipMessage === '' || tooltipMessage === undefined) {\n <span class=\"switch\">\n <input type=\"checkbox\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" [disabled]=\"disabled\" />\n <span class=\"switch-box\">\n <span class=\"switch-ball\"></span>\n </span>\n </span>\n}\n@if (tooltipMessage !== '' && tooltipMessage !== undefined) {\n <span\n class=\"switch\"\n [arTooltip]=\"tooltipMessage\"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n <input type=\"checkbox\" [(ngModel)]=\"ngValue\" (ngModelChange)=\"valueChanged()\" [disabled]=\"disabled\" />\n <span class=\"switch-box\">\n <span class=\"switch-ball\"></span>\n </span>\n </span>\n}\n</label>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-cs-radio-group',\n templateUrl: './cs-radio-group.component.html',\n styleUrls: ['./cs-radio-group.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsRadioGroupComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n<app-cs-radio>fefre</app-cs-radio>\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]',\n standalone: false\n})\nexport class ClickOutsideDirective {\n constructor(private elementRef: ElementRef) {}\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\n\n @HostListener('document:click', ['$event.target']) onMouseEnter(targetElement: any) {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit(null);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'pascal',\n standalone: false\n})\nexport class PascalPipe implements PipeTransform {\n transform(value: string, ...args: unknown[]): unknown {\n if (typeof value !== 'string') {\n return value;\n }\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\n\n@Component({\n selector: 'app-cs-select',\n templateUrl: './cs-select.component.html',\n styleUrls: ['./cs-select.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class CsFormSelectComponent implements OnChanges {\n @Input() dataList!: any[];\n @Input() dropdownLabel!: string;\n @Input() displayProperty!: string;\n @Input() selectedValue!: string;\n @Input() isRequired!: boolean;\n @Input() dropdownSubLabel!: string;\n @Input() disabled!: boolean;\n @ViewChild('option') option!: ElementRef;\n\n @Output() selectedData = new EventEmitter();\n @Output() selectedValueChange = new EventEmitter();\n @Input() placeholder: any;\n @Input() stylex: any;\n @Input() valueKey: any;\n @Input() multipleSelect: any;\n @Input() colorProperty!: string;\n\n @Input() colorSelected!: string;\n colorCode!: string;\n\n dropdownOption = false;\n positionReset!: boolean;\n getLeft!: number;\n getTop!: number;\n getWidth!: number;\n maxWidth!: number;\n activeDoropdown = false;\n\n private optionList!: ElementRef;\n\n @ViewChild('optionList') set content(content: ElementRef) {\n if (content) {\n // initially setter gets called with undefined\n this.optionList = content;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.selectedValue) {\n this.selectedValue = this.selectedValue || '--';\n }\n }\n\n openDropdown(event: any): void {\n this.dropdownOption = true;\n setTimeout(() => {\n const dropdown = event.target.getBoundingClientRect();\n const selectOption = this.optionList.nativeElement.offsetHeight;\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\n this.getTop = dropdown.top - selectOption;\n } else {\n this.getTop = dropdown.top + dropdown.height;\n }\n this.getLeft = dropdown.left;\n this.getWidth = dropdown.width;\n this.maxWidth = dropdown.width * 1.25;\n }, 10);\n setTimeout(() => {\n this.activeDoropdown = true;\n }, 100);\n }\n selectOption(selectedData: any) {\n if (typeof selectedData === 'object') {\n this.selectedValue = selectedData[this.displayProperty];\n this.colorSelected = selectedData[this.colorProperty];\n } else {\n this.selectedValue = selectedData;\n }\n this.selectedData.emit(selectedData);\n this.dropdownOption = false;\n }\n closeDropdown() {\n this.dropdownOption = false;\n }\n}\n","<div class=\"input-group\" (clickOutside)=\"dropdownOption = false\">\n @if (dropdownLabel != undefined) {\n <label>\n {{ dropdownLabel }} <span class=\"sub-label\">{{ dropdownSubLabel }}</span> @if (isRequired) {\n <span class=\"required\">*</span>\n }</label\n >\n }\n <div class=\"custom-select-box\" [class.disabled]=\"disabled\">\n @if (!colorProperty) {\n <input\n type=\"text\"\n [class.line]=\"stylex\"\n [placeholder]=\"placeholder\"\n [value]=\"selectedValue | pascal\"\n readonly\n (click)=\"openDropdown($event)\"\n (keyup.enter)=\"openDropdown($event)\"\n (keyup.arrowup)=\"openDropdown($event)\"\n (keyup.arrowdown)=\"openDropdown($event)\"\n />\n }\n @if (colorProperty) {\n <span class=\"show-label\" (click)=\"openDropdown($event)\">\n <span class=\"label\" [innerHTML]=\"selectedValue\" [style.backgroundColor]=\"colorSelected + '1A'\" [style.color]=\"colorSelected\"></span>\n </span>\n }\n <span class=\"arrow\" [class.line]=\"stylex\">\n <i class=\"risk-icons\">&#xe919;</i>\n </span>\n @if (dropdownOption === true) {\n <div class=\"overlay active\" (click)=\"closeDropdown()\"></div>\n }\n @if (dropdownOption === true && !colorProperty) {\n <ul\n class=\"list-of-option\"\n #optionList\n (keyup.Escape)=\"closeDropdown()\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDoropdown\"\n >\n @for (data of dataList; track data) {\n <li>\n <label>\n <input type=\"radio\" [value]=\"data[valueKey]\" name=\"sliceLabel\" (change)=\"selectOption(data)\" #option (keyup.enter)=\"closeDropdown()\" class=\"pointer-none\" />\n @if (displayProperty && displayProperty !== '') {\n <span (click)=\"closeDropdown(); selectOption(data)\" class=\"value\">{{ data[displayProperty] }}</span>\n }\n @if (!displayProperty || displayProperty === '') {\n <span (click)=\"closeDropdown(); selectOption(data)\" class=\"value\">{{ data }}</span>\n }\n </label>\n </li>\n }\n </ul>\n }\n @if (dropdownOption === true && colorProperty) {\n <ul\n class=\"list-of-option\"\n #optionList\n (keyup.Escape)=\"closeDropdown()\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDoropdown\"\n >\n @for (data of dataList; track data) {\n <li>\n <label class=\"colors\">\n <input type=\"radio\" [value]=\"data[valueKey]\" name=\"sliceLabel\" (click)=\"selectOption(data)\" #option (keyup.enter)=\"closeDropdown()\" class=\"pointer-none\" />\n @if (displayProperty && displayProperty !== '') {\n <span\n (click)=\"selectOption(data)\"\n class=\"value\"\n [ngStyle]=\"{ color: data.segment_color }\"\n [style.backgroundColor]=\"data.segment_color + '1A'\"\n >{{ data[displayProperty] }}</span\n >\n }\n @if (!displayProperty || displayProperty === '') {\n <span\n (click)=\"selectOption(data)\"\n class=\"value\"\n [ngStyle]=\"{ color: data.segment_color }\"\n [style.backgroundColor]=\"data.segment_color + '1A'\"\n >{{ data }}</span\n >\n }\n </label>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolTipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [ToolTipDirective],\n imports: [CommonModule],\n exports: [ToolTipDirective],\n})\nexport class TooltipModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchMultiSelect',\n standalone: false\n})\nexport class SearchMultiSelectPipe implements PipeTransform {\n transform(value: any[], key: string, searchKey: string): any[] {\n if (searchKey && searchKey.length > 0) {\n searchKey = searchKey.toLowerCase();\n return value.filter((item) => {\n if (item[key].toLowerCase().includes(searchKey)) {\n return item;\n }\n });\n }\n return value;\n }\n}\n","import { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CsCheckboxComponent } from './cs-checkbox/cs-checkbox.component';\nimport { CsRadioComponent } from './cs-radio/cs-radio.component';\nimport { CsSwitchComponent } from './cs-switch/cs-switch.component';\nimport { CsRadioGroupComponent } from './cs-radio-group/cs-radio-group.component';\nimport { CsFormSelectComponent } from './cs-select/cs-select.component';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { PascalPipe } from './pipes/pascal.pipe';\nimport { SearchMultiSelectPipe } from './pipes/searchMultiSelect.pipe';\nimport { ClickOutsideDirective } from './click-outside.directive';\n\n@NgModule({\n declarations: [\n CsCheckboxComponent,\n CsRadioComponent,\n CsSwitchComponent,\n CsRadioGroupComponent,\n CsFormSelectComponent,\n PascalPipe,\n SearchMultiSelectPipe,\n ClickOutsideDirective,\n ],\n imports: [CommonModule, FormsModule, TooltipModule],\n exports: [\n CsCheckboxComponent,\n CsRadioComponent,\n CsSwitchComponent,\n CsRadioGroupComponent,\n CsFormSelectComponent,\n SearchMultiSelectPipe,\n ],\n})\nexport class FormgroupModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoverComponent } from './popover.component';\nimport { PopoverDirective } from './popover.directive';\nimport { PopoverService } from './popover.service';\n\n@NgModule({\n declarations: [PopoverComponent, PopoverDirective],\n imports: [CommonModule],\n exports: [PopoverComponent, PopoverDirective],\n providers: [PopoverService],\n})\nexport class PopoverModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DashboardFooterComponent } from './dashboard-footer/dashboard-footer.component';\nimport { PopoverModule } from '../popover/popover.module';\nimport { TooltipModule } from '../tooltip/tooltip.module'\n\n\n\n@NgModule({\n declarations: [\n DashboardFooterComponent\n ],\n imports: [\n CommonModule,\n PopoverModule,\n TooltipModule\n ],\n exports:[\n DashboardFooterComponent\n ]\n})\nexport class DashboardFooterModule { }\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[appInsertion]',\n standalone: false\n})\nexport class InsertionDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","export class DialogConfig<D = any> {\n data?: D;\n position?: any;\n background?: any;\n pointer?: any;\n}\n","import {\n Component,\n Type,\n ViewChild,\n OnDestroy,\n ComponentRef,\n AfterViewInit,\n ChangeDetectorRef,\n OnInit,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { InsertionDirective } from './insertion.directive';\nimport { Subject } from 'rxjs';\nimport { DialogRef } from './dialog-ref';\nimport { DialogConfig } from './dialog-config';\nimport {\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Router,\n} from '@angular/router';\n\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\n componentRef!: ComponentRef<any>;\n position: any;\n background: any;\n pointer: any;\n @ViewChild(InsertionDirective, { static: true })\n insertionPoint!: InsertionDirective;\n animation = true;\n\n private readonly onDialogClose = new Subject<any>();\n public onClose = this.onDialogClose.asObservable();\n\n childComponentType!: Type<any>;\n\n constructor(\n private cd: ChangeDetectorRef,\n private dialogRef: DialogRef,\n public config: DialogConfig,\n private router: Router\n ) {\n // this.componentRef = this.componentRef;\n // this.animate = this.animate;\n // this.insertionPoint = this.insertionPoint;\n // this.childComponentType = this.childComponentType;\n }\n ngOnInit() {\n this.position = this.config.position;\n this.background = this.config.background;\n document.body.style.overflow = 'hidden';\n setTimeout(() => {\n this.animation = false;\n }, 200);\n this.routeAction();\n }\n\n routeAction() {\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationStart) {\n // Show loading indicator\n }\n if (event instanceof NavigationEnd) {\n // Hide loading indicator\n this.dialogRef.close();\n }\n if (event instanceof NavigationError) {\n // Hide loading indicator\n // Present error to user\n }\n });\n }\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n this.cd.detectChanges();\n }\n\n onOverlayClicked(evt: MouseEvent) {\n // this.dialogRef.close();\n }\n\n onDialogClicked(evt: MouseEvent) {\n evt.stopPropagation();\n }\n\n loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertionPoint.viewContainerRef;\n viewContainerRef.clear();\n\n this.componentRef = viewContainerRef.createComponent(componentType);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n close(data?: any) {\n this.onDialogClose.next(data);\n document.body.style.overflow = 'auto';\n }\n}\n","<div\n class=\"overlay\"\n (click)=\"onOverlayClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER',\n black: background === 'black'\n }\" [class.pointer-none]=\"pointer === 'none'\"\n>\n <div\n class=\"dialog\"\n [class.animate]=\"animation\"\n (click)=\"onDialogClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER'\n }\"\n >\n <ng-template appInsertion></ng-template>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DialogComponent } from './dialog.component';\nimport { InsertionDirective } from './insertion.directive';\nimport { DialogRef } from './dialog-ref';\n@NgModule({\n imports: [CommonModule],\n declarations: [DialogComponent, InsertionDirective],\n providers: [DialogRef]\n})\nexport class DialogModule {}\n","import { Injector, Type, InjectionToken } from '@angular/core';\n\nexport class DialogInjector implements Injector {\n constructor(\n private parentDialogInjector: Injector,\n private dialogAdditionalTokens: WeakMap<any, any>\n ) {}\n\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T;\n // get(token: any, notFoundValue?: any){return; }\n get(token: any, notFoundValue?: any) {\n const value = this.dialogAdditionalTokens.get(token);\n if (value) {\n return value;\n }\n return this.parentDialogInjector.get<any>(token, notFoundValue);\n }\n}\n","import { Injectable, ApplicationRef, EnvironmentInjector, Injector, Type, EmbeddedViewRef, ComponentRef, createComponent } from '@angular/core';\nimport { DialogModule } from './dialog.module';\nimport { DialogComponent } from './dialog.component';\nimport { DialogInjector } from './dialog-injector';\nimport { DialogConfig } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\n\n@Injectable({\n providedIn: DialogModule,\n})\nexport class DialogService {\n dialogComponentRef!: ComponentRef<DialogComponent>;\n\n constructor(private appRef: ApplicationRef, private injector: Injector, private environmentInjector: EnvironmentInjector) {}\n\n public open(componentType: Type<any>, config: DialogConfig) {\n const dialogRef = this.appendDialogComponentToBody(config);\n\n this.dialogComponentRef.instance.childComponentType = componentType;\n\n return dialogRef;\n }\n\n private appendDialogComponentToBody(config: DialogConfig) {\n const map = new WeakMap();\n map.set(DialogConfig, config);\n\n const dialogRef = new DialogRef();\n map.set(DialogRef, dialogRef);\n\n const sub = dialogRef.afterClosed.subscribe(() => {\n this.removeDialogComponentFromBody();\n sub.unsubscribe();\n });\n\n const componentRef = createComponent(DialogComponent, {\n environmentInjector: this.environmentInjector,\n elementInjector: new DialogInjector(this.injector, map),\n });\n\n this.appRef.attachView(componentRef.hostView);\n\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this.dialogComponentRef = componentRef;\n\n this.dialogComponentRef.instance.onClose.subscribe(() => {\n this.removeDialogComponentFromBody();\n });\n\n return dialogRef;\n }\n\n private removeDialogComponentFromBody() {\n this.appRef.detachView(this.dialogComponentRef.hostView);\n this.dialogComponentRef.destroy();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\nimport { DialogService } from '../../ui-kit/dialog/dialog.service';\nimport { EditorConfig } from '@vcomply/editor';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class FormGroupComponent implements OnInit {\n @Output() openCategoryList = new EventEmitter<string>();\n @Output() openResponsibilityCenterList = new EventEmitter<string>();\n @Output() openWhoCanViewThis = new EventEmitter<string>();\n @Output() closeCreateDashboard = new EventEmitter<string>();\n @Output() openFrequency = new EventEmitter<string>();\n @Input() disabled!: boolean;\n\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\n datePickerOverlay = false;\n selectedFromDate!: any;\n selectedToDate!: any;\n dashboardName!: any;\n dashboardDescriptionText!: any;\n fieldEmptyErrorMessage: string = 'Enter a value for this input box.';\n fieldLimitExceededErrorMessage: string =\n 'You have exceeded the maximum character limit of XYZ characters.';\n dashboardNameNotUniqueErrorMessage: string =\n 'A dashboard with this name already exists. Specify a different name for the dashboard.';\n dashboardNameError!: string;\n dashboardDescriptionError!: string;\n displayCriteria!: string;\n ASSETS: any = ASSETS;\n\n constructor(private dialog: DialogService) {}\n\n dashboardDescription: EditorConfig = {\n placeholder: 'Description (Max limit: 250 characters)',\n mode: 'prime',\n id: 'description',\n };\n\n fromDatePickerConfig: IDatePickerConfig = {\n min: this.getCurrentDate(),\n };\n\n toDatePickerConfig: IDatePickerConfig = {};\n\n ngOnInit(): void {}\n\n openFromDatePicker() {\n this.fromDatePicker.api.open();\n this.datePickerOverlay = true;\n }\n\n openToDatePicker() {\n this.toDatePicker.api.open();\n this.datePickerOverlay = true;\n }\n\n closeFromDatePicker() {\n let minToDate = this.selectedFromDate?.clone()?.add(1, 'days');\n this.toDatePickerConfig = { min: minToDate, minTime: minToDate };\n\n if (this.selectedToDate && minToDate.diff(this.selectedToDate) > 0) {\n this.selectedToDate = undefined;\n }\n\n this.fromDatePicker.api.close();\n this.datePickerOverlay = false;\n }\n\n closeToDatePicker() {\n this.toDatePicker.api.close();\n this.datePickerOverlay = false;\n }\n\n animateImage() {\n const circleImage = document.getElementsByClassName('image');\n console.log(circleImage);\n }\n\n selectWhoCanViewThis() {\n this.openWhoCanViewThis.emit();\n }\n\n selectResponsibilityCenter() {\n this.openResponsibilityCenterList.emit();\n }\n\n selectCategories() {\n this.openCategoryList.emit();\n }\n\n selectFrequency() {\n this.openFrequency.emit();\n }\n\n configureDashboard() {\n let fieldsStatus = this.verifyFields();\n // if(fieldsStatus) {\n // this.closeCreateDashboard.emit();\n // const ref = this.dialog.open(ConfigureWidgetsComponent, {\n // data: {},\n // position: 'CENTER',\n // pointer: 'none'\n // });\n // }\n }\n\n verifyFields() {\n let allFieldsValid = true;\n this.dashboardNameError = '';\n this.dashboardDescriptionError = '';\n\n if (\n this.dashboardName === null ||\n this.dashboardName === undefined ||\n this.dashboardName === ''\n ) {\n this.dashboardNameError = this.fieldEmptyErrorMessage;\n allFieldsValid = false;\n } else if (this.dashboardName.length > 30) {\n this.dashboardNameError = this.fieldLimitExceededErrorMessage.replace(\n 'XYZ',\n '30'\n );\n allFieldsValid = false;\n } else if (\n this.dashboardDescriptionText === null ||\n this.dashboardDescriptionText === undefined ||\n this.dashboardDescriptionText === ''\n ) {\n this.dashboardDescriptionError = this.fieldEmptyErrorMessage;\n allFieldsValid = false;\n } else if (this.dashboardDescriptionText.length > 250) {\n this.dashboardDescriptionError =\n this.fieldLimitExceededErrorMessage.replace('XYZ', '250');\n allFieldsValid = false;\n }\n return allFieldsValid;\n }\n\n getCurrentDate() {\n let today = new Date();\n return (\n today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear()\n );\n }\n\n displayCriteriaSelected(event: boolean, selection: string) {\n this.displayCriteria = selection;\n }\n}\n","<!-- <p>form-group works!</p> -->\n<div class=\"form-group\" [class.disabled]=\"disabled\">\n <div class=\"vx-dialog-body-container\" (scroll)=\"animateImage()\">\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\"\n >Dashboard Name<span class=\"required\">*</span></label\n >\n <div class=\"vx-input-group\">\n <input\n type=\"text\"\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\n [(ngModel)]=\"dashboardName\"\n />\n @if (dashboardName?.length > 0) {\n <span class=\"counter\">{{\n 30 - dashboardName?.length\n }}</span>\n }\n </div>\n <p class=\"vx-txt-error\">{{ dashboardNameError }}</p>\n <div class=\"vx-input-group\">\n <vcomply-editor\n [editorConfig]=\"dashboardDescription\"\n [(ngModel)]=\"dashboardDescriptionText\"\n ></vcomply-editor>\n @if (dashboardDescriptionText?.length > 0) {\n <span\n class=\"counter\"\n >{{ 250 - dashboardDescriptionText?.length }}</span\n >\n }\n </div>\n <p class=\"vx-txt-error\">{{ dashboardDescriptionError }}</p>\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardUsersIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\"\n >Who can view this dashboard?<span class=\"required\">*</span></label\n >\n <div class=\"selectbox\">\n <input\n type=\"text\"\n placeholder=\"Who can view this dashboard?\"\n readonly\n (click)=\"selectWhoCanViewThis()\"\n />\n </div>\n <div class=\"selected\">\n <div class=\"left\">\n <div class=\"chip-container\">\n <span class=\"chip\">\n <span class=\"value\">Samantha Jones</span>\n </span>\n <span class=\"chip\">\n <i class=\"icons\">&#xe90d;</i>\n <span class=\"value\">Angel Kleven</span>\n </span>\n </div>\n <button class=\"count\">+10</button>\n </div>\n <button class=\"edit\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardRcIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">RESPONSIBILITY CENTER(S)</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Responsibility Center(s) that you would like displayed in the Dashboard, if any.\"\n (click)=\"selectResponsibilityCenter()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardProgramIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">PROGRAM</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Program that this responsibility relates to.\"\n (click)=\"selectCategories()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img [ngSrc]=\"ASSETS.dashBoardRiskIcon\" alt=\"\" width=\"36\" height=\"36\" />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">RISK CATEGORIES</label>\n <div class=\"selectbox\">\n <div\n class=\"custom-input\"\n aria-placeholder=\"Select the Risk Categories that you would like displayed in the Dashboard, if any.\"\n (click)=\"selectCategories()\"\n ></div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardUsersIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">DISPLAY CRITERIA</label>\n <div class=\"radio-group\">\n <app-cs-radio\n (checkedEvent)=\"\n displayCriteriaSelected($event, 'BOTH_RC_AND_CATEGORY')\n \"\n >Those responsibilities that have been assigned to both the\n selected Responsibility Center(s) and the selected\n Categories.</app-cs-radio\n >\n <app-cs-radio\n (checkedEvent)=\"displayCriteriaSelected($event, 'RC_OR_CATEGORY')\"\n >Those responsibilities that have been assigned to either the\n selected Responsibility Center(s) or the selected\n Categories.</app-cs-radio\n >\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardTimeFrameIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">TIMEFRAME</label>\n <label class=\"vx-control-panel-sub-label\"\n >Select how long you would like the information selected to be\n displayed for. If no timeframe is selected, the information will be\n displayed permanently.</label\n >\n <div class=\"input-group vx-d-flex vx-justify-between\">\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input\n type=\"text\"\n [value]=\"selectedFromDate | date : 'dd MMM yyyy'\"\n [placeholder]=\"'From'\"\n (click)=\"openFromDatePicker()\"\n readonly\n />\n <dp-date-picker\n #fromDatePicker\n [(ngModel)]=\"selectedFromDate\"\n placeholder=\"Select Date\"\n (onSelect)=\"closeFromDatePicker(); datePickerOverlay = false\"\n [config]=\"fromDatePickerConfig\"\n ></dp-date-picker>\n @if (datePickerOverlay) {\n <div\n class=\"overlay\"\n (click)=\"closeFromDatePicker()\"\n ></div>\n }\n </div>\n <div class=\"date-select\">\n <i class=\"icons\">&#xe92d;</i>\n <input\n type=\"text\"\n [value]=\"selectedToDate | date : 'dd MMM yyyy'\"\n [placeholder]=\"'To'\"\n (click)=\"openToDatePicker()\"\n readonly\n />\n <dp-date-picker\n #toDatePicker\n [(ngModel)]=\"selectedToDate\"\n placeholder=\"Select Date\"\n (onSelect)=\"closeToDatePicker(); datePickerOverlay = false\"\n [config]=\"toDatePickerConfig\"\n ></dp-date-picker>\n @if (datePickerOverlay) {\n <div\n class=\"overlay\"\n (click)=\"closeToDatePicker()\"\n ></div>\n }\n </div>\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n <div class=\"form-group-row\">\n <!--active class will appear on open list-->\n <div class=\"image\">\n <img\n [ngSrc]=\"ASSETS.dashBoardEmailSummariesIcon\"\n alt=\"\"\n width=\"36\"\n height=\"36\"\n />\n </div>\n <div class=\"form\">\n <div class=\"vx-form-group\">\n <label class=\"vx-control-panel\">\n Email Summaries\n <i\n class=\"icons\"\n [arTooltip]=\"'This is a test tooltip'\"\n placement=\"bottom-left\"\n type=\"white\"\n delay=\"0\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n ></label\n >\n <label class=\"vx-control-panel-sub-label\">\n If you would like to send a summary of this Dashboard, please select\n a frequency(By default VComply sends a weekly Summary).\n </label>\n <div class=\"selectbox\">\n <input\n type=\"text\"\n placeholder=\"Email Summaries\"\n readonly\n (click)=\"selectFrequency()\"\n />\n </div>\n <!-- <p class=\"vx-txt-error\">Enter a value for this input box.</p> -->\n </div>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button\n class=\"vx-btn block primary\"\n [disabled]=\"disabled\"\n (click)=\"configureDashboard()\"\n >\n Next: Configure Widgets\n </button>\n </div>\n </div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FloatingBarComponent } from './floating-bar.component';\nimport { PopoverModule } from '../popover/popover.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [\n FloatingBarComponent\n ],\n imports: [\n CommonModule,\n PopoverModule,\n TooltipModule\n ],\n exports: [\n FloatingBarComponent\n ]\n})\nexport class FloatingBarModule { }\n","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\nimport { RiskCategoriesConfig } from './risk-categories-config';\nimport { ASSETS } from '../constants/assets.constant';\n\n@Component({\n selector: 'app-risk-categories',\n templateUrl: './risk-categories.component.html',\n styleUrls: ['./risk-categories.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class RiskCategoriesComponent implements OnInit {\n ASSETS = ASSETS;\n\n @Input() categoryList: RiskCategoriesConfig = {\n strategic: {\n list: [],\n selectedList: [],\n },\n operational: {\n list: [],\n selectedList: [],\n },\n compliance: {\n list: [],\n selectedList: [],\n },\n others: {\n list: [],\n selectedList: [],\n },\n };\n @Input() allCategories: any[] = [];\n\n @Input() categoryIdKey: any;\n @Input() selectedCategories: any[] = [];\n\n search = '';\n activeTab: 'strategic' | 'operational' | 'compliance' | 'others' =\n 'strategic';\n selectedIds: any[] = [];\n animation = false;\n blockWidth: any;\n footerDetails: DashboardFooterConfig = {\n selectedData: [],\n nonRemovableList: [],\n displayElementKey: 'category_name',\n elementId: 'category_id',\n singularText: 'Risk Category selected',\n pluralText: 'Risk Categories selected',\n showFrequency: false,\n frequencyText: '',\n isDisabled: false,\n };\n\n @Output() saveSelectedCategory = new EventEmitter();\n @Output() closeList = new EventEmitter();\n @Output() closeCategoriesList = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {\n this.animation = true;\n setTimeout(() => {\n this.animation = false;\n }, 300);\n this.selectedIds = [];\n if (this.selectedCategories) {\n this.selectedCategories.forEach((element) => {\n this.selectedIds.push(element[this.categoryIdKey]);\n });\n }\n this.setList();\n }\n\n selectCategory(mode: any, activeTab: any, category: any) {\n if (mode) {\n this.selectedIds.push(category[this.categoryIdKey]);\n } else {\n const index = this.selectedIds.findIndex(\n (element: any) => element == category[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n }\n this.setList();\n }\n\n deleteEvent(event: any) {\n const index = this.selectedIds.findIndex(\n (element: any) => element == event[this.categoryIdKey]\n );\n this.selectedIds.splice(index, 1);\n this.setList();\n }\n\n selectAll(mode: any, activeTab: string) {\n if (mode) {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const list = this.categoryList[activeTab].list;\n list.forEach((element) => {\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\n this.selectedIds.push(element[this.categoryIdKey]);\n }\n });\n }\n } else {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const list = [...this.categoryList[activeTab].list];\n list.forEach((element) => {\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\n let idIndex = this.selectedIds.findIndex(\n (id: any) => id == element[this.categoryIdKey]\n );\n this.selectedIds.splice(idIndex, 1);\n }\n });\n }\n }\n this.setList();\n }\n\n setList() {\n const data: any = [];\n const categoryList = [...new Set(this.allCategories)];\n // cloneDeep(this.allCategories)\n const selectedIds = [...new Set(this.selectedIds)];\n // cloneDeep(this.selectedIds);\n this.categoryList.strategic.selectedList = [];\n this.categoryList.operational.selectedList = [];\n this.categoryList.compliance.selectedList = [];\n this.categoryList.others.selectedList = [];\n\n categoryList.forEach((element: any) => {\n if (selectedIds.includes(element[this.categoryIdKey])) {\n data.push(element);\n }\n });\n this.selectedCategories = data;\n this.footerDetails.selectedData = data;\n\n this.categoryList.strategic.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.strategic.selectedList.push(category);\n }\n });\n this.categoryList.operational.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.operational.selectedList.push(category);\n }\n });\n this.categoryList.compliance.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.compliance.selectedList.push(category);\n }\n });\n this.categoryList.others.list.forEach((category: any) => {\n if (selectedIds.includes(category[this.categoryIdKey])) {\n this.categoryList.others.selectedList.push(category);\n }\n });\n if (!this.activeTab) {\n this.setActiveTab();\n }\n }\n setActiveTab() {\n if (this.categoryList.strategic.selectedList.length > 0) {\n this.activeTab = 'strategic';\n } else if (this.categoryList.operational.selectedList.length > 0) {\n this.activeTab = 'operational';\n } else if (this.categoryList.compliance.selectedList.length > 0) {\n this.activeTab = 'compliance';\n } else if (this.categoryList.others.selectedList.length > 0) {\n this.activeTab = 'others';\n } else {\n this.activeTab = 'strategic';\n }\n }\n\n checkSelectAll(activeTab: string) {\n if (\n activeTab === 'strategic' ||\n activeTab === 'operational' ||\n activeTab === 'compliance' ||\n activeTab === 'others'\n ) {\n const data = this.categoryList[activeTab].list.every((user: any) =>\n this.selectedIds.includes(user[this.categoryIdKey])\n );\n return data;\n }\n }\n\n save() {\n this.saveSelectedCategory.emit(this.selectedCategories);\n }\n\n close() {\n this.closeCategoriesList.emit();\n }\n}\n","<div class=\"risk-category-list\" [class.animate-slideInRight]=\"animation\">\n <div\n class=\"risk-category-list-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <span class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risk Category(s)</span>\n </div>\n <div class=\"risk-category-list-mid\">\n <div class=\"vx-d-flex vx-mb-2\">\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'strategic'\"\n (click)=\"activeTab = 'strategic'\"\n >\n <div class=\"left\">\n <label>strategic</label>\n @if (categoryList?.strategic?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.strategic?.selectedList?.length }}\n {{\n categoryList?.strategic?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.strategic?.list?.length }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'operational'\"\n (click)=\"activeTab = 'operational'\"\n >\n <div class=\"left\">\n <label>operational</label>\n @if (categoryList?.operational?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.operational?.selectedList?.length }}\n {{\n categoryList?.operational?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.operational?.list?.length\n }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'compliance'\"\n (click)=\"activeTab = 'compliance'\"\n >\n <div class=\"left\">\n <label>compliance</label>\n @if (categoryList?.compliance?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.compliance?.selectedList?.length }}\n {{\n categoryList?.compliance?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{\n categoryList?.compliance?.list?.length\n }}</span>\n </div>\n <div\n class=\"risk-category-list-card\"\n [class.active]=\"activeTab == 'others'\"\n (click)=\"activeTab = 'others'\"\n >\n <div class=\"left\">\n <label>OTHERS</label>\n @if (categoryList?.others?.selectedList?.length != 0) {\n <p>\n {{ categoryList?.others?.selectedList?.length }}\n {{\n categoryList?.others?.selectedList?.length == 1\n ? \"Category\"\n : \"Categories\"\n }}\n selected\n </p>\n }\n </div>\n <span class=\"counter\">{{ categoryList?.others?.list?.length }}</span>\n </div>\n </div>\n\n <div class=\"risk-category-list-search vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"search\"\n placeholder=\"Search Risk Category\"\n />\n </div>\n\n @if ($safeNavigationMigration(categoryList[activeTab]?.list) | filter : search; as searchList) {\n @if (searchList.length > 1) {\n <div class=\"select-all\">\n <app-cs-checkbox\n [ngValue]=\"checkSelectAll(activeTab)\"\n (ngValueChange)=\"selectAll($event, activeTab)\"\n >\n <strong>{{\n checkSelectAll(activeTab) ? \"Deselect All\" : \"Select All\"\n }}</strong>\n </app-cs-checkbox>\n </div>\n }\n @if (searchList.length > 0) {\n <div\n class=\"risk-category-list-item vx-mb-4\"\n [class.with-selectAll]=\"searchList.length > 1\"\n >\n <ul class=\"risk-category-list-item-ul vx-m-0 vx-p-0\">\n @for (category of searchList; track category) {\n <li class=\"vx-mb-4\">\n <app-cs-checkbox\n [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\n (ngValueChange)=\"selectCategory($event, activeTab, category)\"\n >\n <ul class=\"categories\">\n <li\n [arTooltip]=\"category.category_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n >\n {{ category.category_name }}\n </li>\n </ul>\n </app-cs-checkbox>\n </li>\n }\n </ul>\n </div>\n }\n @if (searchList.length == 0) {\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n >\n </app-no-data>\n }\n }\n\n <app-dashboard-footer\n [footerDetails]=\"footerDetails\"\n (cancelEvent)=\"close()\"\n (deleteEvent)=\"deleteEvent($event)\"\n (submitEvent)=\"save()\"\n ></app-dashboard-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollInViewDirective } from './scroll-in-view.directive';\n\n\n\n@NgModule({\n declarations: [\n ScrollInViewDirective\n ],\n imports: [\n CommonModule\n ],\n exports:[\n ScrollInViewDirective\n ]\n})\nexport class DirectivesModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoDataComponent } from './no-data.component';\n\n@NgModule({\n declarations: [NoDataComponent],\n imports: [CommonModule],\n exports: [NoDataComponent],\n})\nexport class NoDataModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { FloatingBarModule } from '../../ui-kit//floating-bar/floating-bar.module';\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\nimport { FormsModule } from '@angular/forms';\nimport { SearchPipe } from '../pipes/search.pipe';\nimport { ConfigureWidgetsComponent } from './configure-widgets/configure-widgets.component';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\n\n\n\n@NgModule({\n declarations: [\n ConfigureWidgetsComponent, SearchPipe\n ],\n imports: [\n CommonModule,\n FloatingBarModule,\n FormgroupModule,\n FormsModule,\n DirectivesModule,\n NoDataModule,\n NgOptimizedImage\n ],\n exports: [\n ConfigureWidgetsComponent\n ]\n})\nexport class ConfigureWidgetsModule { }\n","import { Component, OnInit, Optional, ChangeDetectionStrategy } from '@angular/core';\nimport { Configurations } from '../../../configurations';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.less'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false\n})\nexport class LoaderComponent implements OnInit {\n vLoader: any;\n \n public env!: any;\n\n constructor(@Optional() config?: Configurations) {\n if (config) {\n this.env = config.envConfig;\n }\n this.vLoader = this.env.vLoader;\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"main-loader\">\n <img [ngSrc]=\"vLoader\" alt=\"\" width=\"45\" height=\"45\" />\n <div class=\"loader-index\">\n <div class=\"loader-index-circle\"></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { LoaderComponent } from './loader/loader.component';\nimport { LoaderInlineComponent } from './loader-inline/loader-inline.component';\n\n@NgModule({\n declarations: [LoaderComponent, LoaderInlineComponent],\n imports: [CommonModule,NgOptimizedImage],\n exports: [LoaderComponent, LoaderInlineComponent],\n})\nexport class VLoaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\n\n@NgModule({\n declarations: [SnackBarComponent],\n imports: [CommonModule],\n exports: [SnackBarComponent],\n})\nexport class SnackBarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SmileyDialogComponent } from './smiley-dialog.component';\n\n@NgModule({\n declarations: [SmileyDialogComponent],\n imports: [CommonModule],\n\n exports: [SmileyDialogComponent],\n})\nexport class SmileyDialogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableLoaderComponent } from './table-loader/table-loader.component';\n\n\n\n@NgModule({\n declarations: [\n TableLoaderComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n TableLoaderComponent\n ]\n})\nexport class LoadersModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ProgramListComponent } from './program-list/program-list.component';\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\nimport { PopoverModule } from '../../ui-kit/popover/popover.module';\nimport { CheckSelectedItemsPipe } from './pipes/check-selected-items.pipes';\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\nimport { LoadersModule } from '../../ui-kit/loaders/loaders.module';\nimport { ListContainerComponent } from './list-container/list-container.component';\nimport { SearchProgramPipe } from '../pipes/search-program.pipe';\nimport { InformationBlockComponent } from './information-block/information-block.component';\n@NgModule({\n declarations: [\n ProgramListComponent,\n CheckSelectedItemsPipe,\n ListContainerComponent,\n SearchProgramPipe,\n InformationBlockComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n FormgroupModule,\n NoDataModule,\n PopoverModule,\n LoadersModule,\n ],\n exports: [\n ProgramListComponent,\n ListContainerComponent,\n InformationBlockComponent\n ]\n})\nexport class ProgramListModule { }\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { VcomplyEditorModule } from '@vcomply/editor';\nimport { DpDatePickerModule } from 'ng2-date-picker';\nimport { FormsModule } from '@angular/forms';\nimport { CreateDashboardComponent } from './create-dashboard.component';\nimport { SelectModule } from '../ui-kit/select/select.module';\nimport { UserListComponent } from './user-list/user-list.component';\nimport { ResponsibilityCenterComponent } from './responsibility-center/responsibility-center.component';\nimport { CategoriesComponent } from './categories/categories.component';\nimport { FrequencyComponent } from './frequency/frequency.component';\nimport { PaginationModule } from '../ui-kit/pagination/pagination.module';\nimport { FormgroupModule } from '../ui-kit/formgroup/formgroup.module';\nimport { DashboardFooterModule } from '../ui-kit/dashboard-footer/dashboard-footer.module';\nimport { FormGroupComponent } from './form-group/form-group.component';\nimport { TooltipModule } from '../ui-kit/tooltip/tooltip.module';\nimport { FloatingBarModule } from '../ui-kit/floating-bar/floating-bar.module';\nimport { DialogModule } from '../ui-kit/dialog/dialog.module';\nimport { Configurations } from '../configurations';\nimport { FilterPipe } from './pipes/filter.pipe';\nimport { RiskCategoriesComponent } from './risk-categories/risk-categories.component';\nimport { ConfigureWidgetsModule } from './configure-widgets/configure-widgets.module';\nimport { PopoverModule } from '../ui-kit/popover/popover.module';\nimport { VLoaderModule } from '../ui-kit/v-loader/v-loader.module';\nimport { SnackBarModule } from '../ui-kit/snack-bar/snack-bar.module';\nimport { NoDataModule } from '../ui-kit/no-data/no-data.module';\nimport { DirectivesModule } from './directives/directives.module';\nimport { SmileyDialogModule } from '../ui-kit/smiley-dialog/smiley-dialog.module';\nimport { TextCountPipe } from './pipes/text-count.pipe';\nimport { ProgramListModule } from './program-list/program-list.module';\n@NgModule({\n declarations: [\n CreateDashboardComponent,\n UserListComponent,\n FormGroupComponent,\n ResponsibilityCenterComponent,\n CategoriesComponent,\n RiskCategoriesComponent,\n FrequencyComponent,\n FilterPipe,\n TextCountPipe,\n ],\n imports: [\n CommonModule,\n VcomplyEditorModule,\n FormgroupModule,\n FormsModule,\n TooltipModule,\n SelectModule,\n DashboardFooterModule,\n PaginationModule,\n FloatingBarModule,\n DialogModule,\n ConfigureWidgetsModule,\n PopoverModule,\n VLoaderModule,\n SnackBarModule,\n NoDataModule,\n DirectivesModule,\n SmileyDialogModule,\n DpDatePickerModule,\n NgOptimizedImage,\n ProgramListModule,\n ],\n exports: [CreateDashboardComponent],\n})\nexport class CreateDashboardModule {\n public static forRoot(\n environmentConfig: Configurations\n ): ModuleWithProviders<CreateDashboardModule> {\n return {\n ngModule: CreateDashboardModule,\n providers: [{ provide: Configurations, useValue: environmentConfig }],\n };\n }\n}\n"],"mappings":"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AA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,OAAA,GAAA,oBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,cAAA;GAlC9B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EAAa;EAAA,SAAA;GAGb;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EAAiB;EAAA,SAAA,CAET,wBAAwB;CAAA,CAAA;CAEvB,OAAA,OAAA,GAAA,oBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,SAAA;GAvB9B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GAEA;EAAiB;CAAA,CAAA;;AAIR,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EApCjC,MAAA;EAAS,MAAA,CAAA;GACR,cAAc;IACZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;GACD,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;GACD,SAAS,CAAC,wBAAwB;EACnC,CAAA"}