coer-elements 0.0.21 → 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/coer-elements.mjs +2 -2
- package/esm2022/index.mjs +2 -0
- package/fesm2022/coer-elements.mjs +0 -4081
- package/fesm2022/coer-elements.mjs.map +1 -1
- package/index.d.ts +1 -5
- package/package.json +1 -1
- package/styles/angular-material.scss +8 -11
- package/styles/bootstrap.scss +3 -3
- package/components/index.d.ts +0 -16
- package/components/lib/coer-alert/coer-alert.component.d.ts +0 -23
- package/components/lib/coer-button/coer-button.component.d.ts +0 -44
- package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +0 -28
- package/components/lib/coer-filebox/coer-filebox.component.d.ts +0 -33
- package/components/lib/coer-form/coer-form.component.d.ts +0 -33
- package/components/lib/coer-grid/coer-grid.component.d.ts +0 -53
- package/components/lib/coer-grid/coer-grid.extension.d.ts +0 -105
- package/components/lib/coer-grid/coer-grid.templates.d.ts +0 -9
- package/components/lib/coer-modal/coer-modal.component.d.ts +0 -38
- package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +0 -56
- package/components/lib/coer-page-title/coer-page-title.component.d.ts +0 -12
- package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +0 -75
- package/components/lib/coer-switch/coer-switch.component.d.ts +0 -31
- package/components/lib/coer-tab/coer-tab.component.d.ts +0 -35
- package/components/lib/coer-textarea/coer-textarea.component.d.ts +0 -51
- package/components/lib/coer-textbox/coer-textbox.component.d.ts +0 -57
- package/components/lib/components.module.d.ts +0 -31
- package/directives/index.d.ts +0 -3
- package/directives/lib/coer-ref.directive.d.ts +0 -14
- package/directives/lib/directives.module.d.ts +0 -8
- package/directives/lib/life-cycle.directive.d.ts +0 -16
- package/esm2022/components/index.mjs +0 -17
- package/esm2022/components/lib/coer-alert/coer-alert.component.mjs +0 -227
- package/esm2022/components/lib/coer-button/coer-button.component.mjs +0 -133
- package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +0 -84
- package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +0 -104
- package/esm2022/components/lib/coer-form/coer-form.component.mjs +0 -102
- package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +0 -515
- package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +0 -412
- package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +0 -30
- package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +0 -108
- package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +0 -260
- package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +0 -44
- package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +0 -339
- package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +0 -94
- package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +0 -116
- package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +0 -157
- package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +0 -196
- package/esm2022/components/lib/components.module.mjs +0 -134
- package/esm2022/directives/index.mjs +0 -4
- package/esm2022/directives/lib/coer-ref.directive.mjs +0 -23
- package/esm2022/directives/lib/directives.module.mjs +0 -25
- package/esm2022/directives/lib/life-cycle.directive.mjs +0 -33
- package/esm2022/interfaces/index.mjs +0 -39
- package/esm2022/interfaces/lib/app-source.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +0 -2
- package/esm2022/interfaces/lib/coer-ref.interface.mjs +0 -2
- package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +0 -2
- package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +0 -2
- package/esm2022/interfaces/lib/screen-size.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/http-request.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/http-response.interface.mjs +0 -2
- package/esm2022/interfaces/lib/service/patch.interface.mjs +0 -2
- package/esm2022/pipes/index.mjs +0 -5
- package/esm2022/pipes/lib/html.pipe.mjs +0 -18
- package/esm2022/pipes/lib/no-image.pipe.mjs +0 -23
- package/esm2022/pipes/lib/numeric-format.pipe.mjs +0 -15
- package/esm2022/pipes/lib/pipes.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -6
- package/esm2022/signals/index.mjs +0 -6
- package/esm2022/signals/lib/breakpoint.signal.mjs +0 -4
- package/esm2022/signals/lib/is-loading.signal.mjs +0 -3
- package/esm2022/signals/lib/is-menu-open.signal.mjs +0 -3
- package/esm2022/signals/lib/is-modal-open.signal.mjs +0 -3
- package/esm2022/signals/lib/menu.signal.mjs +0 -3
- package/esm2022/tools/index.mjs +0 -11
- package/esm2022/tools/lib/breadcrumbs.class.mjs +0 -63
- package/esm2022/tools/lib/control-value.class.mjs +0 -46
- package/esm2022/tools/lib/date-time.class.mjs +0 -29
- package/esm2022/tools/lib/files.class.mjs +0 -91
- package/esm2022/tools/lib/menu.class.mjs +0 -23
- package/esm2022/tools/lib/page.class.mjs +0 -156
- package/esm2022/tools/lib/screen.class.mjs +0 -51
- package/esm2022/tools/lib/service.class.mjs +0 -248
- package/esm2022/tools/lib/source.class.mjs +0 -80
- package/esm2022/tools/lib/tools.mjs +0 -220
- package/interfaces/index.d.ts +0 -33
- package/interfaces/lib/app-source.interface.d.ts +0 -4
- package/interfaces/lib/coer-filebox/file-image.interface.d.ts +0 -14
- package/interfaces/lib/coer-filebox/file.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-button-by-row.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-checkbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-coer-numberbox.interface.d.ts +0 -12
- package/interfaces/lib/coer-grid/grid-coer-selectbox.interface.d.ts +0 -9
- package/interfaces/lib/coer-grid/grid-coer-switch.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-coer-textbox.interface.d.ts +0 -11
- package/interfaces/lib/coer-grid/grid-column.interface.d.ts +0 -22
- package/interfaces/lib/coer-grid/grid-data-source.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-header-button.interface.d.ts +0 -8
- package/interfaces/lib/coer-grid/grid-header-export-button.interface.d.ts +0 -10
- package/interfaces/lib/coer-grid/grid-header.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-import.interface.d.ts +0 -4
- package/interfaces/lib/coer-grid/grid-input-checkbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-input-switch-change.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-input-textbox.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-item.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-keyup-enter.interface.d.ts +0 -6
- package/interfaces/lib/coer-grid/grid-length.interface.d.ts +0 -5
- package/interfaces/lib/coer-grid/grid-search.interface.d.ts +0 -4
- package/interfaces/lib/coer-grid/grid-sort.interface.d.ts +0 -5
- package/interfaces/lib/coer-menu/menu-option-selected.interface.d.ts +0 -9
- package/interfaces/lib/coer-menu/menu-selected.interface.d.ts +0 -10
- package/interfaces/lib/coer-menu/menu.interface.d.ts +0 -6
- package/interfaces/lib/coer-ref.interface.d.ts +0 -10
- package/interfaces/lib/page-title/breadcrumb.interface.d.ts +0 -6
- package/interfaces/lib/page-title/go-back.interface.d.ts +0 -6
- package/interfaces/lib/screen-size.interface.d.ts +0 -5
- package/interfaces/lib/service/http-request.interface.d.ts +0 -10
- package/interfaces/lib/service/http-response.interface.d.ts +0 -6
- package/interfaces/lib/service/patch.interface.d.ts +0 -5
- package/pipes/index.d.ts +0 -4
- package/pipes/lib/html.pipe.d.ts +0 -10
- package/pipes/lib/no-image.pipe.d.ts +0 -7
- package/pipes/lib/numeric-format.pipe.d.ts +0 -7
- package/pipes/lib/pipes.module.d.ts +0 -9
- package/public_api.d.ts +0 -1
- package/signals/index.d.ts +0 -5
- package/signals/lib/breakpoint.signal.d.ts +0 -1
- package/signals/lib/is-loading.signal.d.ts +0 -1
- package/signals/lib/is-menu-open.signal.d.ts +0 -1
- package/signals/lib/is-modal-open.signal.d.ts +0 -1
- package/signals/lib/menu.signal.d.ts +0 -2
- package/tools/index.d.ts +0 -10
- package/tools/lib/breadcrumbs.class.d.ts +0 -18
- package/tools/lib/control-value.class.d.ts +0 -25
- package/tools/lib/date-time.class.d.ts +0 -13
- package/tools/lib/files.class.d.ts +0 -16
- package/tools/lib/menu.class.d.ts +0 -8
- package/tools/lib/page.class.d.ts +0 -60
- package/tools/lib/screen.class.d.ts +0 -13
- package/tools/lib/service.class.d.ts +0 -39
- package/tools/lib/source.class.d.ts +0 -20
- package/tools/lib/tools.d.ts +0 -34
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coer-elements.mjs","sources":["../../../projects/coer-elements/src/directives/lib/coer-ref.directive.ts","../../../projects/coer-elements/src/directives/lib/life-cycle.directive.ts","../../../projects/coer-elements/src/directives/lib/directives.module.ts","../../../projects/coer-elements/src/pipes/lib/html.pipe.ts","../../../projects/coer-elements/src/tools/lib/tools.ts","../../../projects/coer-elements/src/pipes/lib/no-image.pipe.ts","../../../projects/coer-elements/src/pipes/lib/numeric-format.pipe.ts","../../../projects/coer-elements/src/pipes/lib/pipes.module.ts","../../../projects/coer-elements/src/components/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/src/components/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/src/components/lib/coer-button/coer-button.component.ts","../../../projects/coer-elements/src/components/lib/coer-button/coer-button.component.html","../../../projects/coer-elements/src/tools/lib/control-value.class.ts","../../../projects/coer-elements/src/components/lib/coer-checkbox/coer-checkbox.component.ts","../../../projects/coer-elements/src/components/lib/coer-checkbox/coer-checkbox.component.html","../../../projects/coer-elements/src/tools/lib/files.class.ts","../../../projects/coer-elements/src/signals/lib/is-modal-open.signal.ts","../../../projects/coer-elements/src/tools/lib/screen.class.ts","../../../projects/coer-elements/src/components/lib/coer-modal/coer-modal.component.ts","../../../projects/coer-elements/src/components/lib/coer-modal/coer-modal.component.html","../../../projects/coer-elements/src/components/lib/coer-filebox/coer-filebox.component.ts","../../../projects/coer-elements/src/components/lib/coer-filebox/coer-filebox.component.html","../../../projects/coer-elements/src/components/lib/coer-form/coer-form.component.ts","../../../projects/coer-elements/src/components/lib/coer-form/coer-form.component.html","../../../projects/coer-elements/src/components/lib/coer-numberbox/coer-numberbox.component.ts","../../../projects/coer-elements/src/components/lib/coer-numberbox/coer-numberbox.component.html","../../../projects/coer-elements/src/components/lib/coer-selectbox/coer-selectbox.component.ts","../../../projects/coer-elements/src/components/lib/coer-selectbox/coer-selectbox.component.html","../../../projects/coer-elements/src/components/lib/coer-textbox/coer-textbox.component.ts","../../../projects/coer-elements/src/components/lib/coer-textbox/coer-textbox.component.html","../../../projects/coer-elements/src/tools/lib/date-time.class.ts","../../../projects/coer-elements/src/components/lib/coer-grid/coer-grid.extension.ts","../../../projects/coer-elements/src/components/lib/coer-switch/coer-switch.component.ts","../../../projects/coer-elements/src/components/lib/coer-switch/coer-switch.component.html","../../../projects/coer-elements/src/components/lib/coer-grid/coer-grid.component.ts","../../../projects/coer-elements/src/components/lib/coer-grid/coer-grid.component.html","../../../projects/coer-elements/src/tools/lib/menu.class.ts","../../../projects/coer-elements/src/components/lib/coer-page-title/coer-page-title.component.ts","../../../projects/coer-elements/src/components/lib/coer-page-title/coer-page-title.component.html","../../../projects/coer-elements/src/components/lib/coer-tab/coer-tab.component.ts","../../../projects/coer-elements/src/components/lib/coer-tab/coer-tab.component.html","../../../projects/coer-elements/src/components/lib/coer-textarea/coer-textarea.component.ts","../../../projects/coer-elements/src/components/lib/coer-textarea/coer-textarea.component.html","../../../projects/coer-elements/src/components/lib/components.module.ts","../../../projects/coer-elements/src/components/lib/coer-grid/coer-grid.templates.ts","../../../projects/coer-elements/src/signals/lib/breakpoint.signal.ts","../../../projects/coer-elements/src/signals/lib/is-loading.signal.ts","../../../projects/coer-elements/src/signals/lib/is-menu-open.signal.ts","../../../projects/coer-elements/src/signals/lib/menu.signal.ts","../../../projects/coer-elements/src/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/src/tools/lib/source.class.ts","../../../projects/coer-elements/src/tools/lib/page.class.ts","../../../projects/coer-elements/src/tools/lib/service.class.ts","../../../projects/coer-elements/src/coer-elements.ts"],"sourcesContent":["import { Directive, input, TemplateRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[coerRef]'\r\n})\r\nexport class CoerRefDirective {\r\n\r\n //Inputs\r\n public coerRef = input<string>('');\r\n public title = input<string>('');\r\n public icon = input<string>('');\r\n public isDisabled = input<boolean>(false);\r\n public show = input<boolean>(true);\r\n public tooltip = input<string>('');\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}","import { Directive, OnDestroy, output, OnInit, ElementRef, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[lifecycle]'\r\n})\r\nexport class LifeCycleDirective implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n\r\n //Outputs\r\n public OnChanges = output<SimpleChanges>();\r\n public onInit = output<HTMLElement>();\r\n public afterViewInit = output<HTMLElement>();\r\n public onDestroy = output<HTMLElement>();\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.OnChanges.emit(changes);\r\n }\r\n\r\n ngOnInit() {\r\n this.onInit.emit(this.element.nativeElement);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.afterViewInit.emit(this.element.nativeElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy.emit(this.element.nativeElement);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CoerRefDirective } from './coer-ref.directive';\r\nimport { LifeCycleDirective } from './life-cycle.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CoerRefDirective,\r\n LifeCycleDirective,\r\n ],\r\n exports: [\r\n CoerRefDirective,\r\n LifeCycleDirective\r\n ]\r\n})\r\nexport class DirectivesModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'html' })\r\nexport class HtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(value: string): any {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\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: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\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 (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n 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 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 /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(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\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\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};","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Tools } from '../../tools/lib/tools';\r\n\r\n@Pipe({ name: 'noImage' })\r\nexport class NoImagePipe implements PipeTransform {\r\n\r\n transform(value: string | File | null | undefined): string {\r\n const NO_IMAGE = '../../../images/no-image.png';\r\n\r\n if(Tools.IsOnlyWhiteSpace(value) ) {\r\n return NO_IMAGE;\r\n }\r\n\r\n else if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n //Files.ConvertToBase64(value as File).then(base64 => { return base64 });\r\n return NO_IMAGE;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Tools } from '../../tools/lib/tools';\r\n\r\n@Pipe({ name: 'numericFormat' })\r\nexport class NumericFormatPipe implements PipeTransform {\r\n\r\n transform(value: string | number | null | undefined, decimals: number = 0): string {\r\n return Tools.GetNumericFormat(value, decimals);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\n\r\n//Pipes\r\nimport { HtmlPipe } from './html.pipe';\r\nimport { NoImagePipe } from './no-image.pipe';\r\nimport { NumericFormatPipe } from './numeric-format.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n HtmlPipe,\r\n NoImagePipe,\r\n NumericFormatPipe\r\n ],\r\n exports: [\r\n HtmlPipe,\r\n NoImagePipe,\r\n NumericFormatPipe\r\n ]\r\n})\r\nexport class PipesModule { }","import { Component } from '@angular/core';\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})\r\nexport class CoerAlert {\r\n\r\n /** */\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 (!title || 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 = this.GetIcon(title, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (!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 /** */\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 (!title || 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 = this.GetIcon(title, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (!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 /** */\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 (!title || 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 = this.GetIcon(title, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (!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 /** */\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 (!title || 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 = this.GetIcon(title, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (!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 /** */\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 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 (icon == null) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = '#dc3545'; //red\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (icon == null) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = '#198754'; //green\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (icon == null) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = '#0d6efd'; //blue\r\n break\r\n };\r\n\r\n default: {\r\n if (icon == null) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = '#ffc107'; //yellow\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 private SetIcon(element: HTMLElement, icon: string): void {\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 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\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\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 { Component, computed, EventEmitter, input, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Tools } from '../../../tools/lib/tools'\r\nimport { Tooltip } from 'bootstrap';\r\n\r\n@Component({\r\n selector: 'coer-button',\r\n templateUrl: './coer-button.component.html',\r\n styleUrl: './coer-button.component.scss',\r\n})\r\nexport class CoerButton implements OnInit, OnDestroy {\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-button');\r\n private _element!: HTMLButtonElement;\r\n private _tooltip: string = '';\r\n private _tooltipElement!: Tooltip;\r\n\r\n //Inputs\r\n @Input() id: string = '';\r\n public color = input<'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation'>('default');\r\n public type = input<'filled' | 'outline' | 'icon'| 'icon-outline' | 'icon-no-border'>('filled');\r\n public icon = input<'new' | 'save' | 'cancel' | 'import' | 'excel' | 'menu' | 'delete' | 'edit' | 'go' | 'back' | ''>('');\r\n public iconPosition = input<'left' | 'right'>('left');\r\n public animation = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public width = input<string>('125px');\r\n public minWidth = input<string>('30px');\r\n public height = input<string>('40px');\r\n public minHeight = input<string>('30px');\r\n public marginTop = input<string>('0px');\r\n public marginRight = input<string>('0px');\r\n public marginBottom = input<string>('0px');\r\n public marginLeft = input<string>('0px');\r\n public path = input<string | (string | number)[]>([]);\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('left');\r\n\r\n @Input() set tooltip(value: string) {\r\n this._tooltip = value;\r\n if (value && this._tooltipElement) {\r\n this._tooltipElement.setContent({ '.tooltip-inner': this._tooltip });\r\n }\r\n }\r\n\r\n //Outputs\r\n @Output() onClick = new EventEmitter<MouseEvent>();\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled() && !this.isInvisible();\r\n });\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n switch(this.icon()) {\r\n case 'new': return 'fa-solid fa-plus fa-lg';\r\n case 'save': return 'fa-solid fa-floppy-disk fa-lg';\r\n case 'cancel': return 'fa-solid fa-xmark fa-lg';\r\n case 'import': return 'fa-solid fa-file-arrow-up fa-lg';\r\n case 'excel': return 'bi bi-filetype-xlsx fa-lg';\r\n case 'menu': return 'fa-solid fa-bars';\r\n case 'delete': return 'fa-solid fa-trash-can';\r\n case 'edit': return 'fa-solid fa-pen fa-lg';\r\n case 'go': return 'bi bi-box-arrow-right';\r\n case 'back': return 'bi bi-box-arrow-left';\r\n default: return '';\r\n }\r\n });\r\n\r\n\r\n ngOnInit() {\r\n this.SetToolTip();\r\n this.SetEvents();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._tooltipElement) {\r\n Tools.Sleep().then(() => this._tooltipElement.dispose());\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private SetEvents(): void {\r\n Tools.Sleep().then(() => {\r\n this._element = document.getElementById(`${this._id}-inner-button`)! as HTMLButtonElement;\r\n\r\n if (Tools.IsNotNull(this._element)) {\r\n this._element.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n private SetToolTip(): void {\r\n Tools.Sleep().then(() => {\r\n const htmlElement = document.getElementById(`${this._id}-container`)!;\r\n\r\n if (Tools.IsNotNull(htmlElement)) {\r\n htmlElement.addEventListener('mouseleave', () => {\r\n if (Tools.IsNotNull(htmlElement) && Tools.IsNotNull(this._tooltipElement)) {\r\n this._tooltipElement.hide();\r\n }\r\n });\r\n\r\n this._tooltipElement = new Tooltip(htmlElement, {\r\n html: true,\r\n title: this._tooltip,\r\n placement: this.tooltipPosition\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected Click(event: MouseEvent) {\r\n if (this._isEnable()) {\r\n this.onClick.emit(event);\r\n }\r\n\r\n this.Blur();\r\n }\r\n\r\n\r\n /** */\r\n public Focus(timeout: number = 0): void {\r\n Tools.Sleep(timeout).then(() => {\r\n if (this._isEnable()) this._element.focus();\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(): void {\r\n Tools.Sleep().then(() => {\r\n this._element.blur();\r\n });\r\n }\r\n}","<div [ngClass]=\"{ 'coer-button': true, 'invisible': isInvisible() }\">\r\n <a [id]=\"_id + '-container'\"\r\n [routerLink]=\"(path().length > 0 && _isEnable()) ? path() : null\"\r\n [ngClass]=\"{ 'loading': isLoading(), 'animate__animated animate__zoomIn': true, 'animate__disabled': !animation() }\"\r\n [ngStyle]=\"{ 'margin-top': marginTop(), 'margin-right': marginRight(), 'margin-bottom': marginBottom(), 'margin-left': marginLeft() }\">\r\n @if(type() =='filled' || type() == 'outline') {\r\n <button mat-button\r\n [id]=\"_id + '-inner-button'\"\r\n type=\"button\"\r\n (click)=\"Click($event)\"\r\n [ngClass]=\"{\r\n 'primary-filled': (color() == 'primary' && type() =='filled'),\r\n 'secondary-filled': (color() == 'secondary' && type() =='filled'),\r\n 'success-filled': (color() == 'success' && type() =='filled'),\r\n 'warning-filled': (color() == 'warning' && type() =='filled'),\r\n 'danger-filled': (color() == 'danger' && type() =='filled'),\r\n 'navigation-filled': (color() == 'navigation' && type() =='filled'),\r\n 'primary-outline': (color() == 'primary' && type() =='outline'),\r\n 'secondary-outline': (color() == 'secondary' && type() =='outline'),\r\n 'success-outline': (color() == 'success' && type() =='outline'),\r\n 'warning-outline': (color() == 'warning' && type() =='outline'),\r\n 'danger-outline': (color() == 'danger' && type() =='outline'),\r\n 'navigation-outline': (color() == 'navigation'),\r\n 'readonly': isDisabled(),\r\n 'cursor-wait': isLoading()\r\n }\"\r\n [ngStyle]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'height': height(),\r\n 'min-height': minHeight()\r\n }\">\r\n <span class=\"slot\" *ngIf=\"!isLoading(); else loading\" >\r\n <span *ngIf=\"(iconPosition() == 'left')\">\r\n <i [class]=\"_icon()\"></i>\r\n </span>\r\n\r\n <span [ngClass]=\"{ 'ms-2': (iconPosition() == 'left'), 'me-2': (iconPosition() == 'right') }\">\r\n <ng-content></ng-content>\r\n </span>\r\n\r\n <span *ngIf=\"(iconPosition() == 'right')\">\r\n <i [class]=\"_icon()\"></i>\r\n </span>\r\n </span>\r\n\r\n <ng-template #loading>\r\n <span class=\"slot fa-fade\">\r\n <span class=\"me-2\"> Loading </span>\r\n <i class=\"spinner-border\"></i>\r\n </span>\r\n </ng-template>\r\n </button>\r\n }\r\n\r\n @else {\r\n @if (type() == 'icon') {\r\n <button mat-icon-button\r\n [id]=\"_id + '-inner-button'\"\r\n (click)=\"Click($event)\"\r\n [ngClass]=\"{\r\n 'primary-filled': (color() == 'primary'),\r\n 'secondary-filled': (color() == 'secondary'),\r\n 'success-filled': (color() == 'success'),\r\n 'warning-filled': (color() == 'warning'),\r\n 'danger-filled': (color() == 'danger'),\r\n 'navigation-filled': (color() == 'navigation'),\r\n 'readonly': (isDisabled() || isLoading()),\r\n 'cursor-wait': isLoading()\r\n }\">\r\n <i [class]=\"_icon()\"></i>\r\n </button>\r\n }\r\n\r\n @else if (type() == 'icon-outline') {\r\n <button mat-icon-button\r\n [id]=\"_id + '-inner-button'\"\r\n (click)=\"Click($event)\"\r\n [ngClass]=\"{\r\n 'primary-outline': (color() == 'primary'),\r\n 'secondary-outline': (color() == 'secondary'),\r\n 'success-outline': (color() == 'success'),\r\n 'warning-outline': (color() == 'warning'),\r\n 'danger-outline': (color() == 'danger'),\r\n 'navigation-outline': (color() == 'navigation'),\r\n 'readonly': (isDisabled() || isLoading()),\r\n 'cursor-wait': isLoading()\r\n }\">\r\n <i [class]=\"_icon()\"></i>\r\n </button>\r\n }\r\n\r\n @else if (type() == 'icon-no-border') {\r\n <button mat-icon-button\r\n [id]=\"_id + '-inner-button'\"\r\n (click)=\"Click($event)\"\r\n [ngClass]=\"{\r\n 'primary-outline': (color() == 'primary'),\r\n 'secondary-outline': (color() == 'secondary'),\r\n 'success-outline': (color() == 'success'),\r\n 'warning-outline': (color() == 'warning'),\r\n 'danger-outline': (color() == 'danger'),\r\n 'navigation-outline': (color() == 'navigation'),\r\n 'readonly': (isDisabled() || isLoading()),\r\n 'icon-no-border': true\r\n }\">\r\n <i [class]=\"_icon()\"></i>\r\n </button>\r\n }\r\n }\r\n </a>\r\n</div>","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\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\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 /** */\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\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import { AfterViewInit, Component, computed, Input, input, output } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-checkbox',\r\n templateUrl: './coer-checkbox.component.html',\r\n styleUrl: './coer-checkbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerCheckbox)],\r\n})\r\nexport class CoerCheckbox extends ControlValue implements AfterViewInit {\r\n\r\n //Variables\r\n public override _value: boolean = false;\r\n protected _id: string = Tools.GetGuid('coer-checkbox');\r\n private _isLoading: boolean = true;\r\n\r\n //Inputs\r\n @Input() set value(value: boolean | null | undefined) {\r\n if(Tools.IsNull(value)) value = false;\r\n this.SetValue(value as boolean);\r\n }\r\n\r\n public id = input<string>('');\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isDisabled = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public ignoreModel = input<boolean>(false);\r\n\r\n //Outputs\r\n public onChange = output<boolean>();\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled() && !this.isInvisible();\r\n });\r\n\r\n\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => this._isLoading = false);\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override SetValue(value: boolean): void {\r\n if(Tools.IsNotNull(value)) {\r\n if(!this.ignoreModel()) {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n\r\n if (!this._isLoading && this._isEnable()) {\r\n this.onChange.emit(value);\r\n }\r\n }\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override writeValue(value: boolean): void {\r\n if(Tools.IsNotNull(value)) {\r\n this._value = value;\r\n\r\n if (!this._isLoading && this._isEnable()) {\r\n this.onChange.emit(value);\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Check(): void {\r\n if (!this._isLoading && this._isEnable()) {\r\n this.SetValue(true);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Uncheck(): void {\r\n if (!this._isLoading && this._isEnable()) {\r\n this.SetValue(false);\r\n }\r\n }\r\n}","<div [ngClass]=\"{ 'coer-checkbox': true, 'placeholder-glow': isLoading(), 'invisible': isInvisible() }\">\r\n <div [id]=\"_id\" [ngClass]=\"{ 'placeholder': isLoading() }\">\r\n <mat-checkbox\r\n [ngModel]=\"_value\"\r\n [indeterminate]=\"false\"\r\n [labelPosition]=\"labelPosition()\"\r\n [disabled]=\"!_isEnable()\"\r\n (change)=\"this.SetValue($event.checked)\"\r\n > {{ label() }} </mat-checkbox>\r\n </div>\r\n</div>","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\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 | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.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 null;\r\n }\r\n\r\n\r\n /** Is Excel File */\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(Tools.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') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.includes('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.includes('.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) {\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 { signal } from \"@angular/core\";\r\nexport const isModalOpenSIGNAL = signal<boolean>(false);","\r\nimport { IScreenSize } from \"../../interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { Component, computed, ContentChildren, input, Input, OnInit, output, WritableSignal } from '@angular/core';\r\nimport { ICoerRef, IScreenSize } from '../../../interfaces';\r\nimport { CoerRefDirective } from '../../../directives/lib/coer-ref.directive';\r\nimport { isModalOpenSIGNAL } from '../../../signals/lib/is-modal-open.signal';\r\nimport { Screen } from '../../../tools/lib/screen.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\nimport { Modal } from 'bootstrap';\r\n\r\n\r\n@Component({\r\n selector: 'coer-modal',\r\n templateUrl: './coer-modal.component.html',\r\n styleUrl: './coer-modal.component.scss'\r\n})\r\nexport class CoerModal implements OnInit {\r\n\r\n @ContentChildren(CoerRefDirective) contentRef!: any;\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-modal');\r\n protected _isOpen: boolean = false;\r\n protected _modal!: Modal;\r\n protected _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n private windowWidth: number = Screen.WINDOW_WIDTH;\r\n\r\n //Inputs\r\n @Input() id: string = '';\r\n public title = input<string>('');\r\n public icon = input<string>('');\r\n public showCloseButton = input<boolean>(true);\r\n public width = input<'small'| 'full'>('small');\r\n public height = input<string>('auto');\r\n public maxHeight = input<string>('');\r\n\r\n //getter\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n //getter\r\n protected get _width(): string {\r\n switch(this.width()) {\r\n case 'small': return '450px';\r\n case 'full': return `${this.windowWidth - 50}px`;\r\n default: return 'auto';\r\n }\r\n }\r\n\r\n //Computed\r\n protected contentList = computed<ICoerRef[]>(() => Array.from(this.contentRef._results));\r\n\r\n //Computed\r\n protected header = computed<ICoerRef | null>(() => {\r\n const header = this.contentList().find(x => x.coerRef() === 'header');\r\n return Tools.IsNotNull(header) ? header! : null;\r\n });\r\n\r\n //Computed\r\n protected body = computed<ICoerRef | null>(() => {\r\n const body = this.contentList().find(x => x.coerRef() === '' || x.coerRef() === 'body');\r\n return Tools.IsNotNull(body) ? body! : null;\r\n });\r\n\r\n //Computed\r\n protected footer = computed<ICoerRef | null>(() => {\r\n const footer = this.contentList().find(x => x.coerRef() === 'footer');\r\n return Tools.IsNotNull(footer) ? footer! : null;\r\n });\r\n\r\n //Computed\r\n protected _title = computed<string>(() => {\r\n return Tools.IsNotNull(this.header()) && this.header()!.title().length > 0\r\n ? this.header()!.title() : this.title();\r\n });\r\n\r\n //Computed\r\n protected _icon = computed<string>(() => {\r\n return Tools.IsNotNull(this.header()) && this.header()!.icon().length > 0\r\n ? this.header()!.icon() : this.icon();\r\n });\r\n\r\n //Outputs\r\n public onOpen = output<void>();\r\n public onClose = output<void>();\r\n\r\n //Generic Tools\r\n protected IsNull = Tools.IsNull;\r\n protected IsNotNull = Tools.IsNotNull;\r\n\r\n ngOnInit() {\r\n Screen.Resize.subscribe((response: IScreenSize) => {\r\n this.windowWidth = response.width;\r\n });\r\n\r\n Tools.Sleep().then(() => {\r\n this._modal = new Modal(document.getElementById(this._id)!)\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n this._modal.show();\r\n\r\n if(!this._isOpen) {\r\n this._isOpen = true;\r\n this._isModalOpen.set(true);\r\n Tools.Sleep(1000).then(() => this.onOpen.emit());\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n this._modal.hide();\r\n\r\n if(this._isOpen) {\r\n this._isOpen = false;\r\n this._isModalOpen.set(false);\r\n Tools.Sleep(1000).then(() => this.onClose.emit());\r\n }\r\n }\r\n}","<aside title='' [id]=\"_id\" class=\"modal fade\" data-bs-backdrop=\"static\" tabindex=\"-1\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable\" [ngStyle]=\"{ 'max-width': _width }\">\r\n <div class=\"modal-content\">\r\n @if(IsNull(header()) || (IsNotNull(header()) && header()?.show())) {\r\n <header class=\"modal-header\">\r\n <h6 class=\"modal-title\">\r\n <i [class]=\"_icon()\"></i>\r\n <span [ngClass]=\"{ 'ms-1': _icon().length > 0 }\"> {{ _title() }} </span>\r\n </h6>\r\n\r\n @if(showCloseButton()) {\r\n <button type=\"button\" class=\"btn-close\" (click)=\"Close()\"></button>\r\n }\r\n </header>\r\n }\r\n\r\n <section class=\"modal-body\" [ngStyle]=\"{\r\n 'height': height(),\r\n 'max-height': maxHeight(),\r\n 'overflow': maxHeight() === '' ? 'visible' : 'auto'\r\n }\">\r\n @if(IsNotNull(body()) && body()?.show()) {\r\n <ng-container [ngTemplateOutlet]=\"body()!.template\"></ng-container>\r\n }\r\n\r\n @else {\r\n <ng-content></ng-content>\r\n }\r\n </section>\r\n\r\n @if(IsNotNull(footer())) {\r\n <footer class=\"modal-footer\">\r\n @if(footer()?.show()) {\r\n <ng-container [ngTemplateOutlet]=\"footer()!.template\"></ng-container>\r\n }\r\n </footer>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n</aside>","import { Component, computed, ElementRef, inject, Input, input, output, viewChild } from '@angular/core';\r\nimport { IFile, IFileImage } from '../../../interfaces';\r\nimport { CoerAlert } from '../../lib/coer-alert/coer-alert.component';\r\nimport { CoerModal } from '../../lib/coer-modal/coer-modal.component';\r\nimport { Files } from '../../../tools/lib/files.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-filebox',\r\n templateUrl: './coer-filebox.component.html',\r\n styleUrl: './coer-filebox.component.scss'\r\n})\r\nexport class CoerFilebox {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected IsNull = Tools.IsNull;\r\n protected IsNotNull = Tools.IsNotNull;\r\n\r\n //Elements\r\n protected inputFileImage = viewChild.required<ElementRef>('inputFileImage');\r\n protected modal = viewChild.required<CoerModal>('modal');\r\n\r\n //Variables\r\n protected base64: string = '';\r\n protected _image: IFileImage | null = null;\r\n private readonly imageExtensions = ['png', 'jpeg', 'jpg', 'gif', 'svg'];\r\n\r\n //Inputs\r\n public type = input<'image'>('image');\r\n public multiple = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n\r\n @Input() set image(value: IFileImage | null | undefined) {\r\n this._image = Tools.IsNotNull(value) ? value as IFileImage : null;\r\n\r\n if(Tools.IsNotNull(value)) {\r\n if((value?.value as File)?.name) {\r\n Files.ConvertToBase64(value?.value as File).then(base64 => {\r\n return this.base64 = base64;\r\n });\r\n }\r\n\r\n else this.base64 = (value?.value as string);\r\n }\r\n }\r\n\r\n //Outputs\r\n public onSelected = output<IFile[]>();\r\n public onDeleteImage = output<void>();\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled();\r\n });\r\n\r\n\r\n /** */\r\n protected async UploadImages(event: any): Promise<void> {\r\n const selectedFiles: File[] = Array.from(event.target.files);\r\n\r\n const files: IFile[] = [];\r\n let extension: string | null = null;\r\n for (const file of selectedFiles) {\r\n\r\n extension = this.GetExtensionFile(file.name) || '';\r\n\r\n if (this.imageExtensions.includes(extension)) {\r\n files.push({\r\n file: file,\r\n extension: extension,\r\n base64: await Files.ConvertToBase64(file) as string\r\n });\r\n }\r\n\r\n else this.alert.Warning(`<b>.${extension}</b> extension not allowed`, 'Files');\r\n }\r\n\r\n //Response\r\n this.inputFileImage().nativeElement.value = null;\r\n this.onSelected.emit([...files]);\r\n }\r\n\r\n\r\n /** */\r\n private GetExtensionFile = (fileName: string): string | null => {\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim();\r\n extension = extension.toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n this.alert.Warning('The file extension could not be recognized', 'Files');\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n protected DeleteImage(event: any): void {\r\n event.stopPropagation();\r\n\r\n if(this._isEnable()) {\r\n this.onDeleteImage.emit();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected ExpandImage(event: any): void {\r\n event.stopPropagation();\r\n this.modal().Open();\r\n }\r\n}","<div class=\"coer-filebox\">\r\n @if(type() == 'image') {\r\n <figure (click)=\"_isEnable() ? inputFileImage.click() : null\"\r\n [ngClass]=\"{ 'dashed': IsNull(_image?.value) }\"\r\n [ngStyle]=\"{\r\n 'margin-top': _image?.marginTop || '',\r\n 'margin-right': _image?.marginRight || '',\r\n 'margin-bottom': _image?.marginBottom || '',\r\n 'margin-left': _image?.marginLeft || ''\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n </div>\r\n\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <img [src]=\"base64 | noImage\"\r\n [ngStyle]=\"{\r\n 'width': _image?.width || '',\r\n 'max-width': _image?.maxWidth || '',\r\n 'height': _image?.height || '',\r\n 'max-height': _image?.maxHeight || '210px'\r\n }\">\r\n\r\n <input #inputFileImage\r\n type=\"file\"\r\n accept=\"image/png, image/jpeg, image/gif, image/svg+xml\"\r\n (change)=\"UploadImages($event)\"\r\n [multiple]=\"multiple()\">\r\n\r\n @if(_isEnable() && IsNotNull(_image) && IsNotNull(_image!.value)) {\r\n <div class=\"icon-container\">\r\n @if(IsNull(_image?.allowDelete) || _image!.allowDelete) {\r\n <i class=\"fa-solid fa-trash-can\" (click)=\"DeleteImage($event)\"></i>\r\n }\r\n\r\n @if(IsNull(_image?.allowExpand) || _image!.allowExpand) {\r\n <i class=\"fa-solid fa-expand\" (click)=\"ExpandImage($event)\"></i>\r\n }\r\n </div>\r\n }\r\n </figure>\r\n }\r\n\r\n <!-- Modal -->\r\n <coer-modal #modal [title]=\"_image?.name || ''\" height=\"90vh\" width=\"full\">\r\n <div class=\"modal-image\" [ngStyle]=\"{ 'background-image': 'url(' + base64 + ')' }\"></div>\r\n </coer-modal>\r\n</div>","import { Component, inject, input } from '@angular/core';\r\nimport { FormGroup, ValidationErrors } from '@angular/forms';\r\nimport { CoerAlert } from '../../lib/coer-alert/coer-alert.component';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-form',\r\n templateUrl: './coer-form.component.html',\r\n styleUrl: './coer-form.component.scss'\r\n})\r\nexport class CoerForm {\r\n\r\n //Injection\r\n private alert = inject(CoerAlert);\r\n\r\n public formGroup = input.required<FormGroup>();\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n\r\n\r\n protected get _isDisabled() {\r\n return this.isLoading() || this.isDisabled();\r\n }\r\n\r\n\r\n /** */\r\n public TouchForm(): void {\r\n this.formGroup().markAllAsTouched();\r\n }\r\n\r\n\r\n /** */\r\n public IsInvalidControl = (formControlName: string): boolean => {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? (this.formGroup().get(formControlName)!.touched && this.formGroup().get(formControlName)!.invalid)\r\n : true;\r\n }\r\n\r\n\r\n /** */\r\n public SetControlValue(formControlName: string, value: any): void {\r\n if (Tools.IsNotNull(this.formGroup().get(formControlName))) {\r\n this.formGroup().get(formControlName)!.setValue(value);\r\n }\r\n\r\n else {\r\n this.alert.Warning(`${formControlName} Control`, 'Not Found');\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public GetControlValue(formControlName: string): any {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? this.formGroup().get(formControlName)!.value\r\n : null;\r\n }\r\n\r\n\r\n /** Get form value */\r\n public GetValue<T>(): T {\r\n return Tools.BreakReference(this.formGroup().value);\r\n }\r\n\r\n\r\n /** */\r\n public Reset<T>(properties: T | null = null): void {\r\n if (Tools.IsNull(properties)) this.formGroup().reset();\r\n else this.formGroup().reset(properties);\r\n }\r\n\r\n\r\n /**\r\n * Mark all controls as touched.\r\n * If form is invalid emit a warning and focus first invalid control.\r\n */\r\n public IsValid(): { isValid: boolean, formValue: any } {\r\n this.TouchForm();\r\n\r\n if (this.formGroup().invalid) {\r\n this.alert.Warning('Please complete the required fields', 'Instructions', 'fa-solid fa-list-check');\r\n this.Focus();\r\n }\r\n\r\n return {\r\n isValid: this.formGroup().valid,\r\n formValue: this.GetValue()\r\n };\r\n }\r\n\r\n\r\n /** Focus the especified control or first invalid control */\r\n public Focus(formControl: string | null = null): void {\r\n const formControlCollection = new Map<string, Element>();\r\n const formControlErrorCollection = new Map<string, ValidationErrors | null>();\r\n\r\n for(const property of Tools.GetObjectProperties(this.formGroup().controls)) {\r\n formControlErrorCollection.set(property, this.formGroup().controls[property].errors);\r\n const htmlElement = document.querySelector(`[formcontrolname='${property}'] input`)\r\n if(Tools.IsNotNull(htmlElement)) formControlCollection.set(property, htmlElement!);\r\n }\r\n\r\n if(formControlCollection.size > 0) {\r\n if(Tools.IsNull(formControl)) {\r\n for(const [property, error] of formControlErrorCollection) {\r\n if (Tools.IsNotNull(error)) {\r\n formControl = property;\r\n break;\r\n }\r\n }\r\n\r\n if(Tools.IsNull(formControl)) {\r\n formControl = Array.from(formControlCollection.keys())[0];\r\n }\r\n }\r\n\r\n const element: any = formControlCollection.get(formControl!);\r\n if(Tools.IsNotNull(element)) element.focus();\r\n }\r\n }\r\n}","<form [formGroup]=\"formGroup()\" autocomplete=\"off\" class=\"coer-form\">\r\n <fieldset [disabled]=\"_isDisabled\">\r\n <ng-content></ng-content>\r\n </fieldset>\r\n</form>","import { Component, computed, ElementRef, inject, Input, input, OnInit, output, signal, viewChild } from '@angular/core';\r\nimport { CoerAlert } from '../../lib/coer-alert/coer-alert.component';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-numberbox',\r\n templateUrl: './coer-numberbox.component.html',\r\n styleUrl: './coer-numberbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerNumberBox)]\r\n})\r\nexport class CoerNumberBox extends ControlValue implements OnInit {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Component Value\r\n public override _value: string | number = '';\r\n protected matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected coerNumberbox = viewChild.required<ElementRef>('coerNumberbox');\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-numberbox');\r\n protected _isLoadingEvent = signal<boolean>(false);\r\n private element!: HTMLInputElement;\r\n protected hideCaret: boolean = false;\r\n\r\n //Inputs\r\n @Input() set value(value: number | string | null | undefined) {\r\n if(Tools.IsNull(value)) value = 0;\r\n this.SetValue(value as string);\r\n }\r\n\r\n @Input() id: string = '';\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public min = input<number>(0);\r\n public max = input<number>(2147483647);\r\n public decimals = input<number>(0);\r\n public width = input<string>('100%');\r\n public minWidth = input<string>('190px');\r\n public maxWidth = input<string>('100%');\r\n public marginTop = input<string>('0px');\r\n public marginRight = input<string>('0px');\r\n public marginBottom = input<string>('0px');\r\n public marginLeft = input<string>('0px');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public selectOnFocus = input<boolean>(true);\r\n public textPosition = input<'left' | 'center' | 'right'>('right');\r\n\r\n //Outputs\r\n public onKeyupEnter = output<string | number>();\r\n public onInput = output<string | number>();\r\n\r\n ngOnInit() {\r\n Tools.Sleep().then(() => {\r\n this.element = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n if (this.element) {\r\n this.element.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n else if (this.selectOnFocus()) this.Select();\r\n });\r\n\r\n this.element.addEventListener('blur', () => this.Blur());\r\n\r\n this.element.addEventListener('keyup', (event: KeyboardEvent) => {\r\n if (this._isEnable()) {\r\n const { key } = event;\r\n\r\n if (key === 'Enter') {\r\n let value = this.coerNumberbox().nativeElement.value;\r\n value = this.OnlyNumbers(value);\r\n value = this.ValidateRangeValue(value);\r\n this.onKeyupEnter.emit(value);\r\n this.Blur();\r\n }\r\n\r\n if (key === 'ArrowUp') {\r\n this.hideCaret = true;\r\n this.SetValue(Number(this._value) + 1);\r\n Tools.Sleep(500, 'ArrowUp').then(() => this.hideCaret = false);\r\n }\r\n\r\n if (key === 'ArrowDown') {\r\n this.hideCaret = true;\r\n this.SetValue(Number(this._value) - 1);\r\n Tools.Sleep(500, 'ArrowDown').then(() => this.hideCaret = false);\r\n }\r\n }\r\n });\r\n\r\n this.element.addEventListener('input', () => {\r\n Tools.Sleep().then(() => {\r\n let value = this.coerNumberbox().nativeElement.value;\r\n value = this.OnlyNumbers(value);\r\n value = this.ValidateRangeValue(value);\r\n if (this._isEnable()) this.onInput.emit(value);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly();\r\n });\r\n\r\n //computed\r\n protected floatLabel = computed<'auto' | 'always'>(() => {\r\n return this.label() == '' ? 'always' : 'auto'\r\n });\r\n\r\n //computed\r\n protected paddingRight = computed(() => {\r\n return this.isInvalid() || this.isValid()\r\n ? '18px' : '0px';\r\n });\r\n\r\n //ControlValueAccessor\r\n public override SetValue(value: string | number): void {\r\n value = this.OnlyNumbers(value);\r\n value = this.ValidateRangeValue(value);\r\n this._UpdateValue(value);\r\n this.coerNumberbox().nativeElement.value = value;\r\n this._value = value;\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override writeValue(value: string | number): void {\r\n value = this.OnlyNumbers(value);\r\n value = this.ValidateRangeValue(value);\r\n this.coerNumberbox().nativeElement.value = value;\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n private OnlyNumbers(value: string | number): string | number {\r\n let isNegative = false;\r\n let valueString = String(value).trim();\r\n\r\n //Negatives\r\n if (valueString.includes('-')) {\r\n if (this.min() < 0) {\r\n isNegative = valueString.startsWith('-');\r\n if (valueString == '-') return '-';\r\n if (valueString == '-.') return '-0.';\r\n if (valueString == '-0') return '-0';\r\n if (valueString == '-0.') return '-0.';\r\n }\r\n\r\n else if(Number(value) < this.min()) {\r\n this.alert.Warning(`Minimum ${this.min()}`, 'Out of range', 'fa-solid fa-hashtag');\r\n valueString = '0';\r\n }\r\n }\r\n\r\n const charArray = [];\r\n for (const char of valueString) {\r\n if (['0','1','2','3','4','5','6','7','8','9'].includes(char)) {\r\n charArray.push(char);\r\n }\r\n\r\n else if (char == '.' && this.decimals() > 0) {\r\n charArray.push(char);\r\n }\r\n }\r\n\r\n valueString = charArray.join('');\r\n\r\n //Decimals\r\n if (this.decimals() > 0) {\r\n let integerString = valueString.split('.')[0] || '';\r\n let decimalString = valueString.split('.')[1] || '';\r\n decimalString = decimalString.substring(0, this.decimals());\r\n\r\n if (valueString == '.') return '0.';\r\n\r\n else if (valueString.includes('.') && decimalString == '') {\r\n return (isNegative) ? `-${integerString}.` : `${integerString}.`;\r\n }\r\n\r\n else if (valueString.includes('.') && decimalString.endsWith('0')) {\r\n return (isNegative) ? `-${integerString}.${decimalString}` : `${integerString}.${decimalString}`;\r\n }\r\n\r\n else if (integerString == '' && decimalString == '') {\r\n return '0';\r\n }\r\n\r\n valueString = `${integerString}.${decimalString}`;\r\n }\r\n\r\n if (isNegative) {\r\n valueString = `-${valueString}`;\r\n }\r\n\r\n return Number(valueString);\r\n }\r\n\r\n\r\n /** */\r\n private ValidateRangeValue(value: string | number): string {\r\n if(['-', '.', '-.', '-0', '-0.'].includes(String(value))) {\r\n return String(value);\r\n }\r\n\r\n if(Number(value) < this.min()) {\r\n this.alert.Warning(`Minimum ${this.min()}`, 'Out of range', 'fa-solid fa-hashtag');\r\n value = this.min();\r\n }\r\n\r\n if(Number(value) > this.max()) {\r\n this.alert.Warning(`Cannot exceed ${this.max()}`, 'Out of range', 'fa-solid fa-hashtag');\r\n value = this.max();\r\n }\r\n\r\n if (this.decimals() <= 0) {\r\n if (String(value).includes('.')) {\r\n value = String(value).split('.')[0];\r\n }\r\n }\r\n\r\n return String(value);\r\n }\r\n\r\n\r\n /** */\r\n public Focus(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Select(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n this.element.select();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep().then(() => {\r\n if(this.element) {\r\n this.element.blur();\r\n\r\n setTimeout(() => {\r\n const element = document.querySelector(`#${this._id}-container .mdc-line-ripple--active`);\r\n if (element) element.classList.remove('mdc-line-ripple--active');\r\n this._isLoadingEvent.set(false);\r\n })\r\n }\r\n });\r\n }\r\n}","<div class=\"coer-number-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerNumberbox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerNumberbox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [ngClass]=\"{ 'caret-none': hideCaret }\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field>\r\n</div>","import { Component, computed, ElementRef, input, Input, OnInit, output, signal, viewChild } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-selectbox',\r\n templateUrl: './coer-selectbox.component.html',\r\n styleUrl: './coer-selectbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerSelectbox)]\r\n})\r\nexport class CoerSelectbox<T> extends ControlValue implements OnInit {\r\n\r\n //Component Value\r\n protected override _value: T | null = null;\r\n\r\n //Variables\r\n private readonly _scrollByRow: number = 40.8;\r\n protected _coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n protected _id: string = Tools.GetGuid('coer-selectBox');\r\n protected _index = signal<number>(-1);\r\n protected _search = signal<string>('');\r\n protected _isOpen = signal<boolean>(false);\r\n protected _isDirty = signal<boolean>(false);\r\n protected _isOverMenu = signal<boolean>(false);\r\n protected _isLoadingEvent = signal<boolean>(false);\r\n protected _scroll = signal<number>(0);\r\n protected _textbox!: HTMLInputElement;\r\n protected _dropDownMenu!: HTMLElement;\r\n protected _container!: HTMLElement;\r\n\r\n //Inputs\r\n @Input() set value(value: T | null | undefined) {\r\n if(Tools.IsNull(value)) value = null;\r\n this.SetValue(value);\r\n }\r\n\r\n @Input() id: string = '';\r\n public label = input<string>('');\r\n public dataSource = input<T[]>([]);\r\n public propDisplay = input<string>('name');\r\n public rowsByPage = input<number>(50);\r\n public placeholder = input<string>('-- Select --');\r\n public width = input<string>('100%');\r\n public minWidth = input<string>('190px');\r\n public maxWidth = input<string>('100%');\r\n public marginTop = input<string>('0px');\r\n public marginRight = input<string>('0px');\r\n public marginBottom = input<string>('0px');\r\n public marginLeft = input<string>('0px');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n\r\n //Outputs\r\n public onSelected = output<T>();\r\n\r\n ngOnInit() {\r\n this.SetEvents();\r\n }\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n\r\n //getter\r\n protected get _displayed(): string {\r\n return Tools.IsNotNull(this._value) ? (this._value as any)[this.propDisplay()] : '';\r\n }\r\n\r\n\r\n //getter\r\n protected get _placeholder(): string {\r\n let placeholder = this.placeholder();\r\n\r\n if (this.dataSource().length <= 0) {\r\n placeholder = '-- No Options --';\r\n }\r\n\r\n return Tools.IsNotNull(this._value)\r\n ? this._displayed\r\n : placeholder;\r\n }\r\n\r\n\r\n //computed\r\n protected get _showCancel(): boolean {\r\n return Tools.IsNotNull(this._value)\r\n && this._search().length <= 0;\r\n }\r\n\r\n\r\n //computed\r\n protected get paddingRight(): string {\r\n return this.isInvalid() || this.isValid() || this._showCancel\r\n ? '40px' : '15px';\r\n }\r\n\r\n\r\n //computed\r\n protected get widthIcons(): string {\r\n return this.isInvalid() || this.isValid() || this._showCancel\r\n ? '55px' : '30px';\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly();\r\n });\r\n\r\n\r\n //computed\r\n protected floatLabel = computed<'auto' | 'always'>(() => {\r\n return this.label() == '' ? 'always' : 'auto'\r\n });\r\n\r\n\r\n //computed\r\n protected _dataSource = computed(() => {\r\n let index = 0;\r\n const search = this._search();\r\n const propDisplay = this.propDisplay();\r\n let dataSource = this.dataSource().map((item: any) => Object.assign(item, { index: index++ }));\r\n\r\n if (this._isDirty() && !this._isLoadingEvent()) {\r\n dataSource = [...dataSource].filter((item: any) => String(item[propDisplay]).trim().toUpperCase().includes(search.trim().toUpperCase()));\r\n }\r\n\r\n let indexRow = 0;\r\n return Tools.BreakReference(dataSource)\r\n .splice(0, this.rowsByPage())\r\n .map((item: any) => Object.assign(item, { indexRow: indexRow++ }));\r\n });\r\n\r\n\r\n /** */\r\n protected override SetValue(_value: any): void {\r\n if(_value === undefined) _value = null;\r\n this._UpdateValue(_value);\r\n this._value = _value;\r\n this._search.set(this.GetDisplay(_value));\r\n }\r\n\r\n\r\n /** */\r\n public override writeValue(_value: any): void {\r\n if(_value === undefined) _value = null;\r\n this._value = _value;\r\n this._search.set(this.GetDisplay(_value));\r\n }\r\n\r\n\r\n /** */\r\n private SetEvents(): void {\r\n Tools.Sleep().then(()=> {\r\n //Container\r\n this._container = document.getElementById(`${this._id}-container`)! as HTMLElement;\r\n\r\n this._container.addEventListener('mouseenter', () => {\r\n this._isOverMenu.set(true);\r\n });\r\n\r\n this._container.addEventListener('mouseleave', () => {\r\n this._isOverMenu.set(false);\r\n });\r\n\r\n //DropDown\r\n this._dropDownMenu = document.getElementById(`${this._id}-dropdown-menu`)! as HTMLElement;\r\n\r\n this._dropDownMenu.addEventListener('mouseenter', () => {\r\n this._isOverMenu.set(true);\r\n });\r\n\r\n this._dropDownMenu.addEventListener('mouseleave', () => {\r\n this._isOverMenu.set(false);\r\n });\r\n\r\n //TextBox\r\n this._textbox = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n this._textbox.addEventListener('focus', () => {\r\n if (this._isEnable()) this.Focus();\r\n else this.Blur();\r\n });\r\n\r\n this._textbox.addEventListener('keyup', (event: KeyboardEvent) => {\r\n const { key } = event;\r\n\r\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\r\n if(key === 'ArrowUp') {\r\n const firstIndex = (this._dataSource().length <= 0) ? -1 : 0;\r\n\r\n if((this._index() - 1) >= firstIndex) {\r\n this._index.update(index => index - 1);\r\n\r\n if(this._index() >= 3) this._scroll.update(scroll => scroll -= this._scrollByRow);\r\n else this._scroll.set(0);\r\n\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n }\r\n\r\n else {\r\n this._scroll.set(0);\r\n this._index.set(-1);\r\n this._textbox.focus();\r\n this._textbox.select();\r\n }\r\n\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n }\r\n\r\n else if(key === 'ArrowDown') {\r\n const lastIndex = (this._dataSource().length - 1);\r\n\r\n if ((this._index() + 1) <= lastIndex) {\r\n this._index.update(index => index + 1);\r\n if(this._index() >= 3) this._scroll.update(scroll => scroll += this._scrollByRow);\r\n }\r\n\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n }\r\n\r\n else if (['ArrowLeft', 'ArrowRight'].includes(key)) {\r\n if(Tools.IsNotNull(this._value) && !this._isDirty()) {\r\n this._scroll.set(0);\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n this.Search(this._displayed);\r\n }\r\n\r\n this._isDirty.set(true);\r\n }\r\n }\r\n\r\n else {\r\n if (key == 'Delete' && this._search() == '') {\r\n this.Unselect();\r\n }\r\n\r\n this._isDirty.set(true);\r\n }\r\n });\r\n\r\n this._textbox.addEventListener('mouseenter', () => {\r\n this._isOverMenu.set(true);\r\n });\r\n\r\n this._textbox.addEventListener('mouseleave', () => {\r\n this._isOverMenu.set(false);\r\n });\r\n\r\n this._textbox.addEventListener('paste', () => {\r\n Tools.Sleep().then(_ => {\r\n this._search.update(search => search = search.toString().trim());\r\n });\r\n });\r\n\r\n //Document\r\n document.addEventListener('click', () => {\r\n if(!this._isOverMenu()) this.Blur();\r\n });\r\n\r\n document.addEventListener('keyup', (event: KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n if (this._index() >= 0) {\r\n if (Tools.IsNotNull(this._value) && this._search() == (this._value as any)[this.propDisplay()]) {\r\n this._isLoadingEvent.set(true);\r\n }\r\n\r\n const dataSource = Tools.BreakReference(this._dataSource());\r\n const _value = dataSource.find(x => x.indexRow == this._index());\r\n this.SelectItem(_value);\r\n this._isLoadingEvent.set(false);\r\n }\r\n\r\n this.Blur();\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected GetIndexRow = (item: any): number => {\r\n return item['indexRow'];\r\n }\r\n\r\n\r\n /** */\r\n protected GetDisplay = (item: any): string => {\r\n return Tools.IsNotNull(item) ? item[this.propDisplay()] : '';\r\n }\r\n\r\n\r\n /** */\r\n protected SelectItem(item: any): void {\r\n if (Tools.IsNotNull(item)) {\r\n const _item = Tools.BreakReference<any>(this.dataSource()[item.index]);\r\n\r\n if(Tools.IsNotNull(_item)) {\r\n this.SetValue(Tools.BreakReference(_item));\r\n this.Blur();\r\n }\r\n\r\n delete _item.indexRow;\r\n delete _item.index;\r\n this.onSelected.emit({ ..._item });\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Unselect(): void {\r\n this._search.set('');\r\n this.SetValue(null);\r\n this.Blur();\r\n }\r\n\r\n\r\n /** */\r\n public Focus(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(_ => {\r\n if(this._isEnable()) {\r\n this._textbox.focus();\r\n this._textbox.select();\r\n this.Open();\r\n }\r\n\r\n Tools.Sleep().then(_ => {\r\n if (Tools.IsNotNull(this._value)) {\r\n this.Search(this._displayed);\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(): void {\r\n if(this._isLoadingEvent()) return;\r\n\r\n this._isLoadingEvent.set(true);\r\n this._isDirty.set(false);\r\n this._index.set(-1);\r\n this._scroll.set(0);\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n this._search.set(this._displayed);\r\n\r\n Tools.Sleep().then(_ => {\r\n this._textbox.blur();\r\n this.Close();\r\n\r\n Tools.Sleep().then(_ => {\r\n const element = document.querySelector(`#${this._id}-container .mdc-line-ripple--active`);\r\n if (element) element.classList.remove('mdc-line-ripple--active');\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private Open(): void {\r\n if (!this._dropDownMenu.classList.contains('show')) {\r\n this._dropDownMenu.classList.add('show');\r\n }\r\n\r\n this._isOpen.set(true);\r\n }\r\n\r\n\r\n /** */\r\n private Close() {\r\n if (this._dropDownMenu.classList.contains('show')) {\r\n this._dropDownMenu.classList.remove('show');\r\n }\r\n\r\n this._isOpen.set(false);\r\n }\r\n\r\n\r\n /** */\r\n protected Search(_value: string | number): void {\r\n this._search.set(String(_value));\r\n\r\n Tools.Sleep(0, `${this._id}-search`).then(_ => {\r\n const item = this._dataSource().find(item => String(item[this.propDisplay()]).trim().toUpperCase().includes(String(_value).trim().toUpperCase()));\r\n\r\n if(Tools.IsNotNull(item)) {\r\n this._index.set(item.indexRow);\r\n\r\n if(this._index() >= 3) {\r\n this._scroll.set((this._index() - 2) * this._scrollByRow);\r\n }\r\n\r\n else {\r\n this._scroll.set(0);\r\n }\r\n\r\n this._dropDownMenu.scrollTo(0, this._scroll());\r\n }\r\n });\r\n }\r\n}","<div class=\"coer-select-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [value]=\"_search()\"\r\n [placeholder]=\"_placeholder\"\r\n [disabled]=\"!_isEnable()\"\r\n (input)=\"Search(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\" [style]=\"{ 'width': widthIcons }\">\r\n @if(_showCancel && _isEnable() && !isLoading()) {\r\n <i class=\"fa-solid fa-xmark text-secondary\" (click)=\"Unselect()\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n\r\n @if(_isOpen() && _isEnable() && !isLoading()) {\r\n <i class=\"fa-solid fa-caret-up cursor-pointer text-orange\" (click)=\"Blur()\"></i>\r\n }\r\n\r\n @else if(_isEnable() && !isLoading()) {\r\n <i class=\"fa-solid fa-caret-down cursor-pointer text-secondary\"></i>\r\n }\r\n </span>\r\n </mat-form-field>\r\n\r\n <!-- Options Container -->\r\n <div class=\"btn-group\">\r\n <ul [id]=\"_id + '-dropdown-menu'\" class=\"dropdown-menu\">\r\n @for(item of _dataSource(); track GetIndexRow(item)) {\r\n <li (click)=\"SelectItem(item)\">\r\n <div [id]=\"id + '-dropdown-option-' + GetIndexRow(item)\"\r\n [ngClass]=\"{\r\n 'dropdown-item': true,\r\n 'cursor-pointer': true,\r\n 'dropdown-item-focus': _index() == GetIndexRow(item)\r\n }\"\r\n >{{ GetDisplay(item) }} </div>\r\n <hr class=\"dropdown-divider\">\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div>\r\n\r\n","import { Component, computed, ElementRef, input, Input, OnInit, output, signal, viewChild } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-textbox',\r\n templateUrl: './coer-textbox.component.html',\r\n styleUrl: './coer-textbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerTextBox)]\r\n})\r\nexport class CoerTextBox extends ControlValue implements OnInit {\r\n\r\n //Component Value\r\n protected override _value: string | number = '';\r\n protected matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-textBox');\r\n protected _isLoadingEvent = signal<boolean>(false);\r\n private element!: HTMLInputElement;\r\n\r\n //Inputs\r\n @Input() set value(value: string | number | null | undefined) {\r\n if(Tools.IsNull(value)) value = '';\r\n this.SetValue(value);\r\n }\r\n\r\n @Input() id: string = '';\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(50);\r\n public showSearchIcon = input<boolean>(false);\r\n public showClearIcon = input<boolean>(false);\r\n public width = input<string>('100%');\r\n public minWidth = input<string>('190px');\r\n public maxWidth = input<string>('100%');\r\n public marginTop = input<string>('0px');\r\n public marginRight = input<string>('0px');\r\n public marginBottom = input<string>('0px');\r\n public marginLeft = input<string>('0px');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public selectOnFocus = input<boolean>(true);\r\n public textPosition = input<'left' | 'center' | 'right'>('left');\r\n\r\n //Outputs\r\n public onKeyupEnter = output<string | number>();\r\n public onInput = output<string | number>();\r\n public onClickClear = output<void>();\r\n\r\n ngOnInit() {\r\n this.SetEvents();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showSearchIcon() {\r\n return this.showSearchIcon()\r\n && !this._showClearIcon\r\n && !this.isDisabled()\r\n && !this.isLoading()\r\n }\r\n\r\n\r\n //getter\r\n protected get _showClearIcon() {\r\n return this.showClearIcon()\r\n && !this.isDisabled()\r\n && !this.isLoading()\r\n && this._value != undefined\r\n && String(this._value).length > 0\r\n }\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly();\r\n });\r\n\r\n\r\n\r\n //computed\r\n protected floatLabel = computed<'auto' | 'always'>(() => {\r\n return this.label() == '' ? 'always' : 'auto'\r\n });\r\n\r\n\r\n //computed\r\n protected paddingRight = computed(() => {\r\n return this.isInvalid() || this.isValid()\r\n ? '18px' : '0px';\r\n });\r\n\r\n\r\n /** */\r\n private SetEvents(): void {\r\n Tools.Sleep().then(()=> {\r\n this.element = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n if (this.element) {\r\n this.element.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n else if (this.selectOnFocus()) this.Select();\r\n });\r\n\r\n this.element.addEventListener('keyup', (event: KeyboardEvent) => {\r\n if (this._isEnable()) {\r\n const { key } = event;\r\n\r\n if (key === 'Enter') {\r\n const value = this.coerTextBox().nativeElement.value;\r\n this.onKeyupEnter.emit(value);\r\n this.Blur();\r\n }\r\n }\r\n });\r\n\r\n this.element.addEventListener('blur', () => this.Blur());\r\n\r\n this.element.addEventListener('input', () => {\r\n Tools.Sleep().then(() => {\r\n const value = this.coerTextBox().nativeElement.value;\r\n if (this._isEnable()) this.onInput.emit(value);\r\n });\r\n });\r\n\r\n\r\n this.element.addEventListener('paste', () => {\r\n Tools.Sleep().then(() => {\r\n this.SetValue(this._value.toString().trim());\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Focus(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Select(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n this.element.select();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep().then(() => {\r\n if(this.element) {\r\n this.element.blur();\r\n\r\n Tools.Sleep().then(() => {\r\n const element = document.querySelector(`#${this._id}-container .mdc-line-ripple--active`);\r\n if (element) element.classList.remove('mdc-line-ripple--active');\r\n })\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Clear(): void {\r\n this.SetValue('');\r\n this.Focus();\r\n }\r\n\r\n\r\n /** */\r\n protected ClickSearch(): void {\r\n Tools.Sleep().then(() => {\r\n if (this._isEnable()) {\r\n if (this.showClearIcon()) this.Focus();\r\n\r\n else {\r\n this.onKeyupEnter.emit(this._value);\r\n this.Blur();\r\n }\r\n }\r\n })\r\n }\r\n}","<div class=\"coer-text-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(_showSearchIcon) {\r\n <i class=\"fa-solid fa-magnifying-glass cursor-pointer\" (click)=\"ClickSearch()\"></i>\r\n }\r\n\r\n @else if(_showClearIcon) {\r\n <i class=\"fa-solid fa-xmark cursor-pointer\" (click)=\"Clear(); this.onClickClear.emit();\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field> \r\n</div>","import moment from \"moment\";\r\n\r\nexport class DateTime {\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 GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\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 */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { IGridButtonByRow, IGridColumn, IGridDataSource, IGridImport, IGridHeaderButton, IGridHeaderExportButton, IGridKeyupEnter, IGridSearch, IGridInputSwitchChange, IGridInputTextbox, IGridSort, IGridCheckbox, IGridInputCheckbox, IGridHeader } from \"../../../interfaces\";\r\nimport { AfterViewInit, Component, ElementRef, Input, computed, inject, input, output, signal, viewChild, viewChildren } from \"@angular/core\";\r\nimport { CoerAlert } from \"../../lib/coer-alert/coer-alert.component\";\r\nimport { CoerCheckbox } from \"../../lib/coer-checkbox/coer-checkbox.component\";\r\nimport { CoerNumberBox } from \"../../lib/coer-numberbox/coer-numberbox.component\";\r\nimport { CoerSelectbox } from \"../../lib/coer-selectbox/coer-selectbox.component\";\r\nimport { CoerTextBox } from \"../../lib/coer-textbox/coer-textbox.component\";\r\nimport { ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { DateTime } from '../../../tools/lib/date-time.class';\r\nimport { Screen } from '../../../tools/lib/screen.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-grid-extension',\r\n template: ''\r\n})\r\nexport class CoerGridExtension<T> extends ControlValue implements AfterViewInit {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Elements\r\n protected inputFile = viewChild.required<ElementRef>('inputFileRef');\r\n protected inputSearch = viewChild.required<CoerTextBox>('inputSearch');\r\n protected coerTextboxList = viewChildren(CoerTextBox);\r\n protected coerNumberboxList = viewChildren(CoerNumberBox);\r\n protected coerSelectboxList = viewChildren(CoerSelectbox);\r\n protected coerCheckboxList = viewChildren(CoerCheckbox);\r\n\r\n //Variables\r\n protected override _value: T[] = [];\r\n protected value_signal = signal<T[]>([]);\r\n protected _gridSearch = signal<string | number>('');\r\n protected _isLoading: boolean = true;\r\n protected _isLoadingMessage: boolean = true;\r\n protected _id: string = Tools.GetGuid('coer-grid');\r\n protected _expandedGroups: string[] = [];\r\n protected _enableAnimations: boolean = false;\r\n protected _indexFocus = signal<number>(0);\r\n protected _sort = signal<IGridSort>({ columnName: '', direction: 'none', icon: '' });\r\n\r\n //Generic Tools\r\n protected GetNumericFormat = Tools.GetNumericFormat;\r\n protected GetDateFormat = DateTime.GetDateFormat;\r\n\r\n //Inputs\r\n public columns = input<IGridColumn<T>[]>([]);\r\n public cleanColumnName = input<boolean>(true);\r\n @Input() addButton: IGridHeaderButton = { show: false };\r\n @Input() exportButton: IGridHeaderExportButton = { show: false };\r\n @Input() importButton: IGridHeaderButton = { show: false };\r\n @Input() search: IGridSearch = { show: false, ignore: false };\r\n @Input() buttonByRow: IGridButtonByRow<T> = {};\r\n @Input() checkbox: IGridCheckbox = { show: false };\r\n public tooltipByRow = input<string>('');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public rowsByPage = input<number>(50);\r\n public groupBy = input<string>('');\r\n public showColumnGrouped = input<boolean>(false);\r\n public rowsByGroup = input<number>(50);\r\n public isInvisible = input<boolean>(false);\r\n public showFooter = input<boolean>(true);\r\n public width = input<string>('100%');\r\n public MinWidth = input<string>('250px');\r\n public MaxWidth = input<string>('100%');\r\n public height = input<string>('350px');\r\n public minHeight = input<string>('140px');\r\n public maxHeight = input<string>('100vh');\r\n public margin = input<string>('auto');\r\n public enableSort = input<boolean>(true);\r\n public enableRowFocus = input<boolean>(true);\r\n\r\n //Outputs\r\n public onClickAdd = output<void>();\r\n public onClickImport = output<IGridImport<T>>();\r\n public onClickExport = output<T[]>();\r\n public onClickRow = output<T>();\r\n public onDoubleClickRow = output<T>();\r\n public onClickDeleteRow = output<T>();\r\n public onClickEditRow = output<T>();\r\n public onClickGoRow = output<T>();\r\n public onKeyupEnter = output<IGridKeyupEnter>();\r\n public onKeyupEnterLast = output<void>();\r\n public onSwitchChange = output<IGridInputSwitchChange<T>>();\r\n public onTextboxChange = output<IGridInputTextbox<T>>();\r\n public onSelectboxChange = output<IGridInputTextbox<T>>();\r\n public onCheckboxChange = output<IGridInputCheckbox<T>>();\r\n\r\n //computed\r\n protected _isDisabled = computed<boolean>(() => {\r\n return this.isDisabled() || this.isLoading() || this.isInvisible();\r\n });\r\n\r\n //computed\r\n protected _isGrouped = computed<boolean>(() => {\r\n return this.groupBy().length > 0;\r\n });\r\n\r\n //getter\r\n protected get _height(): string {\r\n let height = this.height();\r\n\r\n if (height == 'full') {\r\n const TOOLBAR = 45;\r\n const PAGE_HEADER = 70;\r\n const GRID_HEADER = document.getElementById(`${this._id}-header`)!;\r\n const HEADER = (GRID_HEADER && GRID_HEADER.children.length > 0) ? 50 : 0;\r\n const MARGIN = 30;\r\n const PADDING = 20;\r\n const FOOTER = this.showFooter() ? 24.5 : 0;\r\n height = (Screen.WINDOW_HEIGHT - TOOLBAR - PAGE_HEADER - MARGIN - HEADER - PADDING - FOOTER) + 'px';\r\n }\r\n\r\n return height;\r\n }\r\n\r\n\r\n //getter\r\n protected get _onlyOneCheck() {\r\n return Tools.IsNotNull(this.checkbox.onlyOneCheck) && this.checkbox.onlyOneCheck;\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n Tools.Sleep().then(() => {\r\n this._enableAnimations = true;\r\n this._isLoading = false;\r\n this._isLoadingMessage = false;\r\n });\r\n }\r\n\r\n //ControlValueAccessor\r\n public override SetValue(value: T[]): void {\r\n let indexRow = 0;\r\n if(!Tools.IsNotNull(value)) value = [];\r\n\r\n const dataSource = Tools.BreakReference(value).map((item: any) =>\r\n Object.assign({ checked: false }, { ...item }, { indexRow: indexRow++ })\r\n );\r\n\r\n this._UpdateValue(dataSource);\r\n this._value = dataSource;\r\n this.value_signal.set(dataSource);\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override writeValue(value: T[]): void {\r\n let indexRow = 0;\r\n if(!Tools.IsNotNull(value)) value = [];\r\n\r\n const dataSource = Tools.BreakReference(value).map((item: any) =>\r\n Object.assign({ checked: false }, { ...item }, { indexRow: indexRow++ })\r\n );\r\n\r\n this._value = dataSource;\r\n this.value_signal.set(dataSource);\r\n }\r\n\r\n\r\n //computed\r\n protected gridColumns = computed<IGridHeader[]>(() => {\r\n const SET_COLUMNS = new Set<string>();\r\n\r\n //Has filter columns?\r\n if (this.columns().length > 0) {\r\n for (const { property } of this.columns()) {\r\n SET_COLUMNS.add(property);\r\n }\r\n }\r\n\r\n //Get all columns\r\n else for (const row of this.value_signal()) {\r\n for (const property in row) {\r\n SET_COLUMNS.add(property);\r\n }\r\n }\r\n\r\n //Remove indexRow column\r\n if (SET_COLUMNS.has('indexRow')) {\r\n SET_COLUMNS.delete('indexRow');\r\n }\r\n\r\n //Remove groupBy column\r\n if (this._isGrouped() && !this.showColumnGrouped() && SET_COLUMNS.has(this.groupBy())) {\r\n SET_COLUMNS.delete(this.groupBy());\r\n }\r\n\r\n //Set index column\r\n let indexColumn = 0;\r\n return Array.from(SET_COLUMNS).map(property => Tools.BreakReference<IGridHeader>({\r\n columnName: property,\r\n indexColumn: indexColumn++,\r\n width: this._GetColumnConfig(property)?.width || 'auto'\r\n }));\r\n });\r\n\r\n\r\n //computed\r\n protected gridDataSource = computed<IGridDataSource[]>(() => {\r\n let list = this.gridDataSourceFiltered();\r\n\r\n //It's Grouped?\r\n if (this._isGrouped()) {\r\n //let indexRow = 0;\r\n let indexGroup = 0;\r\n\r\n const SET_COLUMN = new Set<string>();\r\n for (const row of list as any) {\r\n SET_COLUMN.add(row[this.groupBy()]);\r\n }\r\n\r\n const DATA_SOURCE_GROPUED = [];\r\n for (const column of SET_COLUMN) {\r\n DATA_SOURCE_GROPUED.push({\r\n groupBy: column,\r\n indexGroup: indexGroup++,\r\n length: list.filter((item: any) => item[this.groupBy()] == column).length,\r\n rows: [...list]\r\n .filter((item: any) => item[this.groupBy()] == column)\r\n .splice(0, this.rowsByGroup())\r\n //.map((item: any) => Object.assign({ indexRow: indexRow++ }, item))\r\n });\r\n }\r\n\r\n //Response by group\r\n return [...DATA_SOURCE_GROPUED].splice(0, this.rowsByPage());\r\n }\r\n\r\n //Response\r\n return [{\r\n groupBy: 'Not Grouped',\r\n indexGroup: -1,\r\n length: -1,\r\n rows: [...list].splice(0, this.rowsByPage())\r\n }];\r\n });\r\n\r\n\r\n //computed\r\n protected gridDataSourceFiltered = computed<T[]>(() => {\r\n let list: T[] = [];\r\n\r\n const dataSource = Tools.BreakReference(this.value_signal());\r\n\r\n //Ignore Filter\r\n if (this._gridSearch() == '' || this.search?.ignore) {\r\n list = dataSource;\r\n }\r\n\r\n //Filter by search\r\n else {\r\n const SET_ROW = new Set<number>();\r\n\r\n let listFiltered: any[] = [];\r\n for(const { columnName } of this.gridColumns()) {\r\n listFiltered = dataSource.filter((item: any) =>\r\n !SET_ROW.has(item['indexRow'])\r\n && String(item[Tools.FirstCharToLower(columnName)]).trim().toUpperCase().includes(String(this._gridSearch()).trim().toUpperCase())\r\n );\r\n\r\n for(const { indexRow } of listFiltered as any) {\r\n SET_ROW.add(indexRow);\r\n }\r\n\r\n list = Tools.BreakReference(list.concat(listFiltered));\r\n }\r\n }\r\n\r\n return Tools.BreakReference(list);\r\n });\r\n\r\n\r\n /** Get Column Configuration */\r\n protected _GetColumnConfig = (columnName: string): IGridColumn<T> | undefined => {\r\n return this.columns().find(x => x.property.replaceAll(' ', '').toUpperCase() == columnName.replaceAll(' ', '').toUpperCase());\r\n }\r\n\r\n\r\n /** Clean Name or get alias */\r\n protected _GetColumnName = (columnName: string): string => {\r\n const columnConfig = this._GetColumnConfig(columnName);\r\n\r\n //Get Alias\r\n if (columnConfig && columnConfig.alias && columnConfig.alias.length > 0) {\r\n return columnConfig.alias;\r\n }\r\n\r\n //Clean headerName\r\n if (this.cleanColumnName() && columnName.length > 0) {\r\n columnName = Tools.FirstCharToLower(columnName);\r\n\r\n const charArray = [];\r\n for(const char of columnName) {\r\n if(char === char.toUpperCase()) charArray.push(' ');\r\n charArray.push(char);\r\n }\r\n\r\n charArray[0] = charArray[0].toUpperCase();\r\n columnName = charArray.join('');\r\n }\r\n\r\n return columnName.trim();\r\n }\r\n\r\n\r\n /** */\r\n protected _GetShortIcon = (columnName: string) => {\r\n return this._sort().columnName == columnName ? this._sort().icon : '';\r\n }\r\n\r\n\r\n /** */\r\n protected _GetId = (indexRow: number, indexColumn: number, suffix: string = ''): string => {\r\n if (suffix.length > 0) suffix = `-${suffix}`;\r\n return `${this._id}-row${indexRow}column${indexColumn}${suffix}`;\r\n }\r\n\r\n\r\n /** */\r\n protected _GetCellValue = (row: any, columnName: string): any => {\r\n return row[Tools.FirstCharToLower(columnName).replaceAll(' ', '')];\r\n }\r\n\r\n\r\n /** */\r\n protected _GetTooltip = (prefix: string, row: any, suffix: string = ''): string => {\r\n let column = Tools.FirstCharToLower(this.tooltipByRow()).replaceAll(' ', '');\r\n\r\n if (suffix.length > 0) {\r\n suffix = ` ${suffix}`;\r\n }\r\n\r\n return this.tooltipByRow().length > 0\r\n ? `${prefix} ${row[column]}${suffix}`\r\n : `${prefix}${suffix}`;\r\n }\r\n\r\n\r\n /** */\r\n protected _HideRow = (group: IGridDataSource): boolean => {\r\n return (this._isGrouped() ? !(this._expandedGroups.some(x => x == group.groupBy)) : false)\r\n }\r\n\r\n\r\n /** */\r\n protected _IsCellType(property: string, data: any, type: 'number' | 'date' | 'template' | 'coerTextbox' | 'coerNumberbox' | 'coerSelectbox' | 'coerSwitch'): boolean {\r\n let response = false;\r\n const columnConfig = this._GetColumnConfig(property);\r\n const value = data[property];\r\n const row = Tools.BreakReference(data);\r\n\r\n if (columnConfig) {\r\n if (['coerTextbox', 'coerNumberbox', 'coerSelectbox', 'coerSwitch'].includes(type)) {\r\n const inputConfig: any = columnConfig;\r\n response = inputConfig.hasOwnProperty(type)\r\n && typeof inputConfig[type] === 'function'\r\n && inputConfig[type]({ property, row, value }).isInput;\r\n }\r\n\r\n else switch(type) {\r\n case 'number': {\r\n if (typeof columnConfig.typeNumber === 'boolean') {\r\n response = columnConfig.typeNumber;\r\n }\r\n\r\n else if (typeof columnConfig.typeNumber === 'function') {\r\n response = (data === null) ? false : columnConfig.typeNumber({ property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'date': {\r\n if (data === null) return false;\r\n\r\n if (typeof columnConfig.typeDate === 'boolean') {\r\n response = columnConfig.typeDate;\r\n }\r\n\r\n else if (typeof columnConfig.typeDate === 'function') {\r\n response = (data === null) ? false : columnConfig.typeDate({ property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n case 'template': {\r\n if (data === null) return false;\r\n response = (typeof columnConfig.template === 'string') || (typeof columnConfig.template === 'function');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n\r\n /** */\r\n protected _IsCellColor(property: string, data: any, color: 'colorBlue' | 'colorGreen' | 'colorYellow' | 'colorRed'): boolean {\r\n let response = false;\r\n const columnConfig: any = this._GetColumnConfig(property);\r\n\r\n if (columnConfig) {\r\n if (typeof columnConfig[color] === 'boolean') {\r\n response = columnConfig[color];\r\n }\r\n\r\n else if (typeof columnConfig[color] === 'function') {\r\n response = columnConfig[color]({\r\n property,\r\n row: Tools.BreakReference(data),\r\n value: data[property]\r\n });\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n\r\n /** */\r\n protected GetAttribute(property: string, data: any, attribute: string, type: 'coerSwitch' | 'coerTextbox' | 'coerNumberbox'| 'coerSelectbox' | 'defaul-cell' ): any {\r\n const columnConfig = this._GetColumnConfig(property);\r\n const value = Tools.IsNotNull(data) ? data[property] : null;\r\n const row = Tools.BreakReference(data);\r\n\r\n if (columnConfig) {\r\n if (type === 'defaul-cell') {\r\n switch(attribute) {\r\n case 'textAlign': {\r\n return columnConfig?.textAlign || 'left';\r\n }\r\n\r\n case 'template': {\r\n const inputConfig: any = columnConfig;\r\n\r\n if (inputConfig.hasOwnProperty(attribute)) {\r\n if(typeof inputConfig[attribute] === 'string') {\r\n return inputConfig[attribute];\r\n }\r\n\r\n else if(typeof inputConfig[attribute] === 'function') {\r\n return inputConfig[attribute]({ property, row, value }) || '';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n else if(['coerTextbox', 'coerNumberbox', 'coerSelectbox', 'coerSwitch'].includes(type)) {\r\n const inputConfig: any = columnConfig;\r\n if (inputConfig.hasOwnProperty(type) && typeof inputConfig[type] === 'function') {\r\n return inputConfig[type]({ property, row, value })[attribute] || null;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n protected ButtonByRow(property: 'showDeleteButton' | 'showEditButton' | 'showGoButton', data: any = null): boolean {\r\n let response = false;\r\n const buttonByRow: any = this.buttonByRow;\r\n const row = Tools.IsNotNull(data) ? Tools.BreakReference(data) : null;\r\n\r\n if (buttonByRow.hasOwnProperty(property)) {\r\n if (row === null) {\r\n response = (typeof buttonByRow[property] === 'boolean') ? buttonByRow[property] : true;\r\n }\r\n\r\n else if (typeof buttonByRow[property] === 'boolean') {\r\n response = buttonByRow[property];\r\n }\r\n\r\n else if (typeof buttonByRow[property] === 'function') {\r\n response = buttonByRow[property]({ property, row, value: null });\r\n }\r\n }\r\n\r\n return response ? (this._value && this._value.length > 0) : false;\r\n }\r\n}","import { Component, computed, input, Input, OnDestroy, OnInit, output, ViewChild } from '@angular/core';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\nimport { Tooltip } from 'bootstrap';\r\n\r\n@Component({\r\n selector: 'coer-switch',\r\n templateUrl: './coer-switch.component.html',\r\n styleUrl: './coer-switch.component.scss',\r\n providers: [CONTROL_VALUE(CoerSwitch)],\r\n})\r\nexport class CoerSwitch extends ControlValue implements OnInit, OnDestroy {\r\n\r\n //Variables\r\n protected override _value: boolean = false;\r\n protected _id: string = Tools.GetGuid('coer-switch');\r\n private _tooltip: string = '';\r\n private _tooltipElement!: Tooltip;\r\n\r\n @ViewChild('coerSwitch') coerSwitch!: MatSlideToggle;\r\n\r\n //Inputs\r\n @Input() public set value(value: boolean | null | undefined) {\r\n if(Tools.IsNull(value)) value = false;\r\n this.SetValue(value);\r\n }\r\n\r\n @Input() id: string = '';\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isDisabled = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('top');\r\n\r\n @Input() set tooltip(value: string) {\r\n this._tooltip = value;\r\n if (value && this._tooltipElement) {\r\n this._tooltipElement.setContent({ '.tooltip-inner': this._tooltip });\r\n }\r\n }\r\n\r\n\r\n //Outputs\r\n public onChange = output<boolean>();\r\n\r\n\r\n ngOnInit() {\r\n Tools.Sleep().then(() => {\r\n const htmlElement = document.getElementById(this._id)!;\r\n\r\n if (htmlElement) {\r\n htmlElement.addEventListener('mouseleave', () => {\r\n if (this._tooltipElement) this._tooltipElement.hide()\r\n });\r\n\r\n this._tooltipElement = new Tooltip(htmlElement, {\r\n html: true,\r\n title: this._tooltip,\r\n placement: this.tooltipPosition()\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this._tooltipElement) {\r\n Tools.Sleep().then(() => this._tooltipElement.dispose());\r\n }\r\n }\r\n\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n\r\n //conmputed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled() && !this.isInvisible();\r\n });\r\n\r\n\r\n /** */\r\n public Focus(): void {\r\n Tools.Sleep().then(() => {\r\n if(this._isEnable()) this.coerSwitch.focus();\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected Change(value: boolean): void {\r\n this.SetValue(value);\r\n this.onChange.emit(value);\r\n }\r\n}","<div [ngClass]=\"{ 'coer-switch': true, 'placeholder-glow': isLoading(), 'invisible': isInvisible() }\">\r\n <div [id]=\"_id\" [ngClass]=\"{ 'placeholder': isLoading() }\">\r\n <mat-slide-toggle\r\n #coerSwitch\r\n [checked]=\"_value\"\r\n [disabled]=\"!_isEnable()\"\r\n [labelPosition]=\"labelPosition()\"\r\n (change)=\"Change($event.checked)\"\r\n >{{ label() }}</mat-slide-toggle>\r\n </div>\r\n</div>","import { Component, computed } from '@angular/core';\r\nimport { CoerGridExtension } from './coer-grid.extension';\r\nimport { IGridLength, IGridInputCheckbox } from '../../../interfaces';\r\nimport { CoerCheckbox } from '../../lib/coer-checkbox/coer-checkbox.component';\r\nimport { CoerTextBox } from '../../lib/coer-textbox/coer-textbox.component';\r\nimport { CoerNumberBox } from '../../lib/coer-numberbox/coer-numberbox.component';\r\nimport { CoerSelectbox } from '../../lib/coer-selectbox/coer-selectbox.component';\r\nimport { CONTROL_VALUE } from '../../../tools/lib/control-value.class';\r\nimport { Files } from '../../../tools/lib/files.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n\r\n@Component({\r\n selector: 'coer-grid',\r\n templateUrl: './coer-grid.component.html',\r\n styleUrl: './coer-grid.component.scss',\r\n providers: [CONTROL_VALUE(CoerGrid)],\r\n})\r\nexport class CoerGrid<T> extends CoerGridExtension<T> {\r\n\r\n //computed\r\n public dataSource = computed<T[]>(() => {\r\n return Tools.BreakReference<any[]>(this.value_signal()).map(item => {\r\n if(item.hasOwnProperty('checked')) delete item.checked;\r\n if(item.hasOwnProperty('indexRow')) delete item.indexRow;\r\n return item;\r\n });\r\n });\r\n\r\n\r\n //computed\r\n public selectedItems = computed<T[]>(() => {\r\n return Tools.BreakReference<any[]>(this.value_signal()).filter(item => item.checked).map(item => {\r\n if(item.hasOwnProperty('checked')) delete item.checked;\r\n if(item.hasOwnProperty('indexRow')) delete item.indexRow;\r\n return item;\r\n });\r\n });\r\n\r\n\r\n //getter\r\n public get isValid() {\r\n return (this.coerTextboxList().length > 0 ? this.coerTextboxList().every(x => !x.isInvalid()) : true)\r\n && (this.coerNumberboxList().length > 0 ? this.coerNumberboxList().every(x => !x.isInvalid()) : true)\r\n && (this.coerSelectboxList().length > 0 ? this.coerSelectboxList().every(x => !x.isInvalid()) : true);\r\n }\r\n\r\n\r\n //computed\r\n protected gridLength = computed<IGridLength>(() => {\r\n return {\r\n dataSource: this.value_signal()?.length || 0,\r\n dataSourceFiltered: this.gridDataSourceFiltered()?.length || 0,\r\n dataSourceSelected: this.selectedItems()?.length || 0\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n //computed\r\n //protected _columnsFiltered = computed<IGridHeader[]>(() => {\r\n // return this.isGrouped() && !this.showColumnGrouped\r\n // ? this._columns().filter(x => x.columnName.toUpperCase() != this.groupBy.toUpperCase())\r\n // : this._columns();\r\n //});\r\n\r\n\r\n /** */\r\n public FocusSearch(): void {\r\n Tools.Sleep(0).then(() => {\r\n if(this.inputSearch) this.inputSearch().Focus();\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public SelectSearch(): void {\r\n Tools.Sleep(0).then(() => {\r\n if(this.inputSearch) this.inputSearch().Select();\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public GetRowBy<T>(callback: (row: T) => boolean): T | null {\r\n const row = this._value.find(callback as any);\r\n return (row === undefined) ? null : row as T;\r\n }\r\n\r\n\r\n /** */\r\n public async Import(event: any = null) {\r\n if (this.importButton?.preventDefault) {\r\n this.onClickImport.emit({ data: [], file: null });\r\n return;\r\n }\r\n\r\n if (event === null) {\r\n this.inputFile().nativeElement.value = null;\r\n this.inputFile().nativeElement.click();\r\n return;\r\n }\r\n\r\n else if (event.target!.files.length > 0) {\r\n this._isLoading = true;\r\n const [selectedFile] = event.target.files as File[];\r\n\r\n if(Files.IsExcel(selectedFile)) {\r\n const { rows } = await Files.ReadExcel<T>(selectedFile);\r\n\r\n if (Tools.IsNull(this.importButton?.Autofill) || this.importButton.Autofill) {\r\n this.SetValue(rows.concat(this._value));\r\n this.onClickImport.emit({ data: this._value, file: selectedFile });\r\n }\r\n\r\n else {\r\n this.onClickImport.emit({ data: rows, file: selectedFile });\r\n }\r\n }\r\n\r\n else {\r\n let message = 'Allowed extensions:';\r\n for(const extension of Files.EXCEL_EXTENSIONS) {\r\n message += ` <b>${extension}</b>,`\r\n }\r\n\r\n message = message.substring(0, message.length - 1);\r\n this.alert.Warning(message, 'Invalid File Type', 'bi bi-filetype-xlsx fa-lg');\r\n this.onClickImport.emit({ data: [], file: null });\r\n }\r\n\r\n this.inputFile().nativeElement.value = null;\r\n Tools.Sleep(1000).then(() => this._isLoading = false);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Export(exportFile: boolean | undefined = true): void {\r\n let item: any = {};\r\n this._isLoading = true;\r\n const FILE_NAME = (this.exportButton?.fileName || 'COER Report') + '.xlsx';\r\n\r\n let ROW_DATA_SOURCE = (this.exportButton.hasOwnProperty('onlyRowFiltered') && !this.exportButton.onlyRowFiltered)\r\n ? this.value_signal() : this.gridDataSourceFiltered();\r\n\r\n const COLUMN_DATA_SOURCE = new Set<string>();\r\n if (this.exportButton.hasOwnProperty('onlyColumnFiltered') && !this.exportButton.onlyColumnFiltered) {\r\n for (const row of this.value_signal()) {\r\n for (const columnName in row) {\r\n if (columnName == 'indexRow') continue;\r\n COLUMN_DATA_SOURCE.add(Tools.FirstCharToLower(columnName));\r\n }\r\n }\r\n }\r\n\r\n else {\r\n for (const { columnName } of this.gridColumns()) {\r\n if (columnName == 'indexRow') continue;\r\n COLUMN_DATA_SOURCE.add(Tools.FirstCharToLower(columnName));\r\n }\r\n }\r\n\r\n const EXPORT_DATA: T[] = [];\r\n for (const row of ROW_DATA_SOURCE) {\r\n for (const column of COLUMN_DATA_SOURCE) {\r\n item = Object.assign(item, { [this._GetColumnName(column)]: (row as any)[column] });\r\n }\r\n\r\n EXPORT_DATA.push(item);\r\n item = Tools.BreakReference({});\r\n }\r\n\r\n if (exportFile) {\r\n Files.ExportExcel(EXPORT_DATA, FILE_NAME);\r\n }\r\n\r\n this.onClickExport.emit(EXPORT_DATA);\r\n Tools.Sleep(3000).then(() => this._isLoading = false);\r\n }\r\n\r\n\r\n /** */\r\n protected InputChange(indexRow: number, columnName: string, value: any, input: 'coer-textbox' | 'coer-numberbox' | 'coer-selectbox' | 'coer-switch' | 'coer-textbox-search'): void {\r\n if (input === 'coer-textbox-search') {\r\n if (this._isLoading) return;\r\n\r\n Tools.Sleep(0, `coerGridInputChange${columnName}`).then(async _ => {\r\n this._gridSearch.set(value);\r\n\r\n if(this.checkbox.show) {\r\n this._isLoadingMessage = true;\r\n\r\n await Tools.Sleep();\r\n for(const row of this._value.filter((x: any) => x.checked)) {\r\n this.CheckBy((x: any) => x.indexRow == (row as any).indexRow);\r\n }\r\n\r\n await Tools.Sleep();\r\n this._isLoadingMessage = false;\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n const property = Tools.FirstCharToLower(columnName);\r\n\r\n const row: any = this._value[indexRow];\r\n row[property] = value;\r\n\r\n if (input === 'coer-switch') {\r\n this.onSwitchChange.emit({ property, row: Tools.BreakReference(row), value });\r\n }\r\n\r\n else if (input === 'coer-textbox') {\r\n this.onTextboxChange.emit({ property, row: Tools.BreakReference(row), value });\r\n }\r\n\r\n else if (input === 'coer-selectbox') {\r\n this.onSelectboxChange.emit({ property, row: Tools.BreakReference(row), value });\r\n }\r\n\r\n else if (input === 'coer-numberbox') {\r\n this.onTextboxChange.emit({ property, row: Tools.BreakReference(row), value });\r\n }\r\n\r\n Tools.Sleep(1000, `coerGridInputChange${indexRow}${columnName}`).then(_ => {\r\n this._UpdateValue(this._value);\r\n this.value_signal.set(this._value);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected KeyupEnter(indexColumn: number, row: any, input: 'coer-textbox' | 'coer-numberbox' | 'coer-textbox-search' | 'coer-selectbox', value: any): void {\r\n if (['coer-textbox', 'coer-numberbox', 'coer-selectbox'].includes(input)) {\r\n this.onKeyupEnter.emit({\r\n id: this._GetId(indexColumn, row.indexRow, input),\r\n input, row: Tools.BreakReference(row), value\r\n });\r\n\r\n this.NextInput(indexColumn, row.indexRow);\r\n }\r\n\r\n else if (input == 'coer-textbox-search') {\r\n this.onKeyupEnter.emit({\r\n id: this._GetId(indexColumn, row.indexRow, input),\r\n input, row: null, value\r\n });\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private NextInput(indexColumn: number, indexRow: number): void {\r\n const INPUT_TEXT = this.columns().filter(x => Tools.IsNotNull(x.coerTextbox)).map(x => x.property);\r\n const INPUT_NUMBER = this.columns().filter(x => Tools.IsNotNull(x.coerNumberbox)).map(x => x.property);\r\n const INPUT_SELECT = this.columns().filter(x => Tools.IsNotNull(x.coerSelectbox)).map(x => x.property);\r\n\r\n let index = 0\r\n const COLUMNS = []\r\n const INPUT_COLUMNS = []\r\n for (const { columnName } of this.gridColumns()) {\r\n if (INPUT_TEXT.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerTextbox' });\r\n INPUT_COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerTextbox' });\r\n }\r\n\r\n else if (INPUT_NUMBER.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerNumberbox' });\r\n INPUT_COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerNumberbox' });\r\n }\r\n\r\n else if (INPUT_SELECT.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerSelectbox' });\r\n INPUT_COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerSelectbox' });\r\n }\r\n\r\n else {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'default-cell' });\r\n }\r\n\r\n ++index;\r\n }\r\n\r\n let lastRow = -1\r\n for(const { rows } of this.gridDataSource()) {\r\n lastRow += rows.length;\r\n }\r\n\r\n let firstColumn = -1;\r\n if (INPUT_COLUMNS.length > 0) {\r\n firstColumn = [...INPUT_COLUMNS].shift()!.indexColumn;\r\n }\r\n\r\n let lastColumn = -1;\r\n if (INPUT_COLUMNS.length > 0) {\r\n lastColumn = [...INPUT_COLUMNS].pop()!.indexColumn;\r\n }\r\n\r\n //Is Last Row & Last Input Column?\r\n if (indexRow == lastRow && indexColumn == lastColumn) {\r\n this.onKeyupEnterLast.emit();\r\n }\r\n\r\n //Is Last Input Column?\r\n else if (indexColumn == lastColumn) {\r\n this.FocusInput((indexRow + 1), firstColumn)\r\n }\r\n\r\n //Next Column?\r\n else {\r\n for (index = (indexColumn + 1); index < COLUMNS.length; index++) {\r\n for(const input of COLUMNS) {\r\n if(index == input.indexColumn && ['coerTextbox', 'coerNumberbox', 'coerSelectbox'].includes(input.type)) {\r\n this.FocusInput(indexRow, input.indexColumn);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public FocusInput(indexRow = -1, indexColumn = -1) {\r\n Tools.Sleep(0, 'FocusInput').then(() => {\r\n if (this._isDisabled()) return;\r\n\r\n if (indexRow < 0 || indexColumn < 0) {\r\n const INPUT_TEXT = this.columns().filter(x => Tools.IsNotNull(x.coerTextbox)).map(x => x.property);\r\n const INPUT_NUMBER = this.columns().filter(x => Tools.IsNotNull(x.coerNumberbox)).map(x => x.property);\r\n const INPUT_SELECT = this.columns().filter(x => Tools.IsNotNull(x.coerSelectbox)).map(x => x.property);\r\n\r\n let index = 0;\r\n const COLUMNS = []\r\n for (const { columnName } of this.gridColumns()) {\r\n if (INPUT_TEXT.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerTextbox' });\r\n }\r\n\r\n else if (INPUT_NUMBER.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerNumberbox' });\r\n }\r\n\r\n else if (INPUT_SELECT.some(property => property.toUpperCase() == columnName.toUpperCase())) {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'coerSelectbox' });\r\n }\r\n\r\n else {\r\n COLUMNS.push({ indexColumn: index, property: columnName, type: 'default-cell' });\r\n }\r\n\r\n ++index;\r\n }\r\n\r\n if(this.gridLength().dataSourceFiltered > 0) {\r\n const FIRST_INPUT_COLUMN = COLUMNS.find(x => ['coerTextbox', 'coerNumberbox', 'coerSelectbox'].includes(x.type));\r\n\r\n if (Tools.IsNotNull(FIRST_INPUT_COLUMN)) {\r\n this.FocusInput(0, FIRST_INPUT_COLUMN!.indexColumn);\r\n }\r\n }\r\n }\r\n\r\n else {\r\n const id = this._GetId(indexRow, indexColumn);\r\n let element: CoerTextBox | CoerNumberBox | CoerSelectbox<any> | undefined;\r\n this._indexFocus.set(indexRow);\r\n\r\n //Focus Textbox\r\n element = this.coerTextboxList().find(x => x.id == id);\r\n if(element) {\r\n element.Select();\r\n return;\r\n }\r\n\r\n //Focus Numberbox\r\n element = this.coerNumberboxList().find(x => x.id == id);\r\n if(element) {\r\n element.Select();\r\n return;\r\n }\r\n\r\n //Focus Selectbox\r\n element = this.coerSelectboxList().find(x => x.id == id);\r\n if(element) {\r\n Tools.Sleep(100).then(_ => element.Focus());\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public FocusRow(callback: (row: T) => boolean): void {\r\n Tools.Sleep().then(_ => {\r\n if (this._value.length > 0) {\r\n const row = Tools.BreakReference<any>(this._value.find(callback as any));\r\n if (Tools.IsNotNull(row)) this._indexFocus.set(row.indexRow);\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public async Sort(columnName: string): Promise<void> {\r\n if (this.enableSort()) {\r\n if(this._isLoading) return;\r\n\r\n this._isLoading = true;\r\n this._isLoadingMessage = true;\r\n const { direction } = this._sort();\r\n\r\n let dataSource = Tools.BreakReference<any>(this._value);\r\n for (const checkbox of this.coerCheckboxList()) checkbox.Uncheck();\r\n\r\n if (direction == 'descendant') {\r\n Tools.SortByDesc(dataSource, columnName);\r\n this._sort.set({ columnName, direction: 'ascendant', icon: 'fa-solid fa-arrow-down-short-wide' });\r\n }\r\n\r\n else {\r\n Tools.SortBy(dataSource, columnName);\r\n this._sort.set({ columnName, direction: 'descendant', icon: 'fa-solid fa-arrow-up-wide-short' });\r\n }\r\n\r\n let indexRow = 0;\r\n dataSource = Tools.BreakReference<any>(dataSource).map((item: any) => Object.assign(item, { indexRow: indexRow++ }));\r\n this.SetValue(dataSource);\r\n\r\n this._isLoading = false;\r\n\r\n await Tools.Sleep();\r\n for(const row of dataSource.filter((x: any) => x.checked)) {\r\n this.CheckBy((x: any) => x.indexRow == row.indexRow);\r\n }\r\n\r\n this._isLoadingMessage = false;\r\n }\r\n\r\n return;\r\n }\r\n\r\n\r\n /** */\r\n protected ClickCheck(id: string, checked: boolean, all: boolean, row: any = null): void {\r\n if (!this._isLoading) Tools.Sleep().then(async _ => {\r\n this._isLoading = true;\r\n\r\n let element = this.coerCheckboxList().find(x => x.id() == id);\r\n\r\n if(Tools.IsNotNull(element)) {\r\n let response: IGridInputCheckbox<T> = { all, checked, rows: [] };\r\n\r\n //All Checkbox\r\n if (all) {\r\n if(checked) this.CheckAll();\r\n else this.UncheckAll();\r\n\r\n //Event\r\n response.rows = this.selectedItems();\r\n this.onCheckboxChange.emit(response);\r\n }\r\n\r\n //One Checkbox\r\n else {\r\n if(this._onlyOneCheck) {\r\n for (const row of this._value) {\r\n (row as any).checked = false;\r\n }\r\n\r\n for (const checkbox of this.coerCheckboxList()) {\r\n if(checkbox.id() != id) checkbox.Uncheck();\r\n }\r\n }\r\n\r\n (this._value[row.indexRow] as any).checked = checked;\r\n this.SetValue(this._value);\r\n\r\n //Mark All checkbox\r\n const checkboxAll = this.coerCheckboxList().find(x => x.id() == this._GetId(0, 0, 'checkboxAll'));\r\n\r\n if(this.value_signal().every((x: any) => x.checked)) {\r\n checkboxAll?.Check();\r\n }\r\n\r\n else {\r\n checkboxAll?.Uncheck();\r\n }\r\n\r\n //Event\r\n response.rows = [{ ...row }];\r\n this.onCheckboxChange.emit(response);\r\n\r\n this._isLoading = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public CheckAll(): void {\r\n this._isLoading = true;\r\n\r\n for (const row of this._value) {\r\n (row as any).checked = true;\r\n }\r\n\r\n this.SetValue(this._value);\r\n\r\n for (const checkbox of this.coerCheckboxList()) {\r\n checkbox.Check();\r\n }\r\n\r\n this._isLoading = false;\r\n }\r\n\r\n\r\n /** */\r\n public UncheckAll(): void {\r\n this._isLoading = true;\r\n\r\n for (const row of this._value) {\r\n (row as any).checked = false;\r\n }\r\n\r\n this.SetValue(this._value);\r\n\r\n for (const checkbox of this.coerCheckboxList()) {\r\n checkbox.Uncheck();\r\n }\r\n\r\n this._isLoading = false;\r\n }\r\n\r\n\r\n /** */\r\n public CheckBy(callback: (row: T) => boolean): void {\r\n Tools.Sleep().then(_ => {\r\n if (this._value.length > 0) {\r\n const rowList = Tools.BreakReference<any>(this._value.filter(callback as any));\r\n\r\n let element: CoerCheckbox | undefined;\r\n for(const { indexRow } of rowList) {\r\n element = this.coerCheckboxList().find(x => x.id() == this._GetId(indexRow, 0, 'checkbox'));\r\n\r\n if (Tools.IsNotNull(element)) {\r\n element?.Check();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public UncheckBy(callback: (row: T) => boolean): void {\r\n Tools.Sleep().then(_ => {\r\n if (this._value.length > 0) {\r\n const rowList = Tools.BreakReference<any>(this._value.filter(callback as any));\r\n\r\n let element: CoerCheckbox | undefined;\r\n for(const { indexRow } of rowList) {\r\n element = this.coerCheckboxList().find(x => x.id() == this._GetId(indexRow, 0, 'checkbox'));\r\n\r\n if (Tools.IsNotNull(element)) {\r\n element?.Uncheck();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected ClickOnRow(row: T): void {\r\n if(this._isDisabled()) return;\r\n\r\n if(Tools.IsNotNull(this.checkbox.checkOnRow) && this.checkbox.checkOnRow) {\r\n this.CheckBy((x: any) => x.indexRow == (row as any).indexRow);\r\n }\r\n\r\n this.onClickRow.emit(row);\r\n }\r\n\r\n\r\n /** Inserts new elements at the start */\r\n public Unshift(row: T): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.unshift(row);\r\n this.SetValue(dataSource);\r\n this.FocusInput();\r\n }\r\n\r\n\r\n /** Appends new elements to the end */\r\n public Push(row: T): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.push(row);\r\n this.SetValue(dataSource);\r\n this.FocusInput();\r\n }\r\n\r\n\r\n /** Delete Row By index */\r\n public async DeleteRow(indexRow: number): Promise<void> {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.splice(indexRow, 1);\r\n this.SetValue(dataSource);\r\n }\r\n\r\n\r\n /** Delete row list by callback */\r\n public async DeleteRowsBy(callback: (row: T) => boolean): Promise<void> {\r\n const indexList = Tools.BreakReference<number[]>(this._value.filter(callback as any).map((item: any) => item.indexRow));\r\n\r\n let dataSource: any[] = [];\r\n for(const indexRow of indexList) {\r\n dataSource = Tools.BreakReference(this._value);\r\n dataSource.splice(indexRow, 1);\r\n this.SetValue(dataSource);\r\n await Tools.Sleep();\r\n }\r\n }\r\n}","<div class=\"coer-grid\" [ngStyle]=\"{ 'width': width(), 'min-Width': MinWidth(), 'max-Width': MaxWidth(), 'margin': margin() }\">\r\n <header [id]=\"_id + '-header'\" class=\"row\">\r\n <!-- Slot -->\r\n <ng-content></ng-content>\r\n\r\n <!-- Export Button -->\r\n @if(exportButton.show && gridLength().dataSource > 0) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n color=\"navigation\"\r\n icon=\"excel\"\r\n [tooltip]=\"_isLoading ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n [isDisabled]=\"_isDisabled() || _isLoading || (exportButton.isDisabled || false)\"\r\n [isLoading]=\"_isLoading\"\r\n [animation]=\"_enableAnimations\"\r\n (onClick)=\"Export(!exportButton.preventDefault)\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Import Button -->\r\n @if(importButton.show) {\r\n <div class=\"col-auto\">\r\n <input type=\"file\" #inputFileRef [multiple]=\"false\" (change)=\"Import($event)\">\r\n\r\n <coer-button\r\n type=\"icon\"\r\n color=\"navigation\"\r\n icon=\"import\"\r\n [tooltip]=\"importButton.tooltip || 'Import'\"\r\n [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n [isDisabled]=\"importButton.isDisabled || false\"\r\n [animation]=\"_enableAnimations\"\r\n (onClick)=\"Import()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Add Button -->\r\n @if(addButton.show) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n color=\"navigation\"\r\n icon=\"new\"\r\n [tooltip]=\"addButton.tooltip || 'New'\"\r\n [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n [isDisabled]=\"addButton.isDisabled || false\"\r\n [animation]=\"_enableAnimations\"\r\n (onClick)=\"onClickAdd.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Search -->\r\n @if(search.show) {\r\n <div class=\"col-auto\">\r\n <coer-textbox\r\n #inputSearch\r\n [id]=\"_GetId(-1, -1, 'search')\"\r\n [ngModel]=\"_gridSearch()\"\r\n placeholder=\"Search\"\r\n [isDisabled]=\"_isDisabled() || _isLoading\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n (onInput)=\"InputChange(-1, 'Search', $event, 'coer-textbox-search')\"\r\n (onClickClear)=\"InputChange(-1, 'Search', '', 'coer-textbox-search')\"\r\n (onKeyupEnter)=\"KeyupEnter(-1, { indexRow: -1 }, 'coer-textbox-search', $event);\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <section [ngClass]=\"{ 'grid-container': true, 'invisible': isInvisible() }\">\r\n <div [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\">\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div>\r\n }\r\n\r\n @else if(!_isDisabled() && gridLength().dataSource <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <table class=\"table table-sm table-responsive table-striped\">\r\n <thead>\r\n <tr>\r\n @if(checkbox.show && gridLength().dataSource > 0) {\r\n <!-- CheckBox Column -->\r\n <th scope=\"col\" class=\"check-box\">\r\n <div *ngIf=\"!_onlyOneCheck\" [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n <coer-checkbox\r\n [id]=\"_GetId(0, 0, 'checkboxAll')\"\r\n [ignoreModel]=\"true\"\r\n [isDisabled]=\"_isDisabled() || _isLoading\"\r\n (onChange)=\"ClickCheck(_GetId(0, 0, 'checkboxAll'), $event, true)\"\r\n ></coer-checkbox>\r\n </div>\r\n </th>\r\n }\r\n\r\n <!-- Dynamic Grid Column -->\r\n @for(header of gridColumns(); track header.indexColumn) {\r\n <th scope=\"col\" (dblclick)=\"Sort(header.columnName)\"\r\n [ngClass]=\"{\r\n 'no-selection': true,\r\n 'cursor-default': !enableSort() && !_isLoading,\r\n 'cursor-pointer': enableSort() && !_isLoading,\r\n 'cursor-wait': _isLoading\r\n }\"\r\n [ngStyle]=\"{\r\n 'width': header.width,\r\n 'text-align': GetAttribute(header.columnName, null, 'textAlign', 'defaul-cell')\r\n }\">\r\n <div class=\"no-selection\">\r\n {{ _GetColumnName(header.columnName) }}\r\n <i [class]=\"_GetShortIcon(header.columnName)\"></i>\r\n </div>\r\n </th>\r\n }\r\n\r\n <!-- Delete Button Column -->\r\n @if(ButtonByRow('showDeleteButton')) {\r\n <th scope=\"col\" class=\"action-button\"></th>\r\n }\r\n\r\n <!-- Edit Button Column -->\r\n @if(ButtonByRow('showEditButton')) {\r\n <th scope=\"col\" class=\"action-button\"></th>\r\n }\r\n\r\n <!-- Edit Button Column -->\r\n @if(ButtonByRow('showGoButton')) {\r\n <th scope=\"col\" class=\"action-button\"></th>\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <!-- body -->\r\n @for(group of gridDataSource(); track group.indexGroup) {\r\n <tbody>\r\n <!--<tr v-if=\"_isGrouped\">\r\n <td :colspan=\"_colspan\" class=\"group\">\r\n <MesAccordion\r\n :ref=\"`accordion${group.indexGroup}-${id}`\"\r\n :title=\"`${_CleanHeaderName(groupBy)} (${group.length}): ${group.groupBy}`\"\r\n :isLoading=\"_isLoading\"\r\n @expanded=\"_ToogleAccordion(group.groupBy, true, group.indexGroup)\"\r\n @collapsed=\"_ToogleAccordion(group.groupBy, false, group.indexGroup)\"\r\n ></MesAccordion>\r\n </td>\r\n </tr>-->\r\n\r\n @for(row of group.rows; track row.indexRow) {\r\n <tr [id]=\"_GetId(row.indexRow, 0, 'row')\"\r\n [ngClass]=\"{ 'loading': isLoading(), 'd-none': _HideRow(group), 'row-focus': (row.indexRow == _indexFocus() && enableRowFocus()) }\"\r\n (click)=\"_indexFocus.set(row.indexRow)\">\r\n\r\n @if(checkbox.show) {\r\n <!-- CheckBox Column -->\r\n <td class=\"check-box\">\r\n <div [ngClass]=\"{ 'invisible': _isLoadingMessage }\">\r\n <coer-checkbox\r\n [id]=\"_GetId(row.indexRow, 0, 'checkbox')\"\r\n [ignoreModel]=\"true\"\r\n [isDisabled]=\"_isDisabled() || _isLoading\"\r\n (onChange)=\"ClickCheck(_GetId(row.indexRow, 0, 'checkbox'), $event, false, row)\"\r\n ></coer-checkbox>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'invisible': !_isLoadingMessage }\">\r\n <i class=\"spinner-border\"></i>\r\n </div>\r\n </td>\r\n }\r\n\r\n <!-- Dynamic Column -->\r\n @for(header of gridColumns(); track header.indexColumn) {\r\n @if(_IsCellType(header.columnName, row, 'template')) {\r\n <td class=\"template\"\r\n (click)=\"_isDisabled() ? null : onClickRow.emit(row)\"\r\n (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\">\r\n <div [innerHTML]=\"GetAttribute(header.columnName, row, 'template', 'defaul-cell') | html\" class=\"template\"></div>\r\n </td>\r\n }\r\n\r\n @else if(_IsCellType(header.columnName, row, 'coerTextbox')) {\r\n <!-- coer-textbox -->\r\n <td class=\"coer-textbox\">\r\n <coer-textbox\r\n [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n [(ngModel)]=\"row[header.columnName]\"\r\n [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerTextbox') || _isDisabled() || _isLoading\"\r\n [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerTextbox') || false\"\r\n [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerTextbox') || false\"\r\n [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerTextbox') || true\"\r\n [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerTextbox') || ('Type ' + header.columnName + '...')\"\r\n [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerTextbox') || 'left'\"\r\n [minLength]=\"GetAttribute(header.columnName, row, 'minLength', 'coerTextbox') || 0\"\r\n [maxLength]=\"GetAttribute(header.columnName, row, 'maxLength', 'coerTextbox') || 50\"\r\n (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-textbox')\"\r\n (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-textbox', $event)\"\r\n ></coer-textbox>\r\n </td>\r\n }\r\n\r\n\r\n @else if(_IsCellType(header.columnName, row, 'coerNumberbox')) {\r\n <!-- coer-numberbox -->\r\n <td class=\"coer-numberbox\">\r\n <coer-numberbox\r\n [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n [(ngModel)]=\"row[header.columnName]\"\r\n [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerNumberbox') || _isDisabled() || _isLoading\"\r\n [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerNumberbox') || false\"\r\n [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerNumberbox') || false\"\r\n [selectOnFocus]=\"GetAttribute(header.columnName, row, 'selectOnFocus', 'coerNumberbox') || true\"\r\n [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerNumberbox') || ''\"\r\n [textPosition]=\"GetAttribute(header.columnName, row, 'textPosition', 'coerNumberbox') || 'right'\"\r\n [min]=\"GetAttribute(header.columnName, row, 'min', 'coerNumberbox') || 0\"\r\n [max]=\"GetAttribute(header.columnName, row, 'max', 'coerNumberbox') || 2147483647\"\r\n [decimals]=\"GetAttribute(header.columnName, row, 'decimals', 'coerNumberbox') || 0\"\r\n (onInput)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-numberbox')\"\r\n (onKeyupEnter)=\"KeyupEnter(header.indexColumn, row, 'coer-numberbox', $event)\"\r\n ></coer-numberbox>\r\n </td>\r\n }\r\n\r\n\r\n @else if(_IsCellType(header.columnName, row, 'coerSelectbox')) {\r\n <!-- coer-numberbox -->\r\n <td class=\"coer-selectbox\">\r\n <coer-selectbox\r\n [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n [(ngModel)]=\"row[header.columnName]\"\r\n [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSelectbox') || _isDisabled() || _isLoading\"\r\n [isValid]=\"GetAttribute(header.columnName, row, 'isValid', 'coerSelectbox') || false\"\r\n [isInvalid]=\"GetAttribute(header.columnName, row, 'isInvalid', 'coerSelectbox') || false\"\r\n [dataSource]=\"GetAttribute(header.columnName, row, 'dataSource', 'coerSelectbox') || []\"\r\n [placeholder]=\"GetAttribute(header.columnName, row, 'placeholder', 'coerSelectbox') || '-- Select --'\"\r\n [propDisplay]=\"GetAttribute(header.columnName, row, 'propDisplay', 'coerSelectbox') || 'name'\"\r\n (onSelected)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-selectbox'); KeyupEnter(header.indexColumn, row, 'coer-selectbox', $event)\"\r\n ></coer-selectbox>\r\n </td>\r\n }\r\n\r\n\r\n @else if(_IsCellType(header.columnName, row, 'coerSwitch')) {\r\n <!-- coer-switch -->\r\n <td>\r\n <coer-switch\r\n [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n [(ngModel)]=\"row[header.columnName]\"\r\n [isDisabled]=\"GetAttribute(header.columnName, row, 'isDisabled', 'coerSwitch') || _isDisabled() || _isLoading\"\r\n [tooltip]=\"GetAttribute(header.columnName, row, 'tooltip', 'coerSwitch')\"\r\n [tooltipPosition]=\"GetAttribute(header.columnName, row, 'tooltipPosition', 'coerSwitch') || 'left'\"\r\n [isInvisible]=\"_isDisabled()\"\r\n (onChange)=\"InputChange(row.indexRow, header.columnName, $event, 'coer-switch')\"\r\n ></coer-switch>\r\n </td>\r\n }\r\n\r\n @else {\r\n <!-- Default Cell -->\r\n <td class=\"default-cell\"\r\n (click)=\"ClickOnRow(row)\"\r\n (dblclick)=\"_isDisabled() ? null : onDoubleClickRow.emit(row)\"\r\n [ngStyle]=\"{\r\n 'text-align': GetAttribute(header.columnName, row, 'textAlign', 'defaul-cell'),\r\n 'white-space': 'normal'\r\n }\">\r\n\r\n <div [id]=\"_GetId(row.indexRow, header.indexColumn)\"\r\n [ngClass]=\"{\r\n 'text-blue-bold': _IsCellColor(header.columnName, row, 'colorBlue'),\r\n 'text-green-bold': _IsCellColor(header.columnName, row, 'colorGreen'),\r\n 'text-yellow-bold': _IsCellColor(header.columnName, row, 'colorYellow'),\r\n 'text-red-bold': _IsCellColor(header.columnName, row, 'colorRed'),\r\n 'text-right-bold': _IsCellType(header.columnName, row, 'number')\r\n }\">\r\n\r\n @if(_IsCellType(header.columnName, row, 'number')) {\r\n <span> {{ GetNumericFormat(row[header.columnName]) }} </span>\r\n }\r\n\r\n @else if(_IsCellType(header.columnName, row, 'date')) {\r\n <span> {{ GetDateFormat(row[header.columnName]) }} </span>\r\n }\r\n\r\n @else {\r\n <span> {{ _GetCellValue(row, header.columnName) }} </span>\r\n }\r\n </div>\r\n </td>\r\n }\r\n }\r\n\r\n <!-- Delete Button -->\r\n @if(ButtonByRow('showDeleteButton')) {\r\n <td class=\"action-button\">\r\n @if(ButtonByRow('showDeleteButton', row)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"navigation\"\r\n icon=\"delete\"\r\n [tooltip]=\"_GetTooltip('Delete', row)\"\r\n [isInvisible]=\"_isDisabled()\"\r\n [isDisabled]=\"_isLoading\"\r\n (onClick)=\"onClickDeleteRow.emit(row)\"\r\n ></coer-button>\r\n }\r\n </td>\r\n }\r\n\r\n <!-- Edit Button -->\r\n @if(ButtonByRow('showEditButton')) {\r\n <td class=\"action-button\">\r\n @if(ButtonByRow('showEditButton', row)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"navigation\"\r\n icon=\"edit\"\r\n [tooltip]=\"_GetTooltip('Edit', row)\"\r\n [isInvisible]=\"_isDisabled()\"\r\n [isDisabled]=\"_isLoading\"\r\n (onClick)=\"onClickEditRow.emit(row)\"\r\n ></coer-button>\r\n }\r\n </td>\r\n }\r\n\r\n <!-- GO Button -->\r\n @if(ButtonByRow('showGoButton')) {\r\n <td class=\"action-button\">\r\n @if(ButtonByRow('showGoButton', row)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"navigation\"\r\n icon=\"go\"\r\n [tooltip]=\"_GetTooltip('Go to', row, 'detail')\"\r\n [isInvisible]=\"_isDisabled()\"\r\n [isDisabled]=\"_isLoading\"\r\n (onClick)=\"onClickEditRow.emit(row)\"\r\n ></coer-button>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n </table>\r\n </div>\r\n </section>\r\n\r\n @if(showFooter()) {\r\n <footer class=\"grid-footer\">\r\n <span>\r\n @if(_isLoadingMessage) {\r\n <span class=\"fa-fade\"> Loading </span>\r\n }\r\n\r\n @else if(gridLength().dataSourceSelected > 0) {\r\n <span>\r\n <i class=\"bi bi-check2-square ms-1\"></i>\r\n {{ gridLength().dataSourceSelected }}\r\n </span>\r\n }\r\n </span>\r\n\r\n <span class=\"me-1\"> {{ gridLength().dataSourceFiltered | numericFormat }} Rows </span>\r\n </footer>\r\n }\r\n</div>","import { IMenuOptionSelected } from \"../../interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(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 Get(): IMenuOptionSelected | 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('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { IBreadcrumb, IGoBack } from '../../../interfaces';\r\nimport { Menu } from '../../../tools/lib/menu.class';\r\n//import { navigation } from 'src/app/app-routing.sidenav';\r\n//import { Source } from 'src/app/modules/home/classes';\r\n//import { IAppNavigation, IGoBack } from 'src/app/modules/home/interfaces';\r\n\r\n@Component({\r\n selector: 'coer-page-title',\r\n templateUrl: './coer-page-title.component.html',\r\n styleUrls: ['./coer-page-title.component.scss']\r\n})\r\nexport class CoerPageTitle {\r\n\r\n @Input() title: string | null = null;\r\n @Input() showNavigation: boolean = true;\r\n @Input() breadcrumbs: IBreadcrumb[] = [];\r\n @Input() goBack: IGoBack = { show: false };\r\n @Input() showInformation: boolean = false;\r\n\r\n protected get _icon(): string {\r\n const MENU = Menu.Get();\r\n\r\n if(MENU) {\r\n const MENU_SELECTED = MENU.tree.shift();\r\n if(MENU_SELECTED && MENU_SELECTED.icon) {\r\n return MENU_SELECTED.icon;\r\n }\r\n }\r\n\r\n return 'bi bi-house-door-fill';\r\n }\r\n\r\n //Modal Information\r\n //protected showModal: boolean = false;\r\n //@Input() urlTemplate: string | null = null;\r\n //@Input() informationTitle: string = 'Information';\r\n //@Input() informationIcon: string = 'bi bi-info-circle';\r\n //@Input() informationIconColor: string = 'black';\r\n //@Input() width: string = '500px';\r\n //@Input() height: string = '430px';\r\n\r\n //ngOnInit() {\r\n // let module = Source.GetCurrentModule() as any;\r\n // if (module.module) {\r\n // module = navigation.find(x => x.text == module.module);\r\n // if (module && module.icon) this.icon = module.icon;\r\n // }\r\n //}\r\n}","<header class=\"coer-page-title\" title=''>\r\n <h2>\r\n <span> {{ title }} </span>\r\n\r\n <!-- Button Information -->\r\n <button\r\n *ngIf=\"showInformation\">\r\n <i class=\"bi bi-info-circle\"></i>\r\n </button>\r\n </h2>\r\n\r\n <!-- Navigation -->\r\n <nav *ngIf=\"showNavigation\" aria-label=\"breadcrumb\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\">\r\n <a><i [class]=\"_icon\"></i></a>\r\n </li>\r\n\r\n <li *ngFor=\"let nav of breadcrumbs\" class=\"breadcrumb-item\">\r\n <a [routerLink]='(nav.path && nav.path.length > 0) ? nav.path : null'\r\n [queryParams]='nav.queryParams'\r\n (click)=\"(nav.click) ? nav.click() : null\">\r\n {{ nav.page }}\r\n </a>\r\n </li>\r\n </ol>\r\n\r\n <!-- Go Back -->\r\n <a *ngIf=\"goBack.show\"\r\n [routerLink]=\"goBack.path\"\r\n [queryParams]='goBack.queryParams'\r\n (click)=\"(goBack.click) ? goBack.click() : null\">\r\n Go back\r\n </a>\r\n </nav>\r\n\r\n <!-- Tooltip\r\n <dx-tooltip coer-tooltip target=\"#btn-information\" text='Information'></dx-tooltip> -->\r\n</header>\r\n\r\n\r\n<!-- Information\r\n<dx-popup\r\n [(visible)]=\"showModal\"\r\n minWidth=\"500px\" minHeight=\"430px\"\r\n [width]=\"width\" [height]=\"height\"\r\n [hideOnOutsideClick]=\"true\"\r\n [resizeEnabled]=\"false\"\r\n [dragEnabled]=\"true\"\r\n (onHidden)=\"(showModal = false)\"\r\n >\r\n\r\n -- Header --\r\n <header *dxTemplate=\"let data of 'title'\">\r\n <div class=\"modal-header\">\r\n <h5> <i [class]=\"informationIcon\" [style]=\"{ 'color': informationIconColor }\"></i> {{ informationTitle }} </h5>\r\n <button (click)=\"(showModal = false)\" class=\"btn btn-close\"></button>\r\n </div>\r\n </header>\r\n\r\n -- Body --\r\n <section *dxTemplate=\"let data of 'content'\">\r\n <dx-scroll-view width=\"100%\" height=\"100%\">\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item\">Respects the order of the columns like the template.</li>\r\n\r\n <li class=\"list-group-item\">\r\n For more information<a [href]=\"urlTemplate\">click here </a>to download the template\r\n </li>\r\n </ol>\r\n </dx-scroll-view>\r\n </section>\r\n\r\n -- Button --\r\n <dxi-toolbar-item toolbar=\"bottom\" location=\"after\">\r\n <div *dxTemplate=\"let data of 'menu-item'\" class=\"h-100\">\r\n <dx-button\r\n coer-button\r\n icon=\"fa-solid fa-xmark\" text=\"CLOSE\"\r\n width=\"125px\" height=\"40px\"\r\n (onClick)=\"(showModal = false)\"\r\n color=\"red\"\r\n ></dx-button>\r\n </div>\r\n </dxi-toolbar-item>\r\n</dx-popup> -->","import { Component, ContentChildren, Input, input, OnInit, output, viewChild, computed, OnDestroy } from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { CoerRefDirective } from '../../../directives/lib/coer-ref.directive';\r\nimport { Tools } from '../../../tools/lib/tools';\r\nimport { ICoerRef } from '../../../interfaces';\r\nimport { Tooltip } from 'bootstrap';\r\n\r\n@Component({\r\n selector: 'coer-tab',\r\n templateUrl: './coer-tab.component.html',\r\n styleUrl: './coer-tab.component.scss'\r\n})\r\nexport class CoerTab implements OnInit, OnDestroy {\r\n\r\n @ContentChildren(CoerRefDirective) contentRef!: any;\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-tab');\r\n protected _selectedIndex: number = 0;\r\n private _matTabGroup!: HTMLElement;\r\n protected matTabGroup = viewChild.required<MatTabGroup>('matTabGroup');\r\n private _tooltipList: { id: string, tooltip?: Tooltip }[] = [];\r\n\r\n //Inputs\r\n public height = input<string>('auto');\r\n public minHeight = input<string>('300px');\r\n public maxHeight = input<string>('auto');\r\n\r\n @Input() set selectedIndex(value: number) {\r\n if (Tools.IsNotNull(value)) {\r\n this._selectedIndex = value;\r\n }\r\n }\r\n\r\n @Input() set alignTabs(value: 'start' | 'center' | 'end') {\r\n if(Tools.IsNotNull(this._matTabGroup)) {\r\n if (Tools.IsNotNull(value)) {\r\n this._matTabGroup.removeAttribute('mat-align-tabs');\r\n\r\n Tools.Sleep().then(() => {\r\n this._matTabGroup.setAttribute('mat-align-tabs', value);\r\n });\r\n }\r\n }\r\n\r\n else Tools.Sleep().then(() => this.alignTabs = value);\r\n }\r\n\r\n //Computed\r\n protected contentList = computed<ICoerRef[]>(() => Array.from(this.contentRef._results));\r\n\r\n //Outputs\r\n public onSelectedTab = output<ICoerRef>();\r\n\r\n ngOnInit() {\r\n this._matTabGroup = this.matTabGroup()._elementRef.nativeElement;\r\n }\r\n\r\n ngOnDestroy() {\r\n for(const _tooltip of this._tooltipList) {\r\n _tooltip.tooltip?.dispose();\r\n }\r\n }\r\n\r\n /** */\r\n protected SelectedIndexChange(selectedIndex: number) {\r\n this._selectedIndex = selectedIndex;\r\n this.onSelectedTab.emit(this.contentList()[selectedIndex]);\r\n }\r\n\r\n\r\n /** */\r\n protected GetTitle(tab: ICoerRef): string {\r\n const ref = this.contentList().find(x => x.coerRef() == tab.coerRef())!;\r\n return (ref.title().length > 0) ? ref.title() : ref.coerRef();\r\n }\r\n\r\n\r\n /** */\r\n protected GetIcon(tab: ICoerRef): string {\r\n return this.contentList().find(x => x.coerRef() == tab.coerRef())!.icon();\r\n }\r\n\r\n\r\n /** */\r\n public SelectTabBy(callback: (tab: ICoerRef) => boolean): void {\r\n const index = this.contentList().findIndex(callback as any);\r\n if(index >= 0) this._selectedIndex = index;\r\n }\r\n\r\n\r\n /** */\r\n protected SetToolTip(tab: ICoerRef): string {\r\n const id = `${this._id}-${tab.coerRef()}`;\r\n\r\n if (!this._tooltipList.some(x => x.id == id) && tab.tooltip().length > 0) {\r\n this._tooltipList.push({ id });\r\n\r\n Tools.Sleep().then(() => {\r\n const htmlElement = document.getElementById(id)!;\r\n\r\n if (htmlElement) {\r\n const tooltip = new Tooltip(htmlElement, {\r\n html: true,\r\n title: tab.tooltip(),\r\n placement: 'top'\r\n });\r\n\r\n htmlElement.addEventListener('mouseleave', () => {\r\n if (htmlElement) tooltip.hide();\r\n });\r\n\r\n const index = this._tooltipList.findIndex(x => x.id == id);\r\n if (index >= 0) this._tooltipList[index].tooltip = tooltip;\r\n }\r\n });\r\n }\r\n\r\n return id;\r\n }\r\n\r\n\r\n /** */\r\n protected RemoveTooltip(element: HTMLElement): void {\r\n const id = element.getAttribute('id');\r\n const index = this._tooltipList.findIndex(x => x.id == id);\r\n if (index >= 0) this._tooltipList.splice(index, 1);\r\n }\r\n}","<div class=\"coer-tab\">\r\n <mat-tab-group #matTabGroup\r\n mat-stretch-tabs=\"false\"\r\n [selectedIndex]=\"_selectedIndex\"\r\n (selectedIndexChange)=\"SelectedIndexChange($event)\">\r\n\r\n @for(tab of contentList(); track tab.coerRef()) {\r\n @if(tab.show()) {\r\n <mat-tab [label]=\"tab.coerRef()\" [disabled]=\"tab.isDisabled()\">\r\n <ng-template mat-tab-label>\r\n <span [id]=\"SetToolTip(tab)\" class=\"tab\" lifecycle (onDestroy)=\"RemoveTooltip($event)\">\r\n <i [class]=\"GetIcon(tab)\"></i>\r\n <span [class]=\"GetIcon(tab).length > 0 ? 'ms-2' : ''\">\r\n {{ GetTitle(tab) }}\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template matTabContent>\r\n <div class=\"tab-content\"\r\n [ngStyle]=\"{\r\n 'height': height(),\r\n 'min-height': minHeight(),\r\n 'max-height': maxHeight()\r\n }\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"tab.template\"></ng-container>\r\n </div>\r\n </ng-template>\r\n </mat-tab>\r\n }\r\n }\r\n </mat-tab-group>\r\n</div>","import { Component, computed, ElementRef, input, Input, OnInit, output, signal, viewChild } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';\r\nimport { Tools } from '../../../tools/lib/tools';\r\n\r\n@Component({\r\n selector: 'coer-textarea',\r\n templateUrl: './coer-textarea.component.html',\r\n styleUrl: './coer-textarea.component.scss',\r\n providers: [CONTROL_VALUE(CoerTextarea)]\r\n})\r\nexport class CoerTextarea extends ControlValue implements OnInit {\r\n\r\n //Component Value\r\n protected override _value: string | number = '';\r\n protected matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected coerTextBox = viewChild.required<ElementRef>('coerTextArea');\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-textArea');\r\n protected _isLoadingEvent = signal<boolean>(false);\r\n private element!: HTMLInputElement;\r\n\r\n //Inputs\r\n @Input() set value(value: string | number | null | undefined) {\r\n if(Tools.IsNull(value)) value = '';\r\n this.SetValue(value);\r\n }\r\n\r\n @Input() id: string = '';\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(2500);\r\n public width = input<string>('100%');\r\n public minWidth = input<string>('190px');\r\n public maxWidth = input<string>('100%');\r\n public marginTop = input<string>('0px');\r\n public marginRight = input<string>('0px');\r\n public marginBottom = input<string>('0px');\r\n public marginLeft = input<string>('0px');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public showFooter = input<boolean>(true);\r\n public resize = input<boolean>(false);\r\n public textPosition = input<'left' | 'center' | 'right'>('left');\r\n\r\n //Outputs\r\n public onInput = output<string | number>();\r\n\r\n ngOnInit() {\r\n this.SetEvents();\r\n }\r\n\r\n\r\n //getter\r\n public get value() {\r\n return this._value;\r\n }\r\n\r\n\r\n //getter\r\n public get footer() {\r\n return `${Tools.IsNotNull(this._value) ? String(this._value).length : '0' } / ${this.maxLength()}`;\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly();\r\n });\r\n\r\n\r\n //computed\r\n protected floatLabel = computed<'auto' | 'always'>(() => {\r\n return this.label() == '' ? 'always' : 'auto'\r\n });\r\n\r\n\r\n //computed\r\n protected paddingRight = computed(() => {\r\n return this.isInvalid() || this.isValid()\r\n ? '18px' : '0px';\r\n });\r\n\r\n\r\n /** */\r\n private SetEvents(): void {\r\n Tools.Sleep().then(()=> {\r\n this.element = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n if (this.element) {\r\n this.element.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n\r\n this.element.addEventListener('blur', () => this.Blur());\r\n\r\n this.element.addEventListener('input', () => {\r\n Tools.Sleep().then(() => {\r\n const value = this.coerTextBox().nativeElement.value;\r\n if (this._isEnable()) this.onInput.emit(value);\r\n });\r\n });\r\n\r\n\r\n this.element.addEventListener('paste', () => {\r\n Tools.Sleep().then(() => {\r\n this.SetValue(this._value.toString().trim());\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Focus(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Select(timeout: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(timeout).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n this.element.select();\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep().then(() => {\r\n if(this.element) {\r\n this.element.blur();\r\n\r\n Tools.Sleep().then(() => {\r\n const element = document.querySelector(`#${this._id}-container .mdc-line-ripple--active`);\r\n if (element) element.classList.remove('mdc-line-ripple--active');\r\n })\r\n }\r\n\r\n this._isLoadingEvent.set(false);\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Clear(): void {\r\n this.SetValue('');\r\n this.Focus();\r\n }\r\n}","<div class=\"coer-textarea\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <textarea #coerTextArea matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextArea.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition(),\r\n 'resize': (!resize() || !_isEnable()) ? 'none' : ''\r\n }\"></textarea>\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field>\r\n\r\n @if(showFooter()) {\r\n <footer> {{ footer }} </footer>\r\n }\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DirectivesModule } from '../../directives';\r\nimport { PipesModule } from '../../pipes';\r\n\r\n//Angular Material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\n//Components\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { CoerButton } from './coer-button/coer-button.component';\r\nimport { CoerCheckbox } from './coer-checkbox/coer-checkbox.component';\r\nimport { CoerFilebox } from './coer-filebox/coer-filebox.component';\r\nimport { CoerForm } from './coer-form/coer-form.component';\r\nimport { CoerGrid } from './coer-grid/coer-grid.component';\r\nimport { CoerModal } from './coer-modal/coer-modal.component';\r\nimport { CoerNumberBox } from './coer-numberbox/coer-numberbox.component';\r\nimport { CoerPageTitle } from './coer-page-title/coer-page-title.component';\r\nimport { CoerSelectbox } from './coer-selectbox/coer-selectbox.component';\r\nimport { CoerSwitch } from './coer-switch/coer-switch.component';\r\nimport { CoerTab } from './coer-tab/coer-tab.component';\r\nimport { CoerTextarea } from './coer-textarea/coer-textarea.component';\r\nimport { CoerTextBox } from './coer-textbox/coer-textbox.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n PipesModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSlideToggleModule,\r\n MatTabsModule,\r\n DirectivesModule\r\n ],\r\n declarations: [\r\n CoerAlert,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n ],\r\n exports: [\r\n CoerAlert,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n ]\r\n})\r\nexport class ComponentsModule { }","import { IGridCoerSwitch, IGridCoerTextBox, IGridItem } from \"../../../interfaces\";\r\n\r\nexport const GridTemplates = {\r\n\r\n /** 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-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-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 /** 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 /** 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}","import { signal } from '@angular/core';\r\nimport { Screen } from '../../tools/lib/screen.class';\r\nexport const breakpointSIGNAL = signal<'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>(Screen?.BREAKPOINT || 'xs');","import { signal } from \"@angular/core\";\r\nexport const isLoadingSIGNAL = signal<boolean>(false);","import { signal } from \"@angular/core\";\r\nexport const isMenuOpenSIGNAL = signal<boolean>(false);","import { signal } from \"@angular/core\";\r\nimport { IMenu } from \"../../interfaces\";\r\nexport const menuSIGNAL = signal<IMenu[]>([]);","import { IAppSource } from \"../../interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\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 /** */\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 /** */\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 /** */\r\n public 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 /** */\r\n public static Remove(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 /** */\r\n public static SetLast(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 /** */\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 { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"../../interfaces\";\r\nimport { Breadcrumbs } from \"../lib/breadcrumbs.class\";\r\nimport { Tools } from \"../lib/tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: 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(page, 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 /** */\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 /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\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 /** */\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 /** */\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 (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 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 '../../interfaces';\r\nimport { CoerAlert } from '../../components/lib/coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from '../lib/breadcrumbs.class';\r\nimport { Source } from '../lib/source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport 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 isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: 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 goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\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.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.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 let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = 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 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 = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(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 protected 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 GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(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 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 ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"../../components/lib/coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"../../interfaces\";\r\nimport { Tools } from \"../../tools/lib/tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport 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 httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\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 /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\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 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\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\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 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\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).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 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 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\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).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 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 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\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n\r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).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 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 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\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, '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 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', null);\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":["i1","i2","i3","i2.CoerModal","i3.NoImagePipe","i3.CoerButton","i4.CoerCheckbox","i5.CoerNumberBox","i6.CoerSelectbox","i7.CoerSwitch","i8.CoerTextBox","i9.HtmlPipe","i10.NumericFormatPipe","i3.LifeCycleDirective"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"coer-elements.mjs","sources":["../../../projects/coer-elements/coer-elements.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG"}
|