coer-elements 2.0.41 → 2.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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-card/coer-card.component.ts","../../../projects/coer-elements/components/lib/coer-card/coer-card.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-datebox/coer-datebox.component.ts","../../../projects/coer-elements/components/lib/coer-datebox/coer-datebox.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-image/coer-filebox-image.component.ts","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox-image/coer-filebox-image.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-secretbox/coer-secretbox.component.ts","../../../projects/coer-elements/components/lib/coer-secretbox/coer-secretbox.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-dropdown/coer-dropdown.component.ts","../../../projects/coer-elements/components/lib/coer-dropdown/coer-dropdown.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 { AfterViewInit, Component, input, output, viewChild } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools'\r\n\r\n@Component({\r\n selector: 'coer-accordion',\r\n templateUrl: './coer-accordion.component.html',\r\n styleUrl: './coer-accordion.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerAccordion implements AfterViewInit {\r\n\r\n //Elements\r\n protected readonly _expansionPanel = viewChild<MatExpansionPanel>('coerAccordion');\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-accordion');\r\n protected _htmlElement!: HTMLElement \r\n protected _isDisabled: boolean = false;\r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public title = input<string>('');\r\n public icon = input<string>('');\r\n public expanded = input<boolean>(true); \r\n public scrollOnOpen = input<boolean>(false); \r\n public height = input<string>(''); \r\n public minHeight = input<string>('0px'); \r\n\r\n //Outputs\r\n public onOpen = output<void>();\r\n public onClose = output<void>(); \r\n\r\n\r\n //Generic Tools\r\n protected _IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(() => {\r\n this._htmlElement = document.getElementById(this._id)!;\r\n });\r\n }\r\n\r\n \r\n //getter\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 //getter\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 //getter\r\n public get isDisabled(): boolean {\r\n return this._isDisabled;\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 if(this.scrollOnOpen() && Tools.IsNotNull(this._htmlElement)) {\r\n Tools.Sleep().then(_ => this._htmlElement.scrollIntoView({ behavior: 'smooth' }));\r\n }\r\n\r\n this.onOpen.emit();\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 this.onClose.emit();\r\n }\r\n } \r\n\r\n\r\n /** */\r\n public Enable(): void {\r\n this._isDisabled = false;\r\n }\r\n\r\n\r\n /** */\r\n public Disable(): void {\r\n this._isDisabled = true;\r\n }\r\n\r\n\r\n /** */\r\n public ScrollToAccordion(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n Tools.Sleep().then(_ => this._htmlElement.scrollIntoView({ behavior: 'smooth' }));\r\n }\r\n } \r\n}","<mat-expansion-panel\r\n [id]=\"_id\" \r\n #coerAccordion \r\n title=\"\" \r\n class=\"coer-accordion\"\r\n [disabled]=\"_isDisabled\" \r\n [expanded]=\"expanded()\" \r\n (opened)=\"Open()\" \r\n (closed)=\"Close()\">\r\n \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 [ngClass]=\"{ 'collapsed': isCollapsed }\"\r\n [ngStyle]=\"{\r\n 'height': height(),\r\n 'min-height': minHeight()\r\n }\">\r\n <ng-content></ng-content>\r\n </div>\r\n</mat-expansion-panel>","import { Component, computed, input, AfterViewInit, output } from '@angular/core';\r\nimport { breakpointSIGNAL } from 'coer-elements/signals';\r\nimport { IButtonType } from 'coer-elements/interfaces';\r\nimport { Strings, Tools } from 'coer-elements/tools';\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 standalone: false\r\n})\r\nexport class CoerButton implements AfterViewInit { \r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-button');\r\n protected _innerButton!: HTMLElement;\r\n protected _innerButtonIcon!: HTMLElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public color = input<'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' | 'information' | 'dark' | 'light'>('default');\r\n public type = input<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>('filled');\r\n public typeBreakpoint = input<IButtonType>({});\r\n public icon = input<string | null | undefined>('');\r\n public iconPosition = input<'left' | 'right'>('left');\r\n public path = input<string | (string | number)[]>([]); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = 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 maxWidth = input<string>('100%');\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 tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('left'); \r\n\r\n //Outputs \r\n public onClick = output<void>(); \r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep().then(() => {\r\n this._innerButton = document.getElementById(`${this._id}-inner-button`)!;\r\n \r\n if(this._innerButton) {\r\n this._innerButton.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n } \r\n\r\n this._innerButtonIcon = document.getElementById(`${this._id}-inner-button-icon`)!;\r\n\r\n if(this._innerButtonIcon) {\r\n this._innerButtonIcon.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n }\r\n });\r\n } \r\n \r\n \r\n //computed\r\n protected _tooltip = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.tooltip())\r\n ? Strings.CleanUpBlanks(this.tooltip()) : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _showButton = computed<boolean>(() => {\r\n return this._buttonBreakpoint() == 'filled' \r\n || this._buttonBreakpoint() == 'outline'; \r\n });\r\n\r\n\r\n //computed\r\n protected _showButtonIcon = computed<boolean>(() => {\r\n return this._buttonBreakpoint() == 'icon' \r\n || this._buttonBreakpoint() == 'icon-outline' \r\n || this._buttonBreakpoint() == 'icon-no-border';\r\n });\r\n\r\n\r\n //computed\r\n protected _buttonBreakpoint = computed<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>(() => { \r\n switch(breakpointSIGNAL()) {\r\n case 'mv': return this.typeBreakpoint()?.mv || this.type();\r\n case 'xs': return this.typeBreakpoint()?.xs || this.type(); \r\n case 'sm': return this.typeBreakpoint()?.sm || this.type(); \r\n case 'md': return this.typeBreakpoint()?.md || this.type(); \r\n case 'lg': return this.typeBreakpoint()?.lg || this.type(); \r\n case 'xl': return this.typeBreakpoint()?.xl || this.type(); \r\n case 'xxl': return this.typeBreakpoint()?.xxl || this.type(); \r\n default: return this.type();\r\n } \r\n });\r\n\r\n\r\n //computed\r\n protected _tooltipPosition = computed<'above' | 'right' | 'below' | 'left'>(() => {\r\n switch(this.tooltipPosition()) {\r\n case 'top' : return 'above';\r\n case 'right' : return 'right';\r\n case 'bottom': return 'below';\r\n default: return 'left'; \r\n } \r\n });\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() \r\n && !this.isDisabled() \r\n && !this.isInvisible() \r\n && !this.isReadonly();\r\n });\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n const icon = Tools.IsNotNull(this.icon()) ? this.icon()! : '';\r\n\r\n switch(this.icon()) {\r\n case 'new' : return 'icon-plus';\r\n case 'save' : return 'icon-disk-floppy icon-fill';\r\n case 'cancel' : return 'icon-x';\r\n case 'import' : return 'icon-file-arrow-up icon-fill';\r\n case 'export' : return 'icon-file-arrow-down icon-fill';\r\n case 'excel' : return 'icon-file-xls icon-fill';\r\n case 'delete' : return 'icon-trash-can icon-fill';\r\n case 'edit' : return 'icon-pen icon-fill';\r\n case 'go' : return 'icon-box-arrow-right';\r\n case 'back' : return 'icon-box-arrow-left';\r\n case 'pointer' : return 'icon-pointer icon-fill';\r\n }\r\n\r\n return ['icon', 'icon-outline', 'icon-no-border'].includes(this.type()) \r\n && Tools.IsOnlyWhiteSpace(icon) \r\n ? 'icon-pointer icon-fill' : icon; \r\n });\r\n\r\n\r\n //computed\r\n protected _buttonType = computed<string>(() => { \r\n const readonly = ['icon', 'icon-outline', 'icon-no-border'].includes(this._buttonBreakpoint())\r\n ? (this.isDisabled() || this.isLoading() ? 'readonly' : '')\r\n : (this.isDisabled() ? 'readonly' : '');\r\n \r\n return `\r\n ${this.color()}-${['filled', 'icon'].includes(this._buttonBreakpoint()) ? 'filled' : 'outline'} \r\n ${readonly} \r\n ${this.isLoading() ? 'cursor-wait' : ''}\r\n ${this._buttonBreakpoint() == 'icon-no-border' ? 'icon-no-border' : ''}\r\n `.trim(); \r\n });\r\n\r\n\r\n /** */\r\n protected _Click(): void {\r\n if (this._isEnable()) {\r\n this.onClick.emit();\r\n }\r\n\r\n this.Blur();\r\n }\r\n\r\n\r\n /** */\r\n public Click(timeout: number = 0): void {\r\n Tools.Sleep(timeout).then(() => {\r\n if (this._isEnable()) this.onClick.emit();\r\n });\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()) {\r\n this._innerButton.focus();\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(timeout: number = 0): void {\r\n Tools.Sleep(timeout).then(() => {\r\n this._innerButton.blur();\r\n this._innerButtonIcon.focus();\r\n });\r\n }\r\n}","<div [ngClass]=\"{ 'coer-button': true }\">\r\n <a [routerLink]=\"(path().length > 0 && _isEnable()) ? path() : null\"\r\n [matTooltip]=\"_tooltip()\"\r\n [matTooltipPosition]=\"_tooltipPosition()\"\r\n [matTooltipDisabled]=\"!_isEnable()\"\r\n [matTooltipHideDelay]=\"0\"\r\n [ngClass]=\"{ 'loading': isLoading() }\"\r\n [ngStyle]=\"{ \r\n 'visibility' : (isInvisible() || isReadonly() ? 'hidden' : 'visible'),\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 <div [class]=\"_showButton() ? '' : 'display-none'\">\r\n <button mat-button type=\"button\" \r\n [id]=\"_id + '-inner-button'\"\r\n (click)=\"_Click()\"\r\n [class]=\"_buttonType()\"\r\n [ngStyle]=\"{\r\n 'width' : width(),\r\n 'min-width' : minWidth(),\r\n 'max-width' : maxWidth(),\r\n 'height' : height(),\r\n 'min-height': minHeight()\r\n }\">\r\n\r\n @if(!isLoading()) {\r\n <span class=\"slot\">\r\n @if(iconPosition() == 'left') { \r\n <i [class]=\"_icon()\"></i> \r\n }\r\n \r\n <span [ngClass]=\"{ \r\n 'ms-2': (iconPosition() == 'left' && _icon().length > 0), \r\n 'me-2': (iconPosition() == 'right' && _icon().length > 0) \r\n }\">\r\n <ng-content>Click</ng-content>\r\n </span>\r\n \r\n @if(iconPosition() == 'right') {\r\n <i [class]=\"_icon()\"></i>\r\n }\r\n </span>\r\n }\r\n\r\n @else {\r\n <span class=\"slot animation-appear\">\r\n <span class=\"me-2\"> Loading </span>\r\n <i class=\"icon-circle-notch animation-spin\"></i>\r\n </span> \r\n }\r\n </button>\r\n </div> \r\n\r\n <div [class]=\"_showButtonIcon() ? '' : 'display-none'\">\r\n <button mat-icon-button\r\n [id]=\"_id + '-inner-button-icon'\"\r\n type=\"button\"\r\n (click)=\"_Click()\"\r\n [class]=\"_buttonType()\">\r\n <i [class]=\"_icon()\"></i>\r\n </button>\r\n </div>\r\n </a>\r\n</div> ","import { Component, input } from '@angular/core';\r\nimport { Tools } from 'coer-elements/tools'\r\n\r\n@Component({\r\n selector: 'coer-card',\r\n templateUrl: './coer-card.component.html', \r\n standalone: false\r\n})\r\nexport class CoerCard {\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-accordion');\r\n \r\n //Inputs\r\n public id = input<string>('');\r\n public icon = input<string>('');\r\n public name = input<string>('');\r\n public title = input<string>('');\r\n public phone = input<string>(''); \r\n public email = input<string>('');\r\n}","<figure class=\"coer-container xs-width-min-content\">\r\n <div class=\"flex-wrap gap-0px\"> \r\n @if(IsNotOnlyWhiteSpace(name()) || IsNotOnlyWhiteSpace(title())) {\r\n <div class=\"flex-basis-300px flex-grow-1 flex-middle-left\">\r\n @if(IsNotOnlyWhiteSpace(icon())) {\r\n <i [class]=\"icon() + ' ' + 'font-size-39px'\"></i>\r\n }\r\n\r\n <div>\r\n @if(IsNotOnlyWhiteSpace(name())) {\r\n <p class=\"white-space-nowrap\"> {{ name() }} </p> \r\n }\r\n @if(title()) {\r\n <p class=\"white-space-nowrap\"> {{ title() }} </p>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (IsNotOnlyWhiteSpace(phone()) || IsNotOnlyWhiteSpace(email())) {\r\n <div class=\"flex-basis-100 padding-top-5px\"></div>\r\n \r\n <div class=\"flex-basis-100 padding-top-5px border-solid-top-2px\">\r\n <p class=\"flex-middle-left gap-20px\">\r\n @if(IsNotOnlyWhiteSpace(phone())) {\r\n <span class=\"flex-middle-left gap-5px\">\r\n <i class=\"coer-icon-whatsapp\"></i>\r\n <span> {{ phone() }} </span>\r\n </span>\r\n }\r\n\r\n @if(IsNotOnlyWhiteSpace(email())) {\r\n <span class=\"flex-middle-left gap-5px\">\r\n <i class=\"coer-icon-envelope\"></i>\r\n <span> {{ email() }} </span>\r\n </span>\r\n }\r\n </p>\r\n </div> \r\n }\r\n </div> \r\n</figure>","import { AfterViewInit, Component, computed, effect, EffectRef, input, OnDestroy, 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 standalone: false\r\n})\r\nexport class CoerCheckbox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Variables\r\n public override _value: boolean = false;\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _id: string = Tools.GetGuid('coer-checkbox'); \r\n protected _isLoading: boolean = true;\r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public ignoreDataBinding = input<boolean>(false);\r\n public value = input<boolean | null | undefined>(false);\r\n\r\n //Outputs\r\n public onChange = output<boolean>(); \r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : false\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => this._isLoading = false);\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled() && !this.isInvisible() && !this.isReadonly();\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.ignoreDataBinding() && (typeof this._UpdateValue === 'function')) {\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, input, AfterViewInit, output, signal, viewChild, EffectRef, effect, OnDestroy } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Dates, Tools } from 'coer-elements/tools';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n selector: 'coer-datebox',\r\n templateUrl: './coer-datebox.component.html',\r\n styleUrl: './coer-datebox.component.scss',\r\n providers: [ \r\n provideNativeDateAdapter(),\r\n CONTROL_VALUE(CoerDateBox),\r\n ],\r\n standalone: false\r\n})\r\nexport class CoerDateBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n \r\n //Variables\r\n public override _value: string | Date | moment.Moment | null = null;\r\n protected readonly _id: string = Tools.GetGuid('coer-datebox');\r\n protected readonly _datepicker = viewChild<MatDatepicker<any>>('datepicker');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effect!: EffectRef;\r\n protected _isOpen: boolean = false;\r\n protected _input!: HTMLInputElement;\r\n protected _container!: HTMLInputElement;\r\n protected _pickerButton!: HTMLInputElement;\r\n \r\n //Inputs\r\n public id = input<string>('')\r\n public value = input<string | null | undefined>(null); \r\n public label = input<string>(''); \r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs\r\n public onOpen = output<void>();\r\n public onClose = output<void>(); \r\n public onChangeValue = output<string | null>(); \r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(()=> {\r\n //input\r\n this._input = document.getElementById(this._id)! as HTMLInputElement;\r\n \r\n if (this._input) { \r\n this._input.addEventListener('focus', () => this._Blur());\r\n this._input.addEventListener('blur', () => this._Blur());\r\n }\r\n\r\n //container\r\n this._container = document.getElementById(`${this._id}-container`)! as HTMLInputElement; \r\n \r\n if (this._container) { \r\n this._container.addEventListener('click', (event) => {\r\n event.stopPropagation();\r\n event.preventDefault(); \r\n this.Open();\r\n });\r\n } \r\n\r\n //pickerButton\r\n this._pickerButton = document.querySelector(`#${this._id}-container .mat-mdc-form-field-icon-suffix button`)! as HTMLInputElement;\r\n \r\n if (this._pickerButton) { \r\n \r\n this._pickerButton.addEventListener('click', (event) => {\r\n event.stopPropagation();\r\n event.preventDefault(); \r\n this.Open();\r\n });\r\n } \r\n });\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\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 //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\r\n });\r\n\r\n\r\n //getter\r\n public get isOpen(): boolean { \r\n return this._isOpen;\r\n }\r\n\r\n\r\n //getter\r\n public get isClose(): boolean { \r\n return !this._isOpen;\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override SetValue(value: string | Date | moment.Moment | null | undefined): void { \r\n if(value === undefined) value = null;\r\n \r\n if(Tools.IsNotNull(this._value) && Tools.IsNull(value)) {\r\n this.onChangeValue.emit(null); \r\n }\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(value)) {\r\n if(Dates.IsValidDate(value!)) {\r\n value = Dates.GetFormatDB(value!);\r\n this._value = new Date(value);\r\n this.onChangeValue.emit(Dates.GetFormatDB(this._value));\r\n }\r\n\r\n else this._value = null; \r\n } \r\n\r\n else this._value = null; \r\n \r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(this._value);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public override writeValue(value: any): void {\r\n if(Tools.IsNotOnlyWhiteSpace(value)) {\r\n this.SetValue(value);\r\n }\r\n } \r\n\r\n\r\n /** */\r\n protected _Blur(): void { \r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n this._isOpen = false;\r\n\r\n Tools.Sleep().then(_ => {\r\n if(this._input) {\r\n this._input.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 Open(): void { \r\n if (this._isEnable() && this.isClose) { \r\n this._datepicker()?.open();\r\n this._isOpen = true;\r\n this.onOpen.emit(); \r\n }\r\n\r\n else this._Blur();\r\n }\r\n\r\n\r\n /** */ \r\n public Close(): void { \r\n if(this.isOpen) {\r\n this._datepicker()?.close();\r\n this._Blur();\r\n this.onClose.emit();\r\n } \r\n } \r\n\r\n\r\n /** */ \r\n public Unselect(): void { \r\n this.SetValue(null);\r\n } \r\n}","<div class=\"coer-date-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 'd-none': isInvisible()\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\r\n <mat-label> {{ label() }} </mat-label>\r\n \r\n <input #coerTextBox matInput \r\n [id]=\"_id\"\r\n [placeholder]=\"placeholder()\"\r\n [matDatepicker]=\"datepicker\" \r\n [disabled]=\"!_isEnable()\"\r\n [readonly]=\"true\"\r\n [value]=\"_value\"\r\n (dateChange)=\"SetValue(coerTextBox.value)\"\r\n [style]=\"{\r\n 'cursor' : isLoading() ? 'wait' : 'pointer',\r\n 'margin-top' : (_floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': _paddingRight(),\r\n 'text-align' : textPosition()\r\n }\">\r\n \r\n <mat-datepicker #datepicker (closed)=\"Close()\"/>\r\n\r\n @if(!isLoading()) { \r\n <mat-datepicker-toggle \r\n matSuffix\r\n [for]=\"datepicker\" \r\n [disabled]=\"!_isEnable()\">\r\n <mat-icon matDatepickerToggleIcon>\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </mat-icon>\r\n </mat-datepicker-toggle>\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 @if(isInvalid() || isValid()) {\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 }\r\n </mat-form-field> \r\n\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\r\n</div> ","import { AfterViewInit, Component, computed, ContentChildren, input, 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 { HTMLElements, 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 standalone: false\r\n})\r\nexport class CoerModal implements AfterViewInit { \r\n\r\n //Directive\r\n @ContentChildren(CoerRefDirective) contentRef!: any;\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-modal');\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected _windowWidth: number = Screen.WINDOW_WIDTH;\r\n protected _isOpen: boolean = false;\r\n protected _modal!: Modal;\r\n\r\n //Inputs \r\n public id = input<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' | 'auto'>('small');\r\n public height = input<string>('auto');\r\n public maxHeight = input<string>('');\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 \r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(() => {\r\n this._modal = new Modal(document.getElementById(this._id)!);\r\n\r\n Screen.Resize.subscribe((response: IScreenSize) => {\r\n this._windowWidth = response.width;\r\n }); \r\n }); \r\n }\r\n\r\n\r\n //getter\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n\r\n //getter\r\n public get isClose(): boolean {\r\n return !this._isOpen;\r\n }\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 case 'auto': return 'fit-content';\r\n default: return this.width();\r\n }\r\n }\r\n\r\n\r\n //Computed\r\n protected _contentList = computed<ICoerRef[]>(() => Array.from(this.contentRef._results));\r\n\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\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\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\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\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\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 HTMLElements.GetElement(`#${this._id}-button-close`)?.blur(); \r\n\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 [id]=\"_id + '-button-close'\" 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, effect, EffectRef, ElementRef, inject, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CoerModal } from '../../../lib/coer-modal/coer-modal.component';\r\nimport { CoerAlert, Files, Tools } from 'coer-elements/tools';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces';\r\n\r\n@Component({\r\n selector: 'coer-filebox-image',\r\n templateUrl: './coer-filebox-image.component.html',\r\n styleUrl: './coer-filebox-image.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerFileboxImage implements OnDestroy {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Generic Tools\r\n protected readonly IsNull = Tools.IsNull;\r\n protected readonly IsNotNull = Tools.IsNotNull;\r\n protected readonly IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n protected readonly IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n //Elements\r\n protected readonly _input = viewChild.required<ElementRef>('input');\r\n protected readonly _modal = viewChild.required<CoerModal>('modal');\r\n\r\n //Variables\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _accept = ['image/png', 'image/jpeg', 'image/gif', 'image/svg+xml'];\r\n protected readonly _Extensions = ['png', 'jpeg', 'jpg', 'gif', 'svg'];\r\n protected readonly _isLoadingInner = signal<boolean>(false);\r\n protected readonly _base64 = signal<string>(''); \r\n protected readonly _image = signal<IFileImage | null>(null); \r\n\r\n //Inputs\r\n public image = input<IFileImage | null | undefined>(null);\r\n public multiple = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n \r\n //Outputs\r\n public onSelected = output<IFile[]>();\r\n public onDeleteImage = output<IFileImage>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._effect = effect(() => {\r\n if(Tools.IsNotNull(this.image())) {\r\n \r\n this._image.set(Tools.IsNotNull(this.image()) ? this.image() as IFileImage : null);\r\n \r\n if(Tools.IsNotNull(this.image())) {\r\n if((this.image()?.value as File)?.name) {\r\n Files.ConvertToBase64(this.image()?.value as File).then(base64 => {\r\n return this._base64.set(base64);\r\n });\r\n }\r\n \r\n else this._base64.set(this.image()?.value as string);\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //computed\r\n protected _isLoading = computed<boolean>(() => {\r\n return this.isLoading() \r\n || this._isLoadingInner();\r\n });\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this._isLoading() \r\n && !this.isDisabled() \r\n && !this.isInvisible();\r\n });\r\n\r\n\r\n //computed\r\n protected _showTrashButton = computed<boolean>(() => { \r\n return !this.isReadonly()\r\n && this._isEnable()\r\n && this.IsNotNull(this._image())\r\n && this.IsNotNull(this._image()!.value)\r\n && this.IsNotOnlyWhiteSpace(this._base64()) \r\n && (this.IsNull(this._image()!.allowDelete) || this._image()!.allowDelete!); \r\n });\r\n\r\n\r\n //computed\r\n protected _showExpandButton = computed<boolean>(() => { \r\n return !this.isReadonly()\r\n && this._isEnable()\r\n && this.IsNotNull(this._image())\r\n && this.IsNotNull(this._image()!.value)\r\n && this.IsNotOnlyWhiteSpace(this._base64()) \r\n && (this.IsNull(this._image()!.allowExpand) || this._image()!.allowExpand!); \r\n });\r\n\r\n\r\n //computed\r\n protected _figureWidth = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this._image()?.value) \r\n && !this._isLoading()\r\n ? 'fit-content' : '210px'\r\n });\r\n\r\n\r\n //computed\r\n protected _figureDashed = computed<boolean>(() => {\r\n return !this.isReadonly()\r\n && !this.isDisabled() \r\n && this.IsOnlyWhiteSpace(this._image()?.value) \r\n });\r\n\r\n\r\n /** */\r\n protected async _SelectImages(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 = Files.GetExtension(file) || ''; \r\n\r\n if (this._Extensions.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 {\r\n this.alert.Warning(`<b>.${extension}</b> extension not allowed`, 'Files');\r\n this._input().nativeElement.value = null;\r\n this._isLoadingInner.set(false);\r\n return;\r\n }\r\n }\r\n\r\n //Response\r\n this._input().nativeElement.value = null;\r\n this._isLoadingInner.set(false);\r\n this.onSelected.emit([...files]);\r\n }\r\n\r\n\r\n /** */\r\n protected _ClickImage(reference: HTMLElement): void {\r\n this._isLoadingInner.set(true);\r\n reference.click();\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(this._image()!);\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-image\">\r\n <figure (click)=\"(_isEnable() && !isReadonly()) ? _ClickImage(input) : null\" \r\n [ngClass]=\"{ \r\n 'dashed': _figureDashed(),\r\n 'cursor-pointer': true \r\n }\"\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 'display' : isInvisible() ? 'none' : '',\r\n 'width' : _figureWidth()\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 #input\r\n type=\"file\"\r\n [accept]=\"_accept\"\r\n (change)=\"_SelectImages($event)\"\r\n (cancel)=\"_isLoadingInner.set(false)\"\r\n [multiple]=\"multiple()\">\r\n \r\n @if(_showTrashButton() || _showExpandButton()) {\r\n <div class=\"icon-container\">\r\n @if(_showTrashButton()) {\r\n <i class=\"icon-trash-can icon-fill\" (click)=\"_DeleteImage($event)\"></i>\r\n }\r\n \r\n @if(_showExpandButton()) {\r\n <i class=\"icon-expand\" (click)=\"_ExpandImage($event)\"></i>\r\n }\r\n </div>\r\n }\r\n </figure>\r\n \r\n @if(isInvisible()) {\r\n <figure [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 'width' : _figureWidth()\r\n }\"> \r\n \r\n <img [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 'display' : 'none'\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, input, output } from '@angular/core';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces'; \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 standalone: false\r\n})\r\nexport class CoerFilebox { \r\n \r\n //Inputs\r\n public type = input<'image'>('image');\r\n public image = input<IFileImage | null | undefined>();\r\n public multiple = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n \r\n //Outputs\r\n public onSelected = output<IFile[]>();\r\n public onDeleteImage = output<IFileImage>();\r\n}","<div class=\"coer-filebox\">\r\n @if(type() === 'image') {\r\n <coer-filebox-image\r\n [image]=\"image()\"\r\n [multiple]=\"multiple()\"\r\n [isLoading]=\"isLoading()\"\r\n [isDisabled]=\"isDisabled()\"\r\n [isReadonly]=\"isReadonly()\"\r\n [isInvisible]=\"isInvisible()\"\r\n (onSelected)=\"onSelected.emit($event)\"\r\n (onDeleteImage)=\"onDeleteImage.emit($event)\"\r\n ></coer-filebox-image>\r\n }\r\n</div>","import { AfterViewInit, Component, inject, input, signal } 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 standalone: false\r\n})\r\nexport class CoerForm implements AfterViewInit { \r\n\r\n //Injection\r\n protected readonly _alert = inject(CoerAlert);\r\n\r\n //Variables\r\n protected readonly _isReady = signal<boolean>(false);\r\n\r\n //Inputs\r\n public formGroup = input.required<FormGroup>();\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit(): void {\r\n Tools.Sleep().then(_ => this._isReady.set(true));\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabled() {\r\n return this.isLoading() || this.isDisabled() || this.isReadonly();\r\n }\r\n\r\n\r\n /** Mark all controls as touched */\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 this._isReady() && Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? (this.formGroup().get(formControlName)!.touched && this.formGroup().get(formControlName)!.invalid)\r\n : this._isReady();\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<T>(formControlName: string, alternative?: T): T {\r\n return this._isReady() && Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? this.formGroup().get(formControlName)!.value\r\n : (Tools.IsNotNull(alternative) ? alternative : null) as T;\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 /** Gets the value of the form */\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 /** Focuses the specified control, otherwise the first invalid control or first 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.GetPropertyList(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 { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, inject, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CoerAlert, CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { IBoxButton } from 'coer-elements/interfaces';\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 standalone: false\r\n})\r\nexport class CoerNumberBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Injections\r\n protected readonly _alert = inject(CoerAlert);\r\n\r\n //Elements\r\n protected readonly _coerNumberbox = viewChild.required<ElementRef>('coerNumberbox');\r\n \r\n //Variables\r\n public override _value: string | number = ''; \r\n protected readonly _id: string = Tools.GetGuid('coer-numberbox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effectExternalButton!: EffectRef;\r\n protected readonly _effectValue!: EffectRef;\r\n protected readonly _externalButton = signal<IBoxButton>({ show: false });\r\n protected _element!: HTMLInputElement;\r\n protected _hideCaret: boolean = false; \r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null); \r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('right');\r\n public min = input<number>(0);\r\n public max = input<number>(2147483647);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public externalButton = input<IBoxButton>({ show: false }); \r\n public selectOnFocus = input<boolean>(true);\r\n public decimals = input<number>(0); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs\r\n public onKeyupEnter = output<string | number>();\r\n public onInput = output<string | number>();\r\n public onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effectValue = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! as string : 0\r\n ); \r\n });\r\n\r\n this._effectExternalButton = effect(() => {\r\n this._externalButton.set(this.externalButton());\r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effectValue?.destroy();\r\n this._effectExternalButton?.destroy();\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 //getter\r\n protected get _showButtonLeft(): boolean {\r\n return this._externalButton().show\r\n && Tools.IsNotNull(this._externalButton()?.position) \r\n && this._externalButton()?.position === 'left' \r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this._externalButton().show\r\n && ((Tools.IsNull(this._externalButton()?.position) || this._externalButton()?.position === 'right'))\r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return Tools.IsNotOnlyWhiteSpace(this._externalButton()?.icon)\r\n ? this._externalButton().icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabledExternalButton(): boolean {\r\n return Tools.IsNotNull(this._externalButton()?.isDisabled)\r\n ? this._externalButton().isDisabled! : false;\r\n }\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\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n \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(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this._element.focus();\r\n if(select) 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 @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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\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 'd-none': isInvisible()\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\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, HTMLElements, 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 standalone: false\r\n})\r\nexport class CoerSelectbox<T> extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly _coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables\r\n protected override _value: T | null = null;\r\n private readonly _scrollByRow: number = 40.8;\r\n protected readonly _id: string = Tools.GetGuid('coer-selectBox');\r\n protected readonly _index = signal<number>(-1);\r\n protected readonly _search = signal<string>('');\r\n protected readonly _isOpen = signal<boolean>(false);\r\n protected readonly _isDirty = signal<boolean>(false);\r\n protected readonly _isOverMenu = signal<boolean>(false);\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _scroll = signal<number>(0);\r\n protected readonly _effect!: EffectRef;\r\n protected _textbox!: HTMLInputElement;\r\n protected _dropDownMenu!: HTMLElement; \r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<T | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('-- Select --');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public dataSource = input<T[]>([]);\r\n public displayProperty = input<string>('name');\r\n public rowsByPage = input<number>(50); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs \r\n public onSelected = output<T>();\r\n public onUnselect = output<null>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => { \r\n //Container\r\n const container = document.getElementById(`${this._id}-container`) as HTMLElement;\r\n\r\n if(container) {\r\n container.addEventListener('mouseenter', () => {\r\n this._isOverMenu.set(true);\r\n });\r\n\r\n container.addEventListener('mouseleave', () => {\r\n this._isOverMenu.set(false);\r\n });\r\n }\r\n \r\n\r\n //DropDown\r\n this._dropDownMenu = document.getElementById(`${this._id}-dropdown-menu`) as HTMLElement;\r\n \r\n if(this._dropDownMenu) {\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\r\n\r\n //TextBox\r\n this._textbox = document.getElementById(this._id) as HTMLInputElement;\r\n\r\n if(this._textbox) {\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('keydown', () => {\r\n if(!this._isOpen()) this._Open();\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\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.displayProperty()]) {\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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\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.displayProperty()] : '';\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 //getter\r\n protected get _showCancel(): boolean { \r\n return Tools.IsNotNull(this._value)\r\n && Tools.IsNotNull(this._search())\r\n && this._search().length <= 0;\r\n }\r\n\r\n\r\n //getter\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 //getter\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.displayProperty();\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 //ControlValueAccessor\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(null);\r\n }\r\n\r\n if(typeof this._UpdateValue === 'function') { \r\n this._UpdateValue(_value);\r\n } \r\n\r\n this._value = _value;\r\n this._search.set(this._GetDisplay(_value));\r\n }\r\n\r\n\r\n //ControlValueAccessor\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 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.displayProperty()] : '';\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(open: boolean = true, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(_ => {\r\n if(this._isEnable()) {\r\n this._textbox.focus();\r\n this._textbox.select();\r\n if(open) 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.displayProperty()]).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 class=\"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-primary\" (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>","import { Component, computed, EffectRef, ElementRef, input, AfterViewInit, output, signal, viewChild, effect, OnDestroy } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { IBoxButton } from 'coer-elements/interfaces';\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 standalone: false\r\n})\r\nexport class CoerTextBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected readonly coerTextBox = viewChild.required<ElementRef>('coerTextBox'); \r\n\r\n //Variables\r\n protected override _value: string | number = '';\r\n protected readonly _id: string = Tools.GetGuid('coer-textBox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _externalButton = signal<IBoxButton>({ show: false }); \r\n protected readonly _effectExternalButton!: EffectRef;\r\n protected readonly _effectValue!: EffectRef;\r\n private element!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>('');\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(50);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public externalButton = input<IBoxButton>({ show: false });\r\n public selectOnFocus = input<boolean>(false);\r\n public showClearIcon = input<boolean>(false);\r\n public showSearchIcon = input<boolean>(false); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\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 onClickSearch = output<string | number>();\r\n public onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effectValue = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! as string : ''\r\n ); \r\n }); \r\n\r\n this._effectExternalButton = effect(() => {\r\n this._externalButton.set(this.externalButton());\r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effectValue?.destroy();\r\n this._effectExternalButton?.destroy();\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._externalButton().show\r\n && Tools.IsNotNull(this._externalButton()?.position) \r\n && this._externalButton()?.position === 'left' \r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this._externalButton().show\r\n && ((Tools.IsNull(this._externalButton()?.position) || this._externalButton()?.position === 'right'))\r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return Tools.IsNotOnlyWhiteSpace(this._externalButton()?.icon)\r\n ? this._externalButton().icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabledExternalButton(): boolean {\r\n return Tools.IsNotNull(this._externalButton()?.isDisabled)\r\n ? this._externalButton().isDisabled! : false;\r\n } \r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\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 public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n if(select) 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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\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 this.onClickSearch.emit(this._value);\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\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 'd-none': isInvisible()\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(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { IGridButtonByRow, IGridColumn, IGridDataSource, IGridImport, IGridHeaderButton, IGridHeaderExportButton, IGridKeyupEnter, IGridSearch, IGridInput, IGridSort, IGridCheckbox, IGridInputCheckbox, IGridHeader, IGridHeaderImportButton } 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, Dates, HTMLElements, Screen, Tools, Strings, Numbers } 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 readonly _inputFile = viewChild.required<ElementRef>('inputFileRef');\r\n protected readonly _inputSearch = viewChild.required<CoerTextBox>('inputSearch');\r\n protected readonly _coerTextboxList = viewChildren(CoerTextBox);\r\n protected readonly _coerNumberboxList = viewChildren(CoerNumberBox);\r\n protected readonly _coerSelectboxList = viewChildren(CoerSelectbox);\r\n protected readonly _coerCheckboxList = viewChildren(CoerCheckbox);\r\n\r\n //Variables\r\n protected override _value: T[] = [];\r\n protected readonly _id: string = Tools.GetGuid('coer-grid');\r\n protected readonly _value_signal = signal<T[]>([]);\r\n protected readonly _gridSearch = signal<string | number>('');\r\n protected readonly _isLoading = signal<boolean>(true); \r\n protected readonly _sort = signal<IGridSort>({ columnName: '', direction: 'none', icon: '' });\r\n protected _isLoadingMessage: boolean = true;\r\n protected _expandedGroups: string[] = [];\r\n protected _enableAnimations: boolean = false;\r\n protected _indexFocus = signal<number>(0);\r\n\r\n //Generic Tools\r\n protected GetNumericFormat = Numbers.GetNumericFormat; \r\n protected GetElementWidth = HTMLElements.GetElementWidth; \r\n protected GetElementHeight = HTMLElements.GetElementHeight; \r\n\r\n //Inputs\r\n @Input() saveButton: IGridHeaderButton = { show: false };\r\n @Input() addButton: IGridHeaderButton = { show: false };\r\n @Input() exportButton: IGridHeaderExportButton = { show: false };\r\n @Input() importButton: IGridHeaderImportButton = { 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 columns = input<IGridColumn<T>[]>([]);\r\n public cleanColumnName = input<boolean>(true); \r\n public tooltipByRow = input<string>('');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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 showFooter = input<boolean>(true);\r\n public enableSort = input<boolean>(true);\r\n public enableRowFocus = input<boolean>(true);\r\n public enableNext = 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\r\n //Outputs\r\n public onClickSave = output<void>();\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<IGridInput<T>>();\r\n public onTextboxChange = output<IGridInput<T>>();\r\n public onSelectboxChange = output<IGridInput<T>>();\r\n public onCheckboxChange = output<IGridInputCheckbox<T>>();\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => {\r\n this._enableAnimations = true;\r\n this._isLoading.set(false);\r\n this._isLoadingMessage = false;\r\n });\r\n }\r\n\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\r\n //computed\r\n protected _isGrouped = computed<boolean>(() => {\r\n return this.groupBy().length > 0;\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' || 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 //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 checked column\r\n if (SET_COLUMNS.has('checked')) {\r\n SET_COLUMNS.delete('checked');\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 let listFiltered: any[] = [];\r\n const SET_ROW = new Set<number>();\r\n\r\n const columnList = Tools.IsNotNull(this.search?.columns)\r\n ? this.search.columns!.map(x => Strings.FirstCharToLower(x))\r\n : this._gridColumns().map(x => x.columnName);\r\n\r\n for(const columnName of columnList) {\r\n listFiltered = dataSource.filter((item: any) =>\r\n !SET_ROW.has(item['indexRow'])\r\n && String(item[Strings.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 = Strings.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 _GetSearchIcon = (columnName: string) => { \r\n return this.search.show \r\n && (Tools.IsNull(this.search?.ignore) || !this.search.ignore)\r\n && (Tools.IsNull(this.search?.columns) || this.search.columns?.includes(columnName)) \r\n && String(this._gridSearch()).trim().length > 0\r\n ? 'fa-solid fa-magnifying-glass ms-auto' : '';\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[Strings.FirstCharToLower(columnName).replaceAll(' ', '')];\r\n }\r\n\r\n\r\n /** */\r\n protected _GetDateFormat = (date: string, toLocalZone: boolean = true) => {\r\n if (toLocalZone) date = Dates.ToLocalZone(date);\r\n return Dates.GetDateFormat(date);\r\n }\r\n\r\n\r\n /** */\r\n protected _GetDateTimeFormat = (date: string, toLocalZone: boolean = true) => {\r\n if (toLocalZone) date = Dates.ToLocalZone(date);\r\n return Dates.GetDateTimeFormat(date);\r\n } \r\n\r\n /** */\r\n protected _GetTooltip = (prefix: string, row: any, suffix: string = ''): string => {\r\n let column = Strings.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' | 'date-time' | 'toLocalZone' | '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) && !this.isReadonly()) {\r\n const inputConfig: any = columnConfig;\r\n response = inputConfig.hasOwnProperty(type)\r\n && typeof inputConfig[type] === 'function'\r\n && inputConfig[type]({ indexRow: data.indexRow, 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({ indexRow: data.indexRow, 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({ indexRow: data.indexRow, property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n\r\n case 'date-time': {\r\n if (data === null) return false;\r\n\r\n if (typeof columnConfig.typeDateTime === 'boolean') {\r\n response = columnConfig.typeDateTime;\r\n }\r\n\r\n else if (typeof columnConfig.typeDateTime === 'function') {\r\n response = (data === null) ? false : columnConfig.typeDateTime({ indexRow: data.indexRow, property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n\r\n case 'toLocalZone': {\r\n response = true;\r\n \r\n if (data === null) return true;\r\n\r\n if (typeof columnConfig.toLocalZone === 'boolean') {\r\n response = columnConfig.toLocalZone;\r\n }\r\n\r\n else if (typeof columnConfig.toLocalZone === 'function') {\r\n response = (data === null) ? true : columnConfig.toLocalZone({ indexRow: data.indexRow, 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 indexRow: data.indexRow,\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]({ indexRow: data.indexRow, 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]({ indexRow: data.indexRow, 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]({ indexRow: data.indexRow, 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\r\n\r\n /** */ \r\n protected _ColorButton(button: IGridHeaderButton | IGridHeaderImportButton | IGridHeaderExportButton): 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' {\r\n return Tools.IsNotNull(button) && Tools.IsNotOnlyWhiteSpace(button?.color)\r\n ? button!.color! : 'primary'; \r\n }\r\n\r\n\r\n /** */ \r\n protected _ColorButtonByRow(property: string): 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' { \r\n const BUTTON_ROW = Tools.BreakReference<any>(this.buttonByRow);\r\n\r\n switch (property) {\r\n case 'editButtonColor': {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'primary';\r\n }\r\n\r\n case 'deleteButtonColor': {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'danger';\r\n }\r\n\r\n case 'goButtonColor': { \r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'navigation';\r\n }\r\n\r\n default : {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'primary'; \r\n }\r\n } \r\n }\r\n}","import { Component, computed, input, OnDestroy, output, viewChild, effect, EffectRef } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Strings, Tools } from 'coer-elements/tools';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle'; \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 standalone: false\r\n})\r\nexport class CoerSwitch extends ControlValue implements OnDestroy {\r\n\r\n //Elements\r\n protected coerSwitch = viewChild.required<MatSlideToggle>('coerSwitch');\r\n\r\n //Variables\r\n protected override _value: boolean = false;\r\n protected readonly _id: string = Tools.GetGuid('coer-switch');\r\n protected readonly _effect!: EffectRef; \r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<boolean | null | undefined>(null);\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('top'); \r\n\r\n\r\n //Outputs\r\n public onChange = output<boolean>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : false\r\n ); \r\n });\r\n } \r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy(); \r\n }\r\n\r\n\r\n //computed\r\n protected _tooltip = computed(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.tooltip())\r\n ? Strings.CleanUpBlanks(this.tooltip()) : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _tooltipPosition = computed<'above' | 'right' | 'below' | 'left'>(() => {\r\n switch(this.tooltipPosition()) {\r\n case 'top' : return 'above';\r\n case 'right' : return 'right';\r\n case 'bottom': return 'below';\r\n default: return 'left'; \r\n } \r\n });\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 /** */\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\" \r\n [matTooltip]=\"_tooltip()\"\r\n [matTooltipPosition]=\"_tooltipPosition()\"\r\n [matTooltipDisabled]=\"!_isEnable()\"\r\n [matTooltipHideDelay]=\"0\"\r\n [ngClass]=\"{ 'placeholder': isLoading() }\">\r\n \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, Strings, Collections } 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 standalone: false\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(select: boolean = false): void {\r\n Tools.Sleep().then(() => {\r\n if(this._inputSearch) this._inputSearch().Focus(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 protected Import(): void {\r\n this._Import();\r\n }\r\n\r\n\r\n /** */\r\n protected async _Import(event: any = null): Promise<void> {\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.set(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.set(false));\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Export(exportFile: boolean = true): void {\r\n this._Export(exportFile);\r\n } \r\n\r\n\r\n /** */\r\n protected _Export(exportFile: boolean | undefined = true): void {\r\n let item: any = {};\r\n this._isLoading.set(true);\r\n const FILE_NAME = (this.exportButton?.fileName || 'COER Report') + '.xlsx';\r\n\r\n let ROW_DATA_SOURCE: T[] = [];\r\n\r\n if (this.exportButton.hasOwnProperty('onlySelectedItem') && this.exportButton.onlySelectedItem) {\r\n ROW_DATA_SOURCE = this.selectedItems();\r\n }\r\n\r\n else {\r\n ROW_DATA_SOURCE = (this.exportButton.hasOwnProperty('onlyRowFiltered') && !this.exportButton.onlyRowFiltered)\r\n ? this._value_signal() : this._gridDataSourceFiltered();\r\n }\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(Strings.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(Strings.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.set(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 = Strings.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 if(this.enableNext()) {\r\n this.__NextInput(indexColumn, row.indexRow);\r\n }\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: number = -1, indexColumn: number = -1, onlyFocus: boolean = false): void {\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, onlyFocus);\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.Focus(!onlyFocus);\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.Focus(!onlyFocus);\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(!onlyFocus)); \r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public FocusLastInput(onlyFocus: boolean = false): void {\r\n Tools.Sleep(0, 'FocusInput').then(() => {\r\n if (this._isDisabled()) return;\r\n \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 INPUT_COLUMNS = COLUMNS.filter(x => ['coerTextbox', 'coerNumberbox', 'coerSelectbox'].includes(x.type));\r\n const LAST_INPUT_COLUMN = INPUT_COLUMNS.pop();\r\n\r\n if (Tools.IsNotNull(LAST_INPUT_COLUMN)) {\r\n this.FocusInput(0, LAST_INPUT_COLUMN!.indexColumn, onlyFocus);\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 Sort(columnName: string): void {\r\n if (this.enableSort()) {\r\n if(this._isLoading()) return;\r\n\r\n this._isLoading.set(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 Collections.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 Collections.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.set(false);\r\n\r\n Tools.Sleep().then(() => {\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 }\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.set(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.set(false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public CheckAll(): void {\r\n this._isLoading.set(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.set(false);\r\n }\r\n\r\n\r\n /** */\r\n public UncheckAll(): void {\r\n this._isLoading.set(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.set(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, focus: boolean = true, onlyFocus: boolean = false): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.unshift(row);\r\n this.SetValue(dataSource);\r\n if(focus) this.FocusInput(-1, -1, onlyFocus);\r\n }\r\n\r\n\r\n /** Appends new elements to the end */\r\n public Push(row: T, focus: boolean = true, onlyFocus: boolean = false): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.push(row);\r\n this.SetValue(dataSource);\r\n if(focus) this.FocusLastInput(onlyFocus); \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]=\"_ColorButton(exportButton)\"\r\n icon=\"excel\"\r\n [tooltip]=\"_isLoading() ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n [isDisabled]=\"_isDisabled() || _isLoading() || (exportButton.isDisabled || false)\"\r\n [isLoading]=\"_isLoading()\" \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 && !isReadonly()) {\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=\"primary\"\r\n [color]=\"_ColorButton(importButton)\"\r\n [tooltip]=\"importButton.tooltip || 'Import'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n [isDisabled]=\"importButton.isDisabled || false\" \r\n (onClick)=\"_Import()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Add Button -->\r\n @if(addButton.show && !isReadonly()) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n [color]=\"_ColorButton(addButton)\"\r\n icon=\"new\"\r\n [tooltip]=\"addButton.tooltip || 'New'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n [isDisabled]=\"addButton.isDisabled || false\" \r\n (onClick)=\"onClickAdd.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Save Button -->\r\n @if(saveButton.show && !isReadonly()) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n [color]=\"_ColorButton(saveButton)\"\r\n icon=\"save\"\r\n [tooltip]=\"saveButton.tooltip || 'Save'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(saveButton && saveButton.path) ? saveButton.path : []\"\r\n [isDisabled]=\"saveButton.isDisabled || false\" \r\n (onClick)=\"onClickSave.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 #innerContainer [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\"> \r\n @if(!_isDisabled() && gridLength().dataSource <= 0 && !isLoading()) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n \r\n <div [ngClass]=\"{ 'display-none' : isLoading() }\">\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 [ignoreDataBinding]=\"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 d-flex align-items-center\">\r\n <span class=\"me-1\"> {{ _GetColumnName(header.columnName) }} </span>\r\n <i [class]=\"_GetShortIcon(header.columnName)\"></i> \r\n <i [class]=\"_GetSearchIcon(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 <!-- Go 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 [ignoreDataBinding]=\"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 [displayProperty]=\"_GetAttribute(header.columnName, row, 'displayProperty', '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], _IsCellType(header.columnName, row, 'toLocalZone')) }} </span>\r\n }\r\n \r\n @else if(_IsCellType(header.columnName, row, 'date-time')) {\r\n <span> {{ _GetDateTimeFormat(row[header.columnName], _IsCellType(header.columnName, row, 'toLocalZone')) }} </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]=\"_ColorButtonByRow('deleteButtonColor')\"\r\n icon=\"delete\"\r\n [tooltip]=\"_GetTooltip('Delete', row)\"\r\n [isInvisible]=\"_isDisabled()\"\r\n [isReadonly]=\"isReadonly()\"\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]=\"_ColorButtonByRow('editButtonColor')\"\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]=\"_ColorButtonByRow('goButtonColor')\"\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\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\" [ngStyle]=\"{ \r\n 'width': '100%', \r\n 'height': '100%',\r\n 'bottom': showFooter() ? '35px' : '10px'\r\n }\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div> \r\n }\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 standalone: false\r\n})\r\nexport class CoerList<T> { \r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-List'); \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 showDeleteButtonByRow = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showGoButtonByRow = 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 \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 /** */\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 _showDeleteButtonByRow = (item: any): boolean => { \r\n const showButton = this.showDeleteButtonByRow() 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 _showGoButtonByRow = (item: any): boolean => { \r\n const showButton = this.showGoButtonByRow() 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 (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(_showDeleteButtonByRow(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(_showGoButtonByRow(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 { Component, computed, inject, input, output } 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 standalone: false\r\n})\r\nexport class CoerMenuOption {\r\n\r\n //Injects\r\n protected readonly _router = inject(Router);\r\n\r\n //Inputs\r\n public level = input<number>(1);\r\n public label = input<string>('');\r\n public icon = input<undefined | string>();\r\n public path = input<undefined | string>();\r\n public tree = input<IMenu[]>([]);\r\n\r\n //Outputs\r\n public onClickMenuOption = output<IMenuOptionSelected>();\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.icon()) ? this.icon()! : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _path = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.path()) ? this.path()! : '/home';\r\n });\r\n\r\n\r\n //computed\r\n protected _tree = computed<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 //computed\r\n protected _marginLeft = computed<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 //computed\r\n protected _identityClass = computed<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 protected _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.onClickMenuOption.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('', true)\">\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, computed, effect, EffectRef, ElementRef, input, OnDestroy, AfterViewInit, 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-secretbox',\r\n templateUrl: './coer-secretbox.component.html',\r\n styleUrl: './coer-secretbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerSecretBox)],\r\n standalone: false\r\n})\r\nexport class CoerSecretBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected readonly coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables\r\n protected override _value: string | number = '';\r\n protected readonly _id: string = Tools.GetGuid('coer-textBox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effect!: EffectRef;\r\n protected passwordType: boolean = true;\r\n protected element!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(25);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public showSecret = input<boolean>(false); \r\n public selectOnFocus = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\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 onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : ''\r\n ); \r\n });\r\n }\r\n\r\n \r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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 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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showSecret() {\r\n return !this.showSecret()\r\n && !this.isDisabled()\r\n && !this.isLoading()\r\n }\r\n\r\n\r\n //getter\r\n protected get _passwordType() {\r\n return this.showSecret() \r\n || this.passwordType \r\n || this.isDisabled() \r\n || this.isLoading()\r\n } \r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\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 if(this._showSecret && (this.isInvalid() || this.isValid())) {\r\n return '45px';\r\n }\r\n\r\n else if (this._showSecret || this.isInvalid() || this.isValid()) {\r\n return '18px';\r\n }\r\n\r\n else {\r\n return '0px';\r\n }\r\n }); \r\n\r\n\r\n /** */\r\n public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n if(select) 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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\r\n }\r\n}","<div class=\"coer-text-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"_floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading(),\r\n 'd-none': isInvisible()\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]=\"_passwordType ? 'password': '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 class=\"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\r\n @if(_showSecret) {\r\n <i [ngClass]=\"{\r\n 'fa-solid cursor-pointer': true, \r\n 'fa-eye-slash': passwordType,\r\n 'fa-eye': !passwordType\r\n }\" \r\n [ngStyle]=\"{\r\n 'margin-right': isInvalid() || isValid() ? '25px' : '0px'\r\n }\"\r\n (click)=\"passwordType = !passwordType\"></i> \r\n }\r\n </span>\r\n </mat-form-field> \r\n\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n } \r\n</div> ","import { Component, computed, input, output, viewChild } from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { IBreadcrumb, IGoBack, IInformation } from 'coer-elements/interfaces';\r\nimport { Collections, Menu, Tools } from 'coer-elements/tools'; \r\nimport { breakpointSIGNAL } from 'coer-elements/signals';\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 standalone: false\r\n})\r\nexport class CoerPageTitle {\r\n\r\n //Elements\r\n protected readonly _informationButton = viewChild.required<MatIconButton>('infoButton');\r\n \r\n //Variables\r\n protected readonly _iconRoot: string = 'icon-fill icon-house'; \r\n\r\n //Inputs \r\n public readonly title = input<string | null>(null);\r\n public readonly showBreadcrumbs = input<boolean>(true);\r\n public readonly breadcrumbs = input<IBreadcrumb[]>([]);\r\n public readonly goBack = input<IGoBack>({ show: false });\r\n public readonly information = input<IInformation>({ show: false });\r\n \r\n //Outputs \r\n public readonly onClickInformation = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\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 this._iconRoot = MENU_SELECTED.icon;\r\n }\r\n }\r\n } \r\n\r\n\r\n //computed\r\n protected _tooltip = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.information()?.tooltip)\r\n ? this.information().tooltip! : 'Information';\r\n }); \r\n \r\n \r\n //computed\r\n protected _breadcrumbs = computed<any[]>(() => { \r\n return this.breadcrumbs()\r\n .slice(0, (breakpointSIGNAL() == 'mv' ? 1 : this.breadcrumbs().length))\r\n .map((item, index) => Object.assign(item, { index }));\r\n }); \r\n\r\n\r\n /** */\r\n protected _ClickInformation(): void {\r\n this._informationButton()._elementRef?.nativeElement?.blur();\r\n this.onClickInformation.emit();\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 @if(information().show) {\r\n <button \r\n #infoButton\r\n mat-icon-button\r\n [matTooltip]=\"_tooltip()\"\r\n matTooltipPosition=\"before\"\r\n [matTooltipDisabled]=\"false\"\r\n [matTooltipHideDelay]=\"0\"\r\n type=\"button\"\r\n (click)=\"_ClickInformation()\">\r\n <i class=\"icon-circle-info\"></i>\r\n </button>\r\n }\r\n </h2>\r\n\r\n <!-- Navigation -->\r\n @if(showBreadcrumbs()) {\r\n <nav> \r\n <a class=\"breadcrumb-root\">\r\n <i [class]=\"_iconRoot\"></i>\r\n </a>\r\n \r\n <!-- Breadcrumbs -->\r\n <div class=\"breadcrumbs\"> \r\n @for(nav of _breadcrumbs(); track nav.index) {\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 } \r\n </div>\r\n \r\n\r\n <!-- Go Back -->\r\n @if(goBack().show) {\r\n <a class=\"go-back\"\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 }\r\n </nav>\r\n }\r\n</header> ","import { Component, computed, input, output, viewChild, viewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { MatExpansionPanel } from '@angular/material/expansion'; \r\nimport { menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { Source, 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 standalone: false\r\n})\r\nexport class CoerTreeAccordion { \r\n\r\n //Elements \r\n protected expansionPanel = viewChild.required<MatExpansionPanel>('expansionPanel');\r\n public menuList = viewChildren(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 public level = input<number>(1);\r\n public item = input.required<IMenu>();\r\n public tree = input<IMenu[]>([]);\r\n public showTree = input<boolean>(true);\r\n\r\n //Outputs\r\n public showGridMenu = output<IMenuOptionSelected>();\r\n public onClickMenuOption = output<IMenuOptionSelected>();\r\n public clickMenu = output<IMenuSelected>();\r\n\r\n\r\n //computed\r\n protected _tree = computed<IMenu[]>(() => {\r\n return [...this.tree()].concat([{...this.item()}])\r\n });\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n return this.item() && Tools.IsNotOnlyWhiteSpace(this.item()?.icon) \r\n ? this.item().icon! : 'coer-icon-bars';\r\n });\r\n\r\n\r\n //computed\r\n protected _marginLeft = computed<string>(() => {\r\n return `${(this.level() - 1) * 20}px`;\r\n });\r\n\r\n\r\n //computed\r\n protected _identityClass = computed<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 => Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.items);\r\n\r\n\r\n /** */\r\n protected _IsGrid = (item: IMenu): boolean => Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.show) && item.show === 'GRID';\r\n\r\n\r\n /** */\r\n protected _GetGridIcon = (icon: string | null | undefined): string => Tools.IsNotOnlyWhiteSpace(icon) ? icon! : 'fa-solid fa-grip';\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 if(this.showTree()) {\r\n this.isExpanded = !this.isExpanded;\r\n this.isCollapsed = !this.isCollapsed; \r\n }\r\n\r\n else {\r\n this.isExpanded = true;\r\n this.isCollapsed = false;\r\n Source.Reset();\r\n }\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, showGridMenu: boolean = false): void {\r\n for(const menu of this.menuList()) {\r\n if(menu.item().label != menuOption.tree[this.level()].label) {\r\n menu.Close();\r\n }\r\n }\r\n \r\n if(showGridMenu) this.showGridMenu.emit(menuOption);\r\n else this.onClickMenuOption.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()) {\r\n if (menuLv2.item().label != menu.label) menuLv2.Close();\r\n }\r\n\r\n this.clickMenu.emit(menu);\r\n }\r\n\r\n\r\n /** */\r\n protected _ShowGridMenu(menuOption: IMenuOptionSelected, menu: IMenu) { \r\n menuSelectedSIGNAL.set({\r\n level: this.level() + 1,\r\n label: menu.label,\r\n icon: this._GetGridIcon(menu.label),\r\n isExpanded: true,\r\n isCollapsed: false,\r\n items: menu.items,\r\n tree: []\r\n }); \r\n \r\n this._ClickMenuOption(menuOption, true); \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-navigation': (isExpanded && level() == 1),\r\n 'text-sidenav-active': _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-sidenav-active': _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-sidenav-active': _IsActive(labelContainer)\r\n }\"> {{ item().label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n @if(showTree()) { \r\n <div *ngFor=\"let subItem of item().items\">\r\n @if(_IsMenu(subItem)) {\r\n <!-- Sub Menu -->\r\n @if(_IsGrid(subItem)) {\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"_GetGridIcon(subItem!.icon)\"\r\n path='menu'\r\n [level]=\"level() + 1\"\r\n [tree]=\"_tree()\"\r\n (onClickMenuOption)=\"_ShowGridMenu($event, subItem)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n @else {\r\n <coer-tree-accordion\r\n [level]=\"level() + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree()\"\r\n (onClickMenuOption)=\"_ClickMenuOption($event)\"\r\n (clickMenu)=\"_ClickMenu($event)\"\r\n ></coer-tree-accordion> \r\n }\r\n }\r\n\r\n @else {\r\n <!-- Option Menu --> \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 (onClickMenuOption)=\"_ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n } \r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n </mat-expansion-panel>\r\n</mat-accordion>","import { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL, isLoadingSIGNAL, menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { Component, WritableSignal, computed, inject, output, 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 { Tools, Breadcrumbs, Menu, Screen, HTMLElements } 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 standalone: false\r\n})\r\nexport class CoerSidenav {\r\n\r\n //Injections\r\n private readonly _router = inject(Router);\r\n\r\n //Elements\r\n protected readonly sidenav = viewChild.required<MatDrawer>('matSidenav');\r\n protected readonly menuList = viewChildren(CoerTreeAccordion);\r\n\r\n //Variables \r\n protected readonly _isOpen: WritableSignal<boolean> = isMenuOpenSIGNAL;\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected readonly _isLoading: WritableSignal<boolean> = isLoadingSIGNAL; \r\n \r\n //Outputs \r\n public onMenuSelected = output<IMenuSelected>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._BackButtonBrowser(); \r\n this._isOpen.set(false); \r\n\r\n Screen.Resize.subscribe({\r\n next: ({ breakpoint }: IScreenSize) => {\r\n breakpointSIGNAL.set(breakpoint);\r\n if(this._backdrop()) this.Close();\r\n }\r\n });\r\n } \r\n\r\n\r\n //computed\r\n protected _backdrop = computed<boolean>(() => {\r\n return ['mv', 'xs', 'sm', 'md'].includes(breakpointSIGNAL());\r\n }); \r\n\r\n\r\n //computed\r\n protected _mode = computed<'over' | 'push'>(() => {\r\n return ['mv', 'xs', 'sm', 'md'].includes(breakpointSIGNAL()) ? 'over' : 'push';\r\n }); \r\n\r\n\r\n //computed\r\n protected _showAsideMenu = computed<boolean>(() => {\r\n return ['xl', 'xxl'].includes(breakpointSIGNAL()) && !this._isOpen()\r\n }); \r\n\r\n\r\n //computed\r\n protected _navigation = computed<IMenu[]>(() => {\r\n let id: number = 0;\r\n const navigation = navigationSIGNAL();\r\n return navigation.map(item => Object.assign(item, { id: ++id })); \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 \r\n Tools.Sleep().then(_ => {\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()) {\r\n menuLv2.Close();\r\n }\r\n menuLv1.Close();\r\n }\r\n } \r\n\r\n //Close Sidenav\r\n if(this._mode() == 'over') {\r\n this.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 let scroll = 0;\r\n let find = false;\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 find = true;\r\n }\r\n\r\n else if(!find) scroll += 50; \r\n }\r\n\r\n selectedOption.tree.pop();\r\n }\r\n\r\n //Scroll sideNav\r\n HTMLElements.Scroll(this._isOpen() ? '.mat-drawer-inner-container' : 'aside', scroll);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public _Open(): void {\r\n this._isOpen.set(true);\r\n Tools.Sleep().then(_ => this.SetActiveLink(Menu.GetSelectedOption()));\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 this._isOpen.set(false);\r\n Tools.Sleep().then(_ => this.SetActiveLink(Menu.GetSelectedOption()));\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()) {\r\n menuLv2.Close();\r\n }\r\n\r\n menuLv1.Close();\r\n }\r\n }\r\n } \r\n\r\n this.onMenuSelected.emit(menuSelectedSIGNAL()!);\r\n }\r\n\r\n\r\n /** */\r\n protected _ShowGridMenu(menuOption: IMenuOptionSelected, menu: IMenu) {\r\n menuSelectedSIGNAL.set({\r\n level: 1,\r\n label: menu.label,\r\n icon: this._GetIcon(menu),\r\n isExpanded: true,\r\n isCollapsed: false,\r\n items: menu.items,\r\n tree: []\r\n }); \r\n \r\n this._NavigateTo(menuOption); \r\n }\r\n\r\n\r\n /** */\r\n protected _IsMenu = (item: IMenu): boolean => Tools.IsNotNull(item) && Tools.IsNotNull(item?.items);\r\n\r\n\r\n /** */\r\n protected _IsGrid = (item: IMenu): boolean => item?.show === 'GRID';\r\n \r\n\r\n /** */\r\n protected _GetIcon = (item: IMenu): string => { \r\n return item?.icon \r\n || (this._IsMenu(item) ? (this._IsGrid(item) ? 'fa-solid fa-grip' : 'coer-icon-bars') : '');\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 protected _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 protected _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.RemoveByPath(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)=\"_Open()\"\r\n (closed)=\"_Close()\"\r\n [mode]=\"_mode()\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) { \r\n @for(item of _navigation(); track item.id) {\r\n \r\n <!-- Menu --> \r\n @if(_IsMenu(item)) {\r\n @if(_IsGrid(item)) {\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"_GetIcon(item)\"\r\n path=\"menu\"\r\n (onClickMenuOption)=\"_ShowGridMenu($event, item)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n @else {\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (showGridMenu)=\"_NavigateTo($event)\"\r\n (onClickMenuOption)=\"_NavigateTo($event)\"\r\n (clickMenu)=\"_MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n }\r\n }\r\n \r\n <!-- Option Menu -->\r\n @else {\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (onClickMenuOption)=\"_NavigateTo($event)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n \r\n <div class=\"separator\"></div> \r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option label=\"Empty\"></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"icon-arrows-sync animation-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 scrollbar-invisible': true, 'display-none': !_showAsideMenu() }\" (click)=\"Open($event)\">\r\n @if(_isLoading()) {\r\n <span class=\"icon-container\">\r\n <i class=\"icon-arrows-sync animation-spin\"></i>\r\n </span>\r\n }\r\n\r\n @else {\r\n @for (item of _navigation(); track item.id) {\r\n <div (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 }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside> \r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>","import { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, input, OnDestroy, 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-dropdown',\r\n templateUrl: './coer-dropdown.component.html',\r\n styleUrl: './coer-dropdown.component.scss',\r\n providers: [CONTROL_VALUE(CoerDropdown)],\r\n standalone: false\r\n})\r\nexport class CoerDropdown<T> extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly _coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables \r\n protected override _value: T | null = null;\r\n protected readonly _id: string = Tools.GetGuid('coer-dropdown');\r\n protected readonly _effect!: EffectRef;\r\n protected _index = signal<number>(-1); \r\n protected _isOpen = signal<boolean>(false); \r\n protected _isOverMenu = signal<boolean>(false); \r\n protected _dropDownMenu!: HTMLElement;\r\n protected _container!: HTMLElement; \r\n \r\n //Inputs\r\n public id = input<string>('');\r\n public value = input<string | null | undefined>(null);\r\n public label = input<string>('');\r\n public color = input<'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' | 'dark' | 'light'>('default');\r\n public type = input<'filled' | 'outline'>('filled');\r\n public dataSource = input<T[]>([]);\r\n public propDisplay = input<string>('name');\r\n public rowsByPage = input<number>(50); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n public width = input<string>('190px');\r\n public minWidth = input<string>('150px');\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 tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('left');\r\n\r\n //Outputs \r\n public onSelected = output<T>();\r\n public onUnselect = output<null>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep().then(() => {\r\n //Container\r\n this._container = document.getElementById(`${this._id}-container`) as HTMLElement;\r\n\r\n if(this._container) {\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\r\n\r\n //Document\r\n document.addEventListener('click', () => {\r\n if(!this._isOverMenu()) this.Close();\r\n }); \r\n }); \r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n \r\n\r\n //getter\r\n protected get _label(): string {\r\n let label = this.label();\r\n\r\n if (this.dataSource().length > 0) {\r\n if (Tools.IsNotNull(this._value)) {\r\n label = (this._value as any)[this.propDisplay()]\r\n } \r\n }\r\n\r\n return label;\r\n }\r\n\r\n\r\n //getter\r\n protected get _icon(): string { \r\n return Tools.IsNotNull(this.value) \r\n && Tools.IsNotOnlyWhiteSpace((this.value as any)?.icon)\r\n ? (this.value as any)?.icon || '' : '';\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\r\n }); \r\n\r\n\r\n //computed\r\n protected _dataSource = computed(() => {\r\n let index = 0; \r\n let dataSource = this.dataSource().map((item: any) => Object.assign(item, { index: index++ })); \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 //ControlValueAccessor\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(null);\r\n }\r\n\r\n if(Tools.IsNotNull(this._UpdateValue)) this._UpdateValue(_value);\r\n this._value = _value; \r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override writeValue(_value: any): void {\r\n if(_value === undefined) _value = null;\r\n this._value = _value; \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 _GetIcon = (item: any): string => {\r\n return Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.icon) ? item.icon : '';\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 _GetPath = (item: any): string | (string | number)[] | null => { \r\n if (Tools.IsNotNull(item)) {\r\n if (Tools.IsNotOnlyWhiteSpace(item?.path)) return item?.path;\r\n if (Tools.IsNotOnlyWhiteSpace(item?.url)) return item?.url; \r\n if (Tools.IsNotOnlyWhiteSpace(item?.route)) return item?.route; \r\n if (Tools.IsNotOnlyWhiteSpace(item?.link)) return item?.link;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n protected _SelectItem(item: any): void { \r\n if (Tools.IsNotNull(item) && this._isEnable()) { \r\n const _item = Tools.BreakReference<any>(this.dataSource()[item.index]);\r\n \r\n if(Tools.IsNotNull(_item) && Tools.IsNull(this._GetPath(item))) {\r\n this.SetValue(Tools.BreakReference(_item)); \r\n }\r\n \r\n delete _item.indexRow;\r\n delete _item.index; \r\n this.onSelected.emit({ ..._item }); \r\n Tools.Sleep().then(() => this.Close())\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Unselect(): void { \r\n this.SetValue(null);\r\n this.Close(); \r\n } \r\n\r\n\r\n /** */\r\n protected _Toggle(): void {\r\n if (this._isOpen()) this.Close();\r\n else this.Open();\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n Tools.Sleep().then(_ => {\r\n if(this._isEnable()) {\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\r\n /** */\r\n public Close(): void {\r\n Tools.Sleep().then(_ => {\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 /** */\r\n public SetValueBy(callback: (row: T) => boolean): void {\r\n Tools.Sleep().then(_ => {\r\n if (this._dataSource().length > 0) {\r\n const value = Tools.BreakReference<any>(this._dataSource().find(callback as any)); \r\n \r\n if (Tools.IsNotNull(value)) {\r\n this.SetValue(value); \r\n } \r\n }\r\n }); \r\n }\r\n}","<div class=\"coer-dropdown\">\r\n <div [id]=\"_id + '-container'\">\r\n <div [ngClass]=\"{ 'd-none': isInvisible() }\">\r\n <coer-button\r\n [color]=\"color()\"\r\n [type]=\"type()\"\r\n [icon]=\"_icon\"\r\n [isLoading]=\"isLoading()\"\r\n [isDisabled]=\"isDisabled()\" \r\n [width]=\"width()\"\r\n [minWidth]=\"minWidth()\"\r\n [maxWidth]=\"maxWidth()\"\r\n [marginTop]=\"marginTop()\"\r\n [marginRight]=\"marginRight()\"\r\n [marginBottom]=\"marginBottom()\"\r\n [marginLeft]=\"marginLeft()\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n (onClick)=\"_Toggle()\"\r\n > {{ _label }} </coer-button>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'd-none': !isInvisible(), 'invisible': true }\">\r\n <coer-button\r\n [width]=\"width()\"\r\n [minWidth]=\"minWidth()\"\r\n [maxWidth]=\"maxWidth()\"\r\n [marginTop]=\"marginTop()\"\r\n [marginRight]=\"marginRight()\"\r\n [marginBottom]=\"marginBottom()\"\r\n [marginLeft]=\"marginLeft()\"\r\n ></coer-button>\r\n </div>\r\n </div>\r\n\r\n <!-- Options Container -->\r\n <div class=\"btn-group\">\r\n <ul [id]=\"_id + '-dropdown-menu'\" \r\n class=\"dropdown-menu\"\r\n [ngStyle]=\"{\r\n width: width(),\r\n minWidth: minWidth()\r\n }\">\r\n\r\n @if(_dataSource().length <= 0) {\r\n <li class=\"no-options\">\r\n <div [id]=\"id + '-dropdown-option-' + -1\" class='dropdown-item cursor-pointer no-options'\r\n > -- No Options -- </div>\r\n </li>\r\n }\r\n\r\n @for(item of _dataSource(); track _GetIndexRow(item)) {\r\n <li (click)=\"_SelectItem(item)\">\r\n <a [routerLink]=\"_GetPath(item)\" class=\"text-decoration-none\">\r\n <div [id]=\"id + '-dropdown-option-' + _GetIndexRow(item)\"\r\n [ngClass]=\"{\r\n 'dropdown-item': true,\r\n 'cursor-pointer': true,\r\n 'gap-2': true,\r\n 'dropdown-item-focus': _index() == _GetIndexRow(item)\r\n }\"> \r\n\r\n @if (_GetIcon(item).length > 0) {\r\n <i [class]=\"_GetIcon(item)\"></i>\r\n }\r\n <span> {{ _GetDisplay(item) }} </span>\r\n </div>\r\n <hr class=\"dropdown-divider\">\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div> ","import { Component, input, output, viewChild, computed, OnDestroy, signal, AfterViewInit, EffectRef, effect, contentChildren } from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { Strings, 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 standalone: false\r\n})\r\nexport class CoerTab implements AfterViewInit, OnDestroy { \r\n \r\n //Content\r\n public contentRef = contentChildren<any>(CoerRefDirective);\r\n\r\n //Elements\r\n protected readonly _matTabGroup = viewChild.required<MatTabGroup>('matTabGroup');\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-tab');\r\n protected readonly _selectedIndex = signal<number>(0); \r\n protected readonly _effectSelectedIndex!: EffectRef; \r\n protected readonly _effectAlignTabs!: EffectRef;\r\n protected _htmlElement!: HTMLElement;\r\n protected _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 public selectedIndex = input<number>(0);\r\n public alignTabs = input<'start' | 'center' | 'end'>('start');\r\n public stretchTabs = input<boolean>(false); \r\n\r\n //Outputs\r\n public onSelectedTab = output<ICoerRef>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._effectSelectedIndex = effect(() => { \r\n if (Tools.IsNotNull(this.selectedIndex())) {\r\n this._selectedIndex.set(this.selectedIndex());\r\n } \r\n });\r\n\r\n this._effectAlignTabs = effect(() => {\r\n Tools.Sleep().then(() => {\r\n if(Tools.IsNotNull(this._htmlElement)) {\r\n if (Tools.IsNotNull(this.alignTabs())) {\r\n this._htmlElement.removeAttribute('mat-align-tabs');\r\n\r\n Tools.Sleep().then(() => {\r\n this._htmlElement.setAttribute('mat-align-tabs', this.alignTabs());\r\n });\r\n }\r\n }\r\n }); \r\n }); \r\n } \r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n this._htmlElement = this._matTabGroup()._elementRef.nativeElement; \r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effectSelectedIndex?.destroy(); \r\n this._effectAlignTabs?.destroy(); \r\n }\r\n \r\n\r\n //getter\r\n protected _contentList = computed<ICoerRef[]>(() => { \r\n return this.contentRef() as ICoerRef[];\r\n }) \r\n\r\n\r\n //computed\r\n public selectedTab = computed<ICoerRef>(() => { \r\n return this._contentList()[this._selectedIndex()];\r\n }); \r\n \r\n\r\n /** */\r\n protected _SelectedIndexChange(selectedIndex: number) { \r\n this._selectedIndex.set(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.set(index); \r\n } \r\n\r\n\r\n /** */\r\n protected _SetToolTip = (tab: ICoerRef): string => { \r\n return Tools.IsNotOnlyWhiteSpace(tab.tooltip())\r\n ? Strings.CleanUpBlanks(tab.tooltip()) : '';\r\n } \r\n}","<div class=\"coer-tab\">\r\n <mat-tab-group #matTabGroup\r\n [id]=\"_id\"\r\n [mat-stretch-tabs]=\"stretchTabs()\"\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 class=\"tab\"\r\n [matTooltip]=\"_SetToolTip(tab)\"\r\n matTooltipPosition=\"above\"\r\n [matTooltipDisabled]=\"false\"\r\n [matTooltipHideDelay]=\"0\">\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 <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 </mat-tab>\r\n }\r\n }\r\n </mat-tab-group>\r\n</div> ","import { Component, computed, ElementRef, input, AfterViewInit, output, signal, viewChild, EffectRef, effect, OnDestroy } 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 standalone: false\r\n})\r\nexport class CoerTextarea extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements \r\n protected _coerTextBox = viewChild.required<ElementRef>('coerTextArea');\r\n \r\n //Variables \r\n protected override _value: string | number = '';\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _id: string = Tools.GetGuid('coer-textArea');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected _htmlElement!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left');\r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(2500);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public resize = input<boolean>(false);\r\n public showFooter = input<boolean>(true); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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 height = input<string>('80px'); \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 onInput = output<string>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : ''\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(()=> {\r\n this._htmlElement = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n if (this._htmlElement) {\r\n this._htmlElement.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n\r\n this._htmlElement.addEventListener('blur', () => this.Blur());\r\n\r\n this._htmlElement.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._htmlElement.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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //getter\r\n protected 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 public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this._htmlElement.focus();\r\n if(select) this._htmlElement.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._htmlElement) {\r\n this._htmlElement.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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\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' : 'default',\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 'height' : height()\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 { AfterViewInit, Component, computed, input, output, viewChild, WritableSignal } from '@angular/core';\r\nimport { isModalOpenSIGNAL, isMenuOpenSIGNAL, isLoadingSIGNAL } from 'coer-elements/signals'; \r\nimport { IMenuToolbar, IUserLogin } from 'coer-elements/interfaces';\r\nimport { HTMLElements, Tools } from 'coer-elements/tools';\r\nimport { MatIconButton } from '@angular/material/button';\r\ndeclare const appSettings: any;\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 standalone: false\r\n})\r\nexport class CoerToolbar implements AfterViewInit { \r\n\r\n //Elements\r\n protected readonly _toogleButton = viewChild.required<MatIconButton>('toogleButton');\r\n\r\n //variables\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL; \r\n protected _isReadyPage: boolean = false; \r\n protected _awaitSignals: boolean = false; \r\n\r\n //appSettings\r\n protected _appName = Tools.AvoidNull<string>(appSettings?.appInfo?.name, 'string'); \r\n protected _appLogoPath = Tools.AvoidNull<string>(appSettings?.appInfo?.logoPath, 'string');\r\n protected _appLogoWidth = Tools.AvoidNull<string>(appSettings?.appInfo?.logoWidth, 'string'); \r\n \r\n //Inputs\r\n public user = input<IUserLogin | null>(null);\r\n public image = input<string | null>(null);\r\n public menu = input<IMenuToolbar[]>([]); \r\n\r\n //Outputs \r\n public onClickMenu = output<void>(); \r\n public onClickOption = output<IMenuToolbar>(); \r\n \r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep(1000).then(() => this._isReadyPage = true); \r\n }\r\n\r\n /** */\r\n protected ToogleSideNave(): void { \r\n this.onClickMenu.emit();\r\n isMenuOpenSIGNAL.set(!isMenuOpenSIGNAL()); \r\n this._toogleButton()._elementRef?.nativeElement?.blur();\r\n } \r\n \r\n\r\n //computed\r\n protected userName = computed<string>(() => { \r\n const user = this.user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.nickname)) return user?.nickname!;\r\n if (Tools.IsNotOnlyWhiteSpace(user?.fullName)) return user?.fullName!;\r\n if (Tools.IsNotOnlyWhiteSpace(user?.user)) return user?.user!; \r\n }\r\n \r\n return ''; \r\n });\r\n\r\n\r\n //computed\r\n protected userTitle = computed<string>(() => {\r\n const user = this.user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.role)) return user?.role!;\r\n } \r\n\r\n return '';\r\n }); \r\n\r\n\r\n //getter\r\n protected get showLogo(): boolean { \r\n return (Tools.IsNull(appSettings?.appInfo?.showLogo) && this._appLogoPath.length > 0) \r\n || (appSettings?.appInfo?.showLogo && this._appLogoPath.length > 0)\r\n }\r\n\r\n\r\n //getter\r\n protected get showUser(): boolean {\r\n return !isLoadingSIGNAL() \r\n && Tools.IsNotNull(this.user())\r\n } \r\n\r\n\r\n //getter\r\n protected get paddingLeft(): string {\r\n return (this.userName().length > 0 || this.userTitle().length > 0)\r\n ? '5px' : '0px';\r\n }\r\n\r\n\r\n /** */ \r\n protected GetPadding = (container: 'user-identity' | 'user-container'): string => {\r\n if (this.userName().length > 0 || this.userTitle().length > 0) { \r\n switch(container) {\r\n case 'user-container': return '10px';\r\n case 'user-identity': return '5px'; \r\n }\r\n } \r\n\r\n switch(container) {\r\n case 'user-container': return '2px';\r\n case 'user-identity': return '0px'; \r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected GetElementWidth = (element: HTMLElement): string => { \r\n return this._isReadyPage \r\n ? HTMLElements.GetElementWidth(element, 48)\r\n : '0px'; \r\n } \r\n}","<div id=\"coer-tool-bar\" [ngClass]=\"{ 'position-relative': _isModalOpen() }\">\r\n <mat-toolbar> \r\n @if(showLogo) {\r\n <div class=\"logo-image-container\" (click)=\"ToogleSideNave()\" [ngStyle]=\"{ 'width': _appLogoWidth }\">\r\n <div class=\"logo-image\" [ngStyle]=\"{ 'background-image': 'url(' + (_appLogoPath | noImage:'IMAGE') + ')' }\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <div class=\"button-container\">\r\n <button\r\n #toogleButton \r\n mat-icon-button \r\n type=\"button\"\r\n (click)=\"ToogleSideNave()\">\r\n <i class=\"icon-bars\"></i>\r\n </button>\r\n </div>\r\n\r\n <span class=\"app-name\"> {{ _appName }} </span> \r\n } \r\n\r\n <span class=\"fill-space\"></span> \r\n \r\n <div class=\"user-container\" (click)=\"dropdown.Open()\" [ngStyle]=\"{ \r\n 'padding-right': GetPadding('user-container'),\r\n 'display': showUser ? 'flex' : 'none'\r\n }\">\r\n \r\n <coer-dropdown\r\n #dropdown\r\n [dataSource]=\"menu()\" \r\n propDisplay=\"label\" \r\n width=\"auto\"\r\n [minWidth]=\"GetElementWidth(toolbarUserIdentity)\"\r\n maxWidth=\"auto\"\r\n (onSelected)=\"onClickOption.emit($event); dropdown.Unselect()\"\r\n ></coer-dropdown>\r\n\r\n <div class=\"user-image\" [ngStyle]=\"{ 'background-image': 'url(' + (image() | noImage:'USER') + ')' }\"></div>\r\n <div #toolbarUserIdentity id=\"toolbar-user-identity\" class=\"user-identity\" [ngStyle]=\"{ 'padding-left': GetPadding('user-identity') }\">\r\n \r\n @if(userName().length > 0) {\r\n <p> {{ userName() }} </p>\r\n }\r\n \r\n @if(userTitle().length > 0) {\r\n <p> {{ userTitle() }} </p>\r\n }\r\n </div> \r\n </div> \r\n \r\n @if(!showUser) {\r\n <span class=\"me-2\">\r\n <span class=\"fw-bold fa-fade\"> \r\n Loading <i class=\"fa-solid fa-sync fa-spin\"></i> \r\n </span> \r\n </span>\r\n }\r\n </mat-toolbar>\r\n\r\n <div class=\"shadow\"></div>\r\n</div>\r\n","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 { MatDatepickerModule } from '@angular/material/datepicker';\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 { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTimepickerModule } from '@angular/material/timepicker'; \r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip'; \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 { CoerCard } from './coer-card/coer-card.component';\r\nimport { CoerCheckbox } from './coer-checkbox/coer-checkbox.component';\r\nimport { CoerDateBox } from './coer-datebox/coer-datebox.component';\r\nimport { CoerFilebox } from './coer-filebox/coer-filebox.component';\r\nimport { CoerFileboxImage } from './coer-filebox/coer-filebox-image/coer-filebox-image.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 { CoerSecretBox } from './coer-secretbox/coer-secretbox.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 { CoerDropdown } from './coer-dropdown/coer-dropdown.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 MatDatepickerModule,\r\n MatDrawerContainer,\r\n MatDrawerContent,\r\n MatDrawer,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTimepickerModule,\r\n MatListModule,\r\n MatNativeDateModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTabsModule,\r\n DirectivesModule,\r\n PipesModule\r\n ],\r\n declarations: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCard,\r\n CoerCheckbox,\r\n CoerDateBox,\r\n CoerFilebox,\r\n CoerFileboxImage,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList, \r\n CoerMenuOption,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerSecretBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerDropdown,\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 CoerCard,\r\n CoerCheckbox,\r\n CoerDateBox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList, \r\n CoerModal,\r\n CoerNumberBox,\r\n CoerSecretBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerDropdown,\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":["i2","i4","i3","i2.CoerModal","i1.CoerFileboxImage","i1","i4.CoerButton","i3.CoerButton","i4.CoerCheckbox","i5.CoerNumberBox","i6.CoerSelectbox","i7.CoerSwitch","i8.CoerTextBox","i4.CoerTextBox","i5","i3.CoerMenuOption","i4.CoerTreeAccordion","i4.CoerDropdown"],"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-card/coer-card.component.ts","../../../projects/coer-elements/components/lib/coer-card/coer-card.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-datebox/coer-datebox.component.ts","../../../projects/coer-elements/components/lib/coer-datebox/coer-datebox.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-image/coer-filebox-image.component.ts","../../../projects/coer-elements/components/lib/coer-filebox/coer-filebox-image/coer-filebox-image.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-secretbox/coer-secretbox.component.ts","../../../projects/coer-elements/components/lib/coer-secretbox/coer-secretbox.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-dropdown/coer-dropdown.component.ts","../../../projects/coer-elements/components/lib/coer-dropdown/coer-dropdown.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 { AfterViewInit, Component, input, output, viewChild } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Tools } from 'coer-elements/tools'\r\n\r\n@Component({\r\n selector: 'coer-accordion',\r\n templateUrl: './coer-accordion.component.html',\r\n styleUrl: './coer-accordion.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerAccordion implements AfterViewInit {\r\n\r\n //Elements\r\n protected readonly _expansionPanel = viewChild<MatExpansionPanel>('coerAccordion');\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-accordion');\r\n protected _htmlElement!: HTMLElement \r\n protected _isDisabled: boolean = false;\r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public title = input<string>('');\r\n public icon = input<string>('');\r\n public expanded = input<boolean>(true); \r\n public scrollOnOpen = input<boolean>(false); \r\n public height = input<string>(''); \r\n public minHeight = input<string>('0px'); \r\n\r\n //Outputs\r\n public onOpen = output<void>();\r\n public onClose = output<void>(); \r\n\r\n\r\n //Generic Tools\r\n protected _IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(() => {\r\n this._htmlElement = document.getElementById(this._id)!;\r\n });\r\n }\r\n\r\n \r\n //getter\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 //getter\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 //getter\r\n public get isDisabled(): boolean {\r\n return this._isDisabled;\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 if(this.scrollOnOpen() && Tools.IsNotNull(this._htmlElement)) {\r\n Tools.Sleep().then(_ => this._htmlElement.scrollIntoView({ behavior: 'smooth' }));\r\n }\r\n\r\n this.onOpen.emit();\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 this.onClose.emit();\r\n }\r\n } \r\n\r\n\r\n /** */\r\n public Enable(): void {\r\n this._isDisabled = false;\r\n }\r\n\r\n\r\n /** */\r\n public Disable(): void {\r\n this._isDisabled = true;\r\n }\r\n\r\n\r\n /** */\r\n public ScrollToAccordion(): void {\r\n if(Tools.IsNotNull(this._expansionPanel())) {\r\n Tools.Sleep().then(_ => this._htmlElement.scrollIntoView({ behavior: 'smooth' }));\r\n }\r\n } \r\n}","<mat-expansion-panel\r\n [id]=\"_id\" \r\n #coerAccordion \r\n title=\"\" \r\n class=\"coer-accordion\"\r\n [disabled]=\"_isDisabled\" \r\n [expanded]=\"expanded()\" \r\n (opened)=\"Open()\" \r\n (closed)=\"Close()\">\r\n \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 [ngClass]=\"{ 'collapsed': isCollapsed }\"\r\n [ngStyle]=\"{\r\n 'height': height(),\r\n 'min-height': minHeight()\r\n }\">\r\n <ng-content></ng-content>\r\n </div>\r\n</mat-expansion-panel>","import { Component, computed, input, AfterViewInit, output } from '@angular/core';\r\nimport { breakpointSIGNAL } from 'coer-elements/signals';\r\nimport { IButtonType } from 'coer-elements/interfaces';\r\nimport { Strings, Tools } from 'coer-elements/tools';\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 standalone: false\r\n})\r\nexport class CoerButton implements AfterViewInit { \r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-button');\r\n protected _innerButton!: HTMLElement;\r\n protected _innerButtonIcon!: HTMLElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public color = input<'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' | 'information' | 'dark' | 'light'>('default');\r\n public type = input<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>('filled');\r\n public typeBreakpoint = input<IButtonType>({});\r\n public icon = input<string | null | undefined>('');\r\n public iconPosition = input<'left' | 'right'>('left');\r\n public path = input<string | (string | number)[]>([]); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = 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 maxWidth = input<string>('100%');\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 tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('left'); \r\n\r\n //Outputs \r\n public onClick = output<void>(); \r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep().then(() => {\r\n this._innerButton = document.getElementById(`${this._id}-inner-button`)!;\r\n \r\n if(this._innerButton) {\r\n this._innerButton.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n } \r\n\r\n this._innerButtonIcon = document.getElementById(`${this._id}-inner-button-icon`)!;\r\n\r\n if(this._innerButtonIcon) {\r\n this._innerButtonIcon.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n }\r\n });\r\n } \r\n \r\n \r\n //computed\r\n protected _tooltip = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.tooltip())\r\n ? Strings.CleanUpBlanks(this.tooltip()) : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _showButton = computed<boolean>(() => {\r\n return this._buttonBreakpoint() == 'filled' \r\n || this._buttonBreakpoint() == 'outline'; \r\n });\r\n\r\n\r\n //computed\r\n protected _showButtonIcon = computed<boolean>(() => {\r\n return this._buttonBreakpoint() == 'icon' \r\n || this._buttonBreakpoint() == 'icon-outline' \r\n || this._buttonBreakpoint() == 'icon-no-border';\r\n });\r\n\r\n\r\n //computed\r\n protected _buttonBreakpoint = computed<'filled' | 'outline' | 'icon' | 'icon-outline' | 'icon-no-border'>(() => { \r\n switch(breakpointSIGNAL()) {\r\n case 'mv': return this.typeBreakpoint()?.mv || this.type();\r\n case 'xs': return this.typeBreakpoint()?.xs || this.type(); \r\n case 'sm': return this.typeBreakpoint()?.sm || this.type(); \r\n case 'md': return this.typeBreakpoint()?.md || this.type(); \r\n case 'lg': return this.typeBreakpoint()?.lg || this.type(); \r\n case 'xl': return this.typeBreakpoint()?.xl || this.type(); \r\n case 'xxl': return this.typeBreakpoint()?.xxl || this.type(); \r\n default: return this.type();\r\n } \r\n });\r\n\r\n\r\n //computed\r\n protected _tooltipPosition = computed<'above' | 'right' | 'below' | 'left'>(() => {\r\n switch(this.tooltipPosition()) {\r\n case 'top' : return 'above';\r\n case 'right' : return 'right';\r\n case 'bottom': return 'below';\r\n default: return 'left'; \r\n } \r\n });\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() \r\n && !this.isDisabled() \r\n && !this.isInvisible() \r\n && !this.isReadonly();\r\n });\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n const icon = Tools.IsNotNull(this.icon()) ? this.icon()! : '';\r\n\r\n switch(this.icon()) {\r\n case 'new' : return 'icon-plus';\r\n case 'save' : return 'icon-disk-floppy icon-fill';\r\n case 'cancel' : return 'icon-x';\r\n case 'import' : return 'icon-file-arrow-up icon-fill';\r\n case 'export' : return 'icon-file-arrow-down icon-fill';\r\n case 'excel' : return 'icon-file-xls icon-fill';\r\n case 'delete' : return 'icon-trash-can icon-fill';\r\n case 'edit' : return 'icon-pen icon-fill';\r\n case 'go' : return 'icon-box-arrow-right';\r\n case 'back' : return 'icon-box-arrow-left';\r\n case 'pointer' : return 'icon-pointer icon-fill';\r\n }\r\n\r\n return ['icon', 'icon-outline', 'icon-no-border'].includes(this.type()) \r\n && Tools.IsOnlyWhiteSpace(icon) \r\n ? 'icon-pointer icon-fill' : icon; \r\n });\r\n\r\n\r\n //computed\r\n protected _buttonType = computed<string>(() => { \r\n const readonly = ['icon', 'icon-outline', 'icon-no-border'].includes(this._buttonBreakpoint())\r\n ? (this.isDisabled() || this.isLoading() ? 'readonly' : '')\r\n : (this.isDisabled() ? 'readonly' : '');\r\n \r\n return `\r\n ${this.color()}-${['filled', 'icon'].includes(this._buttonBreakpoint()) ? 'filled' : 'outline'} \r\n ${readonly} \r\n ${this.isLoading() ? 'cursor-wait' : ''}\r\n ${this._buttonBreakpoint() == 'icon-no-border' ? 'icon-no-border' : ''}\r\n `.trim(); \r\n });\r\n\r\n\r\n /** */\r\n protected _Click(): void {\r\n if (this._isEnable()) {\r\n this.onClick.emit();\r\n }\r\n\r\n this.Blur();\r\n }\r\n\r\n\r\n /** */\r\n public Click(timeout: number = 0): void {\r\n Tools.Sleep(timeout).then(() => {\r\n if (this._isEnable()) this.onClick.emit();\r\n });\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()) {\r\n\r\n if(this._showButton()) {\r\n this._innerButton?.focus();\r\n }\r\n\r\n else if(this._showButtonIcon()) {\r\n this._innerButtonIcon?.focus();\r\n } \r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public Blur(timeout: number = 0): void {\r\n Tools.Sleep(timeout).then(() => {\r\n this._innerButton?.blur();\r\n this._innerButtonIcon?.blur();\r\n });\r\n }\r\n}","<div [ngClass]=\"{ 'coer-button': true }\">\r\n <a [routerLink]=\"(path().length > 0 && _isEnable()) ? path() : null\"\r\n [matTooltip]=\"_tooltip()\"\r\n [matTooltipPosition]=\"_tooltipPosition()\"\r\n [matTooltipDisabled]=\"!_isEnable()\"\r\n [matTooltipHideDelay]=\"0\"\r\n [ngClass]=\"{ 'loading': isLoading() }\"\r\n [ngStyle]=\"{ \r\n 'visibility' : (isInvisible() || isReadonly() ? 'hidden' : 'visible'),\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 <div [class]=\"_showButton() ? '' : 'display-none'\">\r\n <button mat-button type=\"button\" \r\n [id]=\"_id + '-inner-button'\"\r\n (click)=\"_Click()\"\r\n [class]=\"_buttonType()\"\r\n [ngStyle]=\"{\r\n 'width' : width(),\r\n 'min-width' : minWidth(),\r\n 'max-width' : maxWidth(),\r\n 'height' : height(),\r\n 'min-height': minHeight()\r\n }\">\r\n\r\n @if(!isLoading()) {\r\n <span class=\"slot\">\r\n @if(iconPosition() == 'left') { \r\n <i [class]=\"_icon()\"></i> \r\n }\r\n \r\n <span [ngClass]=\"{ \r\n 'ms-2': (iconPosition() == 'left' && _icon().length > 0), \r\n 'me-2': (iconPosition() == 'right' && _icon().length > 0) \r\n }\">\r\n <ng-content>Click</ng-content>\r\n </span>\r\n \r\n @if(iconPosition() == 'right') {\r\n <i [class]=\"_icon()\"></i>\r\n }\r\n </span>\r\n }\r\n\r\n @else {\r\n <span class=\"slot animation-appear\">\r\n <span class=\"me-2\"> Loading </span>\r\n <i class=\"icon-circle-notch animation-spin\"></i>\r\n </span> \r\n }\r\n </button>\r\n </div> \r\n\r\n <div [class]=\"_showButtonIcon() ? '' : 'display-none'\">\r\n <button mat-icon-button\r\n [id]=\"_id + '-inner-button-icon'\"\r\n type=\"button\"\r\n (click)=\"_Click()\"\r\n [class]=\"_buttonType()\">\r\n <i [class]=\"_icon()\"></i>\r\n </button>\r\n </div>\r\n </a>\r\n</div> ","import { Component, input } from '@angular/core';\r\nimport { Tools } from 'coer-elements/tools'\r\n\r\n@Component({\r\n selector: 'coer-card',\r\n templateUrl: './coer-card.component.html', \r\n standalone: false\r\n})\r\nexport class CoerCard {\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n\r\n //Variables\r\n protected _id: string = Tools.GetGuid('coer-accordion');\r\n \r\n //Inputs\r\n public id = input<string>('');\r\n public icon = input<string>('');\r\n public name = input<string>('');\r\n public title = input<string>('');\r\n public phone = input<string>(''); \r\n public email = input<string>('');\r\n}","<figure class=\"coer-container xs-width-min-content\">\r\n <div class=\"flex-wrap gap-0px\"> \r\n @if(IsNotOnlyWhiteSpace(name()) || IsNotOnlyWhiteSpace(title())) {\r\n <div class=\"flex-basis-300px flex-grow-1 flex-middle-left\">\r\n @if(IsNotOnlyWhiteSpace(icon())) {\r\n <i [class]=\"icon() + ' ' + 'font-size-39px'\"></i>\r\n }\r\n\r\n <div>\r\n @if(IsNotOnlyWhiteSpace(name())) {\r\n <p class=\"white-space-nowrap\"> {{ name() }} </p> \r\n }\r\n @if(title()) {\r\n <p class=\"white-space-nowrap\"> {{ title() }} </p>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (IsNotOnlyWhiteSpace(phone()) || IsNotOnlyWhiteSpace(email())) {\r\n <div class=\"flex-basis-100 padding-top-5px\"></div>\r\n \r\n <div class=\"flex-basis-100 padding-top-5px border-solid-top-2px\">\r\n <p class=\"flex-middle-left gap-20px\">\r\n @if(IsNotOnlyWhiteSpace(phone())) {\r\n <span class=\"flex-middle-left gap-5px\">\r\n <i class=\"coer-icon-whatsapp\"></i>\r\n <span> {{ phone() }} </span>\r\n </span>\r\n }\r\n\r\n @if(IsNotOnlyWhiteSpace(email())) {\r\n <span class=\"flex-middle-left gap-5px\">\r\n <i class=\"coer-icon-envelope\"></i>\r\n <span> {{ email() }} </span>\r\n </span>\r\n }\r\n </p>\r\n </div> \r\n }\r\n </div> \r\n</figure>","import { AfterViewInit, Component, computed, effect, EffectRef, input, OnDestroy, 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 standalone: false\r\n})\r\nexport class CoerCheckbox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Variables\r\n public override _value: boolean = false;\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _id: string = Tools.GetGuid('coer-checkbox'); \r\n protected _isLoading: boolean = true;\r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public ignoreDataBinding = input<boolean>(false);\r\n public value = input<boolean | null | undefined>(false);\r\n\r\n //Outputs\r\n public onChange = output<boolean>(); \r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : false\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => this._isLoading = false);\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isLoading() && !this.isDisabled() && !this.isInvisible() && !this.isReadonly();\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.ignoreDataBinding() && (typeof this._UpdateValue === 'function')) {\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, input, AfterViewInit, output, signal, viewChild, EffectRef, effect, OnDestroy } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Dates, Tools } from 'coer-elements/tools';\r\nimport { provideNativeDateAdapter } from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n selector: 'coer-datebox',\r\n templateUrl: './coer-datebox.component.html',\r\n styleUrl: './coer-datebox.component.scss',\r\n providers: [ \r\n provideNativeDateAdapter(),\r\n CONTROL_VALUE(CoerDateBox),\r\n ],\r\n standalone: false\r\n})\r\nexport class CoerDateBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n \r\n //Variables\r\n public override _value: string | Date | moment.Moment | null = null;\r\n protected readonly _id: string = Tools.GetGuid('coer-datebox');\r\n protected readonly _datepicker = viewChild<MatDatepicker<any>>('datepicker');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effect!: EffectRef;\r\n protected _isOpen: boolean = false;\r\n protected _input!: HTMLInputElement;\r\n protected _container!: HTMLInputElement;\r\n protected _pickerButton!: HTMLInputElement;\r\n \r\n //Inputs\r\n public id = input<string>('')\r\n public value = input<string | null | undefined>(null); \r\n public label = input<string>(''); \r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs\r\n public onOpen = output<void>();\r\n public onClose = output<void>(); \r\n public onChangeValue = output<string | null>(); \r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(()=> {\r\n //input\r\n this._input = document.getElementById(this._id)! as HTMLInputElement;\r\n \r\n if (this._input) { \r\n this._input.addEventListener('focus', () => this._Blur());\r\n this._input.addEventListener('blur', () => this._Blur());\r\n }\r\n\r\n //container\r\n this._container = document.getElementById(`${this._id}-container`)! as HTMLInputElement; \r\n \r\n if (this._container) { \r\n this._container.addEventListener('click', (event) => {\r\n event.stopPropagation();\r\n event.preventDefault(); \r\n this.Open();\r\n });\r\n } \r\n\r\n //pickerButton\r\n this._pickerButton = document.querySelector(`#${this._id}-container .mat-mdc-form-field-icon-suffix button`)! as HTMLInputElement;\r\n \r\n if (this._pickerButton) { \r\n \r\n this._pickerButton.addEventListener('click', (event) => {\r\n event.stopPropagation();\r\n event.preventDefault(); \r\n this.Open();\r\n });\r\n } \r\n });\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\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 //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\r\n });\r\n\r\n\r\n //getter\r\n public get isOpen(): boolean { \r\n return this._isOpen;\r\n }\r\n\r\n\r\n //getter\r\n public get isClose(): boolean { \r\n return !this._isOpen;\r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override SetValue(value: string | Date | moment.Moment | null | undefined): void { \r\n if(value === undefined) value = null;\r\n \r\n if(Tools.IsNotNull(this._value) && Tools.IsNull(value)) {\r\n this.onChangeValue.emit(null); \r\n }\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(value)) {\r\n if(Dates.IsValidDate(value!)) {\r\n value = Dates.GetFormatDB(value!);\r\n this._value = new Date(value);\r\n this.onChangeValue.emit(Dates.GetFormatDB(this._value));\r\n }\r\n\r\n else this._value = null; \r\n } \r\n\r\n else this._value = null; \r\n \r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(this._value);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public override writeValue(value: any): void {\r\n if(Tools.IsNotOnlyWhiteSpace(value)) {\r\n this.SetValue(value);\r\n }\r\n } \r\n\r\n\r\n /** */\r\n protected _Blur(): void { \r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n this._isOpen = false;\r\n\r\n Tools.Sleep().then(_ => {\r\n if(this._input) {\r\n this._input.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 Open(): void { \r\n if (this._isEnable() && this.isClose) { \r\n this._datepicker()?.open();\r\n this._isOpen = true;\r\n this.onOpen.emit(); \r\n }\r\n\r\n else this._Blur();\r\n }\r\n\r\n\r\n /** */ \r\n public Close(): void { \r\n if(this.isOpen) {\r\n this._datepicker()?.close();\r\n this._Blur();\r\n this.onClose.emit();\r\n } \r\n } \r\n\r\n\r\n /** */ \r\n public Unselect(): void { \r\n this.SetValue(null);\r\n } \r\n}","<div class=\"coer-date-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 'd-none': isInvisible()\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\r\n <mat-label> {{ label() }} </mat-label>\r\n \r\n <input #coerTextBox matInput \r\n [id]=\"_id\"\r\n [placeholder]=\"placeholder()\"\r\n [matDatepicker]=\"datepicker\" \r\n [disabled]=\"!_isEnable()\"\r\n [readonly]=\"true\"\r\n [value]=\"_value\"\r\n (dateChange)=\"SetValue(coerTextBox.value)\"\r\n [style]=\"{\r\n 'cursor' : isLoading() ? 'wait' : 'pointer',\r\n 'margin-top' : (_floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': _paddingRight(),\r\n 'text-align' : textPosition()\r\n }\">\r\n \r\n <mat-datepicker #datepicker (closed)=\"Close()\"/>\r\n\r\n @if(!isLoading()) { \r\n <mat-datepicker-toggle \r\n matSuffix\r\n [for]=\"datepicker\" \r\n [disabled]=\"!_isEnable()\">\r\n <mat-icon matDatepickerToggleIcon>\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </mat-icon>\r\n </mat-datepicker-toggle>\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 @if(isInvalid() || isValid()) {\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 }\r\n </mat-form-field> \r\n\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\r\n</div> ","import { AfterViewInit, Component, computed, ContentChildren, input, 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 { HTMLElements, 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 standalone: false\r\n})\r\nexport class CoerModal implements AfterViewInit { \r\n\r\n //Directive\r\n @ContentChildren(CoerRefDirective) contentRef!: any;\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-modal');\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected _windowWidth: number = Screen.WINDOW_WIDTH;\r\n protected _isOpen: boolean = false;\r\n protected _modal!: Modal;\r\n\r\n //Inputs \r\n public id = input<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' | 'auto'>('small');\r\n public height = input<string>('auto');\r\n public maxHeight = input<string>('');\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 \r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(() => {\r\n this._modal = new Modal(document.getElementById(this._id)!);\r\n\r\n Screen.Resize.subscribe((response: IScreenSize) => {\r\n this._windowWidth = response.width;\r\n }); \r\n }); \r\n }\r\n\r\n\r\n //getter\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n\r\n //getter\r\n public get isClose(): boolean {\r\n return !this._isOpen;\r\n }\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 case 'auto': return 'fit-content';\r\n default: return this.width();\r\n }\r\n }\r\n\r\n\r\n //Computed\r\n protected _contentList = computed<ICoerRef[]>(() => Array.from(this.contentRef._results));\r\n\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\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\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\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\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\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 HTMLElements.GetElement(`#${this._id}-button-close`)?.blur(); \r\n\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 [id]=\"_id + '-button-close'\" 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, effect, EffectRef, ElementRef, inject, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CoerModal } from '../../../lib/coer-modal/coer-modal.component';\r\nimport { CoerAlert, Files, Tools } from 'coer-elements/tools';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces';\r\n\r\n@Component({\r\n selector: 'coer-filebox-image',\r\n templateUrl: './coer-filebox-image.component.html',\r\n styleUrl: './coer-filebox-image.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerFileboxImage implements OnDestroy {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Generic Tools\r\n protected readonly IsNull = Tools.IsNull;\r\n protected readonly IsNotNull = Tools.IsNotNull;\r\n protected readonly IsOnlyWhiteSpace = Tools.IsOnlyWhiteSpace;\r\n protected readonly IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n //Elements\r\n protected readonly _input = viewChild.required<ElementRef>('input');\r\n protected readonly _modal = viewChild.required<CoerModal>('modal');\r\n\r\n //Variables\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _accept = ['image/png', 'image/jpeg', 'image/gif', 'image/svg+xml'];\r\n protected readonly _Extensions = ['png', 'jpeg', 'jpg', 'gif', 'svg'];\r\n protected readonly _isLoadingInner = signal<boolean>(false);\r\n protected readonly _base64 = signal<string>(''); \r\n protected readonly _image = signal<IFileImage | null>(null); \r\n\r\n //Inputs\r\n public image = input<IFileImage | null | undefined>(null);\r\n public multiple = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n \r\n //Outputs\r\n public onSelected = output<IFile[]>();\r\n public onDeleteImage = output<IFileImage>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._effect = effect(() => {\r\n if(Tools.IsNotNull(this.image())) {\r\n \r\n this._image.set(Tools.IsNotNull(this.image()) ? this.image() as IFileImage : null);\r\n \r\n if(Tools.IsNotNull(this.image())) {\r\n if((this.image()?.value as File)?.name) {\r\n Files.ConvertToBase64(this.image()?.value as File).then(base64 => {\r\n return this._base64.set(base64);\r\n });\r\n }\r\n \r\n else this._base64.set(this.image()?.value as string);\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //computed\r\n protected _isLoading = computed<boolean>(() => {\r\n return this.isLoading() \r\n || this._isLoadingInner();\r\n });\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this._isLoading() \r\n && !this.isDisabled() \r\n && !this.isInvisible();\r\n });\r\n\r\n\r\n //computed\r\n protected _showTrashButton = computed<boolean>(() => { \r\n return !this.isReadonly()\r\n && this._isEnable()\r\n && this.IsNotNull(this._image())\r\n && this.IsNotNull(this._image()!.value)\r\n && this.IsNotOnlyWhiteSpace(this._base64()) \r\n && (this.IsNull(this._image()!.allowDelete) || this._image()!.allowDelete!); \r\n });\r\n\r\n\r\n //computed\r\n protected _showExpandButton = computed<boolean>(() => { \r\n return !this.isReadonly()\r\n && this._isEnable()\r\n && this.IsNotNull(this._image())\r\n && this.IsNotNull(this._image()!.value)\r\n && this.IsNotOnlyWhiteSpace(this._base64()) \r\n && (this.IsNull(this._image()!.allowExpand) || this._image()!.allowExpand!); \r\n });\r\n\r\n\r\n //computed\r\n protected _figureWidth = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this._image()?.value) \r\n && !this._isLoading()\r\n ? 'fit-content' : '210px'\r\n });\r\n\r\n\r\n //computed\r\n protected _figureDashed = computed<boolean>(() => {\r\n return !this.isReadonly()\r\n && !this.isDisabled() \r\n && this.IsOnlyWhiteSpace(this._image()?.value) \r\n });\r\n\r\n\r\n /** */\r\n protected async _SelectImages(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 = Files.GetExtension(file) || ''; \r\n\r\n if (this._Extensions.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 {\r\n this.alert.Warning(`<b>.${extension}</b> extension not allowed`, 'Files');\r\n this._input().nativeElement.value = null;\r\n this._isLoadingInner.set(false);\r\n return;\r\n }\r\n }\r\n\r\n //Response\r\n this._input().nativeElement.value = null;\r\n this._isLoadingInner.set(false);\r\n this.onSelected.emit([...files]);\r\n }\r\n\r\n\r\n /** */\r\n protected _ClickImage(reference: HTMLElement): void {\r\n this._isLoadingInner.set(true);\r\n reference.click();\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(this._image()!);\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-image\">\r\n <figure (click)=\"(_isEnable() && !isReadonly()) ? _ClickImage(input) : null\" \r\n [ngClass]=\"{ \r\n 'dashed': _figureDashed(),\r\n 'cursor-pointer': true \r\n }\"\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 'display' : isInvisible() ? 'none' : '',\r\n 'width' : _figureWidth()\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 #input\r\n type=\"file\"\r\n [accept]=\"_accept\"\r\n (change)=\"_SelectImages($event)\"\r\n (cancel)=\"_isLoadingInner.set(false)\"\r\n [multiple]=\"multiple()\">\r\n \r\n @if(_showTrashButton() || _showExpandButton()) {\r\n <div class=\"icon-container\">\r\n @if(_showTrashButton()) {\r\n <i class=\"icon-trash-can icon-fill\" (click)=\"_DeleteImage($event)\"></i>\r\n }\r\n \r\n @if(_showExpandButton()) {\r\n <i class=\"icon-expand\" (click)=\"_ExpandImage($event)\"></i>\r\n }\r\n </div>\r\n }\r\n </figure>\r\n \r\n @if(isInvisible()) {\r\n <figure [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 'width' : _figureWidth()\r\n }\"> \r\n \r\n <img [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 'display' : 'none'\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, input, output } from '@angular/core';\r\nimport { IFile, IFileImage } from 'coer-elements/interfaces'; \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 standalone: false\r\n})\r\nexport class CoerFilebox { \r\n \r\n //Inputs\r\n public type = input<'image'>('image');\r\n public image = input<IFileImage | null | undefined>();\r\n public multiple = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n \r\n //Outputs\r\n public onSelected = output<IFile[]>();\r\n public onDeleteImage = output<IFileImage>();\r\n}","<div class=\"coer-filebox\">\r\n @if(type() === 'image') {\r\n <coer-filebox-image\r\n [image]=\"image()\"\r\n [multiple]=\"multiple()\"\r\n [isLoading]=\"isLoading()\"\r\n [isDisabled]=\"isDisabled()\"\r\n [isReadonly]=\"isReadonly()\"\r\n [isInvisible]=\"isInvisible()\"\r\n (onSelected)=\"onSelected.emit($event)\"\r\n (onDeleteImage)=\"onDeleteImage.emit($event)\"\r\n ></coer-filebox-image>\r\n }\r\n</div>","import { AfterViewInit, Component, inject, input, signal } 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 standalone: false\r\n})\r\nexport class CoerForm implements AfterViewInit { \r\n\r\n //Injection\r\n protected readonly _alert = inject(CoerAlert);\r\n\r\n //Variables\r\n protected readonly _isReady = signal<boolean>(false);\r\n\r\n //Inputs\r\n public formGroup = input.required<FormGroup>();\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit(): void {\r\n Tools.Sleep().then(_ => this._isReady.set(true));\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabled() {\r\n return this.isLoading() || this.isDisabled() || this.isReadonly();\r\n }\r\n\r\n\r\n /** Mark all controls as touched */\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 this._isReady() && Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? (this.formGroup().get(formControlName)!.touched && this.formGroup().get(formControlName)!.invalid)\r\n : this._isReady();\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<T>(formControlName: string, alternative?: T): T {\r\n return this._isReady() && Tools.IsNotNull(this.formGroup().get(formControlName))\r\n ? this.formGroup().get(formControlName)!.value\r\n : (Tools.IsNotNull(alternative) ? alternative : null) as T;\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 /** Gets the value of the form */\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 /** Focuses the specified control, otherwise the first invalid control or first 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.GetPropertyList(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 { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, inject, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CoerAlert, CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { IBoxButton } from 'coer-elements/interfaces';\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 standalone: false\r\n})\r\nexport class CoerNumberBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Injections\r\n protected readonly _alert = inject(CoerAlert);\r\n\r\n //Elements\r\n protected readonly _coerNumberbox = viewChild.required<ElementRef>('coerNumberbox');\r\n \r\n //Variables\r\n public override _value: string | number = ''; \r\n protected readonly _id: string = Tools.GetGuid('coer-numberbox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effectExternalButton!: EffectRef;\r\n protected readonly _effectValue!: EffectRef;\r\n protected readonly _externalButton = signal<IBoxButton>({ show: false });\r\n protected _element!: HTMLInputElement;\r\n protected _hideCaret: boolean = false; \r\n\r\n //Inputs\r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null); \r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('right');\r\n public min = input<number>(0);\r\n public max = input<number>(2147483647);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public externalButton = input<IBoxButton>({ show: false }); \r\n public selectOnFocus = input<boolean>(true);\r\n public decimals = input<number>(0); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs\r\n public onKeyupEnter = output<string | number>();\r\n public onInput = output<string | number>();\r\n public onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effectValue = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! as string : 0\r\n ); \r\n });\r\n\r\n this._effectExternalButton = effect(() => {\r\n this._externalButton.set(this.externalButton());\r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effectValue?.destroy();\r\n this._effectExternalButton?.destroy();\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 //getter\r\n protected get _showButtonLeft(): boolean {\r\n return this._externalButton().show\r\n && Tools.IsNotNull(this._externalButton()?.position) \r\n && this._externalButton()?.position === 'left' \r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this._externalButton().show\r\n && ((Tools.IsNull(this._externalButton()?.position) || this._externalButton()?.position === 'right'))\r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return Tools.IsNotOnlyWhiteSpace(this._externalButton()?.icon)\r\n ? this._externalButton().icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabledExternalButton(): boolean {\r\n return Tools.IsNotNull(this._externalButton()?.isDisabled)\r\n ? this._externalButton().isDisabled! : false;\r\n }\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\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n \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(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this._element.focus();\r\n if(select) 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 @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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\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 'd-none': isInvisible()\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\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, input, OnDestroy, output, signal, viewChild } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, HTMLElements, 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 standalone: false\r\n})\r\nexport class CoerSelectbox<T> extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly _coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables\r\n protected override _value: T | null = null;\r\n private readonly _scrollByRow: number = 40.8;\r\n protected readonly _id: string = Tools.GetGuid('coer-selectBox');\r\n protected readonly _index = signal<number>(-1);\r\n protected readonly _search = signal<string>('');\r\n protected readonly _isOpen = signal<boolean>(false);\r\n protected readonly _isDirty = signal<boolean>(false);\r\n protected readonly _isOverMenu = signal<boolean>(false);\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _scroll = signal<number>(0);\r\n protected readonly _effect!: EffectRef;\r\n protected _textbox!: HTMLInputElement;\r\n protected _dropDownMenu!: HTMLElement; \r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<T | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('-- Select --');\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public dataSource = input<T[]>([]);\r\n public displayProperty = input<string>('name');\r\n public rowsByPage = input<number>(50); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\r\n //Outputs \r\n public onSelected = output<T>();\r\n public onUnselect = output<null>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => { \r\n //Container\r\n const container = document.getElementById(`${this._id}-container`) as HTMLElement;\r\n \r\n container?.addEventListener('mouseenter', () => {\r\n this._isOverMenu.set(true);\r\n });\r\n\r\n container?.addEventListener('mouseleave', () => {\r\n this._isOverMenu.set(false);\r\n }); \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\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('keydown', () => {\r\n if(!this._isOpen()) this._Open();\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.displayProperty()]) {\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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\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.displayProperty()] : '';\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 //getter\r\n protected get _showCancel(): boolean { \r\n return Tools.IsNotNull(this._value)\r\n && Tools.IsNotNull(this._search())\r\n && this._search().length <= 0;\r\n }\r\n\r\n\r\n //getter\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 //getter\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.displayProperty();\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 //ControlValueAccessor\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(null);\r\n }\r\n\r\n if(typeof this._UpdateValue === 'function') { \r\n this._UpdateValue(_value);\r\n } \r\n\r\n this._value = _value;\r\n this._search.set(this._GetDisplay(_value));\r\n }\r\n\r\n\r\n //ControlValueAccessor\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 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.displayProperty()] : '';\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(open: boolean = true, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(_ => {\r\n if(this._isEnable()) {\r\n this._textbox?.focus();\r\n this._textbox?.select();\r\n if(open) 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.displayProperty()]).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 class=\"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-primary\" (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>","import { Component, computed, EffectRef, ElementRef, input, AfterViewInit, output, signal, viewChild, effect, OnDestroy } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';\r\nimport { IBoxButton } from 'coer-elements/interfaces';\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 standalone: false\r\n})\r\nexport class CoerTextBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected readonly coerTextBox = viewChild.required<ElementRef>('coerTextBox'); \r\n\r\n //Variables\r\n protected override _value: string | number = '';\r\n protected readonly _id: string = Tools.GetGuid('coer-textBox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _externalButton = signal<IBoxButton>({ show: false }); \r\n protected readonly _effectExternalButton!: EffectRef;\r\n protected readonly _effectValue!: EffectRef;\r\n private element!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>('');\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(50);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public externalButton = input<IBoxButton>({ show: false });\r\n public selectOnFocus = input<boolean>(false);\r\n public showClearIcon = input<boolean>(false);\r\n public showSearchIcon = input<boolean>(false); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\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 onClickSearch = output<string | number>();\r\n public onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effectValue = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! as string : ''\r\n ); \r\n }); \r\n\r\n this._effectExternalButton = effect(() => {\r\n this._externalButton.set(this.externalButton());\r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effectValue?.destroy();\r\n this._effectExternalButton?.destroy();\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._externalButton().show\r\n && Tools.IsNotNull(this._externalButton()?.position) \r\n && this._externalButton()?.position === 'left' \r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showButtonRight(): boolean {\r\n return this._externalButton().show\r\n && ((Tools.IsNull(this._externalButton()?.position) || this._externalButton()?.position === 'right'))\r\n && !this.isInvisible();\r\n }\r\n\r\n\r\n //getter\r\n protected get _buttonIcon(): string {\r\n return Tools.IsNotOnlyWhiteSpace(this._externalButton()?.icon)\r\n ? this._externalButton().icon! : 'pointer';\r\n }\r\n\r\n\r\n //getter\r\n protected get _isDisabledExternalButton(): boolean {\r\n return Tools.IsNotNull(this._externalButton()?.isDisabled)\r\n ? this._externalButton().isDisabled! : false;\r\n } \r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\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 public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n if(select) 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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\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 this.onClickSearch.emit(this._value);\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\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 'd-none': isInvisible()\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(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n }\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]=\"_isDisabledExternalButton\" \r\n (onClick)=\"_isEnable() ? onClickExternalButton.emit() : null\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>","import { IGridButtonByRow, IGridColumn, IGridDataSource, IGridImport, IGridHeaderButton, IGridHeaderExportButton, IGridKeyupEnter, IGridSearch, IGridInput, IGridSort, IGridCheckbox, IGridInputCheckbox, IGridHeader, IGridHeaderImportButton } 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, Dates, HTMLElements, Screen, Tools, Strings, Numbers } 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 readonly _inputFile = viewChild.required<ElementRef>('inputFileRef');\r\n protected readonly _inputSearch = viewChild.required<CoerTextBox>('inputSearch');\r\n protected readonly _coerTextboxList = viewChildren(CoerTextBox);\r\n protected readonly _coerNumberboxList = viewChildren(CoerNumberBox);\r\n protected readonly _coerSelectboxList = viewChildren(CoerSelectbox);\r\n protected readonly _coerCheckboxList = viewChildren(CoerCheckbox);\r\n\r\n //Variables\r\n protected override _value: T[] = [];\r\n protected readonly _id: string = Tools.GetGuid('coer-grid');\r\n protected readonly _value_signal = signal<T[]>([]);\r\n protected readonly _gridSearch = signal<string | number>('');\r\n protected readonly _isLoading = signal<boolean>(true); \r\n protected readonly _sort = signal<IGridSort>({ columnName: '', direction: 'none', icon: '' });\r\n protected _isLoadingMessage: boolean = true;\r\n protected _expandedGroups: string[] = [];\r\n protected _enableAnimations: boolean = false;\r\n protected _indexFocus = signal<number>(0);\r\n\r\n //Generic Tools\r\n protected GetNumericFormat = Numbers.GetNumericFormat; \r\n protected GetElementWidth = HTMLElements.GetElementWidth; \r\n protected GetElementHeight = HTMLElements.GetElementHeight; \r\n\r\n //Inputs\r\n @Input() saveButton: IGridHeaderButton = { show: false };\r\n @Input() addButton: IGridHeaderButton = { show: false };\r\n @Input() exportButton: IGridHeaderExportButton = { show: false };\r\n @Input() importButton: IGridHeaderImportButton = { 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 columns = input<IGridColumn<T>[]>([]);\r\n public cleanColumnName = input<boolean>(true); \r\n public tooltipByRow = input<string>('');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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 showFooter = input<boolean>(true);\r\n public enableSort = input<boolean>(true);\r\n public enableRowFocus = input<boolean>(true);\r\n public enableNext = 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\r\n //Outputs\r\n public onClickSave = output<void>();\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<IGridInput<T>>();\r\n public onTextboxChange = output<IGridInput<T>>();\r\n public onSelectboxChange = output<IGridInput<T>>();\r\n public onCheckboxChange = output<IGridInputCheckbox<T>>();\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(_ => {\r\n this._enableAnimations = true;\r\n this._isLoading.set(false);\r\n this._isLoadingMessage = false;\r\n });\r\n }\r\n\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\r\n //computed\r\n protected _isGrouped = computed<boolean>(() => {\r\n return this.groupBy().length > 0;\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' || 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 //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 checked column\r\n if (SET_COLUMNS.has('checked')) {\r\n SET_COLUMNS.delete('checked');\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 let listFiltered: any[] = [];\r\n const SET_ROW = new Set<number>();\r\n\r\n const columnList = Tools.IsNotNull(this.search?.columns)\r\n ? this.search.columns!.map(x => Strings.FirstCharToLower(x))\r\n : this._gridColumns().map(x => x.columnName);\r\n\r\n for(const columnName of columnList) {\r\n listFiltered = dataSource.filter((item: any) =>\r\n !SET_ROW.has(item['indexRow'])\r\n && String(item[Strings.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 = Strings.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 _GetSearchIcon = (columnName: string) => { \r\n return this.search.show \r\n && (Tools.IsNull(this.search?.ignore) || !this.search.ignore)\r\n && (Tools.IsNull(this.search?.columns) || this.search.columns?.includes(columnName)) \r\n && String(this._gridSearch()).trim().length > 0\r\n ? 'fa-solid fa-magnifying-glass ms-auto' : '';\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[Strings.FirstCharToLower(columnName).replaceAll(' ', '')];\r\n }\r\n\r\n\r\n /** */\r\n protected _GetDateFormat = (date: string, toLocalZone: boolean = true) => {\r\n if (toLocalZone) date = Dates.ToLocalZone(date);\r\n return Dates.GetDateFormat(date);\r\n }\r\n\r\n\r\n /** */\r\n protected _GetDateTimeFormat = (date: string, toLocalZone: boolean = true) => {\r\n if (toLocalZone) date = Dates.ToLocalZone(date);\r\n return Dates.GetDateTimeFormat(date);\r\n } \r\n\r\n /** */\r\n protected _GetTooltip = (prefix: string, row: any, suffix: string = ''): string => {\r\n let column = Strings.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' | 'date-time' | 'toLocalZone' | '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) && !this.isReadonly()) {\r\n const inputConfig: any = columnConfig;\r\n response = inputConfig.hasOwnProperty(type)\r\n && typeof inputConfig[type] === 'function'\r\n && inputConfig[type]({ indexRow: data.indexRow, 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({ indexRow: data.indexRow, 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({ indexRow: data.indexRow, property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n\r\n case 'date-time': {\r\n if (data === null) return false;\r\n\r\n if (typeof columnConfig.typeDateTime === 'boolean') {\r\n response = columnConfig.typeDateTime;\r\n }\r\n\r\n else if (typeof columnConfig.typeDateTime === 'function') {\r\n response = (data === null) ? false : columnConfig.typeDateTime({ indexRow: data.indexRow, property, row, value });\r\n }\r\n\r\n break;\r\n }\r\n\r\n\r\n case 'toLocalZone': {\r\n response = true;\r\n \r\n if (data === null) return true;\r\n\r\n if (typeof columnConfig.toLocalZone === 'boolean') {\r\n response = columnConfig.toLocalZone;\r\n }\r\n\r\n else if (typeof columnConfig.toLocalZone === 'function') {\r\n response = (data === null) ? true : columnConfig.toLocalZone({ indexRow: data.indexRow, 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 indexRow: data.indexRow,\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]({ indexRow: data.indexRow, 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]({ indexRow: data.indexRow, 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]({ indexRow: data.indexRow, 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\r\n\r\n /** */ \r\n protected _ColorButton(button: IGridHeaderButton | IGridHeaderImportButton | IGridHeaderExportButton): 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' {\r\n return Tools.IsNotNull(button) && Tools.IsNotOnlyWhiteSpace(button?.color)\r\n ? button!.color! : 'primary'; \r\n }\r\n\r\n\r\n /** */ \r\n protected _ColorButtonByRow(property: string): 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' { \r\n const BUTTON_ROW = Tools.BreakReference<any>(this.buttonByRow);\r\n\r\n switch (property) {\r\n case 'editButtonColor': {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'primary';\r\n }\r\n\r\n case 'deleteButtonColor': {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'danger';\r\n }\r\n\r\n case 'goButtonColor': { \r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'navigation';\r\n }\r\n\r\n default : {\r\n return Tools.IsNotNull(this.buttonByRow) && Tools.IsNotOnlyWhiteSpace(BUTTON_ROW[property]) \r\n ? BUTTON_ROW[property] : 'primary'; \r\n }\r\n } \r\n }\r\n}","import { Component, computed, input, OnDestroy, output, viewChild, effect, EffectRef } from '@angular/core';\r\nimport { CONTROL_VALUE, ControlValue, Strings, Tools } from 'coer-elements/tools';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle'; \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 standalone: false\r\n})\r\nexport class CoerSwitch extends ControlValue implements OnDestroy {\r\n\r\n //Elements\r\n protected coerSwitch = viewChild.required<MatSlideToggle>('coerSwitch');\r\n\r\n //Variables\r\n protected override _value: boolean = false;\r\n protected readonly _id: string = Tools.GetGuid('coer-switch');\r\n protected readonly _effect!: EffectRef; \r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<boolean | null | undefined>(null);\r\n public label = input<string>('');\r\n public labelPosition = input<'before' | 'after'>('after');\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false);\r\n public tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('top'); \r\n\r\n\r\n //Outputs\r\n public onChange = output<boolean>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : false\r\n ); \r\n });\r\n } \r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy(); \r\n }\r\n\r\n\r\n //computed\r\n protected _tooltip = computed(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.tooltip())\r\n ? Strings.CleanUpBlanks(this.tooltip()) : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _tooltipPosition = computed<'above' | 'right' | 'below' | 'left'>(() => {\r\n switch(this.tooltipPosition()) {\r\n case 'top' : return 'above';\r\n case 'right' : return 'right';\r\n case 'bottom': return 'below';\r\n default: return 'left'; \r\n } \r\n });\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 /** */\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\" \r\n [matTooltip]=\"_tooltip()\"\r\n [matTooltipPosition]=\"_tooltipPosition()\"\r\n [matTooltipDisabled]=\"!_isEnable()\"\r\n [matTooltipHideDelay]=\"0\"\r\n [ngClass]=\"{ 'placeholder': isLoading() }\">\r\n \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, Strings, Collections } 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 standalone: false\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(select: boolean = false): void {\r\n Tools.Sleep().then(() => {\r\n if(this._inputSearch) this._inputSearch().Focus(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 protected Import(): void {\r\n this._Import();\r\n }\r\n\r\n\r\n /** */\r\n protected async _Import(event: any = null): Promise<void> {\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.set(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.set(false));\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Export(exportFile: boolean = true): void {\r\n this._Export(exportFile);\r\n } \r\n\r\n\r\n /** */\r\n protected _Export(exportFile: boolean | undefined = true): void {\r\n let item: any = {};\r\n this._isLoading.set(true);\r\n const FILE_NAME = (this.exportButton?.fileName || 'COER Report') + '.xlsx';\r\n\r\n let ROW_DATA_SOURCE: T[] = [];\r\n\r\n if (this.exportButton.hasOwnProperty('onlySelectedItem') && this.exportButton.onlySelectedItem) {\r\n ROW_DATA_SOURCE = this.selectedItems();\r\n }\r\n\r\n else {\r\n ROW_DATA_SOURCE = (this.exportButton.hasOwnProperty('onlyRowFiltered') && !this.exportButton.onlyRowFiltered)\r\n ? this._value_signal() : this._gridDataSourceFiltered();\r\n }\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(Strings.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(Strings.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.set(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 = Strings.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 if(this.enableNext()) {\r\n this.__NextInput(indexColumn, row.indexRow);\r\n }\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: number = -1, indexColumn: number = -1, onlyFocus: boolean = false): void {\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, onlyFocus);\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.Focus(!onlyFocus);\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.Focus(!onlyFocus);\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(!onlyFocus)); \r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public FocusLastInput(onlyFocus: boolean = false): void {\r\n Tools.Sleep(0, 'FocusInput').then(() => {\r\n if (this._isDisabled()) return;\r\n \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 INPUT_COLUMNS = COLUMNS.filter(x => ['coerTextbox', 'coerNumberbox', 'coerSelectbox'].includes(x.type));\r\n const LAST_INPUT_COLUMN = INPUT_COLUMNS.pop();\r\n\r\n if (Tools.IsNotNull(LAST_INPUT_COLUMN)) {\r\n this.FocusInput(0, LAST_INPUT_COLUMN!.indexColumn, onlyFocus);\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 Sort(columnName: string): void {\r\n if (this.enableSort()) {\r\n if(this._isLoading()) return;\r\n\r\n this._isLoading.set(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 Collections.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 Collections.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.set(false);\r\n\r\n Tools.Sleep().then(() => {\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 }\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.set(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.set(false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /** */\r\n public CheckAll(): void {\r\n this._isLoading.set(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.set(false);\r\n }\r\n\r\n\r\n /** */\r\n public UncheckAll(): void {\r\n this._isLoading.set(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.set(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, focus: boolean = true, onlyFocus: boolean = false): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.unshift(row);\r\n this.SetValue(dataSource);\r\n if(focus) this.FocusInput(-1, -1, onlyFocus);\r\n }\r\n\r\n\r\n /** Appends new elements to the end */\r\n public Push(row: T, focus: boolean = true, onlyFocus: boolean = false): void {\r\n const dataSource = Tools.BreakReference(this._value);\r\n dataSource.push(row);\r\n this.SetValue(dataSource);\r\n if(focus) this.FocusLastInput(onlyFocus); \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]=\"_ColorButton(exportButton)\"\r\n icon=\"excel\"\r\n [tooltip]=\"_isLoading() ? 'Loading' : (exportButton.tooltip || 'Export')\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(exportButton && exportButton.path) ? exportButton.path : []\"\r\n [isDisabled]=\"_isDisabled() || _isLoading() || (exportButton.isDisabled || false)\"\r\n [isLoading]=\"_isLoading()\" \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 && !isReadonly()) {\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=\"primary\"\r\n [color]=\"_ColorButton(importButton)\"\r\n [tooltip]=\"importButton.tooltip || 'Import'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(importButton && importButton.path) ? importButton.path : []\"\r\n [isDisabled]=\"importButton.isDisabled || false\" \r\n (onClick)=\"_Import()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Add Button -->\r\n @if(addButton.show && !isReadonly()) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n [color]=\"_ColorButton(addButton)\"\r\n icon=\"new\"\r\n [tooltip]=\"addButton.tooltip || 'New'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(addButton && addButton.path) ? addButton.path : []\"\r\n [isDisabled]=\"addButton.isDisabled || false\" \r\n (onClick)=\"onClickAdd.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <!-- Save Button -->\r\n @if(saveButton.show && !isReadonly()) {\r\n <div class=\"col-auto\">\r\n <coer-button\r\n type=\"icon\"\r\n [color]=\"_ColorButton(saveButton)\"\r\n icon=\"save\"\r\n [tooltip]=\"saveButton.tooltip || 'Save'\"\r\n tooltipPosition=\"top\"\r\n [path]=\"(saveButton && saveButton.path) ? saveButton.path : []\"\r\n [isDisabled]=\"saveButton.isDisabled || false\" \r\n (onClick)=\"onClickSave.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 #innerContainer [ngStyle]=\"{ 'height': _height, 'min-height': minHeight(), 'max-height': maxHeight() }\"> \r\n @if(!_isDisabled() && gridLength().dataSource <= 0 && !isLoading()) {\r\n <div class=\"no-data\"> No Data </div>\r\n }\r\n \r\n <div [ngClass]=\"{ 'display-none' : isLoading() }\">\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 [ignoreDataBinding]=\"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 d-flex align-items-center\">\r\n <span class=\"me-1\"> {{ _GetColumnName(header.columnName) }} </span>\r\n <i [class]=\"_GetShortIcon(header.columnName)\"></i> \r\n <i [class]=\"_GetSearchIcon(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 <!-- Go 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 [ignoreDataBinding]=\"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 [displayProperty]=\"_GetAttribute(header.columnName, row, 'displayProperty', '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], _IsCellType(header.columnName, row, 'toLocalZone')) }} </span>\r\n }\r\n \r\n @else if(_IsCellType(header.columnName, row, 'date-time')) {\r\n <span> {{ _GetDateTimeFormat(row[header.columnName], _IsCellType(header.columnName, row, 'toLocalZone')) }} </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]=\"_ColorButtonByRow('deleteButtonColor')\"\r\n icon=\"delete\"\r\n [tooltip]=\"_GetTooltip('Delete', row)\"\r\n [isInvisible]=\"_isDisabled()\"\r\n [isReadonly]=\"isReadonly()\"\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]=\"_ColorButtonByRow('editButtonColor')\"\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]=\"_ColorButtonByRow('goButtonColor')\"\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\r\n @if(isLoading()) {\r\n <!-- Grid Message -->\r\n <div class=\"loading\" [ngStyle]=\"{ \r\n 'width': '100%', \r\n 'height': '100%',\r\n 'bottom': showFooter() ? '35px' : '10px'\r\n }\">\r\n <i class=\"spinner-border\"></i>\r\n <span class=\"fa-fade\">Loading</span>\r\n </div> \r\n }\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 standalone: false\r\n})\r\nexport class CoerList<T> { \r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-List'); \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 showDeleteButtonByRow = input<((item: T, index: number) => boolean) | boolean>(false);\r\n public showGoButtonByRow = 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 \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 /** */\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 _showDeleteButtonByRow = (item: any): boolean => { \r\n const showButton = this.showDeleteButtonByRow() 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 _showGoButtonByRow = (item: any): boolean => { \r\n const showButton = this.showGoButtonByRow() 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 (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(_showDeleteButtonByRow(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(_showGoButtonByRow(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 { Component, computed, inject, input, output } 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 standalone: false\r\n})\r\nexport class CoerMenuOption {\r\n\r\n //Injects\r\n protected readonly _router = inject(Router);\r\n\r\n //Inputs\r\n public level = input<number>(1);\r\n public label = input<string>('');\r\n public icon = input<undefined | string>();\r\n public path = input<undefined | string>();\r\n public tree = input<IMenu[]>([]);\r\n\r\n //Outputs\r\n public onClickMenuOption = output<IMenuOptionSelected>();\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.icon()) ? this.icon()! : '';\r\n });\r\n\r\n\r\n //computed\r\n protected _path = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.path()) ? this.path()! : '/home';\r\n });\r\n\r\n\r\n //computed\r\n protected _tree = computed<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 //computed\r\n protected _marginLeft = computed<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 //computed\r\n protected _identityClass = computed<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 protected _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.onClickMenuOption.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('', true)\">\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, computed, effect, EffectRef, ElementRef, input, OnDestroy, AfterViewInit, 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-secretbox',\r\n templateUrl: './coer-secretbox.component.html',\r\n styleUrl: './coer-secretbox.component.scss',\r\n providers: [CONTROL_VALUE(CoerSecretBox)],\r\n standalone: false\r\n})\r\nexport class CoerSecretBox extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly matFormField = viewChild.required<ElementRef>('matFormField');\r\n protected readonly coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables\r\n protected override _value: string | number = '';\r\n protected readonly _id: string = Tools.GetGuid('coer-textBox');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected readonly _effect!: EffectRef;\r\n protected passwordType: boolean = true;\r\n protected element!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left'); \r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(25);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false);\r\n public showSecret = input<boolean>(false); \r\n public selectOnFocus = input<boolean>(false);\r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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\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 onClickExternalButton = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : ''\r\n ); \r\n });\r\n }\r\n\r\n \r\n //AfterViewInit\r\n ngAfterViewInit() {\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.Focus(true);\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 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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //getter\r\n protected get _showSecret() {\r\n return !this.showSecret()\r\n && !this.isDisabled()\r\n && !this.isLoading()\r\n }\r\n\r\n\r\n //getter\r\n protected get _passwordType() {\r\n return this.showSecret() \r\n || this.passwordType \r\n || this.isDisabled() \r\n || this.isLoading()\r\n } \r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\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 if(this._showSecret && (this.isInvalid() || this.isValid())) {\r\n return '45px';\r\n }\r\n\r\n else if (this._showSecret || this.isInvalid() || this.isValid()) {\r\n return '18px';\r\n }\r\n\r\n else {\r\n return '0px';\r\n }\r\n }); \r\n\r\n\r\n /** */\r\n public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this.element.focus();\r\n if(select) 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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\r\n }\r\n}","<div class=\"coer-text-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"_floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading(),\r\n 'd-none': isInvisible()\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]=\"_passwordType ? 'password': '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 class=\"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\r\n @if(_showSecret) {\r\n <i [ngClass]=\"{\r\n 'fa-solid cursor-pointer': true, \r\n 'fa-eye-slash': passwordType,\r\n 'fa-eye': !passwordType\r\n }\" \r\n [ngStyle]=\"{\r\n 'margin-right': isInvalid() || isValid() ? '25px' : '0px'\r\n }\"\r\n (click)=\"passwordType = !passwordType\"></i> \r\n }\r\n </span>\r\n </mat-form-field> \r\n\r\n @if(isInvisible()) {\r\n <mat-form-field class=\"invisible\">\r\n <input matInput [disabled]=\"true\"> \r\n </mat-form-field> \r\n } \r\n</div> ","import { Component, computed, input, output, viewChild } from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { IBreadcrumb, IGoBack, IInformation } from 'coer-elements/interfaces';\r\nimport { Collections, Menu, Tools } from 'coer-elements/tools'; \r\nimport { breakpointSIGNAL } from 'coer-elements/signals';\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 standalone: false\r\n})\r\nexport class CoerPageTitle {\r\n\r\n //Elements\r\n protected readonly _informationButton = viewChild.required<MatIconButton>('infoButton');\r\n \r\n //Variables\r\n protected readonly _iconRoot: string = 'icon-fill icon-house'; \r\n\r\n //Inputs \r\n public readonly title = input<string | null>(null);\r\n public readonly showBreadcrumbs = input<boolean>(true);\r\n public readonly breadcrumbs = input<IBreadcrumb[]>([]);\r\n public readonly goBack = input<IGoBack>({ show: false });\r\n public readonly information = input<IInformation>({ show: false });\r\n \r\n //Outputs \r\n public readonly onClickInformation = output<void>();\r\n\r\n\r\n //Constructor\r\n constructor() {\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 this._iconRoot = MENU_SELECTED.icon;\r\n }\r\n }\r\n } \r\n\r\n\r\n //computed\r\n protected _tooltip = computed<string>(() => {\r\n return Tools.IsNotOnlyWhiteSpace(this.information()?.tooltip)\r\n ? this.information().tooltip! : 'Information';\r\n }); \r\n \r\n \r\n //computed\r\n protected _breadcrumbs = computed<any[]>(() => { \r\n return this.breadcrumbs()\r\n .slice(0, (breakpointSIGNAL() == 'mv' ? 1 : this.breadcrumbs().length))\r\n .map((item, index) => Object.assign(item, { index }));\r\n }); \r\n\r\n\r\n /** */\r\n protected _ClickInformation(): void {\r\n this._informationButton()._elementRef?.nativeElement?.blur();\r\n this.onClickInformation.emit();\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 @if(information().show) {\r\n <button \r\n #infoButton\r\n mat-icon-button\r\n [matTooltip]=\"_tooltip()\"\r\n matTooltipPosition=\"before\"\r\n [matTooltipDisabled]=\"false\"\r\n [matTooltipHideDelay]=\"0\"\r\n type=\"button\"\r\n (click)=\"_ClickInformation()\">\r\n <i class=\"icon-circle-info\"></i>\r\n </button>\r\n }\r\n </h2>\r\n\r\n <!-- Navigation -->\r\n @if(showBreadcrumbs()) {\r\n <nav> \r\n <a class=\"breadcrumb-root\">\r\n <i [class]=\"_iconRoot\"></i>\r\n </a>\r\n \r\n <!-- Breadcrumbs -->\r\n <div class=\"breadcrumbs\"> \r\n @for(nav of _breadcrumbs(); track nav.index) {\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 } \r\n </div>\r\n \r\n\r\n <!-- Go Back -->\r\n @if(goBack().show) {\r\n <a class=\"go-back\"\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 }\r\n </nav>\r\n }\r\n</header> ","import { Component, computed, input, output, viewChild, viewChildren } from '@angular/core';\r\nimport { IMenu, IMenuSelected, IMenuOptionSelected } from 'coer-elements/interfaces';\r\nimport { MatExpansionPanel } from '@angular/material/expansion'; \r\nimport { menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { Source, 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 standalone: false\r\n})\r\nexport class CoerTreeAccordion { \r\n\r\n //Elements \r\n protected expansionPanel = viewChild.required<MatExpansionPanel>('expansionPanel');\r\n public menuList = viewChildren(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 public level = input<number>(1);\r\n public item = input.required<IMenu>();\r\n public tree = input<IMenu[]>([]);\r\n public showTree = input<boolean>(true);\r\n\r\n //Outputs\r\n public showGridMenu = output<IMenuOptionSelected>();\r\n public onClickMenuOption = output<IMenuOptionSelected>();\r\n public clickMenu = output<IMenuSelected>();\r\n\r\n\r\n //computed\r\n protected _tree = computed<IMenu[]>(() => {\r\n return [...this.tree()].concat([{...this.item()}])\r\n });\r\n\r\n\r\n //computed\r\n protected _icon = computed<string>(() => {\r\n return this.item() && Tools.IsNotOnlyWhiteSpace(this.item()?.icon) \r\n ? this.item().icon! : 'coer-icon-bars';\r\n });\r\n\r\n\r\n //computed\r\n protected _marginLeft = computed<string>(() => {\r\n return `${(this.level() - 1) * 20}px`;\r\n });\r\n\r\n\r\n //computed\r\n protected _identityClass = computed<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 => Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.items);\r\n\r\n\r\n /** */\r\n protected _IsGrid = (item: IMenu): boolean => Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.show) && item.show === 'GRID';\r\n\r\n\r\n /** */\r\n protected _GetGridIcon = (icon: string | null | undefined): string => Tools.IsNotOnlyWhiteSpace(icon) ? icon! : 'fa-solid fa-grip';\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 if(this.showTree()) {\r\n this.isExpanded = !this.isExpanded;\r\n this.isCollapsed = !this.isCollapsed; \r\n }\r\n\r\n else {\r\n this.isExpanded = true;\r\n this.isCollapsed = false;\r\n Source.Reset();\r\n }\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, showGridMenu: boolean = false): void {\r\n for(const menu of this.menuList()) {\r\n if(menu.item().label != menuOption.tree[this.level()].label) {\r\n menu.Close();\r\n }\r\n }\r\n \r\n if(showGridMenu) this.showGridMenu.emit(menuOption);\r\n else this.onClickMenuOption.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()) {\r\n if (menuLv2.item().label != menu.label) menuLv2.Close();\r\n }\r\n\r\n this.clickMenu.emit(menu);\r\n }\r\n\r\n\r\n /** */\r\n protected _ShowGridMenu(menuOption: IMenuOptionSelected, menu: IMenu) { \r\n menuSelectedSIGNAL.set({\r\n level: this.level() + 1,\r\n label: menu.label,\r\n icon: this._GetGridIcon(menu.label),\r\n isExpanded: true,\r\n isCollapsed: false,\r\n items: menu.items,\r\n tree: []\r\n }); \r\n \r\n this._ClickMenuOption(menuOption, true); \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-navigation': (isExpanded && level() == 1),\r\n 'text-sidenav-active': _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-sidenav-active': _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-sidenav-active': _IsActive(labelContainer)\r\n }\"> {{ item().label }} </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n\r\n @if(showTree()) { \r\n <div *ngFor=\"let subItem of item().items\">\r\n @if(_IsMenu(subItem)) {\r\n <!-- Sub Menu -->\r\n @if(_IsGrid(subItem)) {\r\n <coer-menu-option\r\n [label]=\"subItem.label\"\r\n [icon]=\"_GetGridIcon(subItem!.icon)\"\r\n path='menu'\r\n [level]=\"level() + 1\"\r\n [tree]=\"_tree()\"\r\n (onClickMenuOption)=\"_ShowGridMenu($event, subItem)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n @else {\r\n <coer-tree-accordion\r\n [level]=\"level() + 1\"\r\n [item]=\"subItem\"\r\n [tree]=\"_tree()\"\r\n (onClickMenuOption)=\"_ClickMenuOption($event)\"\r\n (clickMenu)=\"_ClickMenu($event)\"\r\n ></coer-tree-accordion> \r\n }\r\n }\r\n\r\n @else {\r\n <!-- Option Menu --> \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 (onClickMenuOption)=\"_ClickMenuOption($event)\"\r\n ></coer-menu-option>\r\n } \r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n </mat-expansion-panel>\r\n</mat-accordion>","import { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL, isLoadingSIGNAL, menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { Component, WritableSignal, computed, inject, output, 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 { Tools, Breadcrumbs, Menu, Screen, HTMLElements } 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 standalone: false\r\n})\r\nexport class CoerSidenav {\r\n\r\n //Injections\r\n private readonly _router = inject(Router);\r\n\r\n //Elements\r\n protected readonly sidenav = viewChild.required<MatDrawer>('matSidenav');\r\n protected readonly menuList = viewChildren(CoerTreeAccordion);\r\n\r\n //Variables \r\n protected readonly _isOpen: WritableSignal<boolean> = isMenuOpenSIGNAL;\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL;\r\n protected readonly _isLoading: WritableSignal<boolean> = isLoadingSIGNAL; \r\n \r\n //Outputs \r\n public onMenuSelected = output<IMenuSelected>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._BackButtonBrowser(); \r\n this._isOpen.set(false); \r\n\r\n Screen.Resize.subscribe({\r\n next: ({ breakpoint }: IScreenSize) => {\r\n breakpointSIGNAL.set(breakpoint);\r\n if(this._backdrop()) this.Close();\r\n }\r\n });\r\n } \r\n\r\n\r\n //computed\r\n protected _backdrop = computed<boolean>(() => {\r\n return ['mv', 'xs', 'sm', 'md'].includes(breakpointSIGNAL());\r\n }); \r\n\r\n\r\n //computed\r\n protected _mode = computed<'over' | 'push'>(() => {\r\n return ['mv', 'xs', 'sm', 'md'].includes(breakpointSIGNAL()) ? 'over' : 'push';\r\n }); \r\n\r\n\r\n //computed\r\n protected _showAsideMenu = computed<boolean>(() => {\r\n return ['xl', 'xxl'].includes(breakpointSIGNAL()) && !this._isOpen()\r\n }); \r\n\r\n\r\n //computed\r\n protected _navigation = computed<IMenu[]>(() => {\r\n let id: number = 0;\r\n const navigation = navigationSIGNAL();\r\n return navigation.map(item => Object.assign(item, { id: ++id })); \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 \r\n Tools.Sleep().then(_ => {\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()) {\r\n menuLv2.Close();\r\n }\r\n menuLv1.Close();\r\n }\r\n } \r\n\r\n //Close Sidenav\r\n if(this._mode() == 'over') {\r\n this.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 let scroll = 0;\r\n let find = false;\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 find = true;\r\n }\r\n\r\n else if(!find) scroll += 50; \r\n }\r\n\r\n selectedOption.tree.pop();\r\n }\r\n\r\n //Scroll sideNav\r\n HTMLElements.Scroll(this._isOpen() ? '.mat-drawer-inner-container' : 'aside', scroll);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public _Open(): void {\r\n this._isOpen.set(true);\r\n Tools.Sleep().then(_ => this.SetActiveLink(Menu.GetSelectedOption()));\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 this._isOpen.set(false);\r\n Tools.Sleep().then(_ => this.SetActiveLink(Menu.GetSelectedOption()));\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()) {\r\n menuLv2.Close();\r\n }\r\n\r\n menuLv1.Close();\r\n }\r\n }\r\n } \r\n\r\n this.onMenuSelected.emit(menuSelectedSIGNAL()!);\r\n }\r\n\r\n\r\n /** */\r\n protected _ShowGridMenu(menuOption: IMenuOptionSelected, menu: IMenu) {\r\n menuSelectedSIGNAL.set({\r\n level: 1,\r\n label: menu.label,\r\n icon: this._GetIcon(menu),\r\n isExpanded: true,\r\n isCollapsed: false,\r\n items: menu.items,\r\n tree: []\r\n }); \r\n \r\n this._NavigateTo(menuOption); \r\n }\r\n\r\n\r\n /** */\r\n protected _IsMenu = (item: IMenu): boolean => Tools.IsNotNull(item) && Tools.IsNotNull(item?.items);\r\n\r\n\r\n /** */\r\n protected _IsGrid = (item: IMenu): boolean => item?.show === 'GRID';\r\n \r\n\r\n /** */\r\n protected _GetIcon = (item: IMenu): string => { \r\n return item?.icon \r\n || (this._IsMenu(item) ? (this._IsGrid(item) ? 'fa-solid fa-grip' : 'coer-icon-bars') : '');\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 protected _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 protected _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.RemoveByPath(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)=\"_Open()\"\r\n (closed)=\"_Close()\"\r\n [mode]=\"_mode()\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) { \r\n @for(item of _navigation(); track item.id) {\r\n \r\n <!-- Menu --> \r\n @if(_IsMenu(item)) {\r\n @if(_IsGrid(item)) {\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"_GetIcon(item)\"\r\n path=\"menu\"\r\n (onClickMenuOption)=\"_ShowGridMenu($event, item)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n @else {\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (showGridMenu)=\"_NavigateTo($event)\"\r\n (onClickMenuOption)=\"_NavigateTo($event)\"\r\n (clickMenu)=\"_MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n }\r\n }\r\n \r\n <!-- Option Menu -->\r\n @else {\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (onClickMenuOption)=\"_NavigateTo($event)\"\r\n ></coer-menu-option>\r\n }\r\n \r\n \r\n <div class=\"separator\"></div> \r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option label=\"Empty\"></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"icon-arrows-sync animation-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 scrollbar-invisible': true, 'display-none': !_showAsideMenu() }\" (click)=\"Open($event)\">\r\n @if(_isLoading()) {\r\n <span class=\"icon-container\">\r\n <i class=\"icon-arrows-sync animation-spin\"></i>\r\n </span>\r\n }\r\n\r\n @else {\r\n @for (item of _navigation(); track item.id) {\r\n <div (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 }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside> \r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>","import { AfterViewInit, Component, computed, effect, EffectRef, ElementRef, input, OnDestroy, 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-dropdown',\r\n templateUrl: './coer-dropdown.component.html',\r\n styleUrl: './coer-dropdown.component.scss',\r\n providers: [CONTROL_VALUE(CoerDropdown)],\r\n standalone: false\r\n})\r\nexport class CoerDropdown<T> extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements\r\n protected readonly _coerTextBox = viewChild.required<ElementRef>('coerTextBox');\r\n \r\n //Variables \r\n protected override _value: T | null = null;\r\n protected readonly _id: string = Tools.GetGuid('coer-dropdown');\r\n protected readonly _effect!: EffectRef;\r\n protected _index = signal<number>(-1); \r\n protected _isOpen = signal<boolean>(false); \r\n protected _isOverMenu = signal<boolean>(false); \r\n protected _dropDownMenu!: HTMLElement;\r\n protected _container!: HTMLElement; \r\n \r\n //Inputs\r\n public id = input<string>('');\r\n public value = input<string | null | undefined>(null);\r\n public label = input<string>('');\r\n public color = input<'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'navigation' | 'dark' | 'light'>('default');\r\n public type = input<'filled' | 'outline'>('filled');\r\n public dataSource = input<T[]>([]);\r\n public propDisplay = input<string>('name');\r\n public rowsByPage = input<number>(50); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = input<boolean>(false); \r\n public width = input<string>('190px');\r\n public minWidth = input<string>('150px');\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 tooltip = input<string>('');\r\n public tooltipPosition = input<'top' | 'right' | 'bottom' | 'left'>('left');\r\n\r\n //Outputs \r\n public onSelected = output<T>();\r\n public onUnselect = output<null>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : null\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep().then(() => {\r\n //Container\r\n this._container = document.getElementById(`${this._id}-container`) as HTMLElement;\r\n\r\n if(this._container) {\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\r\n\r\n //Document\r\n document.addEventListener('click', () => {\r\n if(!this._isOverMenu()) this.Close();\r\n }); \r\n }); \r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n \r\n\r\n //getter\r\n protected get _label(): string {\r\n let label = this.label();\r\n\r\n if (this.dataSource().length > 0) {\r\n if (Tools.IsNotNull(this._value)) {\r\n label = (this._value as any)[this.propDisplay()]\r\n } \r\n }\r\n\r\n return label;\r\n }\r\n\r\n\r\n //getter\r\n protected get _icon(): string { \r\n return Tools.IsNotNull(this.value) \r\n && Tools.IsNotOnlyWhiteSpace((this.value as any)?.icon)\r\n ? (this.value as any)?.icon || '' : '';\r\n }\r\n\r\n\r\n //computed\r\n protected _isEnable = computed<boolean>(() => {\r\n return !this.isDisabled() && !this.isLoading() && !this.isReadonly() && !this.isInvisible();\r\n }); \r\n\r\n\r\n //computed\r\n protected _dataSource = computed(() => {\r\n let index = 0; \r\n let dataSource = this.dataSource().map((item: any) => Object.assign(item, { index: index++ })); \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 //ControlValueAccessor\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(null);\r\n }\r\n\r\n if(Tools.IsNotNull(this._UpdateValue)) this._UpdateValue(_value);\r\n this._value = _value; \r\n }\r\n\r\n\r\n //ControlValueAccessor\r\n public override writeValue(_value: any): void {\r\n if(_value === undefined) _value = null;\r\n this._value = _value; \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 _GetIcon = (item: any): string => {\r\n return Tools.IsNotNull(item) && Tools.IsNotOnlyWhiteSpace(item?.icon) ? item.icon : '';\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 _GetPath = (item: any): string | (string | number)[] | null => { \r\n if (Tools.IsNotNull(item)) {\r\n if (Tools.IsNotOnlyWhiteSpace(item?.path)) return item?.path;\r\n if (Tools.IsNotOnlyWhiteSpace(item?.url)) return item?.url; \r\n if (Tools.IsNotOnlyWhiteSpace(item?.route)) return item?.route; \r\n if (Tools.IsNotOnlyWhiteSpace(item?.link)) return item?.link;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n protected _SelectItem(item: any): void { \r\n if (Tools.IsNotNull(item) && this._isEnable()) { \r\n const _item = Tools.BreakReference<any>(this.dataSource()[item.index]);\r\n \r\n if(Tools.IsNotNull(_item) && Tools.IsNull(this._GetPath(item))) {\r\n this.SetValue(Tools.BreakReference(_item)); \r\n }\r\n \r\n delete _item.indexRow;\r\n delete _item.index; \r\n this.onSelected.emit({ ..._item }); \r\n Tools.Sleep().then(() => this.Close())\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public Unselect(): void { \r\n this.SetValue(null);\r\n this.Close(); \r\n } \r\n\r\n\r\n /** */\r\n protected _Toggle(): void {\r\n if (this._isOpen()) this.Close();\r\n else this.Open();\r\n }\r\n\r\n\r\n /** */\r\n public Open(): void {\r\n Tools.Sleep().then(_ => {\r\n if(this._isEnable()) {\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\r\n /** */\r\n public Close(): void {\r\n Tools.Sleep().then(_ => {\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 /** */\r\n public SetValueBy(callback: (row: T) => boolean): void {\r\n Tools.Sleep().then(_ => {\r\n if (this._dataSource().length > 0) {\r\n const value = Tools.BreakReference<any>(this._dataSource().find(callback as any)); \r\n \r\n if (Tools.IsNotNull(value)) {\r\n this.SetValue(value); \r\n } \r\n }\r\n }); \r\n }\r\n}","<div class=\"coer-dropdown\">\r\n <div [id]=\"_id + '-container'\">\r\n <div [ngClass]=\"{ 'd-none': isInvisible() }\">\r\n <coer-button\r\n [color]=\"color()\"\r\n [type]=\"type()\"\r\n [icon]=\"_icon\"\r\n [isLoading]=\"isLoading()\"\r\n [isDisabled]=\"isDisabled()\" \r\n [width]=\"width()\"\r\n [minWidth]=\"minWidth()\"\r\n [maxWidth]=\"maxWidth()\"\r\n [marginTop]=\"marginTop()\"\r\n [marginRight]=\"marginRight()\"\r\n [marginBottom]=\"marginBottom()\"\r\n [marginLeft]=\"marginLeft()\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n (onClick)=\"_Toggle()\"\r\n > {{ _label }} </coer-button>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'd-none': !isInvisible(), 'invisible': true }\">\r\n <coer-button\r\n [width]=\"width()\"\r\n [minWidth]=\"minWidth()\"\r\n [maxWidth]=\"maxWidth()\"\r\n [marginTop]=\"marginTop()\"\r\n [marginRight]=\"marginRight()\"\r\n [marginBottom]=\"marginBottom()\"\r\n [marginLeft]=\"marginLeft()\"\r\n ></coer-button>\r\n </div>\r\n </div>\r\n\r\n <!-- Options Container -->\r\n <div class=\"btn-group\">\r\n <ul [id]=\"_id + '-dropdown-menu'\" \r\n class=\"dropdown-menu\"\r\n [ngStyle]=\"{\r\n width: width(),\r\n minWidth: minWidth()\r\n }\">\r\n\r\n @if(_dataSource().length <= 0) {\r\n <li class=\"no-options\">\r\n <div [id]=\"id + '-dropdown-option-' + -1\" class='dropdown-item cursor-pointer no-options'\r\n > -- No Options -- </div>\r\n </li>\r\n }\r\n\r\n @for(item of _dataSource(); track _GetIndexRow(item)) {\r\n <li (click)=\"_SelectItem(item)\">\r\n <a [routerLink]=\"_GetPath(item)\" class=\"text-decoration-none\">\r\n <div [id]=\"id + '-dropdown-option-' + _GetIndexRow(item)\"\r\n [ngClass]=\"{\r\n 'dropdown-item': true,\r\n 'cursor-pointer': true,\r\n 'gap-2': true,\r\n 'dropdown-item-focus': _index() == _GetIndexRow(item)\r\n }\"> \r\n\r\n @if (_GetIcon(item).length > 0) {\r\n <i [class]=\"_GetIcon(item)\"></i>\r\n }\r\n <span> {{ _GetDisplay(item) }} </span>\r\n </div>\r\n <hr class=\"dropdown-divider\">\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</div> ","import { Component, input, output, viewChild, computed, OnDestroy, signal, AfterViewInit, EffectRef, effect, contentChildren } from '@angular/core';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { CoerRefDirective } from 'coer-elements/directives';\r\nimport { Strings, 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 standalone: false\r\n})\r\nexport class CoerTab implements AfterViewInit, OnDestroy { \r\n \r\n //Content\r\n public contentRef = contentChildren<any>(CoerRefDirective);\r\n\r\n //Elements\r\n protected readonly _matTabGroup = viewChild.required<MatTabGroup>('matTabGroup');\r\n\r\n //Variables\r\n protected readonly _id: string = Tools.GetGuid('coer-tab');\r\n protected readonly _selectedIndex = signal<number>(0); \r\n protected readonly _effectSelectedIndex!: EffectRef; \r\n protected readonly _effectAlignTabs!: EffectRef;\r\n protected _htmlElement!: HTMLElement;\r\n protected _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 public selectedIndex = input<number>(0);\r\n public alignTabs = input<'start' | 'center' | 'end'>('start');\r\n public stretchTabs = input<boolean>(false); \r\n\r\n //Outputs\r\n public onSelectedTab = output<ICoerRef>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n this._effectSelectedIndex = effect(() => { \r\n if (Tools.IsNotNull(this.selectedIndex())) {\r\n this._selectedIndex.set(this.selectedIndex());\r\n } \r\n });\r\n\r\n this._effectAlignTabs = effect(() => {\r\n Tools.Sleep().then(() => {\r\n if(Tools.IsNotNull(this._htmlElement)) {\r\n if (Tools.IsNotNull(this.alignTabs())) {\r\n this._htmlElement.removeAttribute('mat-align-tabs');\r\n\r\n Tools.Sleep().then(() => {\r\n this._htmlElement.setAttribute('mat-align-tabs', this.alignTabs());\r\n });\r\n }\r\n }\r\n }); \r\n }); \r\n } \r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n this._htmlElement = this._matTabGroup()._elementRef.nativeElement; \r\n }\r\n\r\n\r\n //OnDestroy\r\n ngOnDestroy() {\r\n this._effectSelectedIndex?.destroy(); \r\n this._effectAlignTabs?.destroy(); \r\n }\r\n \r\n\r\n //getter\r\n protected _contentList = computed<ICoerRef[]>(() => { \r\n return this.contentRef() as ICoerRef[];\r\n }) \r\n\r\n\r\n //computed\r\n public selectedTab = computed<ICoerRef>(() => { \r\n return this._contentList()[this._selectedIndex()];\r\n }); \r\n \r\n\r\n /** */\r\n protected _SelectedIndexChange(selectedIndex: number) { \r\n this._selectedIndex.set(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.set(index); \r\n } \r\n\r\n\r\n /** */\r\n protected _SetToolTip = (tab: ICoerRef): string => { \r\n return Tools.IsNotOnlyWhiteSpace(tab.tooltip())\r\n ? Strings.CleanUpBlanks(tab.tooltip()) : '';\r\n } \r\n}","<div class=\"coer-tab\">\r\n <mat-tab-group #matTabGroup\r\n [id]=\"_id\"\r\n [mat-stretch-tabs]=\"stretchTabs()\"\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 class=\"tab\"\r\n [matTooltip]=\"_SetToolTip(tab)\"\r\n matTooltipPosition=\"above\"\r\n [matTooltipDisabled]=\"false\"\r\n [matTooltipHideDelay]=\"0\">\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 <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 </mat-tab>\r\n }\r\n }\r\n </mat-tab-group>\r\n</div> ","import { Component, computed, ElementRef, input, AfterViewInit, output, signal, viewChild, EffectRef, effect, OnDestroy } 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 standalone: false\r\n})\r\nexport class CoerTextarea extends ControlValue implements AfterViewInit, OnDestroy {\r\n\r\n //Elements \r\n protected _coerTextBox = viewChild.required<ElementRef>('coerTextArea');\r\n \r\n //Variables \r\n protected override _value: string | number = '';\r\n protected readonly _effect!: EffectRef;\r\n protected readonly _id: string = Tools.GetGuid('coer-textArea');\r\n protected readonly _isLoadingEvent = signal<boolean>(false);\r\n protected _htmlElement!: HTMLInputElement;\r\n\r\n //Inputs \r\n public id = input<string>('');\r\n public value = input<string | number | null | undefined>(null);\r\n public label = input<string>('');\r\n public placeholder = input<string>('');\r\n public textPosition = input<'left' | 'center' | 'right'>('left');\r\n public minLength = input<number | string>(0);\r\n public maxLength = input<number | string>(2500);\r\n public isInvalid = input<boolean>(false);\r\n public isValid = input<boolean>(false); \r\n public resize = input<boolean>(false);\r\n public showFooter = input<boolean>(true); \r\n public isLoading = input<boolean>(false);\r\n public isDisabled = input<boolean>(false);\r\n public isReadonly = input<boolean>(false);\r\n public isInvisible = 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 height = input<string>('80px'); \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 onInput = output<string>();\r\n\r\n\r\n //Constructor\r\n constructor() {\r\n super();\r\n this._effect = effect(() => {\r\n this.SetValue(\r\n Tools.IsNotNull(this.value()) ? this.value()! : ''\r\n ); \r\n });\r\n }\r\n\r\n\r\n //AfterViewInit\r\n ngAfterViewInit() {\r\n Tools.Sleep().then(()=> {\r\n this._htmlElement = document.getElementById(this._id)! as HTMLInputElement;\r\n\r\n if (this._htmlElement) {\r\n this._htmlElement.addEventListener('focus', () => {\r\n if (!this._isEnable()) this.Blur();\r\n });\r\n\r\n this._htmlElement.addEventListener('blur', () => this.Blur());\r\n\r\n this._htmlElement.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._htmlElement.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 //OnDestroy\r\n ngOnDestroy() {\r\n this._effect?.destroy();\r\n }\r\n\r\n\r\n //getter\r\n protected 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 public Focus(select: boolean = false, delay: number = 0): void {\r\n if(this._isLoadingEvent()) return;\r\n else this._isLoadingEvent.set(true);\r\n\r\n Tools.Sleep(delay).then(() => {\r\n if(this._isEnable()) {\r\n this._htmlElement.focus();\r\n if(select) this._htmlElement.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._htmlElement) {\r\n this._htmlElement.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(delay: number = 0): void {\r\n this.SetValue('');\r\n this.Focus(false, delay);\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' : 'default',\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 'height' : height()\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 { AfterViewInit, Component, computed, input, output, viewChild, WritableSignal } from '@angular/core';\r\nimport { isModalOpenSIGNAL, isMenuOpenSIGNAL, isLoadingSIGNAL } from 'coer-elements/signals'; \r\nimport { IMenuToolbar, IUserLogin } from 'coer-elements/interfaces';\r\nimport { HTMLElements, Tools } from 'coer-elements/tools';\r\nimport { MatIconButton } from '@angular/material/button';\r\ndeclare const appSettings: any;\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 standalone: false\r\n})\r\nexport class CoerToolbar implements AfterViewInit { \r\n\r\n //Elements\r\n protected readonly _toogleButton = viewChild.required<MatIconButton>('toogleButton');\r\n\r\n //variables\r\n protected readonly _isModalOpen: WritableSignal<boolean> = isModalOpenSIGNAL; \r\n protected _isReadyPage: boolean = false; \r\n protected _awaitSignals: boolean = false; \r\n\r\n //appSettings\r\n protected _appName = Tools.AvoidNull<string>(appSettings?.appInfo?.name, 'string'); \r\n protected _appLogoPath = Tools.AvoidNull<string>(appSettings?.appInfo?.logoPath, 'string');\r\n protected _appLogoWidth = Tools.AvoidNull<string>(appSettings?.appInfo?.logoWidth, 'string'); \r\n \r\n //Inputs\r\n public user = input<IUserLogin | null>(null);\r\n public image = input<string | null>(null);\r\n public menu = input<IMenuToolbar[]>([]); \r\n\r\n //Outputs \r\n public onClickMenu = output<void>(); \r\n public onClickOption = output<IMenuToolbar>(); \r\n \r\n\r\n //AfterViewInit\r\n ngAfterViewInit() { \r\n Tools.Sleep(1000).then(() => this._isReadyPage = true); \r\n }\r\n\r\n /** */\r\n protected ToogleSideNave(): void { \r\n this.onClickMenu.emit();\r\n isMenuOpenSIGNAL.set(!isMenuOpenSIGNAL()); \r\n this._toogleButton()._elementRef?.nativeElement?.blur();\r\n } \r\n \r\n\r\n //computed\r\n protected userName = computed<string>(() => { \r\n const user = this.user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.nickname)) return user?.nickname!;\r\n if (Tools.IsNotOnlyWhiteSpace(user?.fullName)) return user?.fullName!;\r\n if (Tools.IsNotOnlyWhiteSpace(user?.user)) return user?.user!; \r\n }\r\n \r\n return ''; \r\n });\r\n\r\n\r\n //computed\r\n protected userTitle = computed<string>(() => {\r\n const user = this.user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.role)) return user?.role!;\r\n } \r\n\r\n return '';\r\n }); \r\n\r\n\r\n //getter\r\n protected get showLogo(): boolean { \r\n return (Tools.IsNull(appSettings?.appInfo?.showLogo) && this._appLogoPath.length > 0) \r\n || (appSettings?.appInfo?.showLogo && this._appLogoPath.length > 0)\r\n }\r\n\r\n\r\n //getter\r\n protected get showUser(): boolean {\r\n return !isLoadingSIGNAL() \r\n && Tools.IsNotNull(this.user())\r\n } \r\n\r\n\r\n //getter\r\n protected get paddingLeft(): string {\r\n return (this.userName().length > 0 || this.userTitle().length > 0)\r\n ? '5px' : '0px';\r\n }\r\n\r\n\r\n /** */ \r\n protected GetPadding = (container: 'user-identity' | 'user-container'): string => {\r\n if (this.userName().length > 0 || this.userTitle().length > 0) { \r\n switch(container) {\r\n case 'user-container': return '10px';\r\n case 'user-identity': return '5px'; \r\n }\r\n } \r\n\r\n switch(container) {\r\n case 'user-container': return '2px';\r\n case 'user-identity': return '0px'; \r\n }\r\n }\r\n\r\n\r\n /** */\r\n protected GetElementWidth = (element: HTMLElement): string => { \r\n return this._isReadyPage \r\n ? HTMLElements.GetElementWidth(element, 48)\r\n : '0px'; \r\n } \r\n}","<div id=\"coer-tool-bar\" [ngClass]=\"{ 'position-relative': _isModalOpen() }\">\r\n <mat-toolbar> \r\n @if(showLogo) {\r\n <div class=\"logo-image-container\" (click)=\"ToogleSideNave()\" [ngStyle]=\"{ 'width': _appLogoWidth }\">\r\n <div class=\"logo-image\" [ngStyle]=\"{ 'background-image': 'url(' + (_appLogoPath | noImage:'IMAGE') + ')' }\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <div class=\"button-container\">\r\n <button\r\n #toogleButton \r\n mat-icon-button \r\n type=\"button\"\r\n (click)=\"ToogleSideNave()\">\r\n <i class=\"icon-bars\"></i>\r\n </button>\r\n </div>\r\n\r\n <span class=\"app-name\"> {{ _appName }} </span> \r\n } \r\n\r\n <span class=\"fill-space\"></span> \r\n \r\n <div class=\"user-container\" (click)=\"dropdown.Open()\" [ngStyle]=\"{ \r\n 'padding-right': GetPadding('user-container'),\r\n 'display': showUser ? 'flex' : 'none'\r\n }\">\r\n \r\n <coer-dropdown\r\n #dropdown\r\n [dataSource]=\"menu()\" \r\n propDisplay=\"label\" \r\n width=\"auto\"\r\n [minWidth]=\"GetElementWidth(toolbarUserIdentity)\"\r\n maxWidth=\"auto\"\r\n (onSelected)=\"onClickOption.emit($event); dropdown.Unselect()\"\r\n ></coer-dropdown>\r\n\r\n <div class=\"user-image\" [ngStyle]=\"{ 'background-image': 'url(' + (image() | noImage:'USER') + ')' }\"></div>\r\n <div #toolbarUserIdentity id=\"toolbar-user-identity\" class=\"user-identity\" [ngStyle]=\"{ 'padding-left': GetPadding('user-identity') }\">\r\n \r\n @if(userName().length > 0) {\r\n <p> {{ userName() }} </p>\r\n }\r\n \r\n @if(userTitle().length > 0) {\r\n <p> {{ userTitle() }} </p>\r\n }\r\n </div> \r\n </div> \r\n \r\n @if(!showUser) {\r\n <span class=\"me-2\">\r\n <span class=\"fw-bold fa-fade\"> \r\n Loading <i class=\"fa-solid fa-sync fa-spin\"></i> \r\n </span> \r\n </span>\r\n }\r\n </mat-toolbar>\r\n\r\n <div class=\"shadow\"></div>\r\n</div>\r\n","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 { MatDatepickerModule } from '@angular/material/datepicker';\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 { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTimepickerModule } from '@angular/material/timepicker'; \r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip'; \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 { CoerCard } from './coer-card/coer-card.component';\r\nimport { CoerCheckbox } from './coer-checkbox/coer-checkbox.component';\r\nimport { CoerDateBox } from './coer-datebox/coer-datebox.component';\r\nimport { CoerFilebox } from './coer-filebox/coer-filebox.component';\r\nimport { CoerFileboxImage } from './coer-filebox/coer-filebox-image/coer-filebox-image.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 { CoerSecretBox } from './coer-secretbox/coer-secretbox.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 { CoerDropdown } from './coer-dropdown/coer-dropdown.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 MatDatepickerModule,\r\n MatDrawerContainer,\r\n MatDrawerContent,\r\n MatDrawer,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTimepickerModule,\r\n MatListModule,\r\n MatNativeDateModule,\r\n MatSlideToggleModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTabsModule,\r\n DirectivesModule,\r\n PipesModule\r\n ],\r\n declarations: [\r\n CoerAccordion,\r\n CoerButton,\r\n CoerCard,\r\n CoerCheckbox,\r\n CoerDateBox,\r\n CoerFilebox,\r\n CoerFileboxImage,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList, \r\n CoerMenuOption,\r\n CoerModal,\r\n CoerNumberBox,\r\n CoerSecretBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerDropdown,\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 CoerCard,\r\n CoerCheckbox,\r\n CoerDateBox,\r\n CoerFilebox,\r\n CoerForm,\r\n CoerGrid,\r\n CoerList, \r\n CoerModal,\r\n CoerNumberBox,\r\n CoerSecretBox,\r\n CoerPageTitle,\r\n CoerSidenav,\r\n CoerSelectbox,\r\n CoerDropdown,\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":["i2","i4","i3","i2.CoerModal","i1.CoerFileboxImage","i1","i4.CoerButton","i3.CoerButton","i4.CoerCheckbox","i5.CoerNumberBox","i6.CoerSelectbox","i7.CoerSwitch","i8.CoerTextBox","i4.CoerTextBox","i5","i3.CoerMenuOption","i4.CoerTreeAccordion","i4.CoerDropdown"],"mappings":"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"}