@pongrass/utils 0.0.1-v20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -0
- package/fesm2022/pongrass-utils.mjs +1434 -0
- package/fesm2022/pongrass-utils.mjs.map +1 -0
- package/index.d.ts +436 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pongrass-utils.mjs","sources":["../../../projects/utils/src/lib/services/configuration.service.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/color-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/custom-select-filter.component.ts","../../../projects/utils/src/lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component.ts","../../../projects/utils/src/lib/enums/browser-constants.enum.ts","../../../projects/utils/src/lib/enums/jsonrpc-methods.enum.ts","../../../projects/utils/src/lib/services/utils.service.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.html","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.html","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.ts","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.interface.ts","../../../projects/utils/src/lib/constants/color.constants.ts","../../../projects/utils/src/lib/directives/circular-focus.directive.ts","../../../projects/utils/src/lib/directives/decimal-input.directive.ts","../../../projects/utils/src/lib/directives/show-tooltip-if-truncated.directive.ts","../../../projects/utils/src/lib/directives/multi-select-styler.directive.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.module.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/pongrass-utils.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationServiceLib {\n public currentTablePreference: WritableSignal<any>;\n public allConfigValues: WritableSignal<IConfig | null>;\n\n constructor() {\n this.currentTablePreference = signal<any>({});\n this.allConfigValues = signal<IConfig | null>(null);\n }\n\n /* Generate Unique ID as String */\n public generateUniqueId(): string {\n return `${Math.floor(Date.now() / 1000)}`;\n }\n\n public setTablePreference(tableName: string, preference: any): void {\n const allTablePreference = this.currentTablePreference();\n allTablePreference[tableName] = preference;\n this.currentTablePreference.set(allTablePreference);\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { IColorOption } from '../../interface/multi-forms.interface';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'app-color-cell-renderer',\n template: `\n <div class=\"cell-wrapper align-items-center d-inline-flex gap-2\">\n <span class=\"color-box\" [ngStyle]=\"{ 'background-color': colorCode }\"></span>\n <span class=\"text-truncate\">\n {{ params.value }}\n </span>\n </div>\n `,\n styles: [\n `\n .color-box {\n height: 1.5rem;\n }\n .cell-wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n overflow: hidden; /* Required to enable truncation */\n }\n `\n ]\n})\nexport class ColorCellRendererComponent implements ICellRendererAngularComp {\n public params!: ICellRendererParams;\n public colorsList: IColorOption[] = [];\n public colorCode = '';\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.colorsList = params.colDef?.cellRendererParams?.colorsList ?? [];\n this.setColorCode(this.params?.value);\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n return true;\n }\n\n setColorCode(colorKey: string): void {\n if (this.colorsList && this.colorsList.length > 0 && colorKey) {\n const selectedColor = this.colorsList.find(color => color.color_name === colorKey);\n if (selectedColor) {\n this.colorCode = selectedColor.value as string;\n } else {\n this.colorCode = ''; // Default color if not found\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\nimport { FormsModule } from '@angular/forms';\nimport { ViewChild, ElementRef } from '@angular/core';\n\nimport { FormModule } from '@coreui/angular-pro';\n\n@Component({\n selector: 'app-custom-set-filter',\n standalone: true,\n imports: [FormsModule, FormModule],\n template: `\n <div class=\"select-filter-container\">\n <input type=\"text\" #searchInput cFormControl [(ngModel)]=\"searchText\" (input)=\"onSearchChange()\" placeholder=\"Search...\" class=\"search-box\" />\n @if (filteredValues.length > 0) {\n <div>\n <label class=\"checkbox-item\">\n <input cFormCheckInput [indeterminate]=\"isIndeterminate\" type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"onSelectAllChanged($event)\" />\n (Select All)\n </label>\n </div>\n } @else {\n <div>\n <label> No matches </label>\n </div>\n }\n\n <div class=\"checkbox-list\">\n @for (value of filteredValues; track value) {\n <label [attr.aria-label]=\"'Select ' + value\" class=\"checkbox-item\">\n <input cFormCheckInput type=\"checkbox\" [value]=\"value\" [checked]=\"isValueSelected(value)\" (change)=\"onValueChanged(value, $event)\" />\n {{ value }}\n </label>\n }\n </div>\n </div>\n `,\n styles: [\n `\n .select-filter-container {\n padding: 10px;\n label {\n display: flex;\n gap: 5px;\n }\n }\n .search-box {\n width: 100%;\n margin-bottom: 5px;\n padding: 4px;\n }\n\n .checkbox-list {\n max-height: 200px;\n overflow-y: auto;\n }\n .checkbox-item {\n padding: 4px 6px;\n cursor: pointer;\n border-radius: 4px;\n }\n .checkbox-item:hover {\n background-color: #f0f0f0;\n }\n `\n ]\n})\nexport class CustomSelectFilterComponent implements IFilterAngularComp {\n params!: IFilterParams;\n uniqueValues: string[] = [];\n filteredValues: string[] = [];\n selectedValues: Set<string> = new Set();\n searchText: string = '';\n isIndeterminate: boolean = false;\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.uniqueValues = this.getUniqueValues();\n this.filteredValues = [...this.uniqueValues];\n this.uniqueValues.forEach(val => this.selectedValues.add(val));\n }\n\n @ViewChild('searchInput') searchInputRef!: ElementRef<HTMLInputElement>;\n\n afterGuiAttached(): void {\n this.searchInputRef?.nativeElement?.focus();\n }\n\n getUniqueValues(): string[] {\n const values = new Set<string>();\n this.params.api.forEachNode(node => {\n values.add(node.data[this.params.colDef.field!]);\n });\n return Array.from(values).sort();\n }\n\n isValueSelected(value: string): boolean {\n return this.selectedValues.has(value);\n }\n\n isAllSelected(): boolean {\n return this.filteredValues.length > 0 && this.filteredValues.every(val => this.selectedValues.has(val));\n }\n\n onSelectAllChanged(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.filteredValues.forEach(val => this.selectedValues.add(val));\n } else {\n this.filteredValues.forEach(val => this.selectedValues.delete(val));\n }\n this.updateIndeterminate();\n this.params.filterChangedCallback();\n }\n\n onValueChanged(value: string, event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectedValues.add(value);\n } else {\n this.selectedValues.delete(value);\n }\n this.updateIndeterminate();\n // If all are now selected, ensure isIndeterminate is false\n if (this.isAllSelected()) {\n this.isIndeterminate = false;\n }\n this.params.filterChangedCallback();\n }\n\n updateIndeterminate(): void {\n // isIndeterminate is true if at least one but not all filteredValues are selected\n const selectedCount = this.filteredValues.filter(val => this.selectedValues.has(val)).length;\n this.isIndeterminate = selectedCount > 0 && selectedCount < this.filteredValues.length;\n }\n\n onSearchChange(): void {\n const lower = this.searchText.toLowerCase();\n this.filteredValues = this.uniqueValues.filter(val => val?.toString().toLowerCase().includes(lower));\n this.updateIndeterminate();\n }\n\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n const value = params.data[this.params.colDef.field!];\n return this.selectedValues.has(value);\n }\n\n isFilterActive(): boolean {\n return this.selectedValues.size !== this.uniqueValues.length;\n }\n\n getModel() {\n return { values: Array.from(this.selectedValues) };\n }\n\n setModel(model: { values?: string[] }): void {\n if (model?.values) {\n this.selectedValues = new Set(model.values);\n } else {\n this.selectedValues = new Set(this.uniqueValues);\n }\n this.filteredValues = [...this.uniqueValues];\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\nimport { FormModule } from '@coreui/angular-pro';\n\n@Component({\n standalone: true,\n imports: [FormModule],\n template: ` <div class=\"d-flex justify-content-start align-items-center h-100 mt-2\">\n <input\n cFormCheckInput\n type=\"checkbox\"\n class=\"me-2 cell-renderer-checkbox\"\n [checked]=\"value\"\n (change)=\"onChangeCheckBox($event)\"\n [disabled]=\"ischeckboxDisabled\" />\n </div>`\n})\nexport class CheckboxCellRendererComponent implements ICellRendererAngularComp {\n public value!: boolean;\n private params!: ICellRendererParams;\n public ischeckboxDisabled = true;\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.ischeckboxDisabled = params.colDef?.cellRendererParams?.data?.disabled ?? true;\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n this.value = params.value === '1' ? true : false;\n return true;\n }\n\n onChangeCheckBox(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.value = checked;\n\n // Emit the change event to the parent via a callback\n if (this.params.colDef?.cellRendererParams?.onCheckboxChange) {\n this.params.colDef.cellRendererParams.onCheckboxChange(this.params.data, checked, this.params.colDef?.field);\n }\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\n\nimport { ButtonModule } from '@coreui/angular-pro';\n\n@Component({\n standalone: true,\n selector: 'app-comments-button-cell-renderer',\n imports: [ButtonModule],\n template: `\n <div>\n <button cButton [color]=\"params.data?.orders_notes ? 'primary' : 'secondary'\" size=\"sm\" data-action=\"comment-action\" (click)=\"onCommentClick()\">\n Comments\n </button>\n </div>\n `,\n styles: ``\n})\nexport class CommentsButtonCellRendererComponent implements ICellRendererAngularComp {\n public params!: ICellRendererParams;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n return true;\n }\n\n onCommentClick(): void {\n if (this.params?.colDef?.cellRendererParams?.onCommentClick) {\n this.params.colDef.cellRendererParams.onCommentClick(this.params.data);\n }\n }\n}\n","export enum BrowserConstantsEnum {\n sessionid = 'sessionId',\n loginUid = 'uid',\n tablePreference = 'table_preference'\n}\n","export enum JSONRPCMethods {\n getFormsConfig = 'get_form',\n tableSearch = 'table_search',\n tableUpdate = 'table_update',\n tableList = 'table_list',\n generateAccountId = 'generate_accountid',\n updateTablePreference = 'update_form_preference',\n\n listPhotoQueue = 'photo_queue',\n updateFileStatus = 'update_photo_status',\n report = 'report',\n\n adStatusList = 'list_adstatus',\n adApprovedList = 'get_approval_adlist',\n updateApprovedList = 'update_approve_adlist',\n getEditionPublicationList = 'get_edition',\n nationaROPReport = 'national_rop_report',\n nationaInserts = 'national_inserts',\n prodStatusList = 'list_prodstatus',\n updateAdStatus = 'update_ad_status',\n\n ordersNotes = 'orders_notes',\n\n getPageStatus = 'get_page_status',\n listPageStatus = 'list_pagestatus',\n updatePageStatus = 'update_page_status',\n\n markads = 'markads',\n updateReport = 'update_report',\n\n listFileStatus = 'list_filestatus',\n getIndustryList = 'get_industry'\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { ConfigurationServiceLib } from './configuration.service';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n private readonly httpService = inject(HttpClient);\n private readonly configurationServiceLib = inject(ConfigurationServiceLib);\n\n readonly allConfigValues: IConfig = this.configurationServiceLib.allConfigValues() || ({} as unknown as IConfig);\n\n constructor() {}\n\n // JSONRPC POST Request With promise\n public async postJsonRpcRequestPromiseLib(method: string, params: any): Promise<any> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n const body = {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.configurationServiceLib.generateUniqueId()\n };\n\n const request$ = this.httpService.post(this.allConfigValues.apiBaseURLWebMaint, body, { headers });\n const response = await lastValueFrom<any>(request$);\n return { ...response, timestamp: new Date().toISOString() };\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, Input, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MultiSelectModule } from '@coreui/angular-pro';\nimport { NgClass } from '@angular/common';\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\nimport { IEditionPublication } from '../../interface/multi-forms.interface';\nimport { IAPIResponse } from '../../interface/api-response.interface';\nimport { UtilsService } from '../../services/utils.service';\n\n@Component({\n selector: 'app-edition-list-grouped',\n imports: [MultiSelectModule, FormsModule, NgClass],\n templateUrl: './edition-list-grouped.component.html',\n styleUrl: './edition-list-grouped.component.scss',\n standalone: true\n})\nexport class EditionListGroupedComponent implements OnInit, OnDestroy {\n private readonly utilsService = inject(UtilsService);\n\n private isActive: boolean;\n\n public editionPublicationList: {\n region: string;\n values: IEditionPublication[];\n }[];\n\n private selectedRegions: string[];\n private selectedEditions: string[];\n\n @Output() selectedEditionsChange = new EventEmitter<string[]>();\n @Input() label: string;\n @Input() multiple: boolean;\n @Input() hasFormError: boolean;\n\n constructor() {\n this.isActive = true;\n this.editionPublicationList = [];\n this.selectedEditions = [];\n this.selectedRegions = [];\n this.label = '';\n this.hasFormError = false;\n this.multiple = true;\n }\n ngOnInit(): void {\n this.getEditionPublicationList();\n }\n\n ngOnDestroy(): void {\n this.isActive = false;\n }\n\n private async getEditionPublicationList(): Promise<void> {\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n for_approval: true\n };\n\n await this.utilsService\n .postJsonRpcRequestPromiseLib(JSONRPCMethods.getEditionPublicationList, params)\n .then((response: IAPIResponse<IEditionPublication[]>) => {\n if (response.result) {\n const result = response.result;\n result.forEach(ed => {\n ed['selected'] = false;\n });\n const groupedByRegion = result.reduce((acc: any, current: IEditionPublication) => {\n const region = current.region;\n if (region) {\n if (!acc[region]) {\n acc[region] = {\n region: region,\n values: []\n };\n }\n acc[region].values.push(current);\n }\n return acc;\n }, {});\n this.editionPublicationList = Object.values(groupedByRegion);\n }\n });\n }\n\n public onEditionSelection(option: IEditionPublication[] | IEditionPublication): void {\n this.selectedEditions = [];\n\n if (Array.isArray(option)) {\n if (option.length > 0) {\n option.forEach(editionData => {\n this.selectedEditions.push(editionData.edname!);\n });\n }\n } else {\n if (option && option.edname) {\n this.selectedEditions.push(option.edname);\n }\n }\n\n this.selectedEditionsChange.emit(this.selectedEditions);\n }\n\n public onSelectEditionGroup(region: string, index: number): void {\n const isSelected = this.selectedRegions.includes(region);\n\n if (isSelected) {\n this.selectedRegions.splice(index, 1);\n } else {\n this.selectedRegions.push(region);\n }\n\n this.editionPublicationList.forEach(element => {\n if (element.region === region) {\n element.values.forEach(regionValues => {\n regionValues.selected = !isSelected;\n });\n }\n });\n }\n\n public onVisibleChange(isActive: boolean): void {\n const elements = document.getElementsByClassName('form-multi-select-cleaner');\n Array.from(elements).forEach((element: Element) => {\n (element as HTMLElement).style.display = isActive ? 'inline-block' : 'none';\n });\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n @if (label) {\n <label for=\"sel-group-edition\">{{ label }}</label>\n }\n <c-multi-select\n [cleaner]=\"true\"\n [selectionType]=\"multiple ? 'counter' : 'text'\"\n [multiple]=\"multiple\"\n clearSearchOnSelect\n [ngClass]=\"{ 'form-invalid': hasFormError }\"\n placeholder=\"All Editions\"\n visibleItems=\"8\"\n (valueChange)=\"onEditionSelection($event)\"\n (visibleChange)=\"onVisibleChange($event)\">\n @for (option of editionPublicationList; track $index + '_' + option.region) {\n <c-multi-select-optgroup>\n <c-multi-select-optgroup-label (click)=\"onSelectEditionGroup(option.region, $index)\" class=\"region-selector cursor-pointer\">{{\n option?.region\n }}</c-multi-select-optgroup-label>\n @for (item of option.values; track item?.description) {\n <c-multi-select-option [value]=\"item\" [selected]=\"item.selected\">{{ '[' + item?.edname + ']' }} {{ item?.description }}</c-multi-select-option>\n }\n </c-multi-select-optgroup>\n }\n </c-multi-select>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { IIndustry } from '../../interface/multi-forms.interface';\n\n@Component({\n selector: 'app-industry-update-listbox-cell-renderer',\n templateUrl: './industry-update-listbox-cell-renderer.component.html',\n styleUrl: './industry-update-listbox-cell-renderer.component.scss',\n imports: [FormsModule, NgClass],\n standalone: true\n})\nexport class IndustryUpdateListboxCellRendererComponent implements ICellRendererAngularComp {\n public industryList: IIndustry[] = [];\n public selectedIndustry: string | undefined;\n private params!: ICellRendererParams;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.industryList = params.colDef?.cellRendererParams?.data?.industryList ?? [];\n this.selectedIndustry = params.data?.industry;\n\n if (!this.selectedIndustry) {\n this.selectedIndustry = 'select-industry';\n }\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.selectedIndustry = params.data?.industry;\n\n if (!this.selectedIndustry) {\n this.selectedIndustry = 'select-industry';\n }\n return true;\n }\n\n public onIndustryChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (this.params.colDef?.cellRendererParams?.onUpdateIndustry) {\n this.params.colDef.cellRendererParams.onUpdateIndustry(this.params.data, value);\n }\n }\n}\n","<select\n class=\"form-select select-industry\"\n [ngClass]=\"{ 'select-industry-red': selectedIndustry === 'select-industry' }\"\n [(ngModel)]=\"selectedIndustry\"\n (change)=\"onIndustryChange($event)\"\n id=\"sel-industry\"\n name=\"sel-industry\">\n <option value=\"select-industry\" disabled class=\"select-industry-opt\">Select Industry</option>\n @for (industry of industryList; track industry.industry) {\n <option [value]=\"industry?.industry\" class=\"select-industry-opt\">\n {{ industry?.description }}\n </option>\n }\n</select>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormModule } from '@coreui/angular-pro';\nimport { IPageStatusList } from '../../interface/multi-forms.interface';\n\n@Component({\n selector: 'app-page-status-cell-renderer',\n templateUrl: './page-status-cell-renderer.component.html',\n styleUrl: './page-status-cell-renderer.component.scss',\n imports: [FormsModule, CommonModule, FormModule],\n standalone: true\n})\nexport class PageStatusCellRendererComponent {\n public pageStatusList: IPageStatusList[] = [];\n private params!: ICellRendererParams;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public pageStatus: any | undefined = undefined;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.pageStatusList = params.colDef?.cellRendererParams?.data?.pageStatusList ?? [];\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n this.pageStatus = params.data;\n return true;\n }\n\n public updatePageStatus(value: string): void {\n if (this.params.colDef?.cellRendererParams?.onUpdatePageStatus) {\n this.params.colDef.cellRendererParams.onUpdatePageStatus(this.params.data, value);\n }\n }\n\n public getStatusColor(): string {\n const selectedStatus = this.pageStatusList.find(status => status.page_status_name === this.pageStatus!.page_status_name);\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\n }\n}\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"pageStatus!.page_status_name\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of pageStatusList; track $index) {\n <option [value]=\"status.page_status_name\">\n {{ status.page_status_name }}\n </option>\n }\n </select>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AbstractControl } from '@angular/forms';\n\nexport enum FormFieldType {\n Text = 'text',\n Email = 'email',\n Number = 'number',\n Select = 'select',\n Textarea = 'textarea',\n Date = 'date',\n Checkbox = 'checkbox',\n Float = 'float',\n Edition = 'edition',\n Separator = 'seperator',\n FormHeader = 'form-header',\n Password = 'password',\n Url = 'url',\n Tel = 'tel'\n}\n\nexport interface IFieldConfig {\n /** Form label */\n label: string;\n\n /** Form field type */\n type: FormFieldType;\n\n /** id or formControlName */\n controlName: string;\n\n /** for selects or multi-selects */\n options?: { value: string; label: string; disabled?: boolean }[];\n\n /** for selects or multi-selects allows create option along with selects */\n allowCreateOptions?: boolean;\n\n /** for selects or multi-selects allows search option */\n allowSearch?: boolean;\n\n /** for selects or multi-selects allows clear option */\n allowCleaner?: boolean;\n\n /** grid column span */\n colspan?: number;\n\n /** Placeholder */\n placeholder?: string;\n\n /** For multi-selects */\n selectionType?: 'text' | 'tags' | 'counter';\n\n /** For textarea rows */\n textareaRows?: number;\n\n /** For textarea columns */\n textareaColumns?: number;\n\n /** Validations */\n validations: IFormValidations;\n\n /** Form Value */\n value?: any;\n\n /** For multi-selects - Allows multiple selection */\n multiple?: boolean;\n\n styles?: IFormStyles;\n\n actionButton?: {\n icon: string;\n tooltip?: string; // Tooltip for the action button\n action: string; // e.g., 'reload', 'generateAccountId'\n };\n}\n\nexport interface IFormConfig {\n formName?: string;\n rows: IFieldConfig[][];\n unique_key?: string[];\n}\n\nexport interface IFormValidations {\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n readonly?: boolean;\n precision?: number; // For float type number\n min?: number; // For number type\n max?: number; // For number type\n defaultAdvance?: 'weekly' | 'monthly' | 'quarterly' | 'halfyearly' | 'yearly';\n}\n\nexport interface IFormSubmissionEmit {\n /** Reflects the validity of the form */\n isValid: boolean;\n\n /** Reflects the values of the form controls */\n values: { [key: string]: any };\n\n /** Reflects the controls of the form */\n controls: { [key: string]: AbstractControl };\n}\n\nexport interface IFormStyles {\n field?: string;\n label?: string;\n}\n","export const ColorsCodes = [\n {\n color_name: 'AliceBlue',\n color_code: '#F0F8FF'\n },\n {\n color_name: 'Aqua',\n color_code: '#00FFFF'\n },\n {\n color_name: 'Aquamarine',\n color_code: '#7FFFD4'\n },\n {\n color_name: 'Beige',\n color_code: '#F5F5DC'\n },\n {\n color_name: 'Black',\n color_code: '#000000'\n },\n {\n color_name: 'Blue',\n color_code: '#0000FF'\n },\n {\n color_name: 'Chartreuse',\n color_code: '#7FFF00'\n },\n {\n color_name: 'Coral',\n color_code: '#FF7F50'\n },\n {\n color_name: 'DarkGray',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGrey',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGreen',\n color_code: '#006400'\n },\n {\n color_name: 'DarkOrange',\n color_code: '#FF8C00'\n },\n {\n color_name: 'Fuchsia',\n color_code: '#FF00FF'\n },\n {\n color_name: 'GoldenRod',\n color_code: '#DAA520'\n },\n {\n color_name: 'Gray',\n color_code: '#808080'\n },\n {\n color_name: 'Grey',\n color_code: '#808080'\n },\n {\n color_name: 'Green',\n color_code: '#008000'\n },\n {\n color_name: 'GreenYellow',\n color_code: '#ADFF2F'\n },\n {\n color_name: 'Khaki',\n color_code: '#F0E68C'\n },\n {\n color_name: 'Lavender',\n color_code: '#E6E6FA'\n },\n {\n color_name: 'LightGray',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGrey',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGreen',\n color_code: '#90EE90'\n },\n {\n color_name: 'LightSalmon',\n color_code: '#FFA07A'\n },\n {\n color_name: 'LightSkyBlue',\n color_code: '#87CEFA'\n },\n {\n color_name: 'Lime',\n color_code: '#00FF00'\n },\n {\n color_name: 'LimeGreen',\n color_code: '#32CD32'\n },\n {\n color_name: 'Magenta',\n color_code: '#FF00FF'\n },\n {\n color_name: 'Maroon',\n color_code: '#800000'\n },\n {\n color_name: 'MediumSpringGreen',\n color_code: '#00FA9A'\n },\n {\n color_name: 'Navy',\n color_code: '#000080'\n },\n {\n color_name: 'Olive',\n color_code: '#808000'\n },\n {\n color_name: 'Orange',\n color_code: '#FFA500'\n },\n {\n color_name: 'OrangeRed',\n color_code: '#FF4500'\n },\n {\n color_name: 'Orchid',\n color_code: '#DA70D6'\n },\n {\n color_name: 'PaleGreen',\n color_code: '#98FB98'\n },\n {\n color_name: 'PaleTurquoise',\n color_code: '#AFEEEE'\n },\n {\n color_name: 'Plum',\n color_code: '#DDA0DD'\n },\n {\n color_name: 'Purple',\n color_code: '#800080'\n },\n {\n color_name: 'Red',\n color_code: '#FF0000'\n },\n {\n color_name: 'Salmon',\n color_code: '#FA8072'\n },\n {\n color_name: 'SandyBrown',\n color_code: '#F4A460'\n },\n {\n color_name: 'Silver',\n color_code: '#C0C0C0'\n },\n {\n color_name: 'SkyBlue',\n color_code: '#87CEEB'\n },\n {\n color_name: 'Teal',\n color_code: '#008080'\n },\n {\n color_name: 'Tomato',\n color_code: '#FF6347'\n },\n {\n color_name: 'Violet',\n color_code: '#EE82EE'\n },\n {\n color_name: 'Wheat',\n color_code: '#F5DEB3'\n },\n {\n color_name: 'White',\n color_code: '#FFFFFF'\n },\n {\n color_name: 'Yellow',\n color_code: '#FFFF00'\n }\n];\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[appCircularFocus]',\n standalone: true\n})\nexport class CircularFocusDirective implements AfterViewInit, OnDestroy {\n private el = inject(ElementRef);\n\n @Input() formId: string = '';\n @Input() formGroup: FormGroup | null = null;\n\n private focusableElements: HTMLElement[] = [];\n private formSubscription: Subscription | null = null;\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.collectFocusableElements();\n\n // Subscribe to form value changes if formGroup is provided\n if (this.formGroup) {\n this.formSubscription = this.formGroup.valueChanges.subscribe(() => {\n // Wait for DOM to update after form changes\n setTimeout(() => {\n this.collectFocusableElements();\n }, 0);\n });\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n // Clean up subscription when directive is destroyed\n if (this.formSubscription) {\n this.formSubscription.unsubscribe();\n }\n }\n\n private collectFocusableElements(): void {\n if (!this.formId) {\n // If no formId is provided, use the current element\n this.focusableElements = this.getFocusableElements(this.el.nativeElement);\n } else {\n const formElement = document.getElementById(this.formId);\n if (formElement) {\n this.focusableElements = this.getFocusableElements(formElement);\n }\n }\n }\n\n private getFocusableElements(element: HTMLElement): HTMLElement[] {\n return Array.from(\n element.querySelectorAll(\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable]:not([disabled]), c-multi-select:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\n )\n ).filter(el => {\n // Filter out hidden elements\n const element = el as HTMLElement;\n return element.offsetParent !== null; // Check if element is visible\n }) as HTMLElement[];\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n // ToDo: Plan to escape the circular navigation when Escape is pressed\n // if (event.key === 'Escape') {}\n\n // Only handle Tab key events\n if (event.key !== 'Tab') return;\n\n // If no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n const currentElement = document.activeElement as HTMLElement;\n const currentIndex = this.focusableElements.indexOf(currentElement);\n\n // If current element is not in our list, do nothing\n if (currentIndex === -1) return;\n\n // Handle circular navigation\n if (event.shiftKey) {\n // Going backward with Shift+Tab\n if (currentIndex === 0) {\n event.preventDefault();\n const lastElement = this.focusableElements[this.focusableElements.length - 1];\n lastElement.focus();\n }\n } else {\n // Going forward with Tab\n if (currentIndex === this.focusableElements.length - 1) {\n event.preventDefault();\n const firstElement = this.focusableElements[0];\n firstElement.focus();\n }\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[appDecimalInput]',\n standalone: true\n})\nexport class DecimalInputDirective implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLInputElement>);\n private control = inject(NgControl);\n private sub!: Subscription;\n\n @Input() appDecimalInput: number = 4;\n\n private specialKeys: string[] = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Delete'];\n\n ngOnInit(): void {\n // Only format when value comes from patchValue / setValue (not typing)\n this.sub = this.control.valueChanges?.subscribe(value => {\n const inputEl = this.el.nativeElement;\n // Skip if input element is focused (user typing)\n if (document.activeElement === inputEl) return;\n\n this.formatValue(value);\n }) as Subscription;\n }\n\n ngOnDestroy(): void {\n this.sub?.unsubscribe();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n const input = this.el.nativeElement;\n const value = input.value;\n\n if (this.specialKeys.includes(event.key)) return;\n\n if (event.key === '.' && value.includes('.')) {\n event.preventDefault();\n return;\n }\n\n const cursorPos = input.selectionStart ?? value.length;\n const nextValue = this.getNextValue(value, event.key, cursorPos);\n\n if (!this.isValidInput(nextValue)) {\n event.preventDefault();\n }\n }\n\n @HostListener('blur')\n onBlur() {\n this.formatValue(this.el.nativeElement.value);\n }\n\n private formatValue(value: any): void {\n if (value === null || value === undefined || value === '') return;\n if (isNaN(Number(value))) return;\n\n const [integerPart, decimalPart = ''] = value.toString().split('.');\n let formatted = integerPart + '.' + decimalPart.padEnd(this.appDecimalInput, '0');\n\n if (decimalPart.length > this.appDecimalInput) {\n formatted = integerPart + '.' + decimalPart.slice(0, this.appDecimalInput);\n }\n\n this.control.control?.setValue(formatted, { emitEvent: false });\n this.el.nativeElement.value = formatted;\n }\n\n private isValidInput(value: string): boolean {\n const regex = new RegExp(`^\\\\d*\\\\.?\\\\d{0,${this.appDecimalInput}}$`);\n return regex.test(value);\n }\n\n private getNextValue(currentValue: string, key: string, cursorPos: number): string {\n return currentValue.slice(0, cursorPos) + key + currentValue.slice(cursorPos);\n }\n}\n","/// <reference path=\"../types/coreui-pro.d.ts\" />\n\nimport { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\n\nimport { Tooltip } from '@coreui/coreui-pro';\n\n@Directive({ selector: '[appShowTooltipIfTruncated]', standalone: true })\nexport class ShowTooltipIfTruncatedDirective {\n @Input('appShowTooltipIfTruncated') tooltipText: string = '';\n private el = inject(ElementRef);\n\n constructor() {}\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (!this.isTextTruncated()) {\n return;\n }\n Tooltip.getOrCreateInstance(this.el.nativeElement, {\n trigger: 'manual',\n title: this.tooltipText\n }).show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n Tooltip.getOrCreateInstance(this.el.nativeElement)?.hide();\n }\n\n private isTextTruncated(): boolean {\n const el = this.el.nativeElement;\n return el.scrollWidth > el.clientWidth;\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MultiSelectComponent } from '@coreui/angular-pro';\nimport { IColorOption } from '../interface/multi-forms.interface';\n\n@Directive({\n selector: '[appMultiSelectStyler]',\n standalone: true\n})\nexport class MultiSelectStylerDirective implements OnInit, OnDestroy {\n private ngControl = inject(NgControl, { optional: true });\n private renderer = inject(Renderer2);\n private el = inject(ElementRef);\n private mutationObserver?: MutationObserver;\n\n @Input() appMultiSelectStyler: boolean = true;\n @Input() options: IColorOption[] = [];\n private multiSelect = inject(MultiSelectComponent, { optional: true });\n\n ngOnInit() {\n if (!this.appMultiSelectStyler) return;\n\n if (!this.ngControl) {\n return;\n }\n\n // Initial update\n setTimeout(() => this.updateSelectedItem(), 0);\n\n // Watch for control value changes\n this.ngControl.valueChanges?.subscribe(() => {\n setTimeout(() => this.updateSelectedItem(), 0);\n });\n\n this.setupMutationObserver();\n }\n\n private setupMutationObserver() {\n const container = this.getSelectionContainer();\n if (!container) return;\n\n this.mutationObserver = new MutationObserver(() => {\n this.updateSelectedItem();\n });\n\n this.mutationObserver.observe(container, {\n childList: true,\n subtree: true\n });\n }\n\n private getSelectionContainer(): HTMLElement | null {\n return this.el.nativeElement.querySelector('.form-multi-select-selection');\n }\n\n private updateSelectedItem() {\n const container = this.getSelectionContainer();\n if (!container) return;\n\n // Clear existing custom element\n const existingItem = container.querySelector('.color-box');\n if (existingItem) {\n existingItem.remove();\n }\n\n const selectedValue = this.ngControl?.value;\n\n if (!selectedValue) return;\n\n const textElement = container.querySelector('.form-multi-select-text');\n if (!textElement) return;\n\n const option = this.options.find(opt => opt.label === selectedValue);\n if (!option) {\n return;\n }\n // const option = { color: 'red'};\n this.renderer.setStyle(container, 'flex-wrap', 'unset');\n this.renderer.addClass(container, 'gap-2');\n\n // Create and insert color box\n const colorBox = this.renderer.createElement('span');\n this.renderer.addClass(colorBox, 'color-box');\n this.renderer.setStyle(colorBox, 'background-color', option.value);\n this.renderer.insertBefore(textElement.parentNode, colorBox, textElement);\n }\n\n ngOnDestroy() {\n this.mutationObserver?.disconnect();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormFieldType, IFieldConfig, IFormConfig, IFormSubmissionEmit, IFormValidations } from './multi-form.interface';\nimport Swal from 'sweetalert2';\nimport { ColorsCodes } from '../../constants/color.constants';\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\n\n@Component({\n selector: 'app-multi-form',\n templateUrl: './multi-form.component.html',\n styleUrl: './multi-form.component.scss',\n standalone: false\n})\nexport class MultiFormComponent implements OnInit, OnChanges {\n private readonly formBuilder = inject(FormBuilder);\n readonly configurationService = inject(ConfigurationServiceLib);\n\n @Input() config!: IFormConfig;\n @Input() showUnsavedFlags: boolean;\n @Input() currentTableGridsSelectedIndex!: number;\n @Input() formId: string;\n\n @Output() fieldAction = new EventEmitter<{ action: string; field: IFieldConfig; value?: any }>();\n @Output() formSavedUnsavedListen: EventEmitter<any> = new EventEmitter<any>();\n @Output() selectionChangeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n public multiForm: FormGroup;\n public isFormSubmitted: boolean;\n private initialFormValues: any;\n\n public isFormSaved: boolean = false;\n public isFormSavedModalActive: boolean = false;\n private isSelectionChange: boolean = false;\n inputType = {\n colorSelect: 'color-select'\n };\n public colorCodes$ = ColorsCodes;\n public FormFieldType = FormFieldType;\n\n constructor() {\n this.multiForm = this.formBuilder.group({});\n this.isFormSubmitted = false;\n this.showUnsavedFlags = false;\n this.formId = '';\n }\n\n ngOnInit(): void {\n this.buildFormControls();\n this.saveInitialFormValues();\n\n console.log('config ->>>', this.configurationService);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] && !changes['config'].isFirstChange()) {\n if (this.showUnsavedFlags) {\n if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {\n Swal.fire({\n icon: 'warning',\n title: 'Do you want to save the changes?',\n showDenyButton: true,\n confirmButtonText: 'Save',\n denyButtonText: `Don't save`\n }).then((result: any) => {\n if (result.isConfirmed) {\n this.proceedToSaveUnsavedForm();\n } else if (result.isDenied) {\n this.proceedWithoutSavingForm();\n }\n });\n return;\n }\n this.updateFormControls();\n } else {\n this.updateFormControls();\n }\n }\n }\n\n private buildFormControls(): void {\n if (this.config?.rows?.length) {\n this.config.rows.forEach(row => {\n row.forEach(field => {\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\n\n const validators = this.getValidators(field.validations);\n if (field.type === FormFieldType.Checkbox) {\n this.multiForm.addControl(\n field.controlName,\n this.formBuilder.control({ value: this.getTruthyOrFalsy(field.value) || false, disabled: field.validations?.readonly || false }, validators)\n );\n } else if (field.type === FormFieldType.Date) {\n // If field value is \"\", dont set the default advance date\n this.multiForm.addControl(\n field.controlName,\n this.formBuilder.control(\n {\n value: field?.value !== '' ? this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '') : '',\n disabled: field.validations?.readonly || false\n },\n validators\n )\n );\n } else {\n this.multiForm.addControl(\n field.controlName,\n this.formBuilder.control({ value: field?.value || '', disabled: field.validations?.readonly || false }, validators)\n );\n }\n });\n });\n }\n }\n\n /** Reload the field action */\n onClickFieldAction(action: any, field: IFieldConfig) {\n this.fieldAction.emit({ action: 'reload', field });\n }\n\n private updateFormControls(): void {\n if (!this.config?.rows?.length) return;\n\n this.config.rows.forEach(row => {\n row.forEach(field => {\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\n const isReadOnly = !!field.validations?.readonly;\n const validators = this.getValidators(field.validations);\n let control = this.multiForm.get(field.controlName);\n\n // If control does not exist, add it as enabled\n if (!control) {\n let initialValue: any = '';\n if (field.type === FormFieldType.Checkbox) {\n initialValue = this.getTruthyOrFalsy(field.value) || false;\n } else if (field.type === FormFieldType.Date) {\n initialValue = field?.value ? new Date(field.value) : this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '');\n } else {\n initialValue = field.value || '';\n }\n control = this.formBuilder.control(initialValue, { validators, nonNullable: true });\n this.multiForm.addControl(field.controlName, control);\n }\n\n // Always enable before setting value\n control.enable({ emitEvent: false });\n\n // Set value\n if (field.type === FormFieldType.Checkbox) {\n control.setValue(this.getTruthyOrFalsy(field.value) || false, { emitEvent: false });\n } else if (field.type === FormFieldType.Date) {\n control.setValue(field?.value ? new Date(field.value) : '', { emitEvent: false });\n } else {\n control.setValue(field.value || '', { emitEvent: false });\n }\n\n // Disable if readonly\n if (isReadOnly) {\n control.disable({ emitEvent: false });\n }\n });\n });\n this.saveInitialFormValues();\n this.isFormSaved = false;\n this.multiForm.markAsPristine();\n }\n\n public getTruthyOrFalsy(value: any) {\n return value === '1' ? true : false;\n }\n\n private getValidators(validations?: IFormValidations) {\n const validators: any = [];\n\n if (validations) {\n if (validations.required) {\n validators.push(Validators.required);\n }\n if (validations.minLength) {\n validators.push(Validators.minLength(validations.minLength));\n }\n if (validations.maxLength) {\n validators.push(Validators.maxLength(validations.maxLength));\n }\n if (validations.pattern) {\n validators.push(Validators.pattern(validations.pattern));\n }\n }\n\n return validators;\n }\n\n /** Get the form values */\n public getFormValues(): IFormSubmissionEmit {\n this.isFormSubmitted = true;\n this.isFormSaved = true;\n const formSubmissionEmit = { isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls };\n return formSubmissionEmit;\n }\n\n /** Reset the form */\n public resetForm(): void {\n this.multiForm.reset();\n this.isFormSubmitted = false;\n }\n\n /**Set Value to form */\n public setValue(control: string, value: any): void {\n this.multiForm.controls[control].setValue(value);\n }\n\n /**Get Value from form */\n public getValue(control: string): any {\n return this.multiForm.controls[control].value;\n }\n\n /**Get Form Control */\n public getFormControl(control: string): any {\n return this.multiForm.controls[control];\n }\n\n private hasUnsavedChanges(): boolean {\n return JSON.stringify(this.multiForm.getRawValue()) !== JSON.stringify(this.initialFormValues);\n }\n\n private saveInitialFormValues(): void {\n this.initialFormValues = this.multiForm.getRawValue();\n }\n\n public proceedToSaveUnsavedForm(): void {\n this.formSavedUnsavedListen.emit({ isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls });\n }\n\n public proceedWithoutSavingForm(): void {\n this.formSavedUnsavedListen.emit(null);\n this.updateFormControls();\n }\n\n public onValueChange(event: any, control: string): void {\n this.selectionChangeEvent.emit({ control, value: event });\n this.isSelectionChange = true;\n }\n\n public onDateValueChange(value: any, control: string): void {\n const stopControl: IFieldConfig = this.findStopControl();\n if (stopControl) {\n if (control === '@start' && value && stopControl?.validations?.defaultAdvance) {\n const startDate = new Date(value);\n if (this.multiForm.contains('@stop')) {\n this.multiForm.controls['@stop'].setValue(this.setDefaultAdvanceDate(startDate, stopControl?.validations?.defaultAdvance));\n }\n }\n }\n }\n\n public onEditionChange(event: any): void {\n const controlNameWithAt = '@edname';\n const controlNameWithoutAt = 'edname';\n\n if (this.multiForm.contains(controlNameWithAt)) {\n this.multiForm.controls[controlNameWithAt].setValue(event);\n } else if (this.multiForm.contains(controlNameWithoutAt)) {\n this.multiForm.controls[controlNameWithoutAt].setValue(event);\n } else {\n this.multiForm.addControl(controlNameWithAt, this.formBuilder.control(event));\n }\n }\n\n public setDefaultAdvanceDate(currentDate: Date, defaultAdvance: string): any {\n if (defaultAdvance === 'weekly') {\n return this.advanceDate(currentDate, 6);\n } else if (defaultAdvance === 'monthly') {\n const month = currentDate.getMonth();\n const year = currentDate.getFullYear();\n\n // Get days in current month\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n let daysToAdd = 30;\n if (daysInMonth === 31) {\n daysToAdd = 30;\n } else if (daysInMonth === 30) {\n daysToAdd = 29;\n } else if (month === 1) {\n const isLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n daysToAdd = isLeap ? 28 : 27;\n }\n\n return this.advanceDate(currentDate, daysToAdd);\n } else if (defaultAdvance === 'quarterly') {\n return this.advanceDate(currentDate, 90);\n } else if (defaultAdvance === 'halfyearly') {\n return this.advanceDate(currentDate, 180);\n } else if (defaultAdvance === 'yearly') {\n return this.advanceDate(currentDate, 365);\n } else {\n return this.advanceDate(currentDate, 0);\n }\n }\n\n private advanceDate(currentDate: Date, advancedBy: number): any {\n if (advancedBy || advancedBy === 0) {\n const advanceDate = new Date(currentDate.setDate(currentDate.getDate() + advancedBy));\n return advanceDate;\n }\n }\n\n private findStopControl(): any {\n for (const row of this.config.rows) {\n for (const field of row) {\n if (field.controlName === '@stop') {\n return field;\n }\n }\n }\n return null;\n }\n}\n","<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" appCircularFocus>\n @for (row of config?.rows; track $index; let isLast = $last) {\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\n @for (field of row; track $index) {\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\n @if (multiForm.controls[field.controlName]) {\n <!-- Label -->\n @if (field.label && field.type !== FormFieldType.Checkbox) {\n <label\n [appShowTooltipIfTruncated]=\"field.label\"\n cLabel\n class=\"mb-1 label-multiform single-line-label\"\n [for]=\"field.controlName\"\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\n [ngStyle]=\"field.styles?.label\"\n >{{ field.label }}\n @if (field?.validations?.required || false) {\n <strong class=\"text-danger\">*</strong>\n }\n </label>\n }\n\n <!-- Text, Email, Number Inputs -->\n @if (\n field.type === FormFieldType.Text ||\n field.type === FormFieldType.Email ||\n field.type === FormFieldType.Number ||\n field.type === FormFieldType.Password ||\n field.type === FormFieldType.Url ||\n field.type === FormFieldType.Tel\n ) {\n <div class=\"position-relative w-100\">\n <input\n [type]=\"field.type\"\n cFormControl\n [formControlName]=\"field.controlName\"\n [id]=\"field.controlName\"\n [placeholder]=\"field.placeholder || ''\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\n 'no-label-margin': !field.label\n }\"\n [min]=\"field.validations?.min\"\n [max]=\"field.validations?.max\"\n [ngStyle]=\"field.styles?.field\" />\n\n @if (field.actionButton) {\n <button\n type=\"button\"\n [cTooltip]=\"field.actionButton?.tooltip\"\n tooltipPlacement=\"top\"\n cButton\n color=\"primary\"\n variant=\"outline\"\n aria-label=\"action\"\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\n (click)=\"onClickFieldAction($event, field)\">\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\n </button>\n }\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\n @if (multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n }\n </div>\n }\n\n <!-- Select Inputs -->\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\n <ng-container>\n <c-multi-select\n [multiple]=\"field?.multiple || false\"\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\n [search]=\"field?.allowCreateOptions || field?.allowSearch || false\"\n [clearSearchOnSelect]=\"true\"\n [selectionType]=\"field?.selectionType || 'tags'\"\n [cleaner]=\"field?.allowCleaner || true\"\n [formControlName]=\"field.controlName\"\n [placeholder]=\"field.placeholder || 'Select'\"\n [appMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\n [options]=\"colorCodes$\"\n [optionsMaxHeight]=\"400\"\n [ngClass]=\"{\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n (valueChange)=\"onValueChange($event, field.controlName)\"\n [ngStyle]=\"field.styles?.field\">\n @if (field.type === inputType?.colorSelect) {\n @for (option of colorCodes$; track $index) {\n <c-multi-select-option [value]=\"option?.label\">\n <label class=\"d-flex gap-2\">\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\n {{ option.label }}\n </label>\n </c-multi-select-option>\n }\n } @else {\n @for (option of field.options; track $index) {\n <c-multi-select-option [value]=\"option?.value\">\n {{ option.label }}\n </c-multi-select-option>\n }\n }\n </c-multi-select>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n\n <!-- Date input -->\n @else if (field.type === FormFieldType.Date) {\n <ng-container>\n <input\n type=\"text\"\n [placeholder]=\"field?.label || 'Select Date'\"\n class=\"form-control\"\n [ngClass]=\"{\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\n [formControlName]=\"field.controlName\"\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\n [bsConfig]=\"{\n containerClass: 'pongrass-red-datepicker',\n showWeekNumbers: false,\n adaptivePosition: true,\n useUtc: false\n }\"\n bsDatepicker\n [ngStyle]=\"field.styles?.field\" />\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n <!-- Textarea -->\n @else if (field.type === FormFieldType.Textarea) {\n <ng-container>\n <textarea\n cFormControl\n [id]=\"field.controlName\"\n [rows]=\"field?.textareaRows || 4\"\n [columns]=\"field?.textareaColumns || 4\"\n [placeholder]=\"field.placeholder || ''\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n [formControlName]=\"field.controlName\"\n [ngStyle]=\"field.styles?.field\"></textarea>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n </ng-container>\n }\n <!-- Checkbox -->\n @else if (field.type === FormFieldType.Checkbox) {\n <div class=\"no-label-margin\">\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\n </div>\n }\n <!-- Decimal input -->\n @else if (field.type === FormFieldType.Float) {\n <ng-container>\n <input\n cFormControl\n [id]=\"field.controlName\"\n type=\"number\"\n class=\"me-2\"\n [formControlName]=\"field.controlName\"\n [appDecimalInput]=\"field.validations?.precision || 2\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n [min]=\"field.validations?.min\"\n [max]=\"field.validations?.max\"\n [ngStyle]=\"field.styles?.field\" />\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n </ng-container>\n } @else if (field.type === FormFieldType.Edition) {\n <ng-container>\n <app-edition-list-grouped\n (selectedEditionsChange)=\"onEditionChange($event)\"\n [multiple]=\"field?.multiple || true\"\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\n </app-edition-list-grouped>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n }\n </div>\n }\n\n @if (field?.type === FormFieldType.Separator) {\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\n }\n @if (field?.type === FormFieldType.FormHeader) {\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\n }\n }\n </div>\n }\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule, DatePickerModule, FormModule, InputGroupComponent, ModalModule, MultiSelectModule, TooltipModule } from '@coreui/angular-pro';\nimport { IconModule } from '@coreui/icons-angular';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\n\nimport { MultiFormComponent } from './multi-form.component';\nimport { EditionListGroupedComponent } from '../../components/edition-list-grouped/edition-list-grouped.component';\n\nimport { CircularFocusDirective } from '../../directives/circular-focus.directive';\nimport { DecimalInputDirective } from '../../directives/decimal-input.directive';\nimport { ShowTooltipIfTruncatedDirective } from '../../directives/show-tooltip-if-truncated.directive';\nimport { MultiSelectStylerDirective } from '../../directives/multi-select-styler.directive';\n\n@NgModule({\n declarations: [MultiFormComponent],\n imports: [\n CircularFocusDirective,\n CommonModule,\n ReactiveFormsModule,\n MultiSelectModule,\n FormModule,\n IconModule,\n InputGroupComponent,\n DatePickerModule,\n DecimalInputDirective,\n ShowTooltipIfTruncatedDirective,\n ModalModule,\n TooltipModule,\n ButtonModule,\n BsDatepickerModule,\n EditionListGroupedComponent,\n MultiSelectStylerDirective\n ],\n exports: [MultiFormComponent]\n})\nexport class MultiFormModule {}\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/services/configuration.service';\n\nexport * from './lib/components/ag-grid-renderer/color-cell-renderer.component';\nexport * from './lib/components/ag-grid-renderer/custom-select-filter.component';\n\nexport * from './lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component';\n\nexport * from './lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component';\n\nexport * from './lib/components/edition-list-grouped/edition-list-grouped.component';\n\nexport * from './lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component';\n\nexport * from './lib/components/page-status-cell-renderer/page-status-cell-renderer.component';\n\nexport * from './lib/modules/multi-form/multi-form.module';\nexport * from './lib/modules/multi-form/multi-form.interface';\nexport * from './lib/modules/multi-form/multi-form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CircularFocusDirective","i6.DecimalInputDirective","i7.ShowTooltipIfTruncatedDirective","i9.EditionListGroupedComponent","i10.MultiSelectStylerDirective"],"mappings":"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"}
|