coer-elements 2.0.49 → 2.0.51

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.
Files changed (33) hide show
  1. package/components/lib/coer-datebox/coer-datebox.component.d.ts +30 -14
  2. package/components/lib/coer-dropdown/coer-dropdown.component.d.ts +6 -5
  3. package/components/lib/coer-modal/coer-modal.component.d.ts +2 -1
  4. package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +5 -6
  5. package/components/lib/coer-secretbox/coer-secretbox.component.d.ts +16 -5
  6. package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +15 -4
  7. package/components/lib/coer-textbox/coer-textbox.component.d.ts +3 -3
  8. package/extensions/lib/string.extension.d.ts +2 -0
  9. package/fesm2022/coer-elements-components.mjs +343 -169
  10. package/fesm2022/coer-elements-components.mjs.map +1 -1
  11. package/fesm2022/coer-elements-extensions.mjs +3 -0
  12. package/fesm2022/coer-elements-extensions.mjs.map +1 -1
  13. package/fesm2022/coer-elements-pages.mjs +5 -5
  14. package/fesm2022/coer-elements-pages.mjs.map +1 -1
  15. package/fesm2022/coer-elements-signals.mjs +3 -1
  16. package/fesm2022/coer-elements-signals.mjs.map +1 -1
  17. package/fesm2022/coer-elements-tools.mjs +7 -2
  18. package/fesm2022/coer-elements-tools.mjs.map +1 -1
  19. package/fesm2022/coer-elements.mjs +2 -1
  20. package/fesm2022/coer-elements.mjs.map +1 -1
  21. package/index.d.ts +1 -1
  22. package/package.json +1 -1
  23. package/signals/lib/component-content.signal.d.ts +1 -0
  24. package/signals/public-api.d.ts +1 -0
  25. package/styles/coer-elements.css +1 -1
  26. package/styles/components.scss +305 -15
  27. package/styles/cursors.scss +3 -2
  28. package/styles/displays.scss +2 -1
  29. package/styles/icons/icons-regular.scss +1 -0
  30. package/styles/icons/icons.scss +1 -0
  31. package/styles/width-height.scss +1 -0
  32. package/svg/regular/magnifying-glass.svg +4 -0
  33. package/tools/lib/strings.tools.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/numbers.tools.ts","../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/colors.tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.tools.ts","../../../projects/coer-elements/tools/lib/coer-grid.templates.ts","../../../projects/coer-elements/tools/lib/collections.tools.ts","../../../projects/coer-elements/tools/lib/control-value.tools.ts","../../../projects/coer-elements/tools/lib/date-time.tools.ts","../../../projects/coer-elements/tools/lib/html-elements.tools.ts","../../../projects/coer-elements/tools/lib/strings.tools.ts","../../../projects/coer-elements/tools/lib/files.tools.ts","../../../projects/coer-elements/tools/lib/user.class.ts","../../../projects/coer-elements/tools/lib/filters.tools.ts","../../../projects/coer-elements/tools/lib/menu.tools.ts","../../../projects/coer-elements/tools/lib/source.tools.ts","../../../projects/coer-elements/tools/lib/page.tools.ts","../../../projects/coer-elements/tools/lib/screen.tools.ts","../../../projects/coer-elements/tools/lib/section.tools.ts","../../../projects/coer-elements/tools/lib/service.tools.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["/** Provides several methods for string manipulation */\r\nexport class Numbers { \r\n\r\n\r\n /** Validates if the value is a numeric type */\r\n public static IsNumber(value: any): boolean {\r\n return typeof value === 'number' && !Number.isNaN(Number(value));\r\n }\r\n\r\n\r\n /** Validates if the value isn't a numeric type */\r\n public static IsNotNumber(value: any): boolean {\r\n return !this.IsNumber(value);\r\n }\r\n\r\n\r\n /** Return a string with numeric format */\r\n public static GetNumericFormat(value: string | number | null | undefined, decimals: number = 0): string {\r\n if (this.IsNotNumber(value)) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n } \r\n}","import { signal } from \"@angular/core\"; \r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { Numbers } from \"./numbers.tools\";\r\nconst reference_signal = signal<any>({});\r\n\r\n/** Generic Methods */\r\nexport const Tools = {\r\n\r\n\r\n /** Generates a guid */\r\n GetGuid: (seed: string = 'coer-system'): string => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: (value: any): boolean => {\r\n return (value === undefined || value === null);\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: (value: any): boolean => {\r\n return !Tools.IsNull(value); \r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: (value: any): boolean => {\r\n return Tools.IsNull(value) || (typeof value === 'string' && value.trim() === '');\r\n },\r\n\r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: (value: any): boolean => {\r\n return Tools.IsNotNull(value) && !Tools.IsOnlyWhiteSpace(value); \r\n },\r\n \r\n \r\n /** Avoids null value and responds with the specified type */\r\n AvoidNull: <T>(value: T | null | undefined, type: 'string' | 'number' | 'boolean' = 'string'): T => {\r\n\r\n if (Tools.IsNull(value)) {\r\n return (type === 'string' ? '' : type === 'number' ? 0 : false) as T;\r\n }\r\n\r\n else if (typeof value === 'string') {\r\n if (type === 'string' ) return value as T;\r\n if (type === 'number' ) return (Numbers.IsNumber(Number(value)) ? Number(value) : 0) as T;\r\n if (type === 'boolean') return (\r\n Numbers.IsNumber(Number(value)) \r\n ? Number(value) > 0 \r\n : (value.toLowerCase().trim() === 'true')\r\n ) as T;\r\n } \r\n \r\n else if (typeof value === 'number') {\r\n if (type === 'string' ) return String(value) as T;\r\n if (type === 'number' ) return value as T; \r\n if (type === 'boolean') return (value > 0) as T;\r\n }\r\n\r\n else if (typeof value === \"boolean\") { \r\n if (type === 'string' ) return (value ? 'true' : 'false') as T;\r\n if (type === 'number' ) return (value ? 1 : 0) as T; \r\n if (type === 'boolean') return value as T;\r\n }\r\n\r\n return (type === 'string' ? '' : type === 'number' ? 0 : false) as T;\r\n }, \r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => { \r\n if (Tools.IsNull(object) || ['string', 'number', 'boolean'].includes(typeof object)) return object; \r\n return JSON.parse(JSON.stringify(object)) as T;\r\n }, \r\n \r\n\r\n /** Get properties of an object */\r\n GetPropertyList: <T extends object | null | undefined>(object: T | null | undefined): string[] => {\r\n return Tools.IsNotNull(object) && typeof object === 'object' \r\n ? Object.keys(object!) \r\n : [];\r\n }, \r\n \r\n \r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null): Promise<void> => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n },\r\n\r\n\r\n /** Send text to the computer's clipboard */\r\n Clipboard: (text: string, message: string = '', title: string = 'Copied'): void => {\r\n try {\r\n navigator.clipboard.writeText(text.trim()).then(() => {\r\n new CoerAlert().Info(message, title, 'bi bi-clipboard-fill');\r\n }); \r\n } \r\n \r\n catch { \r\n new CoerAlert().Warning('Unable to copy to clipboard', 'Quick Implement', 'bi bi-clipboard-fill');\r\n } \r\n }\r\n}; ","import { colorsSIGNAL } from \"coer-elements/signals\";\r\nimport { IActionColors, IAppColors, IFixedColors } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** class to work with colors */\r\nexport class Colors {\r\n\r\n /** Provides the fixed colors set by the coer-elements library */\r\n public static get fixedColors(): IFixedColors {\r\n return {\r\n blue : colorsSIGNAL().fixedColors.blue,\r\n gray : colorsSIGNAL().fixedColors.gray,\r\n green : colorsSIGNAL().fixedColors.green,\r\n yellow : colorsSIGNAL().fixedColors.yellow,\r\n red : colorsSIGNAL().fixedColors.red,\r\n smoke : colorsSIGNAL().fixedColors.smoke,\r\n black : colorsSIGNAL().fixedColors.black,\r\n orange : colorsSIGNAL().fixedColors.orange,\r\n white : colorsSIGNAL().fixedColors.white,\r\n purple : colorsSIGNAL().fixedColors.purple\r\n }\r\n }\r\n\r\n\r\n /** Provides the action colors set in the application */\r\n public static get actionColors(): IActionColors {\r\n return {\r\n primary : colorsSIGNAL().actionColors.primary, \r\n secondary : colorsSIGNAL().actionColors.secondary, \r\n success : colorsSIGNAL().actionColors.success,\r\n warning : colorsSIGNAL().actionColors.warning, \r\n danger : colorsSIGNAL().actionColors.danger, \r\n navigation : colorsSIGNAL().actionColors.navigation, \r\n information : colorsSIGNAL().actionColors.information\r\n }\r\n }\r\n \r\n \r\n /** Provides the colors of the application */\r\n public static get appColors(): IAppColors {\r\n return {\r\n breadcrumbs : colorsSIGNAL().appColors.breadcrumbs,\r\n background : colorsSIGNAL().appColors.background, \r\n containers : colorsSIGNAL().appColors.containers,\r\n sidenav : colorsSIGNAL().appColors.sidenav, \r\n sidenavText : colorsSIGNAL().appColors.sidenavText, \r\n sidenavActive: colorsSIGNAL().appColors.sidenavActive,\r\n toolbar : colorsSIGNAL().appColors.toolbar, \r\n toolbarText : colorsSIGNAL().appColors.toolbarText\r\n } \r\n }\r\n \r\n \r\n /** Get Hexadecimal color */\r\n public static ToHexadecimal(red: number, green: number, blue: number, alpha?: number): string {\r\n const _red = `${Number(red).toString(16).padStart(2, '0')}`;\r\n const _green = `${Number(green).toString(16).padStart(2, '0')}`;\r\n const _blue = `${Number(blue).toString(16).padStart(2, '0')}`;\r\n const _alpha = (Tools.IsNotNull(alpha)) ? Math.round(Number(alpha) * 255).toString(16).padStart(2, '0') : '';\r\n return `#${_red}${_green}${_blue}${_alpha}`.toLowerCase();\r\n }\r\n\r\n\r\n /** Returns a random color in hexadecimal \r\n public static GetRandomColorHex = (): string => \"#xxxxxx\".replace(/x/g, () => (Math.random() * 16 | 0).toString(16)); */\r\n\r\n\r\n /** Returns the number of colors requested */\r\n public static GetColorList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n let counter: number = 0;\r\n\r\n while (counter < quantity) {\r\n for (const color in this.fixedColors) {\r\n colors.push(color);\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n\r\n /** Returns the number of colors requested with opacity \r\n public static GetColorRGBList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n\r\n let alpha: number = 1.0;\r\n let counter: number = 0;\r\n let lastColor = [...Array.from(this.ColorsRGB.keys())].pop();\r\n\r\n while (counter < quantity) {\r\n for (const [color, value] of this.ColorsRGB.entries()) {\r\n colors.push(`rgba(${value[0]}, ${value[1]}, ${value[2]}, ${alpha})`);\r\n\r\n if (color === lastColor) alpha -= 0.2;\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n } */\r\n}","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport { Colors } from '../colors.tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** Use this alert to issue a success message */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-check-circle fa-beat' : icon;\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this._SetIcon(alertSuccessIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this._SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to issue a error or danger */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-exclamation-octagon fa-beat' : icon;\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this._SetIcon(alertErrorIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this._SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to broadcast an informational message */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'circle-info fa-beat' : icon;\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this._SetIcon(alertInfoIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this._SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to issue a warning message */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-exclamation-triangle-fill fa-beat' : icon;\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this._SetIcon(alertWarningIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this._SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n } \r\n\r\n\r\n /** Use this alert to confirm a user action */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': { \r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = Colors.actionColors.danger;\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = Colors.actionColors.success;\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'icon-circle-info';\r\n iconType = 'error';\r\n color = Colors.actionColors.information;\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = Colors.actionColors.warning; \r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected _Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n private _SetIcon(element: HTMLElement, icon: string): void {\r\n if (icon.toUpperCase() != 'NONE') {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n \r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n \r\n else element.classList.add(icon); \r\n }\r\n }\r\n\r\n\r\n /** */\r\n private _SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n } \r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\n/** Controls the breadcrumbs in sessionStorage */\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** Add a breadcrumb */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Get the breadcrumbs */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** Get the first breadcrumb */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** Get the last breadcrumb */\r\n public static GetLast(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.pop()! : null;\r\n }\r\n\r\n\r\n /** */\r\n private static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Removes one breadcrumb by route */\r\n public static RemoveByPath(path: string): void { \r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Update the last breadcrumb */\r\n public static UpdateLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Remove the last breadcrumb */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { IGridCoerSwitch, IGridCoerTextBox, IGridItem } from \"coer-elements/interfaces\";\r\n\r\nexport const GridTemplates = {\r\n\r\n /** Set Active/Disabled values, template for boolean property */\r\n isActiveTemplate: (item: IGridItem<any>): string => {\r\n if (item.value) {\r\n return `\r\n <span class='text-green font-weight-bold'>\r\n <i class=\"fa-solid fa-circle-check\"></i> Active\r\n </span>\r\n `;\r\n }\r\n\r\n else {\r\n return `\r\n <span class='text-gray font-weight-bold'>\r\n <i class=\"fa-solid fa-circle-minus\"></i> Disabled\r\n </span>\r\n `;\r\n }\r\n },\r\n\r\n\r\n /** Enable switch by row, template for boolean property */\r\n coerSwitchTemplate: (item: IGridItem<any>): IGridCoerSwitch => ({\r\n isInput: true,\r\n tooltip: `${item.value ? 'Active' : 'Disabled' }`\r\n }),\r\n\r\n\r\n /** Enable textbox by row, template for text property */\r\n coerTextboxTemplate: (item: IGridItem<any>): IGridCoerTextBox => ({\r\n isInput: true,\r\n isInvalid: item.value.length <= 0\r\n }),\r\n\r\n\r\n /** Template for icons */\r\n coerIconTemplate: (icon: string, color: string = 'black'): string => {\r\n return `<i class='${icon} display-block width-100 text-center' style='color: ${color};'></i>`;\r\n }\r\n}","import { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for collection manipulation */\r\nexport class Collections {\r\n \r\n /** Set an index and concat more arrays of the same type */\r\n public static SetIndex<T>(array: T[], ...args: T[][]): T[] { \r\n for (const arg of args) {\r\n array = [...array].concat([...arg]);\r\n }\r\n\r\n return [...array].map((item, index) => Object.assign({}, item, { index }));\r\n } \r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n public static SortBy<T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n }\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n public static SortByDesc<T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Distinct<T>(array: T[], ...args: T[][]): T[] { \r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n } \r\n\r\n return Array.from(new Set(array));\r\n }\r\n\r\n\r\n /** */\r\n public static Except<T>(array: T[], filter: any[], ...properties: string[]): T[] {\r\n const result: T[] = [];\r\n \r\n for (const item of array as any[]) {\r\n if (typeof item === 'object' && Tools.IsNotNull(properties) && properties.length > 0) {\r\n if (!filter.some(x => x[properties[0]] === item[properties[0]])) {\r\n result.push(item);\r\n }\r\n } \r\n }\r\n\r\n return [...result];\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n/** Implements the ControlValueAccessor interface to build a components */\r\nexport abstract class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n private _isTouched: boolean = false;\r\n private _IsTouched!: Function;\r\n protected _UpdateValue!: Function;\r\n\r\n /** Current value of the component */\r\n protected _value: any; \r\n\r\n\r\n /** Property to validate if the component has been touched */\r\n public get isTouched(): boolean {\r\n return this._isTouched;\r\n } \r\n\r\n\r\n /** Sets the value of the component when it is created */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** Sets the value of the component when it is updated */\r\n public registerOnChange(callback: Function): void {\r\n if(typeof callback === 'function') {\r\n this._UpdateValue = callback;\r\n }\r\n }\r\n\r\n\r\n /** Sets the component's touched status when it is updated */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n\r\n /** Sets the value of the component */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** Sets whether the component has been touched */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n } \r\n}","import moment from \"moment\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for dates manipulation */\r\nexport class Dates {\r\n\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetCurrentDateTime(): string { \r\n return moment().parseZone().local(true).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string { \r\n date = new Date(date.toString());\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone. YYYY-MM-DD HH:mm:ss */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = Dates.GetFormatDB(date);\r\n return moment(date).add(Dates.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC. YYYY-MM-DD HH:mm:ss */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = Dates.GetFormatDB(date);\r\n return moment(date).subtract(Dates.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** MMM, DD YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('MMM, DD YYYY');\r\n }\r\n\r\n\r\n /** MMM, DD YYYY at hh:mm a */\r\n public static GetDateTimeFormat(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('MMM, DD YYYY - hh:mm a').replace('-', 'at');\r\n }\r\n\r\n\r\n /** */\r\n public static IsValidDate(date: string | Date | moment.Moment): boolean { \r\n try {\r\n if (Tools.IsOnlyWhiteSpace(date)) return false; \r\n date = Dates.GetFormatDB(date); \r\n return moment(date).isValid();\r\n } \r\n \r\n catch {\r\n return false;\r\n } \r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static SetFirstHour(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date); \r\n date = moment(date).set('hour', 0).set('minute', 0).set('second', 0).set('millisecond', 0);\r\n return Dates.GetFormatDB(date); \r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static SetLastHour(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date); \r\n date = moment(date).set('hour', 23).set('minute', 59).set('second', 59).set('millisecond', 59);\r\n return Dates.GetFormatDB(date); \r\n } \r\n}","import { Colors } from \"./colors.tools\";\r\nimport { Tools } from \"./tools\";\r\n \r\n\r\nexport class HTMLElements {\r\n\r\n /** */\r\n public static GetElement = (selector: string): HTMLElement | null => { \r\n return document.querySelector(selector);\r\n }\r\n\r\n\r\n /** */\r\n public static Scroll = (element: string | HTMLElement | null | undefined, y: number = 0, x: number = 0): void => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) { \r\n Tools.Sleep().then(_ => HTML_ELEMENT.scroll({ \r\n top: y,\r\n left: x,\r\n behavior: 'smooth' \r\n })); \r\n } \r\n }\r\n\r\n\r\n /** */\r\n public static ScrollToElement = (element: string | HTMLElement | null | undefined, container: string | HTMLElement = ''): void => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) { \r\n const HTML_CONTAINER = (typeof container === 'string') ? this.GetElement(container) : container;\r\n\r\n if(HTML_CONTAINER) {\r\n Tools.Sleep().then(_ => HTML_CONTAINER.scrollBy({ top: HTML_ELEMENT.offsetTop, behavior: 'smooth' }));\r\n }\r\n\r\n else {\r\n Tools.Sleep().then(_ => HTML_ELEMENT.scrollIntoView({ behavior: 'smooth', block: \"start\" })); \r\n }\r\n } \r\n }\r\n\r\n\r\n /** */\r\n public static GetCssValue = (element: string | HTMLElement | null | undefined, style: string): string => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n return (HTML_ELEMENT)\r\n ? window.getComputedStyle(HTML_ELEMENT).getPropertyValue(style)\r\n : ''; \r\n } \r\n\r\n\r\n /** Gets the width of the element in px */\r\n public static GetElementWidth = (element: HTMLElement | null | undefined, ...args: (number | HTMLElement | null | undefined)[]): string => {\r\n let width: number = 0;\r\n \r\n if(Tools.IsNotNull(element) && Tools.IsNotOnlyWhiteSpace(element?.offsetWidth)) {\r\n width += element!.offsetWidth;\r\n\r\n for (const arg of args) {\r\n if (typeof arg == 'number') width += arg;\r\n\r\n else if(Tools.IsNotNull(arg) && Tools.IsNotOnlyWhiteSpace(arg?.offsetWidth)) {\r\n width += arg!.offsetWidth;\r\n } \r\n }\r\n } \r\n \r\n return `${width}px`; \r\n }\r\n\r\n\r\n /** Gets the height of the element in px */\r\n public static GetElementHeight = (element: HTMLElement | null | undefined, ...args: (number | HTMLElement | null | undefined)[]): string => {\r\n let height: number = 0;\r\n \r\n if(Tools.IsNotNull(element) && Tools.IsNotOnlyWhiteSpace(element?.offsetHeight)) {\r\n height += element!.offsetHeight;\r\n\r\n for (const arg of args) {\r\n if (typeof arg == 'number') height += arg;\r\n\r\n else if(Tools.IsNotNull(arg) && Tools.IsNotOnlyWhiteSpace(arg?.offsetHeight)) {\r\n height += arg!.offsetHeight;\r\n } \r\n }\r\n } \r\n\r\n return `${height}px`;\r\n }\r\n\r\n\r\n /** */\r\n public static IsInvalidElement = (element: any): boolean => { \r\n let isInvalid = true;\r\n\r\n if (Tools.IsNotNull(element)) { \r\n if(typeof element === 'object') {\r\n const properties = Tools.GetPropertyList(element); \r\n \r\n if (properties.includes('_isTouched') && properties.includes('_value')) {\r\n isInvalid = element.isTouched && Tools.IsOnlyWhiteSpace(element.value);\r\n }\r\n } \r\n }\r\n\r\n return isInvalid;\r\n }\r\n\r\n\r\n /** Gets the color of the element in hexadecimal */\r\n public static GetElementColor = (element: string | HTMLElement | null | undefined): string => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n let rgb: string | number[] = window.getComputedStyle(HTML_ELEMENT).getPropertyValue('color');\r\n rgb = rgb.replace('rgb(', '').replace(')', '');\r\n rgb = rgb.split(',').map(item => Number(item));\r\n\r\n const red = rgb[0];\r\n const green = rgb[1];\r\n const blue = rgb[2];\r\n const alpha = (rgb.length > 3) ? rgb[3] : undefined;\r\n\r\n return Colors.ToHexadecimal(red, green, blue, alpha);\r\n } \r\n\r\n return '';\r\n }\r\n\r\n\r\n /** */\r\n public static HasClass = (element: string | HTMLElement | null | undefined, className: string): boolean => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n return Tools.IsNotNull(HTML_ELEMENT) \r\n && HTML_ELEMENT?.classList.contains(className) || false;\r\n }\r\n\r\n\r\n /** */\r\n public static AddClass = async (element: string | HTMLElement | null | undefined, className: string) => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n if (!this.HasClass(HTML_ELEMENT, className)) {\r\n HTML_ELEMENT?.classList.add(className);\r\n } \r\n \r\n return true;\r\n } \r\n \r\n return false;\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveClass = (element: string | HTMLElement | null | undefined, className: string): boolean => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n if (this.HasClass(HTML_ELEMENT, className)) {\r\n HTML_ELEMENT?.classList.remove(className);\r\n } \r\n\r\n return true;\r\n } \r\n \r\n return false;\r\n }\r\n};","import { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for string manipulation */\r\nexport class Strings { \r\n\r\n\r\n /** Sets the first character to lowercase */\r\n public static FirstCharToLower(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).charAt(0).toLowerCase() + String(value).slice(1)\r\n : ''; \r\n }\r\n\r\n\r\n /** Sets the first character to uppercase */\r\n public static FirstCharToUpper(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).charAt(0).toUpperCase() + String(value).slice(1)\r\n : '';\r\n }\r\n\r\n\r\n /** Clean extra whitespaces */\r\n public static CleanUpBlanks(value: string | number | null | undefined): string {\r\n return value && Tools.IsNotOnlyWhiteSpace(value) \r\n ? String(value).replace(/\\s+/g, ' ').trim()\r\n : ''; \r\n }\r\n\r\n\r\n /** Apply title formatting */\r\n public static ToTitle(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).split(' ').filter(x => x.length > 0).map(x => Strings.FirstCharToUpper(x.toLowerCase())).join(' ')\r\n : ''; \r\n }\r\n\r\n\r\n /** Removes the last character */\r\n public static RemoveLastChar(value: string | number | null | undefined): string {\r\n return Tools.IsNotOnlyWhiteSpace(value)\r\n ? String(value).trimEnd().slice(0, -1)\r\n : '';\r\n } \r\n\r\n\r\n /** Removes accents */\r\n public static RemoveAccents(value: string | number | null | undefined, except: string[] = []): string { \r\n if(Tools.IsOnlyWhiteSpace(value)) return ''; \r\n\r\n if (except.length > 0) {\r\n let index = 0;\r\n const mapValue = new Map<number, string>();\r\n for(const char of String(value)) { \r\n mapValue.set(index++, char);\r\n }\r\n \r\n index = 0;\r\n const mapNormalize = new Map<number, string>();\r\n for(const char of String(value).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')) {\r\n mapNormalize.set(index++, char);\r\n } \r\n \r\n for (const char of except) {\r\n for (const [index, value] of mapValue.entries()) {\r\n if (value === char) {\r\n mapNormalize.set(index, char);\r\n }\r\n }\r\n } \r\n\r\n return Array.from(mapNormalize.values()).join('');\r\n }\r\n\r\n else {\r\n return String(value).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\r\n } \r\n }\r\n\r\n\r\n /** Removes special characters */\r\n public static RemoveSpecialCharacters(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).replace(/[^a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ\\s]/g , '') : ''; \r\n }\r\n\r\n\r\n /** Only Alphanumeric */\r\n public static OnlyAlphanumeric(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).replace(/[^a-zA-Z0-9\\s]/g , '') : ''; \r\n }\r\n\r\n\r\n /** Validates if both strings are equal */\r\n public static Equals(value: string | number | null | undefined, value2: string | number | null | undefined, sensitive: boolean = false): boolean {\r\n if(typeof value === null && typeof value2 === null) return true;\r\n if(typeof value === 'undefined' && typeof value2 === 'undefined') return true;\r\n\r\n if(typeof value === 'string' && typeof value2 === 'string') {\r\n if (!sensitive) {\r\n value = value.toUpperCase();\r\n value2 = value2.toUpperCase(); \r\n }\r\n\r\n return value.length === value2.length\r\n && value === value2;\r\n } \r\n \r\n return false;\r\n }\r\n}","import { Strings } from \"./strings.tools\";\r\nimport { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n \r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string {\r\n if (file.name.includes('.')) {\r\n let worlds = file.name.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n /** */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Strings.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1'): void {\r\n sheetName = Strings.CleanUpBlanks(sheetName);\r\n fileName = Strings.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.endsWith('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.endsWith('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File): Promise<string> {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IUserLoginResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\"; \r\n\r\n/** Controls user information in localStorage */\r\nexport class User {\r\n \r\n private static readonly storage = 'COER-System';\r\n\r\n \r\n /** Save the user to localStorage */ \r\n public static Set(user: IUserLoginResponse): void { \r\n let storage = localStorage.getItem(this.storage) as any; \r\n\r\n if (storage) {\r\n storage = JSON.parse(storage); \r\n user = Object.assign({}, storage.user, user); \r\n storage = Object.assign({}, storage, { user });\r\n }\r\n\r\n else {\r\n storage = Object.assign({}, storage, { user });\r\n }\r\n\r\n localStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n \r\n\r\n /** Get the user from localStorage */\r\n public static Get(): IUserLoginResponse | null {\r\n let storage = localStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n \r\n if (storage.hasOwnProperty('user')) {\r\n return {\r\n userId: Tools.AvoidNull(storage.user?.userId, 'number'),\r\n user: Tools.AvoidNull(storage.user?.user, 'string'),\r\n userNumber: Tools.AvoidNull(storage.user?.userNumber, 'string'),\r\n role: Tools.AvoidNull(storage.user?.role, 'string'),\r\n fullName: Tools.AvoidNull(storage.user?.fullName, 'string'),\r\n nickname: Tools.AvoidNull(storage.user?.nickname, 'string'), \r\n email: Tools.AvoidNull(storage.user?.email, 'string'),\r\n roles: Tools.IsNotNull(storage.user?.roles) ? storage.user.roles : [],\r\n jwt: Tools.AvoidNull(storage.user?.jwt, 'string'),\r\n remember: Tools.AvoidNull(storage.user?.remember, 'boolean')\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n \r\n\r\n /** Validates if the user and the jwt exist in the localStorage */\r\n public static IsLogIn(): boolean {\r\n let storage = localStorage.getItem(this.storage) as any; \r\n storage = JSON.parse(storage); \r\n\r\n return Tools.IsNotNull(storage)\r\n && Tools.IsNotNull(storage?.user)\r\n && Tools.IsNotOnlyWhiteSpace(storage?.user?.user)\r\n && Tools.IsNotOnlyWhiteSpace(storage?.user?.jwt);\r\n }\r\n\r\n\r\n /** Removes data from localStorage and sessionStorage, except for the user and navigate to root */\r\n public static LogOut(): void {\r\n let storage = localStorage.getItem(this.storage) as any; \r\n\r\n sessionStorage.removeItem(this.storage);\r\n localStorage.removeItem(this.storage); \r\n\r\n if (Tools.IsNotOnlyWhiteSpace(storage)) {\r\n storage = JSON.parse(storage); \r\n\r\n const STORAGE_USER = storage?.user;\r\n const user = STORAGE_USER?.user;\r\n const remember = Tools.AvoidNull<boolean>(STORAGE_USER?.remember, 'boolean');\r\n \r\n if (remember && Tools.IsNotOnlyWhiteSpace(user)) {\r\n localStorage.setItem(this.storage, JSON.stringify({ user: { user, remember }})); \r\n }\r\n } \r\n \r\n document.location.href = '/';\r\n } \r\n}","import { Tools } from './tools';\r\n\r\nexport class Filters {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add<T>(filters: T, path: string): void { \r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n \r\n let dictionary: any[] = [[path, filters]];\r\n\r\n if(Tools.IsNotNull(storage?.filters)) { \r\n const index = storage.filters.findIndex((x: any[]) => x.some(y => y === path));\r\n\r\n if (index > -1) {\r\n storage.filters[index][1] = filters;\r\n dictionary = storage.filters;\r\n } \r\n\r\n else {\r\n dictionary = storage.filters.concat(dictionary);\r\n }\r\n } \r\n \r\n storage = Object.assign({}, storage, { \r\n filters: dictionary\r\n });\r\n \r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get<T>(path: string): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) {\r\n\r\n for(const filterList of storage.filters) { \r\n if (filterList.some((x: any) => x === path)) {\r\n return filterList[1];\r\n }\r\n } \r\n }\r\n\r\n return null; \r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) { \r\n\r\n let index = 0;\r\n for(index; index < storage.filters.length; index++) {\r\n if (storage.filters[index].some((x: any) => x === path)) {\r\n break;\r\n }\r\n }\r\n\r\n storage.filters.splice(index, 1); \r\n } \r\n\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveAll(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) {\r\n delete storage.filters;\r\n } \r\n\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n}","import { IMenuAccess, IMenuOptionSelected } from \"coer-elements/interfaces\"; \r\nimport { navigationSIGNAL } from \"coer-elements/signals\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static SetSelectedOption(menu: IMenuOptionSelected): void { \r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetSelectedOption(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\t\t\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n public static GetMenuAccess = (): IMenuAccess[] => {\r\n const menuAccess: IMenuAccess[] = [];\r\n \r\n //LV1\r\n for (const lv1 of navigationSIGNAL()) {\r\n \r\n //LV1 - Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv1.path) && Tools.IsNull(lv1.items)) {\r\n menuAccess.push({ \r\n module: null, \r\n submodule: null, \r\n page: lv1.label, \r\n path: lv1.path!,\r\n readonly: Tools.IsNotNull(lv1?.readonly) ? lv1.readonly! : true \r\n });\r\n } \r\n \r\n //LV1 - Module\r\n else if (Tools.IsOnlyWhiteSpace(lv1.path) && Tools.IsNotNull(lv1.items)) { \r\n \r\n //LV2\r\n for (const lv2 of lv1.items!) {\r\n \r\n //LV2 - Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv2.path) && Tools.IsNull(lv2.items)) {\r\n menuAccess.push({\r\n module: lv1.label, \r\n submodule: null, \r\n page: lv2.label, \r\n path: lv2.path!,\r\n readonly: Tools.IsNotNull(lv2?.readonly) ? lv2.readonly! : true \r\n });\r\n } \r\n \r\n //LV2 - Submodule\r\n else if (Tools.IsOnlyWhiteSpace(lv2.path) && Tools.IsNotNull(lv2.items)) {\r\n \r\n //LV3\r\n for(const lv3 of lv2.items!) {\r\n \r\n //LV3 Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv3.path) && Tools.IsNull(lv3.items)) {\r\n menuAccess.push({ \r\n module: lv1.label, \r\n submodule: lv2.label, \r\n page: lv3.label, \r\n path: lv3.path!,\r\n readonly: Tools.IsNotNull(lv3?.readonly) ? lv3.readonly! : true \r\n });\r\n } \r\n }\r\n }\r\n }\r\n } \r\n } \r\n \r\n return menuAccess;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.tools\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Controls source information in sessionStorage */\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** Save the source to sessionStorage and add the breadcrumb */\r\n public static Set(pageName: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(pageName, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Get the source from sessionStorage */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Gets the first breadcrumb from sessionStorage */\r\n public static GetRoot(): IAppSource | null {\r\n return Breadcrumbs.GetFirst(); \r\n }\r\n\r\n\r\n /** Save the pageResponse to sessionStorage */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Gets the pageResponse from sessionStorage */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Remove the pageResponse from sessionStorage */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if(Tools.IsNotNull(storage)) {\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n \r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n }\r\n\r\n\r\n /** Remove the sessionStorage */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.tools';\r\nimport { Source } from './source.tools';\r\nimport { Tools } from './tools';\r\nimport { Filters } from './filters.tools';\r\nimport { Menu } from './menu.tools';\r\n\r\n@Component({ template: '' })\r\nexport abstract class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly __activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadonlyPage: boolean = true;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false; \r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected pageFilters: any = {};\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private __path: string = '';\r\n private __page: string = '';\r\n private __source: IAppSource | null = null;\r\n private __preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) { \r\n this.SetPageName(page);\r\n this.__SetSource();\r\n this.__GetSource();\r\n this.__GetNavigation();\r\n this.__SetGoBack();\r\n this.__GetPageMode();\r\n this.__GetPageFilter();\r\n this.__GetPageResponse();\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this.routeParams = this.__activatedRoute.snapshot.params;\r\n this.queryParams = this.__activatedRoute.snapshot.queryParams;\r\n\r\n await Tools.Sleep();\r\n this.isReadyPage = true;\r\n this.RunPage(); \r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.__preventDestroy) this.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this.__page = name;\r\n\r\n this.__path = this.router.url;\r\n if (this.__path.includes('?')) this.__path = this.__path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = this.__path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n this.__path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = this.__path;\r\n Breadcrumbs.UpdateLast(name, this.__path);\r\n }\r\n\r\n this.router.navigateByUrl(this.__path)\r\n }\r\n\r\n\r\n /** */\r\n private __SetSource(): void {\r\n Source.Set(this.__page);\r\n }\r\n\r\n\r\n /** */\r\n private __GetSource(): void {\r\n this.__source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n private __GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse(); \r\n }\r\n\r\n\r\n /** */\r\n private __GetNavigation(): void {\r\n if (this.__source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n })); \r\n }\r\n\r\n else this.breadcrumbs = [{ page: this.__page }];\r\n }\r\n\r\n\r\n /** */\r\n private __SetGoBack(): void {\r\n if (this.__source) {\r\n this.goBack = {\r\n show: true,\r\n path: this.__source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private __GetPageMode() { \r\n const subscribe$ = this.__activatedRoute.data.subscribe({\r\n next: ({ module, submodule, page }) => { \r\n \r\n const menuAccess = Menu.GetMenuAccess().find(x => \r\n Tools.AvoidNull(x.module, 'string') === Tools.AvoidNull(module, 'string')\r\n && Tools.AvoidNull(x.submodule, 'string') === Tools.AvoidNull(submodule, 'string')\r\n && Tools.AvoidNull(x.page, 'string') === Tools.AvoidNull(page, 'string')\r\n );\r\n \r\n this.isReadonlyPage = Tools.IsNotNull(menuAccess) ? menuAccess!.readonly : true; \r\n },\r\n\r\n error: (message) => { console.error(message) },\r\n complete: () => { subscribe$.unsubscribe() }\r\n }); \r\n }\r\n\r\n \r\n /** */\r\n private GoBack = (path?: string) => (() => { \r\n if (path) Breadcrumbs.RemoveByPath(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this.__source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n this.RemovePageFilter();\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this.__source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this.__preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ClearPageResponse(): void {\r\n Source.ClearPageResponse();\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected SetPageFilters<T>(filters: T): void {\r\n this.pageFilters = Tools.BreakReference<T>(filters);\r\n Filters.Add(this.pageFilters, this.__path); \r\n }\r\n\r\n\r\n /** */\r\n private __GetPageFilter(): void { \r\n this.pageFilters = Filters.Get(this.__path); \r\n }\r\n\r\n\r\n /** */\r\n protected RemovePageFilter(): void { \r\n this.pageFilters = {};\r\n Filters.Remove(this.__path); \r\n }\r\n\r\n\r\n /** Emit a console.log() */\r\n protected Log(value: any, logName: string | null = null): void {\r\n if (Tools.IsNotNull(logName)) console.log({ log: logName, value });\r\n else console.log(value);\r\n } \r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n protected IsNull = Tools.IsNull;\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n protected IsNotNull = Tools.IsNotNull;\r\n \r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n \r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n /** Gets the width of the browser window */\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n /** Gets the height of the screen window */\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n /** Gets the width of the device screen */\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n /** Gets the height of the device screen */\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n /** gets the breakpoint based on the width of the browsing window */\r\n public static get BREAKPOINT(): 'mv' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (this.WINDOW_WIDTH < 500) return 'mv';\r\n else if (this.WINDOW_WIDTH >= 500 && this.WINDOW_WIDTH < 576) return 'xs';\r\n else if (this.WINDOW_WIDTH >= 576 && this.WINDOW_WIDTH < 768) return 'sm';\r\n else if (this.WINDOW_WIDTH >= 768 && this.WINDOW_WIDTH < 992) return 'md';\r\n else if (this.WINDOW_WIDTH >= 992 && this.WINDOW_WIDTH < 1200) return 'lg';\r\n else if (this.WINDOW_WIDTH >= 1200 && this.WINDOW_WIDTH < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** Provides an observable for screen resizing */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n const handleResize = () => { \r\n subscriber.next({ \r\n width: window.innerWidth, \r\n height: window.innerHeight, \r\n breakpoint: this.BREAKPOINT \r\n }); \r\n };\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n window.addEventListener(\"load\", handleResize);\r\n\r\n return () => { \r\n window.removeEventListener(\"resize\", handleResize); \r\n window.removeEventListener(\"load\", handleResize); \r\n };\r\n });\r\n\r\n\r\n /** Provides an observable for the browser buttons */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n const handlePopState = (popStateEvent: PopStateEvent) => { \r\n if (popStateEvent.state && popStateEvent.target) { \r\n subscriber.next((popStateEvent.target as Window).location.href); \r\n } \r\n }; \r\n \r\n window.addEventListener('popstate', handlePopState); \r\n \r\n return () => { \r\n window.removeEventListener('popstate', handlePopState); \r\n };\r\n });\r\n}","import { AfterViewInit, Component, inject, input, OnDestroy, output } from '@angular/core'; \r\nimport { CoerAlert } from './coer-alert/coer-alert.component'; \r\nimport { Router } from '@angular/router';\r\nimport { Tools } from './tools';\r\n\r\n/** Use this component to extend the functionality of a page section. */\r\n@Component({ template: '' })\r\nexport abstract class Section<T> implements AfterViewInit, OnDestroy {\r\n \r\n /** */\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n \r\n /** */\r\n protected readonly router = inject(Router);\r\n \r\n\r\n /** */ \r\n public isLoading = input<boolean>(false);\r\n \r\n\r\n /** */\r\n public isUpdate = input<boolean>(false);\r\n\r\n\r\n /** */\r\n public onReady = output<void>();\r\n\r\n\r\n /** */\r\n public onDestroy = output<any>();\r\n\r\n\r\n /** */\r\n public onIsLoading = output<boolean>();\r\n\r\n\r\n /** */\r\n public onUpdated = output<T | null>(); \r\n\r\n\r\n /** */\r\n protected enableAnimations: boolean = false; \r\n\r\n\r\n /** */\r\n protected isReadySection: boolean = false; \r\n\r\n\r\n async ngAfterViewInit() { \r\n await Tools.Sleep();\r\n this.isReadySection = true;\r\n this.RunSection();\r\n this.onReady.emit();\r\n \r\n await Tools.Sleep(1000);\r\n this.enableAnimations = true \r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.onDestroy.emit(null); \r\n }\r\n\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunSection(): void {};\r\n \r\n\r\n /** Emit a console.log() */\r\n protected Log(value: any, logName: string | null = null): void {\r\n if (Tools.IsNotNull(logName)) console.log({ log: logName, value });\r\n else console.log(value);\r\n } \r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n protected IsNull = Tools.IsNull;\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n protected IsNotNull = Tools.IsNotNull;\r\n \r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n \r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { saveAs } from 'file-saver';\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for handling http requests */\r\nexport abstract class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected readonly HTTP_CODE = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n Forbidden: 403,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** Clear and release a subscription */\r\n protected ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** Generates a GET http request */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n \r\n const responseType = request?.responseType || 'json';\r\n\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"GET\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: request.responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a POST http request */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a PUT http request */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a PATCH http request */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n \r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a DELETE http request */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true): Promise<IHttpResponse<void>> {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._DELETE$);\r\n \r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Download a csv file from browser */\r\n protected DOWNLOAD_CSV(buffer: ArrayBuffer, fileName: string = ''): Blob {\r\n\r\n if(Tools.IsOnlyWhiteSpace(fileName)) fileName = 'COERSystem';\r\n if(!fileName.endsWith('.csv')) fileName += \".csv\"; \r\n\r\n const BLOB = new Blob([buffer], { type: 'application/csv' });\r\n saveAs(BLOB, fileName);\r\n return BLOB;\r\n }\r\n\r\n\r\n /** Download a txt file from browser */\r\n protected DOWNLOAD_TXT(buffer: ArrayBuffer, fileName: string = ''): Blob {\r\n\r\n if(Tools.IsOnlyWhiteSpace(fileName)) fileName = 'COERSystem';\r\n if(!fileName.endsWith('.txt')) fileName += \".txt\"; \r\n\r\n const BLOB = new Blob([buffer], { type: 'text/plain' });\r\n saveAs(BLOB, fileName);\r\n return BLOB;\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error(message, 'BUG', 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 403: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Forbidden', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg');\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/numbers.tools.ts","../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/colors.tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.tools.ts","../../../projects/coer-elements/tools/lib/coer-grid.templates.ts","../../../projects/coer-elements/tools/lib/collections.tools.ts","../../../projects/coer-elements/tools/lib/control-value.tools.ts","../../../projects/coer-elements/tools/lib/date-time.tools.ts","../../../projects/coer-elements/tools/lib/html-elements.tools.ts","../../../projects/coer-elements/tools/lib/strings.tools.ts","../../../projects/coer-elements/tools/lib/files.tools.ts","../../../projects/coer-elements/tools/lib/user.class.ts","../../../projects/coer-elements/tools/lib/filters.tools.ts","../../../projects/coer-elements/tools/lib/menu.tools.ts","../../../projects/coer-elements/tools/lib/source.tools.ts","../../../projects/coer-elements/tools/lib/page.tools.ts","../../../projects/coer-elements/tools/lib/screen.tools.ts","../../../projects/coer-elements/tools/lib/section.tools.ts","../../../projects/coer-elements/tools/lib/service.tools.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["/** Provides several methods for string manipulation */\r\nexport class Numbers { \r\n\r\n\r\n /** Validates if the value is a numeric type */\r\n public static IsNumber(value: any): boolean {\r\n return typeof value === 'number' && !Number.isNaN(Number(value));\r\n }\r\n\r\n\r\n /** Validates if the value isn't a numeric type */\r\n public static IsNotNumber(value: any): boolean {\r\n return !this.IsNumber(value);\r\n }\r\n\r\n\r\n /** Return a string with numeric format */\r\n public static GetNumericFormat(value: string | number | null | undefined, decimals: number = 0): string {\r\n if (this.IsNotNumber(value)) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n } \r\n}","import { signal } from \"@angular/core\"; \r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { Numbers } from \"./numbers.tools\";\r\nconst reference_signal = signal<any>({});\r\n\r\n/** Generic Methods */\r\nexport const Tools = {\r\n\r\n\r\n /** Generates a guid */\r\n GetGuid: (seed: string = 'coer-system'): string => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: (value: any): boolean => {\r\n return (value === undefined || value === null);\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: (value: any): boolean => {\r\n return !Tools.IsNull(value); \r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: (value: any): boolean => {\r\n return Tools.IsNull(value) || (typeof value === 'string' && value.trim() === '');\r\n },\r\n\r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: (value: any): boolean => {\r\n return Tools.IsNotNull(value) && !Tools.IsOnlyWhiteSpace(value); \r\n },\r\n \r\n \r\n /** Avoids null value and responds with the specified type */\r\n AvoidNull: <T>(value: T | null | undefined, type: 'string' | 'number' | 'boolean' = 'string'): T => {\r\n\r\n if (Tools.IsNull(value)) {\r\n return (type === 'string' ? '' : type === 'number' ? 0 : false) as T;\r\n }\r\n\r\n else if (typeof value === 'string') {\r\n if (type === 'string' ) return value as T;\r\n if (type === 'number' ) return (Numbers.IsNumber(Number(value)) ? Number(value) : 0) as T;\r\n if (type === 'boolean') return (\r\n Numbers.IsNumber(Number(value)) \r\n ? Number(value) > 0 \r\n : (value.toLowerCase().trim() === 'true')\r\n ) as T;\r\n } \r\n \r\n else if (typeof value === 'number') {\r\n if (type === 'string' ) return String(value) as T;\r\n if (type === 'number' ) return value as T; \r\n if (type === 'boolean') return (value > 0) as T;\r\n }\r\n\r\n else if (typeof value === \"boolean\") { \r\n if (type === 'string' ) return (value ? 'true' : 'false') as T;\r\n if (type === 'number' ) return (value ? 1 : 0) as T; \r\n if (type === 'boolean') return value as T;\r\n }\r\n\r\n return (type === 'string' ? '' : type === 'number' ? 0 : false) as T;\r\n }, \r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => { \r\n if (Tools.IsNull(object) || ['string', 'number', 'boolean'].includes(typeof object)) return object; \r\n return JSON.parse(JSON.stringify(object)) as T;\r\n }, \r\n \r\n\r\n /** Get properties of an object */\r\n GetPropertyList: <T extends object | null | undefined>(object: T | null | undefined): string[] => {\r\n return Tools.IsNotNull(object) && typeof object === 'object' \r\n ? Object.keys(object!) \r\n : [];\r\n }, \r\n \r\n \r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null): Promise<void> => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n },\r\n\r\n\r\n /** Send text to the computer's clipboard */\r\n Clipboard: (text: string, message: string = '', title: string = 'Copied'): void => {\r\n try {\r\n navigator.clipboard.writeText(text.trim()).then(() => {\r\n new CoerAlert().Info(message, title, 'bi bi-clipboard-fill');\r\n }); \r\n } \r\n \r\n catch { \r\n new CoerAlert().Warning('Unable to copy to clipboard', 'Quick Implement', 'bi bi-clipboard-fill');\r\n } \r\n }\r\n}; ","import { colorsSIGNAL } from \"coer-elements/signals\";\r\nimport { IActionColors, IAppColors, IFixedColors } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** class to work with colors */\r\nexport class Colors {\r\n\r\n /** Provides the fixed colors set by the coer-elements library */\r\n public static get fixedColors(): IFixedColors {\r\n return {\r\n blue : colorsSIGNAL().fixedColors.blue,\r\n gray : colorsSIGNAL().fixedColors.gray,\r\n green : colorsSIGNAL().fixedColors.green,\r\n yellow : colorsSIGNAL().fixedColors.yellow,\r\n red : colorsSIGNAL().fixedColors.red,\r\n smoke : colorsSIGNAL().fixedColors.smoke,\r\n black : colorsSIGNAL().fixedColors.black,\r\n orange : colorsSIGNAL().fixedColors.orange,\r\n white : colorsSIGNAL().fixedColors.white,\r\n purple : colorsSIGNAL().fixedColors.purple\r\n }\r\n }\r\n\r\n\r\n /** Provides the action colors set in the application */\r\n public static get actionColors(): IActionColors {\r\n return {\r\n primary : colorsSIGNAL().actionColors.primary, \r\n secondary : colorsSIGNAL().actionColors.secondary, \r\n success : colorsSIGNAL().actionColors.success,\r\n warning : colorsSIGNAL().actionColors.warning, \r\n danger : colorsSIGNAL().actionColors.danger, \r\n navigation : colorsSIGNAL().actionColors.navigation, \r\n information : colorsSIGNAL().actionColors.information\r\n }\r\n }\r\n \r\n \r\n /** Provides the colors of the application */\r\n public static get appColors(): IAppColors {\r\n return {\r\n breadcrumbs : colorsSIGNAL().appColors.breadcrumbs,\r\n background : colorsSIGNAL().appColors.background, \r\n containers : colorsSIGNAL().appColors.containers,\r\n sidenav : colorsSIGNAL().appColors.sidenav, \r\n sidenavText : colorsSIGNAL().appColors.sidenavText, \r\n sidenavActive: colorsSIGNAL().appColors.sidenavActive,\r\n toolbar : colorsSIGNAL().appColors.toolbar, \r\n toolbarText : colorsSIGNAL().appColors.toolbarText\r\n } \r\n }\r\n \r\n \r\n /** Get Hexadecimal color */\r\n public static ToHexadecimal(red: number, green: number, blue: number, alpha?: number): string {\r\n const _red = `${Number(red).toString(16).padStart(2, '0')}`;\r\n const _green = `${Number(green).toString(16).padStart(2, '0')}`;\r\n const _blue = `${Number(blue).toString(16).padStart(2, '0')}`;\r\n const _alpha = (Tools.IsNotNull(alpha)) ? Math.round(Number(alpha) * 255).toString(16).padStart(2, '0') : '';\r\n return `#${_red}${_green}${_blue}${_alpha}`.toLowerCase();\r\n }\r\n\r\n\r\n /** Returns a random color in hexadecimal \r\n public static GetRandomColorHex = (): string => \"#xxxxxx\".replace(/x/g, () => (Math.random() * 16 | 0).toString(16)); */\r\n\r\n\r\n /** Returns the number of colors requested */\r\n public static GetColorList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n let counter: number = 0;\r\n\r\n while (counter < quantity) {\r\n for (const color in this.fixedColors) {\r\n colors.push(color);\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n\r\n /** Returns the number of colors requested with opacity \r\n public static GetColorRGBList(quantity: number): string[] {\r\n const colors: string[] = [];\r\n\r\n let alpha: number = 1.0;\r\n let counter: number = 0;\r\n let lastColor = [...Array.from(this.ColorsRGB.keys())].pop();\r\n\r\n while (counter < quantity) {\r\n for (const [color, value] of this.ColorsRGB.entries()) {\r\n colors.push(`rgba(${value[0]}, ${value[1]}, ${value[2]}, ${alpha})`);\r\n\r\n if (color === lastColor) alpha -= 0.2;\r\n if (++counter === quantity) break;\r\n }\r\n }\r\n\r\n return colors;\r\n } */\r\n}","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport { Colors } from '../colors.tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** Use this alert to issue a success message */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-check-circle fa-beat' : icon;\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this._SetIcon(alertSuccessIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this._SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to issue a error or danger */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-exclamation-octagon fa-beat' : icon;\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this._SetIcon(alertErrorIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this._SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to broadcast an informational message */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'circle-info fa-beat' : icon;\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this._SetIcon(alertInfoIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this._SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** Use this alert to issue a warning message */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon \r\n icon = Tools.IsOnlyWhiteSpace(icon) ? 'bi-exclamation-triangle-fill fa-beat' : icon;\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this._SetIcon(alertWarningIcon, icon!);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this._SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n } \r\n\r\n\r\n /** Use this alert to confirm a user action */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': { \r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = Colors.actionColors.danger;\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = Colors.actionColors.success;\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'icon-circle-info';\r\n iconType = 'error';\r\n color = Colors.actionColors.information;\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = Colors.actionColors.warning; \r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected _Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n private _SetIcon(element: HTMLElement, icon: string): void {\r\n if (icon.toUpperCase() != 'NONE') {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n \r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n \r\n else element.classList.add(icon); \r\n }\r\n }\r\n\r\n\r\n /** */\r\n private _SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n } \r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"_Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\n/** Controls the breadcrumbs in sessionStorage */\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** Add a breadcrumb */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Get the breadcrumbs */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** Get the first breadcrumb */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** Get the last breadcrumb */\r\n public static GetLast(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.pop()! : null;\r\n }\r\n\r\n\r\n /** */\r\n private static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Removes one breadcrumb by route */\r\n public static RemoveByPath(path: string): void { \r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Update the last breadcrumb */\r\n public static UpdateLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** Remove the last breadcrumb */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { IGridCoerSwitch, IGridCoerTextBox, IGridItem } from \"coer-elements/interfaces\";\r\n\r\nexport const GridTemplates = {\r\n\r\n /** Set Active/Disabled values, template for boolean property */\r\n isActiveTemplate: (item: IGridItem<any>): string => {\r\n if (item.value) {\r\n return `\r\n <span class='text-green font-weight-bold'>\r\n <i class=\"fa-solid fa-circle-check\"></i> Active\r\n </span>\r\n `;\r\n }\r\n\r\n else {\r\n return `\r\n <span class='text-gray font-weight-bold'>\r\n <i class=\"fa-solid fa-circle-minus\"></i> Disabled\r\n </span>\r\n `;\r\n }\r\n },\r\n\r\n\r\n /** Enable switch by row, template for boolean property */\r\n coerSwitchTemplate: (item: IGridItem<any>): IGridCoerSwitch => ({\r\n isInput: true,\r\n tooltip: `${item.value ? 'Active' : 'Disabled' }`\r\n }),\r\n\r\n\r\n /** Enable textbox by row, template for text property */\r\n coerTextboxTemplate: (item: IGridItem<any>): IGridCoerTextBox => ({\r\n isInput: true,\r\n isInvalid: item.value.length <= 0\r\n }),\r\n\r\n\r\n /** Template for icons */\r\n coerIconTemplate: (icon: string, color: string = 'black'): string => {\r\n return `<i class='${icon} display-block width-100 text-center' style='color: ${color};'></i>`;\r\n }\r\n}","import { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for collection manipulation */\r\nexport class Collections {\r\n \r\n /** Set an index and concat more arrays of the same type */\r\n public static SetIndex<T>(array: T[], ...args: T[][]): T[] { \r\n for (const arg of args) {\r\n array = [...array].concat([...arg]);\r\n }\r\n\r\n return [...array].map((item, index) => Object.assign({}, item, { index }));\r\n } \r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n public static SortBy<T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n }\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n public static SortByDesc<T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Distinct<T>(array: T[], ...args: T[][]): T[] { \r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n } \r\n\r\n return Array.from(new Set(array));\r\n }\r\n\r\n\r\n /** */\r\n public static Except<T>(array: T[], filter: any[], ...properties: string[]): T[] {\r\n const result: T[] = [];\r\n \r\n for (const item of array as any[]) {\r\n if (typeof item === 'object' && Tools.IsNotNull(properties) && properties.length > 0) {\r\n if (!filter.some(x => x[properties[0]] === item[properties[0]])) {\r\n result.push(item);\r\n }\r\n } \r\n }\r\n\r\n return [...result];\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n/** Implements the ControlValueAccessor interface to build a components */\r\nexport abstract class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n private _isTouched: boolean = false;\r\n private _IsTouched!: Function;\r\n protected _UpdateValue!: Function;\r\n\r\n /** Current value of the component */\r\n protected _value: any; \r\n\r\n\r\n /** Property to validate if the component has been touched */\r\n public get isTouched(): boolean {\r\n return this._isTouched;\r\n } \r\n\r\n\r\n /** Sets the value of the component when it is created */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** Sets the value of the component when it is updated */\r\n public registerOnChange(callback: Function): void {\r\n if(typeof callback === 'function') {\r\n this._UpdateValue = callback;\r\n }\r\n }\r\n\r\n\r\n /** Sets the component's touched status when it is updated */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n\r\n /** Sets the value of the component */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** Sets whether the component has been touched */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n } \r\n}","import moment from \"moment\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for dates manipulation */\r\nexport class Dates {\r\n\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetCurrentDateTime(): string { \r\n return moment().parseZone().local(true).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string { \r\n date = new Date(date.toString());\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone. YYYY-MM-DD HH:mm:ss */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = Dates.GetFormatDB(date);\r\n return moment(date).add(Dates.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC. YYYY-MM-DD HH:mm:ss */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = Dates.GetFormatDB(date);\r\n return moment(date).subtract(Dates.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** MMM, DD YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('MMM, DD YYYY');\r\n }\r\n\r\n\r\n /** MMM, DD YYYY at hh:mm a */\r\n public static GetDateTimeFormat(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('MMM, DD YYYY - hh:mm a').replace('-', 'at');\r\n }\r\n\r\n\r\n /** */\r\n public static IsValidDate(date: string | Date | moment.Moment): boolean { \r\n try {\r\n if (Tools.IsOnlyWhiteSpace(date)) return false; \r\n date = Dates.GetFormatDB(date); \r\n return moment(date).isValid();\r\n } \r\n \r\n catch {\r\n return false;\r\n } \r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static SetFirstHour(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date); \r\n date = moment(date).set('hour', 0).set('minute', 0).set('second', 0).set('millisecond', 0);\r\n return Dates.GetFormatDB(date); \r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static SetLastHour(date: string | Date | moment.Moment): string { \r\n date = Dates.GetFormatDB(date); \r\n date = moment(date).set('hour', 23).set('minute', 59).set('second', 59).set('millisecond', 59);\r\n return Dates.GetFormatDB(date); \r\n } \r\n}","import { Colors } from \"./colors.tools\";\r\nimport { Tools } from \"./tools\";\r\n \r\n\r\nexport class HTMLElements {\r\n\r\n /** */\r\n public static GetElement = (selector: string): HTMLElement | null => { \r\n return document.querySelector(selector);\r\n }\r\n\r\n\r\n /** */\r\n public static Scroll = (element: string | HTMLElement | null | undefined, y: number = 0, x: number = 0): void => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) { \r\n Tools.Sleep().then(_ => HTML_ELEMENT.scroll({ \r\n top: y,\r\n left: x,\r\n behavior: 'smooth' \r\n })); \r\n } \r\n }\r\n\r\n\r\n /** */\r\n public static ScrollToElement = (element: string | HTMLElement | null | undefined, container: string | HTMLElement = ''): void => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) { \r\n const HTML_CONTAINER = (typeof container === 'string') ? this.GetElement(container) : container;\r\n\r\n if(HTML_CONTAINER) {\r\n Tools.Sleep().then(_ => HTML_CONTAINER.scrollBy({ top: HTML_ELEMENT.offsetTop, behavior: 'smooth' }));\r\n }\r\n\r\n else {\r\n Tools.Sleep().then(_ => HTML_ELEMENT.scrollIntoView({ behavior: 'smooth', block: \"start\" })); \r\n }\r\n } \r\n }\r\n\r\n\r\n /** */\r\n public static GetCssValue = (element: string | HTMLElement | null | undefined, style: string): string => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n return (HTML_ELEMENT)\r\n ? window.getComputedStyle(HTML_ELEMENT).getPropertyValue(style)\r\n : ''; \r\n } \r\n\r\n\r\n /** Gets the width of the element in px */\r\n public static GetElementWidth = (element: HTMLElement | null | undefined, ...args: (number | HTMLElement | null | undefined)[]): string => {\r\n let width: number = 0;\r\n \r\n if(Tools.IsNotNull(element) && Tools.IsNotOnlyWhiteSpace(element?.offsetWidth)) {\r\n width += element!.offsetWidth;\r\n\r\n for (const arg of args) {\r\n if (typeof arg == 'number') width += arg;\r\n\r\n else if(Tools.IsNotNull(arg) && Tools.IsNotOnlyWhiteSpace(arg?.offsetWidth)) {\r\n width += arg!.offsetWidth;\r\n } \r\n }\r\n } \r\n \r\n return `${width}px`; \r\n }\r\n\r\n\r\n /** Gets the height of the element in px */\r\n public static GetElementHeight = (element: HTMLElement | null | undefined, ...args: (number | HTMLElement | null | undefined)[]): string => {\r\n let height: number = 0;\r\n \r\n if(Tools.IsNotNull(element) && Tools.IsNotOnlyWhiteSpace(element?.offsetHeight)) {\r\n height += element!.offsetHeight;\r\n\r\n for (const arg of args) {\r\n if (typeof arg == 'number') height += arg;\r\n\r\n else if(Tools.IsNotNull(arg) && Tools.IsNotOnlyWhiteSpace(arg?.offsetHeight)) {\r\n height += arg!.offsetHeight;\r\n } \r\n }\r\n } \r\n\r\n return `${height}px`;\r\n }\r\n\r\n\r\n /** */\r\n public static IsInvalidElement = (element: any): boolean => { \r\n let isInvalid = true;\r\n\r\n if (Tools.IsNotNull(element)) { \r\n if(typeof element === 'object') {\r\n const properties = Tools.GetPropertyList(element); \r\n \r\n if (properties.includes('_isTouched') && properties.includes('_value')) {\r\n isInvalid = element.isTouched && Tools.IsOnlyWhiteSpace(element.value);\r\n }\r\n } \r\n }\r\n\r\n return isInvalid;\r\n }\r\n\r\n\r\n /** Gets the color of the element in hexadecimal */\r\n public static GetElementColor = (element: string | HTMLElement | null | undefined): string => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n let rgb: string | number[] = window.getComputedStyle(HTML_ELEMENT).getPropertyValue('color');\r\n rgb = rgb.replace('rgb(', '').replace(')', '');\r\n rgb = rgb.split(',').map(item => Number(item));\r\n\r\n const red = rgb[0];\r\n const green = rgb[1];\r\n const blue = rgb[2];\r\n const alpha = (rgb.length > 3) ? rgb[3] : undefined;\r\n\r\n return Colors.ToHexadecimal(red, green, blue, alpha);\r\n } \r\n\r\n return '';\r\n }\r\n\r\n\r\n /** */\r\n public static HasClass = (element: string | HTMLElement | null | undefined, className: string): boolean => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n return Tools.IsNotNull(HTML_ELEMENT) \r\n && HTML_ELEMENT?.classList.contains(className) || false;\r\n }\r\n\r\n\r\n /** */\r\n public static AddClass = async (element: string | HTMLElement | null | undefined, className: string) => { \r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n if (!this.HasClass(HTML_ELEMENT, className)) {\r\n HTML_ELEMENT?.classList.add(className);\r\n return true;\r\n } \r\n } \r\n \r\n return false;\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveClass = (element: string | HTMLElement | null | undefined, className: string): boolean => {\r\n const HTML_ELEMENT = (typeof element === 'string') ? this.GetElement(element) : element; \r\n\r\n if(HTML_ELEMENT) {\r\n if (this.HasClass(HTML_ELEMENT, className)) {\r\n HTML_ELEMENT?.classList.remove(className);\r\n return true;\r\n } \r\n } \r\n \r\n return false;\r\n }\r\n};","import { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for string manipulation */\r\nexport class Strings { \r\n\r\n\r\n /** Sets the first character to lowercase */\r\n public static FirstCharToLower(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).charAt(0).toLowerCase() + String(value).slice(1)\r\n : ''; \r\n }\r\n\r\n\r\n /** Sets the first character to uppercase */\r\n public static FirstCharToUpper(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).charAt(0).toUpperCase() + String(value).slice(1)\r\n : '';\r\n }\r\n\r\n\r\n /** Clean extra whitespaces */\r\n public static CleanUpBlanks(value: string | number | null | undefined): string {\r\n return value && Tools.IsNotOnlyWhiteSpace(value) \r\n ? String(value).replace(/\\s+/g, ' ').trim()\r\n : ''; \r\n }\r\n\r\n\r\n /** Apply title formatting */\r\n public static ToTitle(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).split(' ').filter(x => x.length > 0).map(x => Strings.FirstCharToUpper(x.toLowerCase())).join(' ')\r\n : ''; \r\n }\r\n\r\n\r\n /** Removes the last character */\r\n public static RemoveLastChar(value: string | number | null | undefined): string {\r\n return Tools.IsNotOnlyWhiteSpace(value)\r\n ? String(value).trimEnd().slice(0, -1)\r\n : '';\r\n } \r\n\r\n\r\n /** Removes accents */\r\n public static RemoveAccents(value: string | number | null | undefined, except: string[] = []): string { \r\n if(Tools.IsOnlyWhiteSpace(value)) return ''; \r\n\r\n if (except.length > 0) {\r\n let index = 0;\r\n const mapValue = new Map<number, string>();\r\n for(const char of String(value)) { \r\n mapValue.set(index++, char);\r\n }\r\n \r\n index = 0;\r\n const mapNormalize = new Map<number, string>();\r\n for(const char of String(value).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')) {\r\n mapNormalize.set(index++, char);\r\n } \r\n \r\n for (const char of except) {\r\n for (const [index, value] of mapValue.entries()) {\r\n if (value === char) {\r\n mapNormalize.set(index, char);\r\n }\r\n }\r\n } \r\n\r\n return Array.from(mapNormalize.values()).join('');\r\n }\r\n\r\n else {\r\n return String(value).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\r\n } \r\n }\r\n\r\n\r\n /** Removes special characters */\r\n public static RemoveSpecialCharacters(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).replace(/[^a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ\\s]/g , '') : ''; \r\n }\r\n\r\n\r\n /** Only Alphanumeric */\r\n public static OnlyAlphanumeric(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).replace(/[^a-zA-Z0-9\\s]/g , '') : ''; \r\n }\r\n\r\n\r\n /** Only Alphanumeric */\r\n public static OnlyNumbers(value: string | number | null | undefined): string {\r\n return (Tools.IsNotOnlyWhiteSpace(value)) \r\n ? String(value).replace(/[^0-9\\s]/g , '') : ''; \r\n }\r\n\r\n\r\n /** Validates if both strings are equal */\r\n public static Equals(value: string | number | null | undefined, value2: string | number | null | undefined, sensitive: boolean = false): boolean {\r\n if(typeof value === null && typeof value2 === null) return true;\r\n if(typeof value === 'undefined' && typeof value2 === 'undefined') return true;\r\n\r\n if(typeof value === 'string' && typeof value2 === 'string') {\r\n if (!sensitive) {\r\n value = value.toUpperCase();\r\n value2 = value2.toUpperCase(); \r\n }\r\n\r\n return value.length === value2.length\r\n && value === value2;\r\n } \r\n \r\n return false;\r\n }\r\n}","import { Strings } from \"./strings.tools\";\r\nimport { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n \r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string {\r\n if (file.name.includes('.')) {\r\n let worlds = file.name.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n /** */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Strings.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1'): void {\r\n sheetName = Strings.CleanUpBlanks(sheetName);\r\n fileName = Strings.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.endsWith('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.endsWith('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File): Promise<string> {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IUserLoginResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\"; \r\n\r\n/** Controls user information in localStorage */\r\nexport class User {\r\n \r\n private static readonly storage = 'COER-System';\r\n\r\n \r\n /** Save the user to localStorage */ \r\n public static Set(user: IUserLoginResponse): void { \r\n let storage = localStorage.getItem(this.storage) as any; \r\n\r\n if (storage) {\r\n storage = JSON.parse(storage); \r\n user = Object.assign({}, storage.user, user); \r\n storage = Object.assign({}, storage, { user });\r\n }\r\n\r\n else {\r\n storage = Object.assign({}, storage, { user });\r\n }\r\n\r\n localStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n \r\n\r\n /** Get the user from localStorage */\r\n public static Get(): IUserLoginResponse | null {\r\n let storage = localStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n \r\n if (storage.hasOwnProperty('user')) {\r\n return {\r\n userId: Tools.AvoidNull(storage.user?.userId, 'number'),\r\n user: Tools.AvoidNull(storage.user?.user, 'string'),\r\n userNumber: Tools.AvoidNull(storage.user?.userNumber, 'string'),\r\n role: Tools.AvoidNull(storage.user?.role, 'string'),\r\n fullName: Tools.AvoidNull(storage.user?.fullName, 'string'),\r\n nickname: Tools.AvoidNull(storage.user?.nickname, 'string'), \r\n email: Tools.AvoidNull(storage.user?.email, 'string'),\r\n roles: Tools.IsNotNull(storage.user?.roles) ? storage.user.roles : [],\r\n jwt: Tools.AvoidNull(storage.user?.jwt, 'string'),\r\n remember: Tools.AvoidNull(storage.user?.remember, 'boolean')\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n \r\n\r\n /** Validates if the user and the jwt exist in the localStorage */\r\n public static IsLogIn(): boolean {\r\n let storage = localStorage.getItem(this.storage) as any; \r\n storage = JSON.parse(storage); \r\n\r\n return Tools.IsNotNull(storage)\r\n && Tools.IsNotNull(storage?.user)\r\n && Tools.IsNotOnlyWhiteSpace(storage?.user?.user)\r\n && Tools.IsNotOnlyWhiteSpace(storage?.user?.jwt);\r\n }\r\n\r\n\r\n /** Removes data from localStorage and sessionStorage, except for the user and navigate to root */\r\n public static LogOut(): void {\r\n let storage = localStorage.getItem(this.storage) as any; \r\n\r\n sessionStorage.removeItem(this.storage);\r\n localStorage.removeItem(this.storage); \r\n\r\n if (Tools.IsNotOnlyWhiteSpace(storage)) {\r\n storage = JSON.parse(storage); \r\n\r\n const STORAGE_USER = storage?.user;\r\n const user = STORAGE_USER?.user;\r\n const remember = Tools.AvoidNull<boolean>(STORAGE_USER?.remember, 'boolean');\r\n \r\n if (remember && Tools.IsNotOnlyWhiteSpace(user)) {\r\n localStorage.setItem(this.storage, JSON.stringify({ user: { user, remember }})); \r\n }\r\n } \r\n \r\n document.location.href = '/';\r\n } \r\n}","import { Tools } from './tools';\r\n\r\nexport class Filters {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add<T>(filters: T, path: string): void { \r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n \r\n let dictionary: any[] = [[path, filters]];\r\n\r\n if(Tools.IsNotNull(storage?.filters)) { \r\n const index = storage.filters.findIndex((x: any[]) => x.some(y => y === path));\r\n\r\n if (index > -1) {\r\n storage.filters[index][1] = filters;\r\n dictionary = storage.filters;\r\n } \r\n\r\n else {\r\n dictionary = storage.filters.concat(dictionary);\r\n }\r\n } \r\n \r\n storage = Object.assign({}, storage, { \r\n filters: dictionary\r\n });\r\n \r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get<T>(path: string): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) {\r\n\r\n for(const filterList of storage.filters) { \r\n if (filterList.some((x: any) => x === path)) {\r\n return filterList[1];\r\n }\r\n } \r\n }\r\n\r\n return null; \r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) { \r\n\r\n let index = 0;\r\n for(index; index < storage.filters.length; index++) {\r\n if (storage.filters[index].some((x: any) => x === path)) {\r\n break;\r\n }\r\n }\r\n\r\n storage.filters.splice(index, 1); \r\n } \r\n\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveAll(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (Tools.IsNotNull(storage?.filters)) {\r\n delete storage.filters;\r\n } \r\n\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n}","import { IMenuAccess, IMenuOptionSelected } from \"coer-elements/interfaces\"; \r\nimport { navigationSIGNAL } from \"coer-elements/signals\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static SetSelectedOption(menu: IMenuOptionSelected): void { \r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetSelectedOption(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\t\t\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n public static GetMenuAccess = (): IMenuAccess[] => {\r\n const menuAccess: IMenuAccess[] = [];\r\n \r\n //LV1\r\n for (const lv1 of navigationSIGNAL()) {\r\n \r\n //LV1 - Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv1.path) && Tools.IsNull(lv1.items)) {\r\n menuAccess.push({ \r\n module: null, \r\n submodule: null, \r\n page: lv1.label, \r\n path: lv1.path!,\r\n readonly: Tools.IsNotNull(lv1?.readonly) ? lv1.readonly! : true \r\n });\r\n } \r\n \r\n //LV1 - Module\r\n else if (Tools.IsOnlyWhiteSpace(lv1.path) && Tools.IsNotNull(lv1.items)) { \r\n \r\n //LV2\r\n for (const lv2 of lv1.items!) {\r\n \r\n //LV2 - Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv2.path) && Tools.IsNull(lv2.items)) {\r\n menuAccess.push({\r\n module: lv1.label, \r\n submodule: null, \r\n page: lv2.label, \r\n path: lv2.path!,\r\n readonly: Tools.IsNotNull(lv2?.readonly) ? lv2.readonly! : true \r\n });\r\n } \r\n \r\n //LV2 - Submodule\r\n else if (Tools.IsOnlyWhiteSpace(lv2.path) && Tools.IsNotNull(lv2.items)) {\r\n \r\n //LV3\r\n for(const lv3 of lv2.items!) {\r\n \r\n //LV3 Page\r\n if (Tools.IsNotOnlyWhiteSpace(lv3.path) && Tools.IsNull(lv3.items)) {\r\n menuAccess.push({ \r\n module: lv1.label, \r\n submodule: lv2.label, \r\n page: lv3.label, \r\n path: lv3.path!,\r\n readonly: Tools.IsNotNull(lv3?.readonly) ? lv3.readonly! : true \r\n });\r\n } \r\n }\r\n }\r\n }\r\n } \r\n } \r\n \r\n return menuAccess;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.tools\";\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Controls source information in sessionStorage */\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** Save the source to sessionStorage and add the breadcrumb */\r\n public static Set(pageName: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(pageName, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Get the source from sessionStorage */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Gets the first breadcrumb from sessionStorage */\r\n public static GetRoot(): IAppSource | null {\r\n return Breadcrumbs.GetFirst(); \r\n }\r\n\r\n\r\n /** Save the pageResponse to sessionStorage */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** Gets the pageResponse from sessionStorage */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Remove the pageResponse from sessionStorage */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if(Tools.IsNotNull(storage)) {\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n \r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n }\r\n\r\n\r\n /** Remove the sessionStorage */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.tools';\r\nimport { Source } from './source.tools';\r\nimport { Tools } from './tools';\r\nimport { Filters } from './filters.tools';\r\nimport { Menu } from './menu.tools';\r\n\r\n@Component({ template: '' })\r\nexport abstract class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly __activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadonlyPage: boolean = true;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false; \r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected pageFilters: any = {};\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private __path: string = '';\r\n private __page: string = '';\r\n private __source: IAppSource | null = null;\r\n private __preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) { \r\n this.SetPageName(page);\r\n this.__SetSource();\r\n this.__GetSource();\r\n this.__GetNavigation();\r\n this.__SetGoBack();\r\n this.__GetPageMode();\r\n this.__GetPageFilter();\r\n this.__GetPageResponse();\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this.routeParams = this.__activatedRoute.snapshot.params;\r\n this.queryParams = this.__activatedRoute.snapshot.queryParams;\r\n\r\n await Tools.Sleep();\r\n this.isReadyPage = true;\r\n this.RunPage(); \r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.__preventDestroy) this.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this.__page = name;\r\n\r\n this.__path = this.router.url;\r\n if (this.__path.includes('?')) this.__path = this.__path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = this.__path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n this.__path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = this.__path;\r\n Breadcrumbs.UpdateLast(name, this.__path);\r\n }\r\n\r\n this.router.navigateByUrl(this.__path)\r\n }\r\n\r\n\r\n /** */\r\n private __SetSource(): void {\r\n Source.Set(this.__page);\r\n }\r\n\r\n\r\n /** */\r\n private __GetSource(): void {\r\n this.__source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n private __GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse(); \r\n }\r\n\r\n\r\n /** */\r\n private __GetNavigation(): void {\r\n if (this.__source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n })); \r\n }\r\n\r\n else this.breadcrumbs = [{ page: this.__page }];\r\n }\r\n\r\n\r\n /** */\r\n private __SetGoBack(): void {\r\n if (this.__source) {\r\n this.goBack = {\r\n show: true,\r\n path: this.__source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private __GetPageMode() { \r\n const subscribe$ = this.__activatedRoute.data.subscribe({\r\n next: ({ module, submodule, page }) => { \r\n \r\n const menuAccess = Menu.GetMenuAccess().find(x => \r\n Tools.AvoidNull(x.module, 'string') === Tools.AvoidNull(module, 'string')\r\n && Tools.AvoidNull(x.submodule, 'string') === Tools.AvoidNull(submodule, 'string')\r\n && Tools.AvoidNull(x.page, 'string') === Tools.AvoidNull(page, 'string')\r\n );\r\n \r\n this.isReadonlyPage = Tools.IsNotNull(menuAccess) ? menuAccess!.readonly : true; \r\n },\r\n\r\n error: (message) => { console.error(message) },\r\n complete: () => { subscribe$.unsubscribe() }\r\n }); \r\n }\r\n\r\n \r\n /** */\r\n private GoBack = (path?: string) => (() => { \r\n if (path) Breadcrumbs.RemoveByPath(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this.__source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n this.RemovePageFilter();\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this.__source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this.__preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ClearPageResponse(): void {\r\n Source.ClearPageResponse();\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected SetPageFilters<T>(filters: T): void {\r\n this.pageFilters = Tools.BreakReference<T>(filters);\r\n Filters.Add(this.pageFilters, this.__path); \r\n }\r\n\r\n\r\n /** */\r\n private __GetPageFilter(): void { \r\n this.pageFilters = Filters.Get(this.__path); \r\n }\r\n\r\n\r\n /** */\r\n protected RemovePageFilter(): void { \r\n this.pageFilters = {};\r\n Filters.Remove(this.__path); \r\n }\r\n\r\n\r\n /** Emit a console.log() */\r\n protected Log(value: any, logName: string | null = null): void {\r\n if (Tools.IsNotNull(logName)) console.log({ log: logName, value });\r\n else console.log(value);\r\n } \r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n protected IsNull = Tools.IsNull;\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n protected IsNotNull = Tools.IsNotNull;\r\n \r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n \r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n /** Gets the width of the browser window */\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n /** Gets the height of the screen window */\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n /** Gets the width of the device screen */\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n /** Gets the height of the device screen */\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n /** gets the breakpoint based on the width of the browsing window */\r\n public static get BREAKPOINT(): 'mv' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (this.WINDOW_WIDTH < 500) return 'mv';\r\n else if (this.WINDOW_WIDTH >= 500 && this.WINDOW_WIDTH < 576) return 'xs';\r\n else if (this.WINDOW_WIDTH >= 576 && this.WINDOW_WIDTH < 768) return 'sm';\r\n else if (this.WINDOW_WIDTH >= 768 && this.WINDOW_WIDTH < 992) return 'md';\r\n else if (this.WINDOW_WIDTH >= 992 && this.WINDOW_WIDTH < 1200) return 'lg';\r\n else if (this.WINDOW_WIDTH >= 1200 && this.WINDOW_WIDTH < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** Provides an observable for screen resizing */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n const handleResize = () => { \r\n subscriber.next({ \r\n width: window.innerWidth, \r\n height: window.innerHeight, \r\n breakpoint: this.BREAKPOINT \r\n }); \r\n };\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n window.addEventListener(\"load\", handleResize);\r\n\r\n return () => { \r\n window.removeEventListener(\"resize\", handleResize); \r\n window.removeEventListener(\"load\", handleResize); \r\n };\r\n });\r\n\r\n\r\n /** Provides an observable for the browser buttons */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n const handlePopState = (popStateEvent: PopStateEvent) => { \r\n if (popStateEvent.state && popStateEvent.target) { \r\n subscriber.next((popStateEvent.target as Window).location.href); \r\n } \r\n }; \r\n \r\n window.addEventListener('popstate', handlePopState); \r\n \r\n return () => { \r\n window.removeEventListener('popstate', handlePopState); \r\n };\r\n });\r\n}","import { AfterViewInit, Component, inject, input, OnDestroy, output } from '@angular/core'; \r\nimport { CoerAlert } from './coer-alert/coer-alert.component'; \r\nimport { Router } from '@angular/router';\r\nimport { Tools } from './tools';\r\n\r\n/** Use this component to extend the functionality of a page section. */\r\n@Component({ template: '' })\r\nexport abstract class Section<T> implements AfterViewInit, OnDestroy {\r\n \r\n /** */\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n \r\n /** */\r\n protected readonly router = inject(Router);\r\n \r\n\r\n /** */ \r\n public isLoading = input<boolean>(false);\r\n \r\n\r\n /** */\r\n public isUpdate = input<boolean>(false);\r\n\r\n\r\n /** */\r\n public onReady = output<void>();\r\n\r\n\r\n /** */\r\n public onDestroy = output<any>();\r\n\r\n\r\n /** */\r\n public onIsLoading = output<boolean>();\r\n\r\n\r\n /** */\r\n public onUpdated = output<T | null>(); \r\n\r\n\r\n /** */\r\n protected enableAnimations: boolean = false; \r\n\r\n\r\n /** */\r\n protected isReadySection: boolean = false; \r\n\r\n\r\n async ngAfterViewInit() { \r\n await Tools.Sleep();\r\n this.isReadySection = true;\r\n this.RunSection();\r\n this.onReady.emit();\r\n \r\n await Tools.Sleep(1000);\r\n this.enableAnimations = true \r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.onDestroy.emit(null); \r\n }\r\n\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunSection(): void {};\r\n \r\n\r\n /** Emit a console.log() */\r\n protected Log(value: any, logName: string | null = null): void {\r\n if (Tools.IsNotNull(logName)) console.log({ log: logName, value });\r\n else console.log(value);\r\n } \r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n protected IsNull = Tools.IsNull;\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n protected IsNotNull = Tools.IsNotNull;\r\n \r\n\r\n /** Returns true if the value is null or undefined or is an empty string or contains only whitespace, false otherwise */\r\n protected IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n \r\n\r\n /** Returns true if it has a string value and is not all whitespace, false otherwise */\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { saveAs } from 'file-saver';\r\nimport { Tools } from \"./tools\";\r\n\r\n/** Provides several methods for handling http requests */\r\nexport abstract class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected readonly HTTP_CODE = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n Forbidden: 403,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** Clear and release a subscription */\r\n protected ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** Generates a GET http request */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n \r\n const responseType = request?.responseType || 'json';\r\n\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"GET\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: request.responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a POST http request */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: response.body,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a PUT http request */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a PATCH http request */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n \r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n \r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Generates a DELETE http request */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>, cancelPrevious: boolean = true): Promise<IHttpResponse<void>> {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n\r\n const responseType = request?.responseType || 'json';\r\n\r\n if(cancelPrevious) {\r\n this.ReleaseSubscription(this._DELETE$);\r\n \r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers,\r\n responseType: responseType,\r\n withCredentials: request.withCredentials \r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n\r\n else {\r\n const subscription = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { \r\n params: request.queryParams, \r\n headers: request.headers, \r\n responseType: responseType,\r\n withCredentials: request.withCredentials\r\n })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n text: responseType == 'text' ? response.body : '',\r\n arraybuffer: responseType == 'arraybuffer' ? response.body : null,\r\n ok: true\r\n });\r\n }\r\n },\r\n \r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(subscription);\r\n this.AlertError(httpError, request.alertError);\r\n \r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n text: '',\r\n arraybuffer: null,\r\n ok: false\r\n });\r\n },\r\n \r\n complete: () => {\r\n this.ReleaseSubscription(subscription);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** Download a csv file from browser */\r\n protected DOWNLOAD_CSV(buffer: ArrayBuffer, fileName: string = ''): Blob {\r\n\r\n if(Tools.IsOnlyWhiteSpace(fileName)) fileName = 'COERSystem';\r\n if(!fileName.endsWith('.csv')) fileName += \".csv\"; \r\n\r\n const BLOB = new Blob([buffer], { type: 'application/csv' });\r\n saveAs(BLOB, fileName);\r\n return BLOB;\r\n }\r\n\r\n\r\n /** Download a txt file from browser */\r\n protected DOWNLOAD_TXT(buffer: ArrayBuffer, fileName: string = ''): Blob {\r\n\r\n if(Tools.IsOnlyWhiteSpace(fileName)) fileName = 'COERSystem';\r\n if(!fileName.endsWith('.txt')) fileName += \".txt\"; \r\n\r\n const BLOB = new Blob([buffer], { type: 'text/plain' });\r\n saveAs(BLOB, fileName);\r\n return BLOB;\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error(message, 'BUG', 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 403: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Forbidden', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg');\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}