coer-elements 0.0.55 → 0.0.57
Sign up to get free protection for your applications and to get access to all the features.
- package/components/lib/coer-button/coer-button.component.d.ts +2 -2
- package/esm2022/components/lib/coer-button/coer-button.component.mjs +4 -6
- package/esm2022/index.mjs +37 -2
- package/esm2022/interfaces/lib/bulk-load.interface.mjs +2 -0
- package/esm2022/interfaces/lib/image.interface.mjs +2 -0
- package/esm2022/interfaces/public-api.mjs +3 -1
- package/esm2022/tools/lib/section.class.mjs +46 -0
- package/esm2022/tools/public-api.mjs +2 -1
- package/fesm2022/coer-elements-components.mjs +3 -5
- package/fesm2022/coer-elements-components.mjs.map +1 -1
- package/fesm2022/coer-elements-interfaces.mjs.map +1 -1
- package/fesm2022/coer-elements-tools.mjs +42 -2
- package/fesm2022/coer-elements-tools.mjs.map +1 -1
- package/fesm2022/coer-elements.mjs +38 -0
- package/fesm2022/coer-elements.mjs.map +1 -1
- package/index.d.ts +8 -1
- package/interfaces/lib/bulk-load.interface.d.ts +5 -0
- package/interfaces/lib/image.interface.d.ts +11 -0
- package/interfaces/public-api.d.ts +2 -0
- package/package.json +7 -7
- package/styles/coer-elements.css +0 -5
- package/styles/containers.scss +0 -2
- package/tools/lib/section.class.d.ts +24 -0
- package/tools/public-api.d.ts +1 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coer-elements-components.mjs","sources":["../../../projects/coer-elements/components/lib/coer-accordion/coer-accordion.component.ts","../../../projects/coer-elements/components/lib/coer-accordion/coer-accordion.component.html","../../../projects/coer-elements/components/lib/coer-button/coer-button.component.ts","../../../projects/coer-elements/components/lib/coer-button/coer-button.component.html","../../../projects/coer-elements/components/lib/coer-checkbox/coer-checkbox.component.ts","../../../projects/coer-elements/components/lib/coer-checkbox/coer-checkbox.component.html","../../../projects/coer-elements/components/lib/coer-modal/coer-modal.component.ts","../../../projects/coer-elements/components/lib/coer-modal/coer-modal.component.html","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox.component.ts","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox.component.html","../../../projects/coer-elements/components/lib/coer-form/coer-form.component.ts","../../../projects/coer-elements/components/lib/coer-form/coer-form.component.html","../../../projects/coer-elements/components/lib/coer-numberbox/coer-numberbox.component.ts","../../../projects/coer-elements/components/lib/coer-numberbox/coer-numberbox.component.html","../../../projects/coer-elements/components/lib/coer-selectbox/coer-selectbox.component.ts","../../../projects/coer-elements/components/lib/coer-selectbox/coer-selectbox.component.html","../../../projects/coer-elements/components/lib/coer-textbox/coer-textbox.component.ts","../../../projects/coer-elements/components/lib/coer-textbox/coer-textbox.component.html","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.extension.ts","../../../projects/coer-elements/components/lib/coer-switch/coer-switch.component.ts","../../../projects/coer-elements/components/lib/coer-switch/coer-switch.component.html","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.component.ts","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.component.html","../../../projects/coer-elements/components/lib/coer-list/coer-list.component.ts","../../../projects/coer-elements/components/lib/coer-list/coer-list.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-menu-option/coer-menu-option.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-menu-option/coer-menu-option.component.html","../../../projects/coer-elements/components/lib/coer-page-title/coer-page-title.component.ts","../../../projects/coer-elements/components/lib/coer-page-title/coer-page-title.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-tree-accordion/coer-tree-accordion.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-tree-accordion/coer-tree-accordion.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-sidenav.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-sidenav.component.html","../../../projects/coer-elements/components/lib/coer-tab/coer-tab.component.ts","../../../projects/coer-elements/components/lib/coer-tab/coer-tab.component.html","../../../projects/coer-elements/components/lib/coer-textarea/coer-textarea.component.ts","../../../projects/coer-elements/components/lib/coer-textarea/coer-textarea.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-toolbar/coer-toolbar.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-toolbar/coer-toolbar.component.html","../../../projects/coer-elements/components/lib/components.module.ts","../../../projects/coer-elements/components/coer-elements-components.ts"],"sourcesContent":["import { Component, input, Input, viewChild } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools'\r\n@Component({\r\n selector: 'coer-accordion',\r\n templateUrl: './coer-accordion.component.html',\r\n styleUrl: './coer-accordion.component.scss',\r\n})\r\nexport class CoerAccordion {\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-accordion');\r\n private _expansionPanel = viewChild<MatExpansionPanel>('coerAccordion');\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 expanded = input<boolean>(true);\r\n\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n public get isExpanded(): boolean {\r\n return Tools.IsNotNull(this._expansionPanel())\r\n ? this._expansionPanel()!.expanded\r\n : false;\r\n }\r\n\r\n\r\n public get isCollapsed(): boolean {\r\n return Tools.IsNotNull(this._expansionPanel())\r\n ? !this._expansionPanel()!.expanded\r\n : true;\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n if(this.isCollapsed) {\r\n this._expansionPanel()?.open();\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n if(this.isExpanded) {\r\n this._expansionPanel()?.close();\r\n }\r\n }\r\n }\r\n}","<mat-expansion-panel #coerAccordion class=\"coer-accordion\" [expanded]=\"expanded()\" title=\"\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n @if(IsNotOnlyWhiteSpace(icon())) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n <span>{{ title() }}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <ng-content></ng-content>\r\n </div>\r\n</mat-expansion-panel>","import { Component, computed, EventEmitter, input, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Tools } from 'coer-elements/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' | 'dark'>('default');\r\n public type = input<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>('filled');\r\n public icon = input<string>('');\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\r\n if(Tools.IsNotNull(this._tooltipElement)) {\r\n if (value) {\r\n this._tooltipElement.setContent({ '.tooltip-inner': this._tooltip });\r\n Tools.Sleep().then(() => this._tooltipElement.enable());\r\n }\r\n\r\n if (Tools.IsOnlyWhiteSpace(value)) {\r\n Tools.Sleep().then(() => this._tooltipElement.disable());\r\n }\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 case 'pointer': return 'bi bi-hand-index-thumb-fill';\r\n default: return this.icon();\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 'dark-filled' : (color() == 'dark' && 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' && type() =='outline'),\r\n 'dark-outline' : (color() == 'dark' && type() =='outline'),\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 'dark-filled' : (color() == 'dark'),\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 'dark-outline' : (color() == 'dark'),\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 'dark-outline' : (color() == 'dark'),\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 { AfterViewInit, Component, computed, Input, input, output } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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 { Component, computed, ContentChildren, input, Input, OnInit, output, WritableSignal } from '@angular/core';\r\nimport { ICoerRef, IScreenSize } from 'coer-elements/interfaces';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { isModalOpenSIGNAL } from 'coer-elements/signals';\r\nimport { Screen, Tools } from 'coer-elements/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 { CoerModal } from '../../lib/coer-modal/coer-modal.component';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces';\r\nimport { CoerAlert, Files, Tools } from 'coer-elements/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, Tools } from 'coer-elements/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, alternative: any = null): any {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? this.formGroup().get(formControlName)!.value\r\n : alternative;\r\n }\r\n\r\n\r\n /** */\r\n public HasControlValue(formControlName: string): boolean {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? Tools.IsNotOnlyWhiteSpace(this.formGroup().get(formControlName)!.value)\r\n : false;\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, CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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, Tools } from 'coer-elements/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 public onUnselect = output<void>();\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\r\n if(Tools.IsNotOnlyWhiteSpace(this._value) && Tools.IsNull(_value)) {\r\n this.onUnselect.emit();\r\n }\r\n\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 { IBoxButton } from 'coer-elements/interfaces';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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 @Input() button: IBoxButton = { show: false };\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 public onClickButton = 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\r\n //getter\r\n protected get _showButtonLeft(): boolean {\r\n return this.button.show\r\n && Tools.IsNotNull(this.button?.position) \r\n && this.button?.position === 'left'; \r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this.button.show\r\n && ((Tools.IsNull(this.button?.position) || this.button?.position === 'right'))\r\n \r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return (Tools.IsNotOnlyWhiteSpace(this.button?.icon))\r\n ? this.button.icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIsDisabled(): boolean {\r\n return (Tools.IsNotNull(this.button?.isDisabled))\r\n ? this.button.isDisabled! : false;\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 //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 @if(_showButtonLeft) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\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\r\n @if(_showButtonRight) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { IGridButtonByRow, IGridColumn, IGridDataSource, IGridImport, IGridHeaderButton, IGridHeaderExportButton, IGridKeyupEnter, IGridSearch, IGridInputSwitchChange, IGridInputTextbox, IGridSort, IGridCheckbox, IGridInputCheckbox, IGridHeader } from \"coer-elements/interfaces\";\r\nimport { AfterViewInit, Component, ElementRef, Input, computed, inject, input, output, signal, viewChild, viewChildren } from \"@angular/core\";\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 { CoerAlert, ControlValue, DateTime, Screen, Tools } from 'coer-elements/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' || height == 'full-form') {\r\n const TOOLBAR = 45;\r\n const PAGE_HEADER = 70;\r\n const FORM = (height == 'full-form') ? 70 : 0;\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 - FORM - 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 { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\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 { 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 { IGridLength, IGridInputCheckbox } from 'coer-elements/interfaces';\r\nimport { CONTROL_VALUE, Files, Tools } from 'coer-elements/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, 'spinner-border-container': true }\">\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)=\"onClickGoRow.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 { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { AfterViewInit, Component, computed, input, output } from '@angular/core'; \r\nimport { Screen, Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-list',\r\n templateUrl: './coer-list.component.html',\r\n styleUrl: './coer-list.component.scss',\r\n})\r\nexport class CoerList<T> implements AfterViewInit { \r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-List');\r\n protected _enableAnimations: boolean = false;\r\n\r\n //Inputs\r\n public dataSource = input<T[]>([]);\r\n public propDisplay = input<string>('name');\r\n public header = input<string>('');\r\n public headerIcon = input<string>('');\r\n public showDeleteButton = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showGoButton = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showBackButton = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDraggable = input<boolean>(false);\r\n public showSearch = input<boolean>(false);\r\n public template = input<((item: T, index: number) => string) | null>(null);\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 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\r\n //Outputs\r\n public onDrop = output<T>(); \r\n public onSort = output<T[]>(); \r\n public onClick = output<T>();\r\n public onDoubleClick = output<T>();\r\n public onClickDelete = output<T>();\r\n public onClickGo = output<T>();\r\n public onClickBack = output<void>();\r\n\r\n //computed\r\n protected _dataSource = computed<T[]>(() => {\r\n let index = 0; \r\n return Tools.BreakReference(this.dataSource())\r\n .map((item: any) => Object.assign(item, { index: index++ }));\r\n });\r\n\r\n\r\n //computed\r\n protected _isDraggable = computed<boolean>(() => {\r\n return this.isDraggable() && !this.isLoading();\r\n }); \r\n\r\n\r\n //computed\r\n protected _hasTemplate = computed<boolean>(() => { \r\n return typeof this.template() == 'function';\r\n });\r\n\r\n\r\n //computed\r\n protected _showbuttons = computed<boolean>(() => { \r\n return !this.isLoading();\r\n });\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 LIST_HEADER = document.getElementById(`${this._id}-header`)!;\r\n const HEADER = (LIST_HEADER && LIST_HEADER.children.length > 0) ? 50 : 0;\r\n\r\n const MARGIN = 50;\r\n const PADDING = 50;\r\n height = (Screen.WINDOW_HEIGHT - TOOLBAR - PAGE_HEADER - MARGIN - HEADER - PADDING) + 'px';\r\n }\r\n\r\n return height;\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n Tools.Sleep().then(() => {\r\n this._enableAnimations = true; \r\n });\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 GetIndexRow = (item: any): number => {\r\n return item['index'];\r\n }\r\n\r\n\r\n /** */\r\n protected GetTemplate(item: any): string { \r\n return this.template()!(item, item.index);\r\n }\r\n\r\n\r\n /** */\r\n protected _showBackButton = (): boolean => { \r\n return this.showBackButton()\r\n && !this.isLoading() \r\n }\r\n\r\n\r\n /** */\r\n protected _showDeleteButton = (item: any): boolean => { \r\n const showButton = this.showDeleteButton() as any; \r\n return (typeof showButton === 'boolean')\r\n ? showButton && !this.isLoading()\r\n : showButton(item, item.index) === true && !this.isLoading(); \r\n }\r\n\r\n\r\n /** */\r\n protected _showGoButton = (item: any): boolean => { \r\n const showButton = this.showGoButton() as any; \r\n return (typeof showButton === 'boolean')\r\n ? showButton && !this.isLoading()\r\n : showButton(item, item.index) === true && !this.isLoading(); \r\n }\r\n\r\n\r\n /** */\r\n protected Drop(event: CdkDragDrop<T[]>): void {\r\n const { previousIndex, currentIndex } = event; \r\n let dataSource = Tools.BreakReference(this.dataSource());\r\n const item = Tools.BreakReference(dataSource[previousIndex]);\r\n dataSource.splice(previousIndex, 1);\r\n dataSource.splice(currentIndex, 0, item); \r\n this.onSort.emit(dataSource);\r\n this.onDrop.emit(item);\r\n }\r\n}","<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\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(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto me-auto\">\r\n <h6>\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n\r\n @if(_showBackButton()) {\r\n <div class=\"col-auto ps-2 pe-0\"> \r\n <coer-button\r\n type=\"icon-outline\"\r\n color=\"secondary\"\r\n icon=\"back\"\r\n tooltip=\"Back\"\r\n [animation]=\"_enableAnimations\"\r\n (onClick)=\"onClickBack.emit()\"\r\n ></coer-button> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"col-auto pe-0\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>","import { AfterContentInit, Component, EventEmitter, Input, Output, inject } from '@angular/core';\r\nimport { IMenu, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { Tools, Source } from 'coer-elements/tools';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'coer-menu-option',\r\n templateUrl: './coer-menu-option.component.html',\r\n styleUrl: './coer-menu-option.component.scss'\r\n})\r\nexport class CoerMenuOption implements AfterContentInit {\r\n\r\n //Injects\r\n private _router = inject(Router);\r\n\r\n //Inputs\r\n @Input() level: number = 1;\r\n @Input() label: string = '';\r\n @Input() icon!: undefined | string;\r\n @Input() path!: undefined | string;\r\n @Input() tree: IMenu[] = [];\r\n\r\n //Outputs\r\n @Output() clickMenuOption = new EventEmitter<IMenuOptionSelected>();\r\n\r\n ngAfterContentInit() {\r\n setTimeout(async () => {\r\n while (['', '/'].includes(this._router.url)) {\r\n await Tools.Sleep(100);\r\n }\r\n\r\n let queryParams = '';\r\n let routerURL = this._router.url;\r\n\r\n if (this._router.url.includes('?')) {\r\n routerURL = this._router.url.split('?')[0];\r\n queryParams = this._router.url.split('?')[1];\r\n }\r\n\r\n if (routerURL == this.path) {\r\n this.ClickMenuOption(queryParams, false);\r\n }\r\n });\r\n }\r\n\r\n\r\n protected get _icon(): string {\r\n return (this.icon && this.icon.length > 0)\r\n ? this.icon : '';\r\n }\r\n\r\n\r\n protected get _path(): string {\r\n return (this.path && this.path.length > 0)\r\n ? this.path : '/home';\r\n }\r\n\r\n\r\n protected get _tree(): IMenu[] {\r\n return [...this.tree].concat({\r\n label: this.label,\r\n icon: this._icon,\r\n path: this._path\r\n })\r\n }\r\n\r\n\r\n protected get marginLeft(): string {\r\n return this.level == 3\r\n ? `${(this.level - 1) * 10}px`\r\n : `${(this.level - 1) * 20}px`;\r\n }\r\n\r\n\r\n protected get identityClass(): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < this.tree.length; i++) {\r\n identity += `lv${i + 1}${this.tree[i].label}-`;\r\n }\r\n\r\n identity += `lv${this.level}${this.label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n public ClickMenuOption(queryParams: string, resetSource: boolean = true) {\r\n if (resetSource) {\r\n let routerURL = this._router.url;\r\n\r\n if (this._router.url.includes('?')) {\r\n routerURL = this._router.url.split('?')[0];\r\n }\r\n\r\n if (routerURL != this.path) {\r\n Source.Reset();\r\n }\r\n }\r\n\r\n this.clickMenuOption.emit({\r\n level: this.level,\r\n label: this.label,\r\n path: this._path,\r\n icon: this._icon,\r\n tree: [...this._tree],\r\n queryParams: queryParams\r\n })\r\n }\r\n}","<mat-nav-list class=\"coer-menu-option\" (click)=\"ClickMenuOption('')\">\r\n <mat-list-item>\r\n <span [class]=\"'icon-container ' + identityClass\" [ngStyle]=\"{ 'margin-left': marginLeft }\">\r\n <i [class]=\"_icon\"></i>\r\n </span>\r\n\r\n <span [class]=\"'label-container ' + identityClass\">\r\n {{ label }}\r\n </span>\r\n </mat-list-item>\r\n</mat-nav-list>","import { Component, Input } from '@angular/core';\r\nimport { IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { Menu } from 'coer-elements/tools';\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.GetSelectedOption();\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, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-tree-accordion',\r\n templateUrl: './coer-tree-accordion.component.html',\r\n styleUrl: './coer-tree-accordion.component.scss'\r\n})\r\nexport class CoerTreeAccordion {\r\n\r\n @ViewChild('expansionPanel') expansionPanel!: MatExpansionPanel;\r\n @ViewChildren(CoerTreeAccordion) menuList!: QueryList<CoerTreeAccordion>;\r\n\r\n //Variables\r\n public isExpanded: boolean = false;\r\n public isCollapsed: boolean = true;\r\n\r\n //Inputs\r\n @Input() level: number = 1;\r\n @Input() item!: IMenu;\r\n @Input() tree: IMenu[] = [];\r\n\r\n //Outputs\r\n @Output() clickMenuOption = new EventEmitter<IMenuOptionSelected>();\r\n @Output() clickMenu = new EventEmitter<IMenuSelected>();\r\n\r\n protected get _tree(): IMenu[] {\r\n return [...this.tree].concat([{...this.item}]);\r\n }\r\n\r\n protected get _icon(): string {\r\n return (this.item && this.item.hasOwnProperty('icon') && this.item.icon!.length > 0)\r\n ? this.item.icon! : 'fa-solid fa-bars';\r\n }\r\n\r\n\r\n protected get marginLeft(): string {\r\n return `${(this.level - 1) * 20}px`;\r\n }\r\n\r\n\r\n protected get identityClass(): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < this.tree.length; i++) {\r\n identity += `lv${i + 1}${this.tree[i].label}-`;\r\n }\r\n\r\n identity += `lv${this.level}${this.item.label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n protected IsActive = (element: Element): boolean => {\r\n return (this.isExpanded && this.level > 1)\r\n || (this.isCollapsed && element.classList.contains('active-link'))\r\n }\r\n\r\n\r\n /** */\r\n protected IsMenu = (item: IMenu): boolean => item.hasOwnProperty('items') && Tools.IsNotOnlyWhiteSpace(item.items);\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if(this.isExpanded) {\r\n this.isExpanded = false;\r\n this.isCollapsed = true;\r\n this.expansionPanel.close();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n if(this.isCollapsed) {\r\n this.isExpanded = true;\r\n this.isCollapsed = false;\r\n this.expansionPanel.open();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected Toggle(): void {\r\n this.isExpanded = !this.isExpanded;\r\n this.isCollapsed = !this.isCollapsed;\r\n\r\n this.clickMenu.emit({\r\n level: this.level,\r\n label: this.item.label,\r\n isExpanded: this.isExpanded,\r\n isCollapsed: this.isCollapsed,\r\n items: this.item.items,\r\n icon: this._icon,\r\n tree: [...this._tree]\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected ClickMenuOption(menuOption: IMenuOptionSelected): void {\r\n for(const menu of this.menuList.toArray()) {\r\n if(menu.item.label != menuOption.tree[this.level].label) {\r\n menu.Close();\r\n }\r\n }\r\n\r\n this.clickMenuOption.emit(menuOption);\r\n }\r\n\r\n\r\n /** */\r\n protected ClickMenu(menu: IMenuSelected): void {\r\n for(const menuLv2 of this.menuList.toArray()) {\r\n if (menuLv2.item.label != menu.label) menuLv2.Close();\r\n }\r\n\r\n this.clickMenu.emit(menu);\r\n }\r\n}","<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel [class]=\"'coer-tree-accordion-' + identityClass\">\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>","import { Component, WritableSignal, inject, viewChild, viewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected, IScreenSize } from 'coer-elements/interfaces';\r\nimport { CoerTreeAccordion } from './coer-tree-accordion/coer-tree-accordion.component';\r\nimport { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL, isLoadingSIGNAL } from 'coer-elements/signals';\r\nimport { Tools, Breadcrumbs, Menu, Screen } from 'coer-elements/tools';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'coer-sidenav',\r\n templateUrl: './coer-sidenav.component.html',\r\n styleUrl: './coer-sidenav.component.scss'\r\n})\r\nexport class CoerSidenav {\r\n\r\n //Injections\r\n private _router = inject(Router);\r\n\r\n //signals\r\n protected isOpen: WritableSignal<boolean> = isMenuOpenSIGNAL;\r\n protected _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected _navigation: WritableSignal<IMenu[]> = navigationSIGNAL;\r\n protected _isLoading: WritableSignal<boolean> = isLoadingSIGNAL;\r\n\r\n //Elements\r\n protected sidenav = viewChild.required<MatDrawer>('matSidenav');\r\n protected menuList = viewChildren(CoerTreeAccordion);\r\n\r\n //getter\r\n protected get backdrop(): boolean {\r\n return ['xs', 'sm', 'md'].includes(breakpointSIGNAL());\r\n }\r\n\r\n //getter\r\n protected get mode(): 'over' | 'push' {\r\n return ['xs', 'sm', 'md'].includes(breakpointSIGNAL()) ? 'over' : 'push';\r\n }\r\n\r\n //getter\r\n protected get showAsideMenu(): boolean {\r\n return ['xl', 'xxl'].includes(breakpointSIGNAL()) && !this.isOpen()\r\n }\r\n\r\n constructor() {\r\n this.BackButtonBrowser();\r\n\r\n this.isOpen.set(['xxl'].includes(Screen.BREAKPOINT));\r\n\r\n Screen.Resize.subscribe({\r\n next: ({ breakpoin }: IScreenSize) => {\r\n breakpointSIGNAL.set(breakpoin);\r\n if(this.backdrop) this.Close();\r\n }\r\n }); \r\n } \r\n\r\n\r\n /** */\r\n protected NavigateTo(selectedOption: IMenuOptionSelected) {\r\n let url = `${selectedOption.path}`;\r\n if (selectedOption.queryParams.length > 0) url += `?${selectedOption.queryParams}`;\r\n this._router.navigateByUrl(url);\r\n\r\n //Set active link\r\n this.SetActiveLink(selectedOption);\r\n\r\n //Close Menu\r\n if(selectedOption.level == 1) {\r\n for(const menuLv1 of this.menuList()) {\r\n for(const menuLv2 of menuLv1.menuList.toArray()) {\r\n menuLv2.Close();\r\n }\r\n menuLv1.Close();\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public SetActiveLink(selectedOption: IMenuOptionSelected | null): void {\r\n if (selectedOption) {\r\n selectedOption = Tools.BreakReference(selectedOption);\r\n Menu.SetSelectedOption(selectedOption);\r\n\r\n let collection: Element[] = [];\r\n collection = collection.concat(Array.from(document.querySelectorAll('mat-drawer-container span.icon-container')));\r\n collection = collection.concat(Array.from(document.querySelectorAll('mat-drawer-container span.label-container')));\r\n\r\n //Remove active-link\r\n for(const element of collection) {\r\n if(element.classList.contains('active-link')) {\r\n element.classList.remove('active-link');\r\n }\r\n }\r\n\r\n //Add active-link\r\n const levels = selectedOption.tree.length;\r\n for(let i = 0; i < levels; i++) {\r\n for(const element of collection) {\r\n const identityClass = this.GetIdentityClass(selectedOption.tree);\r\n if (element.classList.contains(identityClass)) {\r\n element.classList.add('active-link');\r\n }\r\n }\r\n\r\n selectedOption.tree.pop();\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Open(event: MouseEvent, item: IMenu | null = null): void {\r\n event.stopPropagation();\r\n\r\n if (!this.isOpen()) {\r\n this.isOpen.set(true);\r\n this.sidenav().open();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n this.sidenav().close();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Toggle(): void {\r\n this.sidenav().toggle();\r\n }\r\n\r\n\r\n /** */\r\n protected MenuSelected(selectedMenu: IMenuSelected) {\r\n if (selectedMenu.level == 1) {\r\n for(const menuLv1 of this.menuList()) {\r\n if(menuLv1.item.label != selectedMenu.label) {\r\n\r\n for(const menuLv2 of menuLv1.menuList.toArray()) {\r\n menuLv2.Close();\r\n }\r\n\r\n menuLv1.Close();\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected IsMenu = (item: IMenu): boolean => item.hasOwnProperty('items') && Tools.IsNotOnlyWhiteSpace(item.items);\r\n\r\n\r\n /** */\r\n protected GetIcon = (item: IMenu): string => {\r\n if (item && item.hasOwnProperty('icon') && item.icon!.length > 0) {\r\n return item.icon!\r\n }\r\n\r\n return this.IsMenu(item)\r\n ? 'fa-solid fa-bars'\r\n : 'bi bi-record-fill';\r\n }\r\n\r\n\r\n /** */\r\n protected SetIdentityClass = (label: String): string => {\r\n let identity = `lv1${label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n private GetIdentityClass(tree: IMenu[]): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < tree.length; i++) {\r\n identity += `lv${i + 1}${tree[i].label}-`;\r\n }\r\n\r\n if(identity.endsWith('-')) identity = identity.slice(0, -1);\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n private BackButtonBrowser() {\r\n const QUERY_SELECTOR = 'coer-menu-option[ng-reflect-path=\"[path]\"] mat-nav-list.coer-menu-option';\r\n\r\n Screen.BackButtonBrowser.subscribe(toPath => {\r\n if (toPath.includes('/#/')) toPath = toPath.split('/#')[1];\r\n if (toPath.includes('?')) toPath = toPath.split('?')[0];\r\n\r\n //Validate path\r\n for (const module of navigationSIGNAL()) {\r\n if (module.items) for (const subModule of module.items) {\r\n //Level Three\r\n if (subModule.items) {\r\n for(const item of subModule.items) if (item.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n //Level Two\r\n else if (subModule.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n //Level One\r\n else if (module.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n Breadcrumbs.Remove(toPath);\r\n });\r\n }\r\n}","<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) {\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n \r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n \r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"Empty\"\r\n icon=\"fa-solid fa-face-meh\"\r\n ></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"fa-solid fa-sync fa-spin\"\r\n ></coer-menu-option>\r\n }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>","import { Component, ContentChildren, Input, input, OnInit, output, viewChild, computed, OnDestroy } from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { Tools } from 'coer-elements/tools';\r\nimport { ICoerRef } from 'coer-elements/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, Tools } from 'coer-elements/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 { Component, EventEmitter, input, Output, WritableSignal } from '@angular/core';\r\nimport { isModalOpenSIGNAL, isMenuOpenSIGNAL } from 'coer-elements/signals';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-toolbar',\r\n templateUrl: './coer-toolbar.component.html',\r\n styleUrl: './coer-toolbar.component.scss'\r\n})\r\nexport class CoerToolbar {\r\n\r\n //variables\r\n protected isLoading: boolean = false;\r\n protected _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n\r\n //Inputs\r\n public appName = input<string>('');\r\n\r\n //Outputs\r\n @Output() onClick = new EventEmitter<MouseEvent>();\r\n\r\n protected ToogleSideNave(event: MouseEvent): void {\r\n this.isLoading = true;\r\n this.onClick.emit(event);\r\n isMenuOpenSIGNAL.set(!isMenuOpenSIGNAL());\r\n Tools.Sleep(500, 'ToogleSideNave').then(() => this.isLoading = false);\r\n }\r\n}","<div id=\"coer-tool-bar\" [ngClass]=\"{ 'position-relative': _isModalOpen() }\">\r\n <mat-toolbar>\r\n <coer-button\r\n type=\"icon\"\r\n icon=\"menu\"\r\n [isLoading]=\"isLoading\"\r\n (onClick)=\"ToogleSideNave($event)\"\r\n ></coer-button>\r\n\r\n <span> {{ appName() }} </span>\r\n\r\n <span class=\"fill-space\"></span>\r\n </mat-toolbar>\r\n\r\n <div class=\"shadow\"></div>\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 'coer-elements/directives';\r\nimport { PipesModule } from 'coer-elements/pipes';\r\nimport { CdkDrag, CdkDragPlaceholder, CdkDragHandle, CdkDropList } from '@angular/cdk/drag-drop';\r\n\r\n//Angular Material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent, } from '@angular/material/sidenav';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n//Components\r\nimport { CoerAccordion } from './coer-accordion/coer-accordion.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 { CoerList } from './coer-list/coer-list.component';\r\nimport { CoerMenuOption } from './coer-sidenav/coer-menu-option/coer-menu-option.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 { CoerSidenav } from './coer-sidenav/coer-sidenav.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\nimport { CoerToolbar } from './coer-sidenav/coer-toolbar/coer-toolbar.component';\r\nimport { CoerTreeAccordion } from './coer-sidenav/coer-tree-accordion/coer-tree-accordion.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CdkDrag, \r\n CdkDragHandle,\r\n CdkDragPlaceholder,\r\n CdkDropList, \r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatDrawerContainer,\r\n MatDrawerContent,\r\n MatDrawer,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n MatTabsModule,\r\n DirectivesModule,\r\n PipesModule\r\n ],\r\n declarations: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList,\r\n CoerMenuOption,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n CoerToolbar,\r\n CoerTreeAccordion\r\n ],\r\n exports: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n CoerToolbar,\r\n CoerTreeAccordion \r\n ]\r\n})\r\nexport class ComponentsModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i2.CoerModal","i4.CoerButton","i3.CoerButton","i4.CoerCheckbox","i5.CoerNumberBox","i6.CoerSelectbox","i7.CoerSwitch","i8.CoerTextBox","i4.CoerTextBox","i5","i3.CoerMenuOption","i4.CoerTreeAccordion"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"coer-elements-components.mjs","sources":["../../../projects/coer-elements/components/lib/coer-accordion/coer-accordion.component.ts","../../../projects/coer-elements/components/lib/coer-accordion/coer-accordion.component.html","../../../projects/coer-elements/components/lib/coer-button/coer-button.component.ts","../../../projects/coer-elements/components/lib/coer-button/coer-button.component.html","../../../projects/coer-elements/components/lib/coer-checkbox/coer-checkbox.component.ts","../../../projects/coer-elements/components/lib/coer-checkbox/coer-checkbox.component.html","../../../projects/coer-elements/components/lib/coer-modal/coer-modal.component.ts","../../../projects/coer-elements/components/lib/coer-modal/coer-modal.component.html","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox.component.ts","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox.component.html","../../../projects/coer-elements/components/lib/coer-form/coer-form.component.ts","../../../projects/coer-elements/components/lib/coer-form/coer-form.component.html","../../../projects/coer-elements/components/lib/coer-numberbox/coer-numberbox.component.ts","../../../projects/coer-elements/components/lib/coer-numberbox/coer-numberbox.component.html","../../../projects/coer-elements/components/lib/coer-selectbox/coer-selectbox.component.ts","../../../projects/coer-elements/components/lib/coer-selectbox/coer-selectbox.component.html","../../../projects/coer-elements/components/lib/coer-textbox/coer-textbox.component.ts","../../../projects/coer-elements/components/lib/coer-textbox/coer-textbox.component.html","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.extension.ts","../../../projects/coer-elements/components/lib/coer-switch/coer-switch.component.ts","../../../projects/coer-elements/components/lib/coer-switch/coer-switch.component.html","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.component.ts","../../../projects/coer-elements/components/lib/coer-grid/coer-grid.component.html","../../../projects/coer-elements/components/lib/coer-list/coer-list.component.ts","../../../projects/coer-elements/components/lib/coer-list/coer-list.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-menu-option/coer-menu-option.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-menu-option/coer-menu-option.component.html","../../../projects/coer-elements/components/lib/coer-page-title/coer-page-title.component.ts","../../../projects/coer-elements/components/lib/coer-page-title/coer-page-title.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-tree-accordion/coer-tree-accordion.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-tree-accordion/coer-tree-accordion.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-sidenav.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-sidenav.component.html","../../../projects/coer-elements/components/lib/coer-tab/coer-tab.component.ts","../../../projects/coer-elements/components/lib/coer-tab/coer-tab.component.html","../../../projects/coer-elements/components/lib/coer-textarea/coer-textarea.component.ts","../../../projects/coer-elements/components/lib/coer-textarea/coer-textarea.component.html","../../../projects/coer-elements/components/lib/coer-sidenav/coer-toolbar/coer-toolbar.component.ts","../../../projects/coer-elements/components/lib/coer-sidenav/coer-toolbar/coer-toolbar.component.html","../../../projects/coer-elements/components/lib/components.module.ts","../../../projects/coer-elements/components/coer-elements-components.ts"],"sourcesContent":["import { Component, input, Input, viewChild } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools'\r\n@Component({\r\n selector: 'coer-accordion',\r\n templateUrl: './coer-accordion.component.html',\r\n styleUrl: './coer-accordion.component.scss',\r\n})\r\nexport class CoerAccordion {\r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-accordion');\r\n private _expansionPanel = viewChild<MatExpansionPanel>('coerAccordion');\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 expanded = input<boolean>(true);\r\n\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n public get isExpanded(): boolean {\r\n return Tools.IsNotNull(this._expansionPanel())\r\n ? this._expansionPanel()!.expanded\r\n : false;\r\n }\r\n\r\n\r\n public get isCollapsed(): boolean {\r\n return Tools.IsNotNull(this._expansionPanel())\r\n ? !this._expansionPanel()!.expanded\r\n : true;\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n if(this.isCollapsed) {\r\n this._expansionPanel()?.open();\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n if(this.isExpanded) {\r\n this._expansionPanel()?.close();\r\n }\r\n }\r\n }\r\n}","<mat-expansion-panel #coerAccordion class=\"coer-accordion\" [expanded]=\"expanded()\" title=\"\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n @if(IsNotOnlyWhiteSpace(icon())) {\r\n <i [class]=\"icon()\"></i>\r\n }\r\n <span>{{ title() }}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div>\r\n <ng-content></ng-content>\r\n </div>\r\n</mat-expansion-panel>","import { Component, computed, input, Input, OnDestroy, OnInit, output, Output } from '@angular/core';\r\nimport { Tools } from 'coer-elements/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' | 'dark'>('default');\r\n public type = input<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>('filled');\r\n public icon = input<string>('');\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\r\n if(Tools.IsNotNull(this._tooltipElement)) {\r\n if (value) {\r\n this._tooltipElement.setContent({ '.tooltip-inner': this._tooltip });\r\n Tools.Sleep().then(() => this._tooltipElement.enable());\r\n }\r\n\r\n if (Tools.IsOnlyWhiteSpace(value)) {\r\n Tools.Sleep().then(() => this._tooltipElement.disable());\r\n }\r\n }\r\n }\r\n\r\n //Outputs \r\n public onClick = output<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 case 'pointer': return 'bi bi-hand-index-thumb-fill';\r\n default: return this.icon();\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 'dark-filled' : (color() == 'dark' && 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' && type() =='outline'),\r\n 'dark-outline' : (color() == 'dark' && type() =='outline'),\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 'dark-filled' : (color() == 'dark'),\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 'dark-outline' : (color() == 'dark'),\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 'dark-outline' : (color() == 'dark'),\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 { AfterViewInit, Component, computed, Input, input, output } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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 { Component, computed, ContentChildren, input, Input, OnInit, output, WritableSignal } from '@angular/core';\r\nimport { ICoerRef, IScreenSize } from 'coer-elements/interfaces';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { isModalOpenSIGNAL } from 'coer-elements/signals';\r\nimport { Screen, Tools } from 'coer-elements/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 { CoerModal } from '../../lib/coer-modal/coer-modal.component';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces';\r\nimport { CoerAlert, Files, Tools } from 'coer-elements/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, Tools } from 'coer-elements/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, alternative: any = null): any {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? this.formGroup().get(formControlName)!.value\r\n : alternative;\r\n }\r\n\r\n\r\n /** */\r\n public HasControlValue(formControlName: string): boolean {\r\n return Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? Tools.IsNotOnlyWhiteSpace(this.formGroup().get(formControlName)!.value)\r\n : false;\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, CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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, Tools } from 'coer-elements/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 public onUnselect = output<void>();\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\r\n if(Tools.IsNotOnlyWhiteSpace(this._value) && Tools.IsNull(_value)) {\r\n this.onUnselect.emit();\r\n }\r\n\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 { IBoxButton } from 'coer-elements/interfaces';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/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 @Input() button: IBoxButton = { show: false };\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 public onClickButton = 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\r\n //getter\r\n protected get _showButtonLeft(): boolean {\r\n return this.button.show\r\n && Tools.IsNotNull(this.button?.position) \r\n && this.button?.position === 'left'; \r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this.button.show\r\n && ((Tools.IsNull(this.button?.position) || this.button?.position === 'right'))\r\n \r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return (Tools.IsNotOnlyWhiteSpace(this.button?.icon))\r\n ? this.button.icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIsDisabled(): boolean {\r\n return (Tools.IsNotNull(this.button?.isDisabled))\r\n ? this.button.isDisabled! : false;\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 //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 @if(_showButtonLeft) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\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\r\n @if(_showButtonRight) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { IGridButtonByRow, IGridColumn, IGridDataSource, IGridImport, IGridHeaderButton, IGridHeaderExportButton, IGridKeyupEnter, IGridSearch, IGridInputSwitchChange, IGridInputTextbox, IGridSort, IGridCheckbox, IGridInputCheckbox, IGridHeader } from \"coer-elements/interfaces\";\r\nimport { AfterViewInit, Component, ElementRef, Input, computed, inject, input, output, signal, viewChild, viewChildren } from \"@angular/core\";\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 { CoerAlert, ControlValue, DateTime, Screen, Tools } from 'coer-elements/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' || height == 'full-form') {\r\n const TOOLBAR = 45;\r\n const PAGE_HEADER = 70;\r\n const FORM = (height == 'full-form') ? 70 : 0;\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 - FORM - 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 { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\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 { 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 { IGridLength, IGridInputCheckbox } from 'coer-elements/interfaces';\r\nimport { CONTROL_VALUE, Files, Tools } from 'coer-elements/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, 'spinner-border-container': true }\">\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)=\"onClickGoRow.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 { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { AfterViewInit, Component, computed, input, output } from '@angular/core'; \r\nimport { Screen, Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-list',\r\n templateUrl: './coer-list.component.html',\r\n styleUrl: './coer-list.component.scss',\r\n})\r\nexport class CoerList<T> implements AfterViewInit { \r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-List');\r\n protected _enableAnimations: boolean = false;\r\n\r\n //Inputs\r\n public dataSource = input<T[]>([]);\r\n public propDisplay = input<string>('name');\r\n public header = input<string>('');\r\n public headerIcon = input<string>('');\r\n public showDeleteButton = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showGoButton = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showBackButton = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDraggable = input<boolean>(false);\r\n public showSearch = input<boolean>(false);\r\n public template = input<((item: T, index: number) => string) | null>(null);\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 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\r\n //Outputs\r\n public onDrop = output<T>(); \r\n public onSort = output<T[]>(); \r\n public onClick = output<T>();\r\n public onDoubleClick = output<T>();\r\n public onClickDelete = output<T>();\r\n public onClickGo = output<T>();\r\n public onClickBack = output<void>();\r\n\r\n //computed\r\n protected _dataSource = computed<T[]>(() => {\r\n let index = 0; \r\n return Tools.BreakReference(this.dataSource())\r\n .map((item: any) => Object.assign(item, { index: index++ }));\r\n });\r\n\r\n\r\n //computed\r\n protected _isDraggable = computed<boolean>(() => {\r\n return this.isDraggable() && !this.isLoading();\r\n }); \r\n\r\n\r\n //computed\r\n protected _hasTemplate = computed<boolean>(() => { \r\n return typeof this.template() == 'function';\r\n });\r\n\r\n\r\n //computed\r\n protected _showbuttons = computed<boolean>(() => { \r\n return !this.isLoading();\r\n });\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 LIST_HEADER = document.getElementById(`${this._id}-header`)!;\r\n const HEADER = (LIST_HEADER && LIST_HEADER.children.length > 0) ? 50 : 0;\r\n\r\n const MARGIN = 50;\r\n const PADDING = 50;\r\n height = (Screen.WINDOW_HEIGHT - TOOLBAR - PAGE_HEADER - MARGIN - HEADER - PADDING) + 'px';\r\n }\r\n\r\n return height;\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n Tools.Sleep().then(() => {\r\n this._enableAnimations = true; \r\n });\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 GetIndexRow = (item: any): number => {\r\n return item['index'];\r\n }\r\n\r\n\r\n /** */\r\n protected GetTemplate(item: any): string { \r\n return this.template()!(item, item.index);\r\n }\r\n\r\n\r\n /** */\r\n protected _showBackButton = (): boolean => { \r\n return this.showBackButton()\r\n && !this.isLoading() \r\n }\r\n\r\n\r\n /** */\r\n protected _showDeleteButton = (item: any): boolean => { \r\n const showButton = this.showDeleteButton() as any; \r\n return (typeof showButton === 'boolean')\r\n ? showButton && !this.isLoading()\r\n : showButton(item, item.index) === true && !this.isLoading(); \r\n }\r\n\r\n\r\n /** */\r\n protected _showGoButton = (item: any): boolean => { \r\n const showButton = this.showGoButton() as any; \r\n return (typeof showButton === 'boolean')\r\n ? showButton && !this.isLoading()\r\n : showButton(item, item.index) === true && !this.isLoading(); \r\n }\r\n\r\n\r\n /** */\r\n protected Drop(event: CdkDragDrop<T[]>): void {\r\n const { previousIndex, currentIndex } = event; \r\n let dataSource = Tools.BreakReference(this.dataSource());\r\n const item = Tools.BreakReference(dataSource[previousIndex]);\r\n dataSource.splice(previousIndex, 1);\r\n dataSource.splice(currentIndex, 0, item); \r\n this.onSort.emit(dataSource);\r\n this.onDrop.emit(item);\r\n }\r\n}","<div [id]=\"_id\" class=\"coer-list\" [ngStyle]=\"{ \r\n 'margin-top': marginTop(), \r\n 'margin-right': marginRight(), \r\n 'margin-bottom': marginBottom(), \r\n 'margin-left': marginLeft(), \r\n }\">\r\n\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(dataSource().length <= 0) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n\r\n <header [id]=\"_id + '-header'\" class=\"row\"> \r\n @if(header().length > 0 || headerIcon().length > 0) {\r\n <div class=\"col-auto me-auto\">\r\n <h6>\r\n @if(headerIcon().length > 0) {\r\n <i [class]=\"headerIcon()\"></i> \r\n }\r\n\r\n @if(header().length > 0) {\r\n <span>{{ header() }}</span> \r\n }\r\n </h6> \r\n </div>\r\n }\r\n\r\n @if(_showBackButton()) {\r\n <div class=\"col-auto ps-2 pe-0\"> \r\n <coer-button\r\n type=\"icon-outline\"\r\n color=\"secondary\"\r\n icon=\"back\"\r\n tooltip=\"Back\"\r\n [animation]=\"_enableAnimations\"\r\n (onClick)=\"onClickBack.emit()\"\r\n ></coer-button> \r\n </div>\r\n }\r\n \r\n <!-- Search -->\r\n @if(showSearch() && dataSource().length > 0) {\r\n <div class=\"col-auto pe-0\">\r\n <coer-textbox\r\n #inputSearch \r\n placeholder=\"Search\"\r\n [isDisabled]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n width=\"250px\"\r\n marginTop=\"5px\"\r\n marginBottom=\"5px\"\r\n [showSearchIcon]=\"true\"\r\n [showClearIcon]=\"true\"\r\n ></coer-textbox>\r\n </div>\r\n }\r\n </header>\r\n\r\n <div [ngStyle]=\"{ \r\n 'width': width(), \r\n 'min-Width': MinWidth(), \r\n 'max-Width': MaxWidth(), \r\n }\">\r\n <ul cdkDropList (cdkDropListDropped)=\"Drop($event)\" class='list-group coer-list'\r\n [ngStyle]=\"{ \r\n 'height': _height, \r\n 'min-height': minHeight(), \r\n 'max-height': maxHeight(), \r\n 'd-none': dataSource().length <= 0 \r\n }\">\r\n \r\n @for (item of _dataSource(); track GetIndexRow(item)) {\r\n <li cdkDrag \r\n class=\"list-group-item coer-list-box\" \r\n cdkDragBoundary=\"ul.coer-list\"\r\n (click)=\"onClick.emit(item)\" \r\n (dblclick)=\"onDoubleClick.emit(item)\">\r\n \r\n <div *cdkDragPlaceholder class=\"coer-list-placeholder cursor-grabbing\"></div>\r\n <div class=\"coer-list-content\"> \r\n @if(_hasTemplate()) {\r\n <div [innerHTML]=\"GetTemplate(item) | html\" class=\"template\"></div>\r\n }\r\n \r\n @else {\r\n <div> {{ GetDisplay(item) }} </div> \r\n } \r\n \r\n <div>\r\n @if(_showDeleteButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"delete\" \r\n (onClick)=\"onClickDelete.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n @if(_showGoButton(item)) {\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"secondary\"\r\n icon=\"go\" \r\n marginLeft=\"5px\" \r\n (onClick)=\"onClickGo.emit(item)\"\r\n ></coer-button>\r\n } \r\n \r\n <i cdkDragHandle [ngClass]=\"{ \r\n 'fa-solid fa-grip-vertical text-secondary ps-2': true,\r\n 'cursor-grab': true, \r\n 'cursor-grabbing': false, \r\n 'd-none': !_isDraggable()\r\n }\"></i> \r\n </div> \r\n </div> \r\n </li> \r\n } \r\n </ul>\r\n </div>\r\n</div>","import { AfterContentInit, Component, EventEmitter, Input, Output, inject } from '@angular/core';\r\nimport { IMenu, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { Tools, Source } from 'coer-elements/tools';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'coer-menu-option',\r\n templateUrl: './coer-menu-option.component.html',\r\n styleUrl: './coer-menu-option.component.scss'\r\n})\r\nexport class CoerMenuOption implements AfterContentInit {\r\n\r\n //Injects\r\n private _router = inject(Router);\r\n\r\n //Inputs\r\n @Input() level: number = 1;\r\n @Input() label: string = '';\r\n @Input() icon!: undefined | string;\r\n @Input() path!: undefined | string;\r\n @Input() tree: IMenu[] = [];\r\n\r\n //Outputs\r\n @Output() clickMenuOption = new EventEmitter<IMenuOptionSelected>();\r\n\r\n ngAfterContentInit() {\r\n setTimeout(async () => {\r\n while (['', '/'].includes(this._router.url)) {\r\n await Tools.Sleep(100);\r\n }\r\n\r\n let queryParams = '';\r\n let routerURL = this._router.url;\r\n\r\n if (this._router.url.includes('?')) {\r\n routerURL = this._router.url.split('?')[0];\r\n queryParams = this._router.url.split('?')[1];\r\n }\r\n\r\n if (routerURL == this.path) {\r\n this.ClickMenuOption(queryParams, false);\r\n }\r\n });\r\n }\r\n\r\n\r\n protected get _icon(): string {\r\n return (this.icon && this.icon.length > 0)\r\n ? this.icon : '';\r\n }\r\n\r\n\r\n protected get _path(): string {\r\n return (this.path && this.path.length > 0)\r\n ? this.path : '/home';\r\n }\r\n\r\n\r\n protected get _tree(): IMenu[] {\r\n return [...this.tree].concat({\r\n label: this.label,\r\n icon: this._icon,\r\n path: this._path\r\n })\r\n }\r\n\r\n\r\n protected get marginLeft(): string {\r\n return this.level == 3\r\n ? `${(this.level - 1) * 10}px`\r\n : `${(this.level - 1) * 20}px`;\r\n }\r\n\r\n\r\n protected get identityClass(): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < this.tree.length; i++) {\r\n identity += `lv${i + 1}${this.tree[i].label}-`;\r\n }\r\n\r\n identity += `lv${this.level}${this.label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n public ClickMenuOption(queryParams: string, resetSource: boolean = true) {\r\n if (resetSource) {\r\n let routerURL = this._router.url;\r\n\r\n if (this._router.url.includes('?')) {\r\n routerURL = this._router.url.split('?')[0];\r\n }\r\n\r\n if (routerURL != this.path) {\r\n Source.Reset();\r\n }\r\n }\r\n\r\n this.clickMenuOption.emit({\r\n level: this.level,\r\n label: this.label,\r\n path: this._path,\r\n icon: this._icon,\r\n tree: [...this._tree],\r\n queryParams: queryParams\r\n })\r\n }\r\n}","<mat-nav-list class=\"coer-menu-option\" (click)=\"ClickMenuOption('')\">\r\n <mat-list-item>\r\n <span [class]=\"'icon-container ' + identityClass\" [ngStyle]=\"{ 'margin-left': marginLeft }\">\r\n <i [class]=\"_icon\"></i>\r\n </span>\r\n\r\n <span [class]=\"'label-container ' + identityClass\">\r\n {{ label }}\r\n </span>\r\n </mat-list-item>\r\n</mat-nav-list>","import { Component, Input } from '@angular/core';\r\nimport { IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { Menu } from 'coer-elements/tools';\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.GetSelectedOption();\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, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-tree-accordion',\r\n templateUrl: './coer-tree-accordion.component.html',\r\n styleUrl: './coer-tree-accordion.component.scss'\r\n})\r\nexport class CoerTreeAccordion {\r\n\r\n @ViewChild('expansionPanel') expansionPanel!: MatExpansionPanel;\r\n @ViewChildren(CoerTreeAccordion) menuList!: QueryList<CoerTreeAccordion>;\r\n\r\n //Variables\r\n public isExpanded: boolean = false;\r\n public isCollapsed: boolean = true;\r\n\r\n //Inputs\r\n @Input() level: number = 1;\r\n @Input() item!: IMenu;\r\n @Input() tree: IMenu[] = [];\r\n\r\n //Outputs\r\n @Output() clickMenuOption = new EventEmitter<IMenuOptionSelected>();\r\n @Output() clickMenu = new EventEmitter<IMenuSelected>();\r\n\r\n protected get _tree(): IMenu[] {\r\n return [...this.tree].concat([{...this.item}]);\r\n }\r\n\r\n protected get _icon(): string {\r\n return (this.item && this.item.hasOwnProperty('icon') && this.item.icon!.length > 0)\r\n ? this.item.icon! : 'fa-solid fa-bars';\r\n }\r\n\r\n\r\n protected get marginLeft(): string {\r\n return `${(this.level - 1) * 20}px`;\r\n }\r\n\r\n\r\n protected get identityClass(): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < this.tree.length; i++) {\r\n identity += `lv${i + 1}${this.tree[i].label}-`;\r\n }\r\n\r\n identity += `lv${this.level}${this.item.label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n protected IsActive = (element: Element): boolean => {\r\n return (this.isExpanded && this.level > 1)\r\n || (this.isCollapsed && element.classList.contains('active-link'))\r\n }\r\n\r\n\r\n /** */\r\n protected IsMenu = (item: IMenu): boolean => item.hasOwnProperty('items') && Tools.IsNotOnlyWhiteSpace(item.items);\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if(this.isExpanded) {\r\n this.isExpanded = false;\r\n this.isCollapsed = true;\r\n this.expansionPanel.close();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n if(this.isCollapsed) {\r\n this.isExpanded = true;\r\n this.isCollapsed = false;\r\n this.expansionPanel.open();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected Toggle(): void {\r\n this.isExpanded = !this.isExpanded;\r\n this.isCollapsed = !this.isCollapsed;\r\n\r\n this.clickMenu.emit({\r\n level: this.level,\r\n label: this.item.label,\r\n isExpanded: this.isExpanded,\r\n isCollapsed: this.isCollapsed,\r\n items: this.item.items,\r\n icon: this._icon,\r\n tree: [...this._tree]\r\n });\r\n }\r\n\r\n\r\n /** */\r\n protected ClickMenuOption(menuOption: IMenuOptionSelected): void {\r\n for(const menu of this.menuList.toArray()) {\r\n if(menu.item.label != menuOption.tree[this.level].label) {\r\n menu.Close();\r\n }\r\n }\r\n\r\n this.clickMenuOption.emit(menuOption);\r\n }\r\n\r\n\r\n /** */\r\n protected ClickMenu(menu: IMenuSelected): void {\r\n for(const menuLv2 of this.menuList.toArray()) {\r\n if (menuLv2.item.label != menu.label) menuLv2.Close();\r\n }\r\n\r\n this.clickMenu.emit(menu);\r\n }\r\n}","<mat-accordion class=\"coer-tree-accordion\">\r\n <mat-expansion-panel #expansionPanel [class]=\"'coer-tree-accordion-' + identityClass\">\r\n\r\n <!-- Header -->\r\n <mat-expansion-panel-header (click)=\"Toggle()\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'background-orange': (isExpanded && level == 1),\r\n 'text-orange': IsActive(iconContainer)\r\n }\">\r\n <mat-panel-description>\r\n <span #iconContainer\r\n [ngStyle]=\"{ 'margin-left': marginLeft }\"\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'icon-container': true,\r\n 'text-orange': IsActive(iconContainer)\r\n }\"> <i [class]=\"_icon\"></i> </span>\r\n\r\n <span #labelContainer\r\n [class]=\"identityClass\"\r\n [ngClass]=\"{\r\n 'label-container': true,\r\n 'text-orange': IsActive(labelContainer)\r\n }\"> {{ item.label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n <div *ngFor=\"let subItem of item.items\">\r\n <!-- Sub Menu -->\r\n <div *ngIf=\"IsMenu(subItem); else isOption\">\r\n <coer-tree-accordion\r\n [level]=\"level + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n (clickMenu)=\"ClickMenu($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #isOption>\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"subItem?.icon\"\r\n [path]=\"subItem?.path\"\r\n [level]=\"level + 1\"\r\n [tree]=\"_tree\"\r\n (clickMenuOption)=\"ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>","import { Component, WritableSignal, inject, viewChild, viewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected, IScreenSize } from 'coer-elements/interfaces';\r\nimport { CoerTreeAccordion } from './coer-tree-accordion/coer-tree-accordion.component';\r\nimport { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL, isLoadingSIGNAL } from 'coer-elements/signals';\r\nimport { Tools, Breadcrumbs, Menu, Screen } from 'coer-elements/tools';\r\nimport { MatDrawer } from '@angular/material/sidenav';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'coer-sidenav',\r\n templateUrl: './coer-sidenav.component.html',\r\n styleUrl: './coer-sidenav.component.scss'\r\n})\r\nexport class CoerSidenav {\r\n\r\n //Injections\r\n private _router = inject(Router);\r\n\r\n //signals\r\n protected isOpen: WritableSignal<boolean> = isMenuOpenSIGNAL;\r\n protected _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected _navigation: WritableSignal<IMenu[]> = navigationSIGNAL;\r\n protected _isLoading: WritableSignal<boolean> = isLoadingSIGNAL;\r\n\r\n //Elements\r\n protected sidenav = viewChild.required<MatDrawer>('matSidenav');\r\n protected menuList = viewChildren(CoerTreeAccordion);\r\n\r\n //getter\r\n protected get backdrop(): boolean {\r\n return ['xs', 'sm', 'md'].includes(breakpointSIGNAL());\r\n }\r\n\r\n //getter\r\n protected get mode(): 'over' | 'push' {\r\n return ['xs', 'sm', 'md'].includes(breakpointSIGNAL()) ? 'over' : 'push';\r\n }\r\n\r\n //getter\r\n protected get showAsideMenu(): boolean {\r\n return ['xl', 'xxl'].includes(breakpointSIGNAL()) && !this.isOpen()\r\n }\r\n\r\n constructor() {\r\n this.BackButtonBrowser();\r\n\r\n this.isOpen.set(['xxl'].includes(Screen.BREAKPOINT));\r\n\r\n Screen.Resize.subscribe({\r\n next: ({ breakpoin }: IScreenSize) => {\r\n breakpointSIGNAL.set(breakpoin);\r\n if(this.backdrop) this.Close();\r\n }\r\n }); \r\n } \r\n\r\n\r\n /** */\r\n protected NavigateTo(selectedOption: IMenuOptionSelected) {\r\n let url = `${selectedOption.path}`;\r\n if (selectedOption.queryParams.length > 0) url += `?${selectedOption.queryParams}`;\r\n this._router.navigateByUrl(url);\r\n\r\n //Set active link\r\n this.SetActiveLink(selectedOption);\r\n\r\n //Close Menu\r\n if(selectedOption.level == 1) {\r\n for(const menuLv1 of this.menuList()) {\r\n for(const menuLv2 of menuLv1.menuList.toArray()) {\r\n menuLv2.Close();\r\n }\r\n menuLv1.Close();\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public SetActiveLink(selectedOption: IMenuOptionSelected | null): void {\r\n if (selectedOption) {\r\n selectedOption = Tools.BreakReference(selectedOption);\r\n Menu.SetSelectedOption(selectedOption);\r\n\r\n let collection: Element[] = [];\r\n collection = collection.concat(Array.from(document.querySelectorAll('mat-drawer-container span.icon-container')));\r\n collection = collection.concat(Array.from(document.querySelectorAll('mat-drawer-container span.label-container')));\r\n\r\n //Remove active-link\r\n for(const element of collection) {\r\n if(element.classList.contains('active-link')) {\r\n element.classList.remove('active-link');\r\n }\r\n }\r\n\r\n //Add active-link\r\n const levels = selectedOption.tree.length;\r\n for(let i = 0; i < levels; i++) {\r\n for(const element of collection) {\r\n const identityClass = this.GetIdentityClass(selectedOption.tree);\r\n if (element.classList.contains(identityClass)) {\r\n element.classList.add('active-link');\r\n }\r\n }\r\n\r\n selectedOption.tree.pop();\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Open(event: MouseEvent, item: IMenu | null = null): void {\r\n event.stopPropagation();\r\n\r\n if (!this.isOpen()) {\r\n this.isOpen.set(true);\r\n this.sidenav().open();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Close(): void {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n this.sidenav().close();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Toggle(): void {\r\n this.sidenav().toggle();\r\n }\r\n\r\n\r\n /** */\r\n protected MenuSelected(selectedMenu: IMenuSelected) {\r\n if (selectedMenu.level == 1) {\r\n for(const menuLv1 of this.menuList()) {\r\n if(menuLv1.item.label != selectedMenu.label) {\r\n\r\n for(const menuLv2 of menuLv1.menuList.toArray()) {\r\n menuLv2.Close();\r\n }\r\n\r\n menuLv1.Close();\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected IsMenu = (item: IMenu): boolean => item.hasOwnProperty('items') && Tools.IsNotOnlyWhiteSpace(item.items);\r\n\r\n\r\n /** */\r\n protected GetIcon = (item: IMenu): string => {\r\n if (item && item.hasOwnProperty('icon') && item.icon!.length > 0) {\r\n return item.icon!\r\n }\r\n\r\n return this.IsMenu(item)\r\n ? 'fa-solid fa-bars'\r\n : 'bi bi-record-fill';\r\n }\r\n\r\n\r\n /** */\r\n protected SetIdentityClass = (label: String): string => {\r\n let identity = `lv1${label}`;\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n private GetIdentityClass(tree: IMenu[]): string {\r\n let identity: string = '';\r\n\r\n for(let i = 0; i < tree.length; i++) {\r\n identity += `lv${i + 1}${tree[i].label}-`;\r\n }\r\n\r\n if(identity.endsWith('-')) identity = identity.slice(0, -1);\r\n if(identity.includes(' ')) identity = identity.replaceAll(' ', '');\r\n return identity.toLowerCase();\r\n }\r\n\r\n\r\n /** */\r\n private BackButtonBrowser() {\r\n const QUERY_SELECTOR = 'coer-menu-option[ng-reflect-path=\"[path]\"] mat-nav-list.coer-menu-option';\r\n\r\n Screen.BackButtonBrowser.subscribe(toPath => {\r\n if (toPath.includes('/#/')) toPath = toPath.split('/#')[1];\r\n if (toPath.includes('?')) toPath = toPath.split('?')[0];\r\n\r\n //Validate path\r\n for (const module of navigationSIGNAL()) {\r\n if (module.items) for (const subModule of module.items) {\r\n //Level Three\r\n if (subModule.items) {\r\n for(const item of subModule.items) if (item.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n //Level Two\r\n else if (subModule.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n //Level One\r\n else if (module.path === toPath) {\r\n (document.querySelector(QUERY_SELECTOR.replace('[path]', toPath)) as any)?.click();\r\n return;\r\n }\r\n }\r\n\r\n Breadcrumbs.Remove(toPath);\r\n });\r\n }\r\n}","<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) {\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n \r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n \r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"Empty\"\r\n icon=\"fa-solid fa-face-meh\"\r\n ></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"fa-solid fa-sync fa-spin\"\r\n ></coer-menu-option>\r\n }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>","import { Component, ContentChildren, Input, input, OnInit, output, viewChild, computed, OnDestroy } from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { Tools } from 'coer-elements/tools';\r\nimport { ICoerRef } from 'coer-elements/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, Tools } from 'coer-elements/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 { Component, EventEmitter, input, Output, WritableSignal } from '@angular/core';\r\nimport { isModalOpenSIGNAL, isMenuOpenSIGNAL } from 'coer-elements/signals';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n@Component({\r\n selector: 'coer-toolbar',\r\n templateUrl: './coer-toolbar.component.html',\r\n styleUrl: './coer-toolbar.component.scss'\r\n})\r\nexport class CoerToolbar {\r\n\r\n //variables\r\n protected isLoading: boolean = false;\r\n protected _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n\r\n //Inputs\r\n public appName = input<string>('');\r\n\r\n //Outputs\r\n @Output() onClick = new EventEmitter<MouseEvent>();\r\n\r\n protected ToogleSideNave(event: MouseEvent): void {\r\n this.isLoading = true;\r\n this.onClick.emit(event);\r\n isMenuOpenSIGNAL.set(!isMenuOpenSIGNAL());\r\n Tools.Sleep(500, 'ToogleSideNave').then(() => this.isLoading = false);\r\n }\r\n}","<div id=\"coer-tool-bar\" [ngClass]=\"{ 'position-relative': _isModalOpen() }\">\r\n <mat-toolbar>\r\n <coer-button\r\n type=\"icon\"\r\n icon=\"menu\"\r\n [isLoading]=\"isLoading\"\r\n (onClick)=\"ToogleSideNave($event)\"\r\n ></coer-button>\r\n\r\n <span> {{ appName() }} </span>\r\n\r\n <span class=\"fill-space\"></span>\r\n </mat-toolbar>\r\n\r\n <div class=\"shadow\"></div>\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 'coer-elements/directives';\r\nimport { PipesModule } from 'coer-elements/pipes';\r\nimport { CdkDrag, CdkDragPlaceholder, CdkDragHandle, CdkDropList } from '@angular/cdk/drag-drop';\r\n\r\n//Angular Material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent, } from '@angular/material/sidenav';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\n//Components\r\nimport { CoerAccordion } from './coer-accordion/coer-accordion.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 { CoerList } from './coer-list/coer-list.component';\r\nimport { CoerMenuOption } from './coer-sidenav/coer-menu-option/coer-menu-option.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 { CoerSidenav } from './coer-sidenav/coer-sidenav.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\nimport { CoerToolbar } from './coer-sidenav/coer-toolbar/coer-toolbar.component';\r\nimport { CoerTreeAccordion } from './coer-sidenav/coer-tree-accordion/coer-tree-accordion.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CdkDrag, \r\n CdkDragHandle,\r\n CdkDragPlaceholder,\r\n CdkDropList, \r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatDrawerContainer,\r\n MatDrawerContent,\r\n MatDrawer,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n MatTabsModule,\r\n DirectivesModule,\r\n PipesModule\r\n ],\r\n declarations: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList,\r\n CoerMenuOption,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n CoerToolbar,\r\n CoerTreeAccordion\r\n ],\r\n exports: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCheckbox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerSwitch,\r\n CoerTab,\r\n CoerTextarea,\r\n CoerTextBox,\r\n CoerToolbar,\r\n CoerTreeAccordion \r\n ]\r\n})\r\nexport class ComponentsModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i2.CoerModal","i4.CoerButton","i3.CoerButton","i4.CoerCheckbox","i5.CoerNumberBox","i6.CoerSelectbox","i7.CoerSwitch","i8.CoerTextBox","i4.CoerTextBox","i5","i3.CoerMenuOption","i4.CoerTreeAccordion"],"mappings":"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"}
|