ngx-core-business
Version:
A comprehensive solution designed to streamline the development of enterprise-level Angular applications.
1 lines • 195 kB
Source Map (JSON)
{"version":3,"file":"ngx-core-business-components.mjs","sources":["../../../projects/ngx-core-business/components/src/avatar/avatar.component.ts","../../../projects/ngx-core-business/components/src/avatar/avatar.component.html","../../../projects/ngx-core-business/components/src/app-header/app-header.component.ts","../../../projects/ngx-core-business/components/src/app-header/app-header.component.html","../../../projects/ngx-core-business/components/src/avatar/avatar.module.ts","../../../projects/ngx-core-business/components/src/avatar/index.ts","../../../projects/ngx-core-business/components/src/app-header/app-header.module.ts","../../../projects/ngx-core-business/components/src/app-header/index.ts","../../../projects/ngx-core-business/components/src/data-error-view/data-error-view.component.ts","../../../projects/ngx-core-business/components/src/data-error-view/data-error-view.component.html","../../../projects/ngx-core-business/components/src/data-error-view/data-error-view.module.ts","../../../projects/ngx-core-business/components/src/dialog/dialog.component.ts","../../../projects/ngx-core-business/components/src/dialog/dialog.component.html","../../../projects/ngx-core-business/components/src/dialog/dialog.module.ts","../../../projects/ngx-core-business/components/src/edition-pin/edition-pin.component.ts","../../../projects/ngx-core-business/components/src/edition-pin/edition-pin.component.html","../../../projects/ngx-core-business/components/src/edition-pin/edition-pin.module.ts","../../../projects/ngx-core-business/components/src/edition-pin/index.ts","../../../projects/ngx-core-business/components/src/grid/grid.component.ts","../../../projects/ngx-core-business/components/src/grid/grid.component.html","../../../projects/ngx-core-business/components/src/grid/grid.module.ts","../../../projects/ngx-core-business/components/src/grid/column.ts","../../../projects/ngx-core-business/components/src/grid/index.ts","../../../projects/ngx-core-business/components/src/http-activity-bar/http-activity.service.ts","../../../projects/ngx-core-business/components/src/http-activity-bar/http-activity-bar.component.ts","../../../projects/ngx-core-business/components/src/http-activity-bar/http-activity-bar.component.html","../../../projects/ngx-core-business/components/src/http-activity-bar/http-activity-bar.module.ts","../../../projects/ngx-core-business/components/src/http-activity-bar/http-activity.interceptor.ts","../../../projects/ngx-core-business/components/src/filters-container.component.ts","../../../projects/ngx-core-business/components/src/text-filter/text-filter.component.ts","../../../projects/ngx-core-business/components/src/text-filter/text-filter.component.html","../../../projects/ngx-core-business/components/src/list-toolbar/list-toolbar.component.ts","../../../projects/ngx-core-business/components/src/list-toolbar/list-toolbar.component.html","../../../projects/ngx-core-business/components/src/text-filter/text-filter.module.ts","../../../projects/ngx-core-business/components/src/text-filter/index.ts","../../../projects/ngx-core-business/components/src/list-toolbar/list-toolbar.module.ts","../../../projects/ngx-core-business/components/src/list-toolbar/index.ts","../../../projects/ngx-core-business/components/src/nav-list/nav-list.component.ts","../../../projects/ngx-core-business/components/src/nav-list/nav-list.component.html","../../../projects/ngx-core-business/components/src/nav-list/nav-list.module.ts","../../../projects/ngx-core-business/components/src/process-button/process-button.component.ts","../../../projects/ngx-core-business/components/src/process-button/process-button.component.html","../../../projects/ngx-core-business/components/src/process-button/process-button.module.ts","../../../projects/ngx-core-business/components/src/process-button/index.ts","../../../projects/ngx-core-business/components/src/process-mask/process-mask.component.ts","../../../projects/ngx-core-business/components/src/process-mask/process-mask.component.html","../../../projects/ngx-core-business/components/src/process-mask/process-mask.module.ts","../../../projects/ngx-core-business/components/src/progress-view/progress-view.component.ts","../../../projects/ngx-core-business/components/src/progress-view/progress-view.component.html","../../../projects/ngx-core-business/components/src/progress-view/progress-view.module.ts","../../../projects/ngx-core-business/components/src/snack-bar/snack-bar.component.ts","../../../projects/ngx-core-business/components/src/snack-bar/snack-bar.component.html","../../../projects/ngx-core-business/components/src/snack-bar/snack-bar.module.ts","../../../projects/ngx-core-business/components/src/view-breadcrumb/view-breadcrumb.component.ts","../../../projects/ngx-core-business/components/src/view-breadcrumb/view-breadcrumb.component.html","../../../projects/ngx-core-business/components/src/view-breadcrumb/view-breadcrumb-separator.component.ts","../../../projects/ngx-core-business/components/src/view-breadcrumb/view-breadcrumb.module.ts","../../../projects/ngx-core-business/components/src/view-breadcrumb/index.ts","../../../projects/ngx-core-business/components/src/view-content-wrapper/view-content-wrapper.component.ts","../../../projects/ngx-core-business/components/src/view-content-wrapper/view-content-wrapper.component.html","../../../projects/ngx-core-business/components/src/view-content-wrapper/view-content-wrapper.module.ts","../../../projects/ngx-core-business/components/src/view-title/view-title.component.ts","../../../projects/ngx-core-business/components/src/view-title/view-title.html","../../../projects/ngx-core-business/components/src/view-title/view-title.module.ts","../../../projects/ngx-core-business/components/src/view-title/index.ts","../../../projects/ngx-core-business/components/src/services/dialog.service.ts","../../../projects/ngx-core-business/components/src/services/http-statuses.message.ts","../../../projects/ngx-core-business/components/src/services/xhr-info.ts","../../../projects/ngx-core-business/components/src/services/notifications.service.ts","../../../projects/ngx-core-business/components/src/form-builder-helper.ts","../../../projects/ngx-core-business/components/src/form-dialog.component.ts","../../../projects/ngx-core-business/components/src/model-view.component.ts","../../../projects/ngx-core-business/components/src/form.component.ts","../../../projects/ngx-core-business/components/src/utils/string-utils.ts","../../../projects/ngx-core-business/components/src/table-view.component.ts","../../../projects/ngx-core-business/components/src/public_api.ts","../../../projects/ngx-core-business/components/src/ngx-core-business-components.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\r\n@Component({\r\n selector: 'ngbiz-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n standalone: false\r\n})\r\nexport class AvatarComponent {\r\n @Input() src: string | undefined;\r\n @Input() name: string | undefined;\r\n @Input() size: number = 32;\r\n @HostBinding('style.height.px') get height() { return this.size; }\r\n @HostBinding('style.width.px') get width() { return this.size; }\r\n getAvarType() {\r\n if (this.src) {\r\n return 'image';\r\n }\r\n return 'text';\r\n }\r\n getInitials() {\r\n if (this.name) {\r\n const names = this.name.split(' ');\r\n let initials = '';\r\n names.forEach((name) => {\r\n initials += name[0];\r\n });\r\n return initials;\r\n }\r\n return '';\r\n }\r\n}\r\n","<img *ngIf=\"getAvarType()=='image'\" [src]=\"src\" alt=\"Avatar\" />\r\n<span *ngIf=\"getAvarType()=='text'\" class=\"avatar-name\" [style]=\"{'lineHeigth.px':size }\">\r\n <span class=\"initials\">{{getInitials()}}</span>\r\n</span>","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { User } from './user.model';\n\n@Component({\n selector: 'ngbiz-app-header',\n templateUrl: './app-header.component.html',\n styleUrls: ['./app-header.component.scss'],\n standalone: false\n})\nexport class AppHeaderComponent {\n @Output() menuButtonClick = new EventEmitter();\n @Output() logoutButtonClick = new EventEmitter();\n @Input() appName: string = '';\n @Input() showDefaultUserInfo: boolean = true;\n @Input() user: User | null = null;\n @Input() logoutText: string = 'Logout';\n @Input() @HostBinding('style.height.px') height: number = 36;\n showMenu: boolean = false;\n avatarSize: number = 24;\n}\n","<mat-toolbar role=\"heading\" class=\"px-1\">\r\n <button mat-icon-button class=\"menu-button\" (click)=\"menuButtonClick.emit()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n <ng-content select=\"[beforeAppName]\"></ng-content>\r\n <span *ngIf=\"appName\" class=\"px-[6px]\">{{ appName }}</span>\r\n <ng-content select=\"[afterAppName]\"></ng-content>\r\n <div class=\"flex-1 flex\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[beforeUser]\"></ng-content>\r\n <div\r\n *ngIf=\"showDefaultUserInfo\"\r\n cdkOverlayOrigin\r\n #trigger=\"cdkOverlayOrigin\"\r\n class=\"flex cursor-pointer px-[6px]\"\r\n >\r\n <ngbiz-avatar\r\n [src]=\"user?.picture\"\r\n [name]=\"user?.name\"\r\n [size]=\"avatarSize\"\r\n (click)=\"showMenu = !showMenu\"\r\n ></ngbiz-avatar>\r\n <!-- User menu -->\r\n <ng-template\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"showMenu\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-dark-backdrop\"\r\n (backdropClick)=\"showMenu = false\"\r\n >\r\n <div class=\"modal-menu bg-gray-50 p-4 shadow-md mt-1 rounded flex\">\r\n <ngbiz-avatar [src]=\"user?.picture\" [name]=\"user?.name\"></ngbiz-avatar>\r\n <div class=\"pl-3\">\r\n <div class=\"min-h-8 flex flex-col justify-center\">\r\n <div>{{ user?.name }}</div>\r\n <div *ngIf=\"user?.email\" class=\"text-xs\">{{ user?.email }}</div>\r\n </div>\r\n <div class=\"mt-2 text-right\">\r\n <button mat-button (click)=\"logoutButtonClick.emit()\">\r\n <mat-icon>exit_to_app</mat-icon><span>{{ logoutText }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-content select=\"[afterUser]\"></ng-content>\r\n</mat-toolbar>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { AvatarComponent } from \"./avatar.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n AvatarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n AvatarComponent,\r\n ],\r\n})\r\nexport class NgBizAvatarModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './avatar.module';\nexport * from './avatar.component';\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\n\r\nimport { AppHeaderComponent } from \"./app-header.component\";\r\nimport { OverlayModule } from \"@angular/cdk/overlay\";\r\n\r\nimport { NgBizAvatarModule } from \"../avatar\";\r\n\r\n@NgModule({\r\n declarations: [\r\n AppHeaderComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n MatIconModule,\r\n MatToolbarModule,\r\n MatButtonModule,\r\n NgBizAvatarModule,\r\n ],\r\n exports: [\r\n AppHeaderComponent,\r\n ],\r\n})\r\nexport class NgBizAppHeaderModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './app-header.module';\nexport * from './app-header.component';\nexport * from './user.model';\n","import { Component, Output, EventEmitter, Input } from '@angular/core';\n\nconst HTTP_STATUS_MESSAGES: { [key: number]: string } = {\n 0: 'No se logró establecer conexión con el servidor',\n 400: 'El servidor no pudo procesar la petición',\n 401: 'Inicio de sesión requerido.',\n 403: 'Ud. No cuenta con los permisos necesarios para realizar acceder a está funcionalidad.',\n 404: 'Es servicio solicitado no existe.',\n 500: 'Ha ocurrido un error en nuestro servidor, por favor intente más tarde.',\n 502: 'No se recibio respuesta de servicio externo.',\n 503: 'Este servicio se encuentra temporalmente deshabilitado.'\n}\n@Component({\n selector: 'ngbiz-data-error-view',\n templateUrl: './data-error-view.component.html',\n styleUrls: ['./data-error-view.component.scss'],\n host: { class: 'container-center info-view danger' },\n standalone: false\n})\nexport class DataErrorViewComponent {\n defaultErrorMessage: string = 'Ha ocurrido un error en nuestro servidor, por favor intente más tarde.';\n message!: string;\n @Input() errorIcon: string = 'app:ha-cloud-error';\n @Input() buttonIcon: string = 'app:refresh';\n @Input() buttonText: string = 'Intentar nuevamente';\n @Input() status!: number;\n @Input() showActionButton: boolean = true;\n @Output() actionClick = new EventEmitter();\n ngOnInit(): void {\n const me = this;\n me.message = HTTP_STATUS_MESSAGES[me.status] || me.defaultErrorMessage;\n // Autenticacion requerida\n if (me.status === 401) {\n me.showActionButton = false;\n return;\n }\n // Acceso prohibido\n if (me.status === 403) {\n me.showActionButton = false;\n }\n }\n}\n","<div class=\"cmp-wrapper\">\n <div>\n <mat-icon class=\"icon\" [svgIcon]=\"errorIcon\"></mat-icon>\n </div>\n <div class=\"messaje\">{{message}}</div>\n <div *ngIf=\"showActionButton\" class=\"action-container\">\n <button color=\"primary\" mat-stroked-button (click)=\"actionClick.emit()\">\n <mat-icon *ngIf=\"buttonIcon\" class=\"action-icon\" [svgIcon]=\"buttonIcon\"></mat-icon>\n <span>{{buttonText}}</span>\n </button>\n </div>\n</div>\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { DataErrorViewComponent } from \"./data-error-view.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n DataErrorViewComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n DataErrorViewComponent,\r\n ],\r\n})\r\nexport class NgBizDataErrorViewModule { }\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nexport enum ButtonType {\r\n RAISED = 'raised',\r\n STROKED = 'stroked',\r\n NORMAL = 'normal',\r\n}\r\ntype buttonsType = 'yes_not' | 'confirm_cancel' | 'cancel_confirm' | 'ok';\r\nexport interface DialogOption {\r\n text: string;\r\n buttonType?: ButtonType;\r\n buttonColor?: string;\r\n option?: boolean | number | string;\r\n closeButton?: boolean;\r\n suggested?: boolean;\r\n}\r\nexport interface DialogDataOptions {\r\n title?: string;\r\n message: string;\r\n actionText?: string;\r\n actionButtonColor?: string;\r\n actionButtonType?: ButtonType;\r\n cancelButtonColor?: string;\r\n cancelButtonType?: ButtonType;\r\n cancelText?: string;\r\n buttonColor?: string;\r\n maxWidth?: number;\r\n options?: DialogOption[];\r\n suggested?: 'confirm' | 'cancel' | 'yes' | 'no' | 'none';\r\n buttons?: buttonsType;\r\n}\r\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: false\n})\r\nexport class DialogComponent implements OnInit {\r\n\r\n title: string = 'Confirmar';\r\n message = '';\r\n safeMessage: SafeHtml = '';\r\n actionText = 'ACEPTAR';\r\n yesText = 'SÍ';\r\n noText = 'NO';\r\n actionButtonColor = 'primary';\r\n actionButtonType: ButtonType = ButtonType.RAISED;\r\n cancelText = 'CANCELAR';\r\n cancelButtonColor!: string;\r\n cancelButtonType!: ButtonType;\r\n maxWidth!: number;\r\n options: DialogOption[] = [];\r\n suggested: 'confirm' | 'cancel' | 'yes' | 'no' | 'none' = 'none';\r\n buttons!: buttonsType;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<DialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private inputData: DialogDataOptions,\r\n public sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.setPropsFromData();\r\n }\r\n\r\n setPropsFromData() {\r\n const me = this;\r\n Object.assign(me, me.inputData);\r\n me.safeMessage = me.sanitizer.bypassSecurityTrustHtml(me.message);\r\n if (!me.options.length) {\r\n me.setDefaultButtons();\r\n }\r\n }\r\n\r\n setDefaultButtons() {\r\n const me = this;\r\n // Buttons YES/NOT\r\n if (me.buttons == 'yes_not') {\r\n me.options = me.getYesNotButtons();\r\n return;\r\n }\r\n if (me.buttons == 'confirm_cancel' || me.buttons == 'cancel_confirm') {\r\n me.options = [\r\n {\r\n text: me.actionText,\r\n buttonColor: me.actionButtonColor ? me.actionButtonColor : 'primary',\r\n buttonType: ButtonType.RAISED,\r\n option: true,\r\n suggested: me.suggested == 'confirm',\r\n },\r\n {\r\n text: me.cancelText,\r\n buttonType: ButtonType.NORMAL,\r\n option: false,\r\n suggested: me.suggested == 'cancel',\r\n },\r\n ];\r\n if (me.buttons == 'cancel_confirm') {\r\n me.options.reverse();\r\n }\r\n return;\r\n }\r\n if (me.buttons == 'ok') {\r\n me.options = [\r\n {\r\n text: me.actionText,\r\n buttonColor: me.actionButtonColor ? me.actionButtonColor : 'primary',\r\n buttonType: ButtonType.RAISED,\r\n option: true,\r\n },\r\n ];\r\n }\r\n }\r\n\r\n getYesNotButtons() {\r\n const me = this;\r\n return [\r\n {\r\n text: me.yesText,\r\n buttonColor: 'primary',\r\n buttonType:\r\n me.suggested == 'yes' ? ButtonType.RAISED : ButtonType.STROKED,\r\n option: true,\r\n },\r\n {\r\n text: me.noText,\r\n buttonColor: me.suggested == 'no' ? 'primary' : 'warn',\r\n buttonType:\r\n me.suggested == 'no' ? ButtonType.RAISED : ButtonType.STROKED,\r\n option: false,\r\n },\r\n ];\r\n }\r\n\r\n onOptionClick(option: DialogOption) {\r\n const me = this;\r\n me.dialogRef.close(option.option);\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>{{title}}</h2>\r\n<div mat-dialog-content [innerHTML]=\"safeMessage\" [ngStyle]=\"{'max-width': maxWidth?maxWidth + 'px':null}\"></div>\r\n<mat-dialog-actions align=\"end\" class=\"text-right\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <button *ngIf=\"!option.buttonType\" (click)=\"onOptionClick(option)\" mat-button\r\n [color]=\"option.buttonColor\">{{option.text}}</button>\r\n <button *ngIf=\"option.buttonType == 'normal'\" (click)=\"onOptionClick(option)\" mat-button\r\n [color]=\"option.buttonColor\">{{option.text}}</button>\r\n <button *ngIf=\"option.buttonType == 'raised'\" (click)=\"onOptionClick(option)\" mat-raised-button\r\n [color]=\"option.buttonColor\">{{option.text}}</button>\r\n <button *ngIf=\"option.buttonType == 'stroked'\" (click)=\"onOptionClick(option)\" mat-stroked-button\r\n [color]=\"option.buttonColor\">{{option.text}}</button>\r\n </ng-container>\r\n</mat-dialog-actions>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\n\r\nimport { DialogComponent } from \"./dialog.component\";\r\n@NgModule({\r\n declarations: [\r\n DialogComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n ],\r\n exports: [\r\n DialogComponent,\r\n ],\r\n})\r\nexport class NgBizDialogModule { }\r\n","import { Component, Input } from '@angular/core';\r\n@Component({\n selector: 'ngbiz-edition-pin',\n templateUrl: './edition-pin.component.html',\n styleUrls: ['./edition-pin.component.scss'],\n standalone: false\n})\r\nexport class EditionPinComponent {\r\n @Input() icon!: string;\r\n}\r\n","<mat-icon>{{icon}}</mat-icon>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { EditionPinComponent } from \"./edition-pin.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n EditionPinComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n EditionPinComponent,\r\n ],\r\n})\r\nexport class NgBizEditionPinModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './edition-pin.module';\nexport * from './edition-pin.component';\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { Column, GridColumn } from './column';\nimport { MatPaginator } from '@angular/material/paginator';\n\n@Component({\n selector: 'ngbiz-grid',\n templateUrl: './grid.component.html',\n styleUrl: './grid.component.scss',\n standalone: false\n})\nexport class GridComponent {\n @Input() data: any[] = [];\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n displayedColumns: string[] = [];\n selectedRowIndex = -1;\n cols: GridColumn[] = [];\n @Input()\n set columns(columns: Column[]) {\n this.cols = columns.map((column: any) => {\n if (column.field) {\n column.type = 'data';\n column.name = column.field;\n } else {\n column.type = 'actions';\n }\n return column;\n });\n this.displayedColumns = Array.from(this.cols, column => column.name);\n }\n @Input() pageIndex = 0;\n @Input() pageSize = 10;\n @ViewChild(MatPaginator) paginator?: MatPaginator;\n getTableCls(): string[] {\n return ['ngbiz-custom-material__mat-table--lite', this.size];\n }\n getActionsColWidth(col: GridColumn): number {\n return col.actions.length * 48;\n }\n getPageIndex() {\n return this.paginator ? this.paginator.pageIndex : this.pageIndex;\n }\n\n getPageSize() {\n return this.paginator ? this.paginator.pageSize : this.pageSize;\n }\n\n getItemNumber(index: number): number {\n return this.getPageIndex() * this.getPageSize() + index + 1;\n }\n}\n","<table mat-table [dataSource]=\"data\" matSort [ngClass]=\"getTableCls()\">\n <caption></caption>\n <!-- Fila de cabecezas-->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true;\"></tr>\n\n <!-- Fila de cuerpo -->\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"selectedRowIndex = row.id\"\n [ngClass]=\"{'row-selected': selectedRowIndex == row.id}\"></tr>\n\n <!-- Columns -->\n <ng-container *ngFor=\"let col of cols\" [matColumnDef]=\"col.name\" [stickyEnd]=\"col.stickyEnd\">\n @if (col.type==='data') {\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{col.text}}</th>\n <td mat-cell *matCellDef=\"let row; let i=index;\">\n @if(col.field=='_rowNumber'){\n {{getItemNumber(i)}}\n }@else{\n {{row[col.field]}}\n }\n </td>\n } @else if(col.type==='actions') {\n <th mat-header-cell *matHeaderCellDef class=\"row-actions-header-cell\">\n <div>\n <div [style.width.px]=\"getActionsColWidth(col)\">{{col.text}}</div>\n </div>\n </th>\n <td mat-cell *matCellDef=\"let row; let i=index;\" class=\"row-actions-cell\">\n <div class=\"row-actions-container\">\n <button *ngFor=\"let action of col.actions\" mat-icon-button [class]=\"'row-action-button' + action.cls\"\n (click)=\"action.handler(row)\" [matTooltip]=\"action.tooltip||''\">\n <mat-icon>{{action.icon}}</mat-icon>\n </button>\n </div>\n </td>\n }\n </ng-container>\n</table>\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { GridComponent } from \"./grid.component\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatSortModule } from \"@angular/material/sort\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\n\r\n@NgModule({\r\n declarations: [\r\n GridComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTooltipModule,\r\n ],\r\n exports: [\r\n GridComponent,\r\n ],\r\n})\r\nexport class NgBizGridModule { }\r\n","// Suggested types: 'text' | 'number' | 'date' | 'boolean' | 'currency' | 'percent' | 'icon' | 'link' | 'image' | 'custom'\r\n\r\nexport interface Action {\r\n text?: string;\r\n tooltip?: string;\r\n icon?: string;\r\n color?: string;\r\n cls?: string;\r\n handler: (row: any) => void;\r\n}\r\nexport interface BaseColumn {\r\n text: string;\r\n sortable?: boolean;\r\n}\r\nexport interface DataColumn extends BaseColumn {\r\n field: string;\r\n dataType?: 'text' | 'number' | 'date';\r\n}\r\nexport interface ActionColumn extends BaseColumn {\r\n name: string;\r\n actions: Action[];\r\n stickyEnd?: boolean;\r\n}\r\n\r\nexport type Column = DataColumn | ActionColumn;\r\n\r\nexport interface GridColumn extends DataColumn, ActionColumn {\r\n type: 'data' | 'actions';\r\n}\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './grid.module';\nexport * from './grid.component';\nexport * from './column';\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpActivityService {\r\n observer = new Subject<boolean>();\r\n public statusChange = this.observer.asObservable();\r\n showIndicator() {\r\n this.observer.next(true);\r\n }\r\n hideIndicator() {\r\n this.observer.next(false);\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { HttpActivityService } from './http-activity.service';\r\n\r\n@Component({\n selector: 'ngbiz-http-activity-bar',\n templateUrl: './http-activity-bar.component.html',\n styleUrls: ['./http-activity-bar.component.scss'],\n standalone: false\n})\r\nexport class HttpActivityBarComponent implements OnInit {\r\n @HostBinding('style.z-index')\r\n @Input() zIndex: number = 1;\r\n active: boolean = false;\r\n constructor(private service: HttpActivityService) { }\r\n\r\n ngOnInit(): void {\r\n const me = this;\r\n me.service.statusChange.subscribe((active) => {\r\n setTimeout(() => {\r\n me.active = active;\r\n }, 0);\r\n });\r\n }\r\n}\r\n","<mat-progress-bar *ngIf=\"active\" mode=\"indeterminate\"></mat-progress-bar>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatProgressBarModule } from \"@angular/material/progress-bar\";\r\n\r\nimport { HttpActivityBarComponent } from \"./http-activity-bar.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n HttpActivityBarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatProgressBarModule,\r\n ],\r\n exports: [\r\n HttpActivityBarComponent,\r\n ],\r\n})\r\nexport class NgBizHttpActivityBarModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpActivityService } from './http-activity.service';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class HttpActivityInterceptor implements HttpInterceptor {\r\n constructor(private service: HttpActivityService) {}\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const me = this;\r\n me.service.showIndicator();\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n me.service.hideIndicator();\r\n })\r\n );\r\n }\r\n}\r\n","import { Output, EventEmitter, Directive } from '@angular/core';\r\nimport { CollectionFilter, ComparisonOperator, } from 'ngx-core-business/types';\r\n\r\n@Directive()\r\nexport class FiltersContainerComponent {\r\n filters: CollectionFilter[] = [];\r\n searchFilter!: CollectionFilter;\r\n\r\n @Output() filtersChange: EventEmitter<CollectionFilter[]> = new EventEmitter();\r\n @Output() searchFilterChange: EventEmitter<CollectionFilter> = new EventEmitter();\r\n\r\n setFilterValue(\r\n id: string,\r\n value: any,\r\n active?: boolean,\r\n operator?: ComparisonOperator\r\n ) {\r\n const me = this;\r\n let filter = me.getFilter(id);\r\n if (filter) {\r\n filter.value = value;\r\n filter.active = true;\r\n filter.operator = operator ? operator : filter.operator;\r\n // Posibilidades de desactivar el filtro\r\n if (\r\n filter.type == 'string' &&\r\n (!value || value == filter.inactiveOnValue)\r\n ) {\r\n filter.active = false;\r\n }\r\n if (filter.type == 'numeric' && value == filter.inactiveOnValue) {\r\n filter.active = false;\r\n }\r\n if (filter.type == 'list' && (!value || !value.length)) {\r\n filter.active = false;\r\n }\r\n if (filter.type == 'date' && (!value || !value.length)) {\r\n filter.active = false;\r\n }\r\n // El valor active predomina si es establecido esplicitamente\r\n if (active === true || active === false) {\r\n filter.active = active;\r\n }\r\n }\r\n me.fireEvent();\r\n }\r\n setSearchFilterValue(value: string) {\r\n this.searchFilter = { ...this.searchFilter, value };\r\n this.searchFilterChange.emit(this.searchFilter);\r\n }\r\n activeFilter(field: string, active: boolean) {\r\n const me = this;\r\n me.filters.forEach((item) => {\r\n if (item.field == field) {\r\n item.active = !!active;\r\n }\r\n });\r\n }\r\n addOrRemoveListFilterItemValue(id: string, itemValue: any, add: boolean) {\r\n const me = this;\r\n let newValue = [];\r\n let filter = me.getFilter(id);\r\n if (filter) {\r\n newValue = filter.value || [];\r\n // Add value\r\n if (add) {\r\n // Valor no está en la lista\r\n if (newValue.indexOf(itemValue) == -1) {\r\n newValue.push(itemValue);\r\n }\r\n }\r\n // Remove value\r\n else {\r\n newValue = newValue.filter((value: any) => value != itemValue);\r\n }\r\n filter.value = newValue;\r\n }\r\n me.fireEvent();\r\n }\r\n\r\n fireEvent() {\r\n this.filtersChange.emit(this.getActiveFilters());\r\n }\r\n\r\n /**\r\n * Retorna solo los filtros activos\r\n */\r\n getActiveFilters() {\r\n let out = this.filters.filter((filter) => {\r\n if (filter.type == 'list') {\r\n return filter.value && filter.value.length;\r\n }\r\n return filter.active;\r\n });\r\n return out;\r\n }\r\n getFilter(id: string): CollectionFilter | null {\r\n const me = this;\r\n let out = null;\r\n me.filters.forEach((item) => {\r\n if (item.id == id) {\r\n out = item;\r\n }\r\n });\r\n return out;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'ngbiz-text-filter',\n templateUrl: './text-filter.component.html',\n styleUrls: ['./text-filter.component.scss'],\n standalone: false,\n})\nexport class TextFilterComponent {\n @Input() debounceTime: number = 500;\n @Input() placeholder: string = 'Buscar';\n value: string = '';\n // Se usa valueChange porque change produce un error.\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\n private searchBoxObs = new Subject<string>();\n public searchBox = this.searchBoxObs.asObservable();\n\n constructor() {\n const me = this;\n me.searchBox.pipe(debounceTime(me.debounceTime)).subscribe((word) => {\n me.fireEvent(word);\n });\n }\n\n /**\n * Called when searchbox value changes.\n * @param e\n */\n onSearchValueChange(e: any) {\n let value = (e.value || '').trim();\n if (this.debounceTime > 0) {\n this.searchBoxObs.next(value);\n return;\n }\n this.fireEvent(value);\n }\n fireEvent(value: string) {\n this.valueChange.emit(value);\n }\n clearText() {\n this.value = '';\n this.fireEvent('');\n }\n}\n","<div class=\"wrapper\">\n <mat-icon class=\"search-icon\">search</mat-icon>\n <input type=\"text\" (input)=\"onSearchValueChange($event.target)\" [placeholder]=\"placeholder\"\n type=\"text\" [(ngModel)]=\"value\" />\n <mat-icon *ngIf=\"value\" class=\"clear-button\" (click)=\"clearText()\">clear</mat-icon>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FiltersContainerComponent } from '../filters-container.component';\nimport { CollectionFilter } from 'ngx-core-business/types';\n\n@Component({\n selector: 'ngbiz-list-toolbar',\n templateUrl: './list-toolbar.component.html',\n styleUrls: ['./list-toolbar.component.scss'],\n standalone: false\n})\nexport class ListToolbarComponent extends FiltersContainerComponent {\n @Input() searchDebounceTime = 500;\n override searchFilter: CollectionFilter = { id: '_query', type: 'string', field: '_query', operator: '~' };\n}\n","<ng-content select=\"[start]\"></ng-content>\n<ngbiz-text-filter (valueChange)=\"setSearchFilterValue($event)\" [debounceTime]=\"searchDebounceTime\"></ngbiz-text-filter>\n<ng-content select=\"[afterSearchBox]\"></ng-content>\n<ng-content select=\"[end]\"></ng-content>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { TextFilterComponent } from './text-filter.component';\r\n\r\n@NgModule({\r\n declarations: [TextFilterComponent],\r\n imports: [CommonModule, FormsModule, MatIconModule],\r\n exports: [TextFilterComponent],\r\n})\r\nexport class NgBizTextFilterModule {}\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './text-filter.module';\nexport * from './text-filter.component';\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n\r\n\r\nimport { ListToolbarComponent } from \"./list-toolbar.component\";\r\nimport { NgBizTextFilterModule } from \"../text-filter\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ListToolbarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgBizTextFilterModule,\r\n ],\r\n exports: [\r\n ListToolbarComponent,\r\n ],\r\n})\r\nexport class NgBizListToolbarModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './list-toolbar.module';\nexport * from './list-toolbar.component';\n","import {\r\n AfterViewChecked,\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Renderer2,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { NavItem } from './nav-item.type';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n@Component({\r\n selector: 'ngbiz-nav-list',\r\n templateUrl: './nav-list.component.html',\r\n styleUrls: ['./nav-list.component.scss'],\r\n standalone: false,\r\n})\r\nexport class NavListComponent implements OnInit, AfterViewChecked {\r\n @Input() sidenav!: MatSidenav;\r\n @Input() items: NavItem[] = [];\r\n @Input() activeItemId?: number | string;\r\n\r\n // Capture optional templates\r\n @ContentChild('item') itemTemplate?: TemplateRef<any>;\r\n @ContentChild('itemIcon') itemIconTemplate?: TemplateRef<any>;\r\n @ContentChild('itemText') itemTextTemplate?: TemplateRef<any>;\r\n\r\n constructor(\r\n private router: Router,\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {}\r\n currentRoute: string = '';\r\n\r\n onItemClick() {\r\n if (this.sidenav?.mode === 'over') {\r\n this.sidenav.close();\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n if (this.activeItemId) {\r\n return this.activeItemId === item.id;\r\n }\r\n let route = item.route;\r\n // Add / if it is not present\r\n if (route && route[0] !== '/') {\r\n route = '/' + route;\r\n }\r\n // Remove query params\r\n route = route?.split('?')[0];\r\n return this.currentRoute === route;\r\n }\r\n\r\n parseRoute(route: string) {\r\n return route[0] === '/' ? route : '/' + route;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentRoute = event.urlAfterRedirects;\r\n // remove query params\r\n this.currentRoute = this.currentRoute.split('?')[0];\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.removeExpansionPanelPadding();\r\n }\r\n\r\n private removeExpansionPanelPadding() {\r\n const panels = this.el.nativeElement.querySelectorAll(\r\n '.mat-expansion-panel-body'\r\n );\r\n panels.forEach((panel: HTMLElement) => {\r\n this.renderer.setStyle(panel, 'padding', '0');\r\n });\r\n }\r\n}\r\n","<mat-nav-list>\r\n <ng-container *ngFor=\"let item of items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"navItem; context: { item: item, level: 1 }\"\r\n >\r\n </ng-container>\r\n </ng-container>\r\n</mat-nav-list>\r\n<ng-template #navItem let-item=\"item\" let-level=\"level\">\r\n <a\r\n *ngIf=\"!item.children?.length\"\r\n mat-list-item\r\n [routerLink]=\"parseRoute(item.route)\"\r\n [activated]=\"isActive(item)\"\r\n [class.active]=\"isActive(item)\"\r\n (click)=\"onItemClick()\"\r\n [class]=\"'l' + level\"\r\n >\r\n <div class=\"menu-item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate || defaultItemTemplate;\r\n context: { item: item }\r\n \"\r\n />\r\n </div>\r\n </a>\r\n <mat-expansion-panel *ngIf=\"item.children?.length\" class=\"mat-elevation-z0\">\r\n <mat-expansion-panel-header [class]=\"'l' + level\">\r\n <mat-panel-title>\r\n <div class=\"menu-item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate || defaultItemTemplate;\r\n context: { item: item }\r\n \"\r\n />\r\n </div>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let child of item.children\">\r\n <ng-container\r\n *ngTemplateOutlet=\"navItem; context: { item: child, level: level + 1 }\"\r\n >\r\n </ng-container>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n</ng-template>\r\n<ng-template #defaultItemTemplate let-item=\"item\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemIconTemplate || defaultItemIconTemplate;\r\n context: { item: item }\r\n \"\r\n />\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTextTemplate || defaultItemTextTemplate;\r\n context: { item: item }\r\n \"\r\n />\r\n</ng-template>\r\n<ng-template #defaultItemIconTemplate let-item=\"item\">\r\n <mat-icon>{{ item.icon }}</mat-icon>\r\n</ng-template>\r\n<ng-template #defaultItemTextTemplate let-item=\"item\">\r\n <span class=\"item__text\">{{ item.text }}</span>\r\n</ng-template>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { NavListComponent } from \"./nav-list.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n NavListComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatIconModule,\r\n MatListModule,\r\n ],\r\n exports: [\r\n NavListComponent,\r\n ],\r\n})\r\nexport class NgBizNavListModule { }\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\n selector: 'ngbiz-process-button',\n templateUrl: './process-button.component.html',\n styleUrls: ['./process-button.component.scss'],\n standalone: false\n})\r\nexport class ProcessButtonComponent {\r\n @Input() text!: string;\r\n @Input() submit: boolean = true;\r\n @Input() icon!: string;\r\n @Input() rounded: boolean = false;\r\n @Input() activeProcess: boolean = false;\r\n @Input() disabled: boolean = false;\r\n @Input() activeProcessText!: string;\r\n @Input() color: string = 'primary';\r\n @Output() onButtonClick = new EventEmitter();\r\n}\r\n","<button [type]=\"submit?'submit':'button'\" [disabled]=\"disabled || activeProcess\" mat-raised-button [color]=\"color\"\r\n [class.rounded]=\"rounded\" (click)=\"onButtonClick.emit()\">\r\n <span *ngIf=\"activeProcess\" class=\"spinner-grow spinner-grow-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n <mat-icon *ngIf=\"icon&&!activeProcess\" [svgIcon]=\"icon\"></mat-icon>{{activeProcess ? activeProcessText: text}}\r\n</button>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { ProcessButtonComponent } from \"./process-button.component\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ProcessButtonComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n ProcessButtonComponent,\r\n ],\r\n})\r\nexport class NgBizProcessButtonModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './process-button.module';\nexport * from './process-button.component';\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\n templateUrl: './process-mask.component.html',\n styleUrls: ['./process-mask.component.scss'],\n standalone: false\n})\r\nexport class ProcessMaskComponent {\r\n @Input() message: string = '';\r\n constructor(\r\n protected dialogRef: MatDialogRef<ProcessMaskComponent>,\r\n @Inject(MAT_DIALOG_DATA) private inputData: any\r\n ) {\r\n const me = this;\r\n if (me.inputData) {\r\n me.message = me.inputData.message;\r\n }\r\n }\r\n}\r\n","<mat-spinner diameter=\"48\"></mat-spinner>\r\n<div class=\"message\">{{message}}</div>\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport { ProcessMaskComponent } from \"./process-mask.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ProcessMaskComponent,\r\n ],\r\n imports: [\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [\r\n ProcessMaskComponent,\r\n ],\r\n})\r\nexport class NgBizProcessMaskModule { }\r\n","import { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\n selector: 'ngbiz-progress-view',\n templateUrl: './progress-view.component.html',\n styleUrls: ['./progress-view.component.scss'],\n standalone: false\n})\r\nexport class ProgressViewComponent {\r\n @Input() text: string = 'Cargando...';\r\n @HostBinding('style.z-index')\r\n @Input() zIndex: number = 1000;\r\n}\r\n","<div>\r\n <span>{{text}}</span>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\nimport { ProgressViewComponent } from \"./progress-view.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ProgressViewComponent,\r\n ],\r\n imports: [\r\n MatProgressBarModule,\r\n ],\r\n exports: [\r\n ProgressViewComponent,\r\n ],\r\n})\r\nexport class NgBizProgressViewModule { }\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n@Component({\n templateUrl: './snack-bar.component.html',\n styleUrls: ['./snack-bar.component.scss'],\n standalone: false\n})\r\nexport class SnackBarComponent {\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: any,\r\n public snackBar: MatSnackBar\r\n ) { }\r\n}\r\n","<div [innerHTML]=\"data.html\"></div>\r\n<div *ngIf=\"data.action\" class=\"text-right\">\r\n <button mat-button (click)=\"snackBar.dismiss()\">{{data.action}}</button>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\n\r\nimport { SnackBarComponent } from \"./snack-bar.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SnackBarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatSnackBarModule,\r\n ],\r\n exports: [\r\n SnackBarComponent,\r\n ]\r\n})\r\nexport class NgBizSnackBarModule { }\r\n","import { Component } from '@angular/core';\n\n/**\n * Use this component to display a breadcrumb trail.\n */\n@Component({\n selector: 'ngbiz-view-breadcrumb',\n templateUrl: './view-breadcrumb.component.html',\n styleUrls: ['./view-breadcrumb.component.scss'],\n standalone: false\n})\nexport class ViewBreadcrumbComponent { }\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngbiz-view-breadcrumb-separator',\n template: `❯`,\n styles: [`\n :host {\n margin: 0 8px;\n line-height: 1;\n padding-top: 1px;\n }\n `],\n standalone: false\n})\nexport class ViewBreadcrumbSeparatorComponent {\n\n}\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ViewBreadcrumbComponent } from \"./view-breadcrumb.component\";\r\nimport { ViewBreadcrumbSeparatorComponent } from \"./view-breadcrumb-separator.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ViewBreadcrumbComponent,\r\n ViewBreadcrumbSeparatorComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n ViewBreadcrumbComponent,\r\n ViewBreadcrumbSeparatorComponent,\r\n ],\r\n})\r\nexport class NgBizBreadcrumbModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './view-breadcrumb.module';\nexport * from './view-breadcrumb.component';\nexport * from './view-breadcrumb-separator.component';\n","/**\n * Permite factorizar funcionalidad común en todas las páginas del del módulo de administración.\n *\n * @author Jaime Cruz.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'ngbiz-view-content-wrapper',\n templateUrl: './view-content-wrapper.component.html',\n styleUrls: ['./view-content-wrapper.component.scss'],\n standalone: false\n})\nexport class ViewContentWrapperComponent {\n\n @Input() view: any;\n\n}\n","<ngbiz-progress-view *ngIf=\"view.shouldShowProgressView()\"></ngbiz-progress-view>\n<ngbiz-data-error-view *ngIf=\"view.shouldShowErrorView()\" [status]=\"view.getErrorStatus()\"\n (actionClick)=\"view.loadData()\"></ngbiz-data-error-view>\n<ng-content></ng-content>\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { NgBizDataErrorViewModule } from \"../data-error-view\";\r\nimport { NgBizProgressViewModule } from \"../progress-view\";\r\n\r\nimport { ViewContentWrapperComponent } from \"./view-content-wrapper.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ViewContentWrapperComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgBizDataErrorViewModule,\r\n NgBizProgressViewModule,\r\n ],\r\n exports: [\r\n ViewContentWrapperComponent,\r\n ],\r\n})\r\nexport class NgBizViewContentWrapperModule { }\r\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngbiz-view-title',\n templateUrl: './view-title.html',\n styleUrls: ['./view-title.scss'],\n standalone: false\n})\nexport class ViewTitleComponent {\n\n}\n","<ng-content></ng-content>\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ViewTitleComponent } from \"./view-title.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ViewTitleComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n ViewTitleComponent,\r\n ],\r\n})\r\nexport class NgBizViewTitleModule { }\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './view-title.module';\nexport * from './view-title.component';\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogComponent, DialogDataOptions, DialogOption } from '../dialog/dialog.component';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n constructor(private matDialog: MatDialog) { }\r\n /**\r\n * Botones ACEPTAR/CANCELAR\r\n */\r\n confirm(\r\n title: string,\r\n message: string,\r\n suggested: 'confirm' | 'cancel' | 'none' = 'confirm',\r\n actionText = 'CONFIRMAR',\r\n options?: any\r\n ): Observable<any> {\r\n return this.openDialog(\r\n DialogComponent,\r\n {\r\n title,\r\n message,\r\n buttons: 'confirm_cancel',\r\n suggested,\r\n actionText,\r\n },\r\n options\r\n );\r\n }\r\n /**\r\n * Botones SÍ/NO\r\n */\r\n yesOrNot(\r\n title: string,\r\n message: string,\r\n suggested: 'yes' | 'no' = 'yes'\r\n ): Observable<any> {\r\n return this.openDialog(DialogComponent, {\r\n title,\r\n message,\r\n buttons: 'yes_not',\r\n suggested,\r\n });\r\n }\r\n /**\r\n * Botones ELIMINAR/CANCELAR\r\n */\r\n confirmDelete(title: string, message: string, actionText = 'ELIMINAR') {\r\n return this.openDialog(DialogComponent, {\r\n title,\r\n message,\r\n buttons: 'confirm_cancel',\r\n actionText,\r\n actionButtonColor: 'warn',\r\n suggested: 'cancel',\r\n maxWidth: 360,\r\n });\r\n }\r\n /**\r\n * Botones ACEPTAR\r\n */\r\n alert(title: string, message: string, options?: any) {\r\n return this.openDialog(DialogComponent, {\r\n title,\r\n message,\r\n buttons: 'ok',\r\n actionText: 'ACEPTAR',\r\n actionButtonColor: 'primary',\r\n maxWidth: 360,\r\n ...options,\r\n });\r\n }\r\n decide(title: string, message: string, options: DialogOption[]) {\r\n return this.openDialog(DialogComponent, {\r\n title,\r\n message,\r\n options,\r\n });\r\n }\r\n open<T>(component: ComponentType<T>, data: any, options?: any) {\r\n return this.matDialog\r\n .open(component, {\r\n data,\r\n disableClose: true,\r\n position: { top: '50px' },\r\n width: '100%',\r\n ...options,\r\n })\r\n .afterClosed();\r\n }\r\n /**\r\n * Abrir editor\r\n *\r\n * @param editorCmp Dialog component\r\n * @param model Model\r\n * @param parent Parent Model\r\n * @param data Aditional data\r\n */\r\n openEditor<T>(editorCmp: ComponentType<T>, model: any, parent?: any, data?: any) {\r\n return this.matDialog\r\n .open(editorCmp, {\r\n data: {\r\n model,\r\n parent,\r\n data,\r\n },\r\n disableClose: true,\r\n position: { top: '50px' },\r\n })\r\n .afterClosed();\r\n }\r\n private openDialog<T>(editor: ComponentType<T>, data: DialogDataOptions, options?: any) {\r\n return this.matDialog\r\n .open(editor, {\r\n data,\r\n disableClose: true,\r\n position: { top: '50px' },\r\n ...options,\r\n })\r\n .afterClosed();\r\n }\r\n}\r\n","import { HttpStatusCode } from \"@angular/common/http\";\r\n\r\nexport const HttpStatusMessages: {\r\n [key in HttpStatusCode | 0]?: string;\r\n} = {\r\n 0: 'No se pudo conectar con el servidor',\r\n 400: 'El servidor no pudo procesar la petición',\r\n 401: 'Inicio de sesión requerido.',\r\n 403: 'Acceso prohibido.',\r\n 404: 'Es servicio solicitado no existe.',\r\n 500: 'Ha ocurrido un error en nuestro servidor, por favor intente más tarde.',\r\n 502: 'No se recibio respuesta de servicio externo.',\r\n 503: 'Este servicio se encuentra temporalmente deshabilitado.'\r\n};\r\n","import { HttpStatusCode } from '@angular/common/http';\r\nimport { HttpStatusMessages } from './http-statuses.message';\r\n\r\nexport class XhrInfo {\r\n /**\r\n * true is status = 400\r\n */\r\n static isBadRequest(xhr: XMLHttpRequest) {\r\n return xhr.status == HttpStatusCode.BadRequest;\r\n }\r\n /**\r\n * true is status = 401\r\n */\r\n static isUnauthorized(xhr: XMLHttpRequest) {\r\n return xhr.status == HttpStatusCode.Unauthorized;\r\n }\r\n /**\r\n * true is status = 403\r\n */\r\n static isForbidden(xhr: XMLHttpRequest) {\r\n return xhr.status == HttpStatusCode.Forbidden;\r\n }\r\n static getStatusMessage(status: HttpStatusCode | 0) {\r\n return HttpStatusMessages[status] || `Error status: ${status}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { HttpStatusCode } from '@angular/common/http';\r\nimport { ProcessMaskComponent } from '../process-mask';\r\nimport { SnackBarComponent } from '../snack-bar';\r\nimport { MessageType } from './message.type';\r\nimport { XhrInfo } from './xhr-info';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationsService {\r\n http_server_message_tpl = `\r\n <p style=\"max-width: 360px;\">\r\n CITES - PERÚ<br>\r\n <i>{message}</i>\r\n </p>\r\n <small><small>ERROR {status}</small></small>`;\r\n constructor(private _snackBar: MatSnackBar, private matDialog: MatDialog) { }\r\n handleXhrError(xhr: XMLHttpRequest | any, cmp?: any) {\r\n const me = this,\r\n defaultMessageStatuses = [\r\n 0, // No internet\r\n 404, // Servicio no encontrado\r\n 500, // Server error\r\n ],\r\n status = xhr.status;\r\n let finalMessage;\r\n me.logXhr(xhr);\r\n // Defaul\r\n if (defaultMessageStatuses.indexOf(status) != -1) {\r\n me.showDefaultMessage(status);\r\n return;\r\n }\r\n // No server response\r\n if (status === undefined || status === null) {\r\n me.noServerResponse();\r\n return;\r\n }\r\n // Authentication Required\r\n if (status == 401 && cmp && cmp.__forceClose) {\r\n cmp.__forceClose();\r\n return;\r\n }\r\n // Authentication Required/Como login.redirect.interceptor.ts redirecciona a login,\r\n // No es necesario mostrar el mensaje de error.\r\n if (status == 401) {\r\n return;\r\n }\r\n // Autenticación requerida: 401\r\n\r\n if (status == 400) {\r\n const error = xhr.error.toString() == '[object Object]' ? xhr.error : {};\r\n const messageType: MessageType = status == 400 ? 'warning' : 'danger';\r\n // Show server message\r\n if (error.message) {\r\n finalMessage = me.http_server_message_tpl\r\n .replace('{message}', error.message)\r\n .replace('{status}', status);\r\n me.showSnack(finalMessage, messageType);\r\n return;\r\n }\r\n me.showDefaultMessage(status);\r\n return;\r\n }\r\n me.showDefaultMessage(status);\r\n }\r\n showSnack(message: string, type: MessageType) {\r\n this._snackBar.openFromComponent(SnackBarComponent, {\r\n panelClass: this.getSnackClass(type),\r\n data: {\r\n html: message,\r\n },\r\n duration: 2000,\r\n verticalPosition: 'top', // 'top' | 'bottom'\r\n });\r\n }\r\n mask(message: string) {\r\n return this.matDialog.open(ProcessMaskComponent, {\r\n disableClose: true,\r\n data: {\r\n message,\r\n },\r\n });\r\n }\r\n snackSuccess(message: string) {\r\n this._snackBar.openFromComponent(SnackBarComponent, {\r\n panelClass: this.getSnackClass('success'),\r\n data: {\r\n html: message,\r\n },\r\n duration: 2000,\r\n verticalPosition: 'top', // 'top' | 'bottom'\r\n });\r\n }\r\n snackDanger(message: string) {\r\n this._snackBar.openFromComponent(SnackBarComponent, {\r\n panelClass: this.getSnackClass('danger'),\r\n data: {\r\n html: message,\r\n },\r\n duration: 2000,\r\n verticalPosition: 'top', // 'top' | 'bottom'\r\n });\r\n }\r\n snackWarning(message: string) {\r\n this._snackBar.openFromComponent(SnackBarComponent, {\r\n panelClass: this.getSnackClass('warning'),\r\n data: {\r\n html: message,\r\n },\r\n duration: 2000,\r\n verticalPosition: 'top', // 'top' | 'bottom'\r\n });\r\n }\r\n snackInfo(message: string) {\r\n this._snackBar.openFromComponent(SnackBarComponent, {\r\n panelClass: this.getSnackClass('info'),\r\n data: {\r\n html: message,\r\n },\r\n duration: 2000,\r\n verticalPosition: 'top', // 'top' | 'bottom'\r\n });\r\n }\r\n private getSnackClass(type: MessageType) {\r\n const map = {\r\n warning: ['bg-warning', 'text-dark'],\r\n danger: ['bg-danger', 'text-white'],\r\n info: ['bg-info', 'text-white'],\r\n success: ['bg-success', 'text-white'],\r\n };\r\n return map[type];\r\n }\r\n private logXhr(xhr: XMLHttpRequest) {\r\n console.error(xhr);\r\n }\r\n noInternet() {\r\n this.showDefaultMessage(0);\r\n }\r\n noServerResponse() {\r\n this.showDefaultMessage(503);\r\n }\r\n serverUnauthorized() {\r\n this.showDefaultMessage(401);\r\n }\r\n showDefaultMessage(status: HttpStatusCode | 0) {\r\n this._snackBar.open(XhrInfo.getStatusMessage(status), 'ACEPTAR', {\r\n verticalPosition: 'top',\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\nexport const EMAIL_PATTERN =\r\n /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\nexport const URL_PATTERN =\r\n /(((^https?)|(^ftp)):\\/\\/((([\\-\\w]+\\.)+\\w{2,3}(\\/[%\\-\\w]+(\\.\\w{2,})?)*(([\\w\\-\\.\\?\\\\\\/+@&#;`~=%!]*)(\\.\\w{2,})?)*)|(localhost|LOCALHOST))\\/?)/i;\r\nexport type FieldGroupType = 'object' | 'array';\r\nexport interface FieldValidations {\r\n //groupType?: FieldGroupType;\r\n groupType?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n min?: number;\r\n max?: number;\r\n minLength?: number;\r\n maxLength?: number;\r\n email?: boolean;\r\n pattern?: RegExp | string;\r\n emailPattern?: boolean | RegExp;\r\n urlPattern?: boolean | RegExp;\r\n customValidation?: () => boolean;\r\n defaultValue?: any;\r\n valueType?: 'array' | 'object' | 'string' | 'number' | 'boolean';\r\n arrayValueType?: 'string' | 'number';\r\n}\r\n\r\n// This defines the structure of the form fields\r\nexport type FormFieldDefinition = FieldValidations | {\r\n [key: string]: FieldValidations | string;\r\n //groupType: FieldGroupType;\r\n groupType: string;\r\n};\r\nexport interface FormField extends FieldValidations {\r\n name: string;\r\n}\r\nexport type FormFields = {\r\n [key: string]: FormFieldDefinition;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormBuilderHelper {\r\n\r\n constructor(private formBuilder: FormBuilder) { }\r\n\r\n buildFormGroup(fields: FormFields, values: { [key: string]: any } = {}): FormGroup {\r\n const me = this;\r\n const formGroupObjet: any = {};\r\n let formFieldDefinition: FormFieldDefinition;\r\n let fieldValue;\r\n values = values || {};\r\n for (const fieldName of Object.keys(fields)) {\r\n formFieldDefinition = fields[fieldName];\r\n fieldValue = values[fieldName];\r\n if (formFieldDefinition.groupType === 'object') {\r\n formGroupObjet[fieldName] = me.buildFormGroup(formFieldDefinition as FormFields, fieldValue);\r\n continue;\r\n }\r\n if (formFieldDefinition.groupType === 'array') {\r\n formGroupObjet[fieldName] = me.buildFormArray(formFieldDefinition as FormFields, fieldValue);\r\n continue;\r\n }\r\n formGroupObjet[fieldName] = me.getFormGroupFieldDefinition(formFieldDefinition, fieldValue);\r\n }\r\n return this.formBuilder.group(formGroupObjet);\r\n }\r\n\r\n /**\r\n * Retronar un arreglo de validadores\r\n *\r\n * @param field\r\n */\r\n getValidators(field: FieldValidations): any[] {\r\n const out: any[] = [];\r\n if (field.required) {\r\n out.push(Validators.required);\r\n }\r\n if (field.min !== undefined) {\r\n out.push(Validators.min(field.min));\r\n }\r\n if (field.max !== undefined) {\r\n out.push(Validators.max(field.max));\r\n }\r\n if (field.minLength) {\r\n out.push(Validators.minLength(field.minLength));\r\n }\r\n if (field.maxLength) {\r\n out.push(Validators.maxLength(field.maxLength));\r\n }\r\n if (field.email) {\r\n out.push(Validators.email);\r\n }\r\n if (field.emailPattern) {\r\n out.push(Validators.pattern(EMAIL_PATTERN));\r\n }\r\n if (field.urlPattern) {\r\n out.push(Validators.pattern(URL_PATTERN));\r\n }\r\n if (field.pattern) {\r\n out.push(Validators.pattern(field.pattern));\r\n }\r\n if (field.customValidation) {\r\n out.push(field.customValidation);\r\n }\r\n return out;\r\n }\r\n\r\n private buildFormArray(fields: FormFields, rows: { [key: string]: any }[]): FormArray {\r\n const me = this;\r\n const formArray: FormGroup[] = [];\r\n rows = rows || [];\r\n rows.forEach((item) => {\r\n formArray.push(me.buildFormGroup(fields, item));\r\n });\r\n return this.formBuilder.array(formArray);\r\n }\r\n\r\n private getFormGroupFieldDefinition(formFieldDefinition: FormFieldDefinition, fieldValue: any): [field: any, validators: any[]] {\r\n const me = this;\r\n let fieldPropsObj;\r\n // If the valueType is array and the value is a string, we need to convert it to an array\r\n if (formFieldDefinition.valueType === 'array' && typeof fieldValue === 'string') {\r\n fieldValue = fieldValue.split(',').map((value) => {\r\n if (formFieldDefinition.arrayValueType === 'number') {\r\n return Number(value);\r\n }\r\n return value.trim();\r\n });\r\n }\r\n fieldValue = fieldValue !== undefined ? fieldValue : formFieldDefinition.defaultValue;\r\n // disabled Field\r\n if (formFieldDefinition.disabled) {\r\n fieldPropsObj = { value: fieldValue, disabled: true };\r\n } else {\r\n fieldPropsObj = fieldValue;\r\n }\r\n return [fieldPropsObj, me.getValidators(formFieldDefinition)];\r\n }\r\n\r\n}\r\n","import {\r\n UntypedFormGroup,\r\n AbstractControl,\r\n UntypedFormBuilder,\r\n} from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { OnInit, Directive, Injector, HostBinding } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DialogService } from './services/dialog.service';\r\nimport { NotificationsService } from './services/notifications.service';\r\nimport { FormBuilderHelper, FormField, FormFieldDefinition, FormFields } from './form-builder-helper';\r\n\r\n/**\r\n * Form Component\r\n * EDITAR Y GUARDAR\r\n * Clase base para todos los formularios\r\n */\r\n@Directive()\r\nexport class FormDialogComponent<T> implements OnInit {\r\n @HostBinding('class')\r\n hostCls: string = 'ngbiz-custom-material__mat-dialog--form';\r\n mode!: 'add' | 'edit';\r\n //\r\n data: any = {};\r\n parent: any = {};\r\n model: T;\r\n modelIdProperty = 'id';\r\n\r\n apiUrl: string = '';\r\n dataPath: string = '';\r\n // Texts\r\n fieldRequiredErrorMessageText = 'Requerido';\r\n msgSuccessfulCreateText = 'Creado correctamente';\r\n msgSuccessfulUpdateText = 'Actualizado correctamente';\r\n invalidValuesMessage =\r\n 'Complete los campos requeridos y corrija los errores identificados';\r\n /**\r\n * FormGrup asignado al formulario\r\n */\r\n formModel!: UntypedFormGroup;\r\n protected formFields: FormFields = {};\r\n /**\r\n * Si es true se usará el metodo getRawValue() obtener los valores del formulari\r\n * caso contrario solo se usará la propiedad value.\r\n */\r\n useFormRawValue!: boolean;\r\n /**\r\n * Llamar al metodo buildFormModel al inicio.\r\n */\r\n buildFormModelOnInit: boolean = true;\r\n\r\n /**\r\n * @cfg\r\n * Definir los campos que tendrá el formulario\r\n */\r\n protected fields: FormField[] = [];\r\n\r\n /**\r\n * Valores iniciales del fomulario\r\n */\r\n protected values: any;\r\n // Services\r\n protected api;\r\n protected notifications: NotificationsService;\r\n protected formBuilder: UntypedFormBuilder;\r\n protected dialogService: DialogService;\r\n protected fbHelper: FormBuilderHelper;\r\n protected dialogRef: MatDialogRef<any>;\r\n _isReady!: boolean;\r\n _isSaving!: boolean;\r\n constructor(\r\n protected injector: Injector,\r\n api: any,\r\n dialogRef: any,\r\n inputData: any\r\n ) {\r\n this.notifications = injector.get(NotificationsService);\r\n this.formBuilder = injector.get(UntypedFormBuilder);\r\n this.dialogService = injector.get(DialogService);\r\n this.fbHelper = injector.get(FormBuilderHelper);\r\n this.api = api;\r\n this.dialogRef = dialogRef;\r\n this.model = inputData?.model ? inputData.model : this.createModel();\r\n this.parent = inputData ? inputData.parent : {};\r\n this.data = inputData ? inputData.data : {};\r\n }\r\n\r\n createModel() {\r\n return {};\r\n }\r\n\r\n /**\r\n * Enviar datos\r\n */\r\n onSubmit() {\r\n const me = this;\r\n // Si esta guardando.\r\n if (me._isSaving) {\r\n return;\r\n }\r\n // Si los datos son incorrectos\r\n if (!me.isValid()) {\r\n me.showInvalidValuesMessage();\r\n return;\r\n }\r\n me.setStatusSaving();\r\n let postModel = me.getPostData();\r\n me.getSaveService(postModel).subscribe(\r\n (rec) => {\r\n me.notifications.snackSuccess(\r\n me.isCreationMode()\r\n ? me.msgSuccessfulCreateText\r\n : me.msgSuccessfulUpdateText\r\n );\r\n me.dialogRef.close(rec);\r\n },\r\n (xhr) => {\r\n if (xhr.status == 401) {\r\n me.dialogRef.close();\r\n return;\r\n }\r\n me.handleServerError(xhr);\r\n me.setStatusReady();\r\n }\r\n );\r\n }\r\n\r\n isNew() {\r\n return this.mode == 'add';\r\n }\r\n\r\n getSaveService(model: any): Observable<any> {\r\n return this.api.save(model, model[this.modelIdProperty]);\r\n }\r\n\r\n showInvalidValuesMessage() {\r\n const me = this;\r\n me.notifications.snackWarning(me.invalidValuesMessage);\r\n }\r\n\r\n /**\r\n * Este metodo puede ser sobre escrito para manejar internamente las excepciones del servidor\r\n */\r\n handleServerError(xhr: any) {\r\n this.notifications.handleXhrError(xhr, this);\r\n }\r\n\r\n isCreationMode() {\r\n return this.mode == 'add';\r\n }\r\n\r\n isEditionMode() {\r\n return this.mode == 'edit';\r\n }\r\n\r\n ngOnInit(): void {\r\n const me = this;\r\n me.mode = me.model && (me.model as any)[me.modelIdProperty] ? 'edit' : 'add';\r\n if (me.buildFormModelOnInit) {\r\n me.defineFormModel();\r\n }\r\n me.loadDatasets();\r\n }\r\n /**\r\n * Hook for data loading, it is called once on ngOnInit\r\n */\r\n loadDatasets() { };\r\n\r\n isValid() {\r\n return this.formModel.valid;\r\n }\r\n\r\n /**\r\n * Este metodo retorna los campos que son enviados al servidor\r\n */\r\n getPostData() {\r\n const me = this;\r\n if (this.useFormRawValue) {\r\n return { ...me.model, ...me.formModel.getRawValue() };\r\n }\r\n return { ...me.model, ...me.formModel.value };\r\n }\r\n /**\r\n * Permite determinar si el campo debe incluirse en el formulario\r\n * @param field\r\n * @returns\r\n */\r\n hasField(field: string): boolean {\r\n return this.formFields && this.formFields.hasOwnProperty(field);\r\n }\r\n /**\r\n * Retorna el campo del formulario solicitado\r\n * @param name\r\n */\r\n getFormControl(name: string): AbstractControl | null {\r\n return this.formModel.get(name);\r\n }\r\n\r\n getFieldProperty(fieldName: string, prop: keyof FormFieldDefinition) {\r\n return this.formFields[fieldName] ? this.formFields[fieldName][prop] : null;\r\n }\r\n\r\n hasError(fieldName: string, errorType: string) {\r\n return this.getFormControl(fieldName)?.hasError(errorType);\r\n }\r\n\r\n isFieldRequired(fieldName: string) {\r\n return this.hasError(fieldName, 'required');\r\n }\r\n\r\n hasMinLengthError(fieldName: string) {\r\n return this.hasError(fieldName, 'minlength');\r\n }\r\n\r\n hasMaxLengthError(fieldName: string) {\r\n return this.hasError(fieldName, 'maxlength');\r\n }\r\n\r\n hasPatternError(fieldName: string) {\r\n return this.hasError(fieldName, 'pattern');\r\n }\r\n\r\n getRequiredErrorMessage(_fieldName: string = '') {\r\n return this.fieldRequiredErrorMessageText;\r\n }\r\n\r\n getMinLengthErrorMessage(fieldName: string) {\r\n return `Mín ${this.getFieldProperty(fieldName, 'minLength')} caracteres.`;\r\n }\r\n\r\n getMaxLengthErrorMessage(fieldName: string) {\r\n return `Máx ${this.getFieldProperty(fieldName, 'maxLength')} caracteres.`;\r\n }\r\n\r\n shouldShowErrorMessage(fieldName: string) {\r\n const me = this;\r\n let control = me.getFormControl(fieldName);\r\n return control && control.invalid && (control.dirty || control.touched);\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.getFormControl(field)?.value;\r\n }\r\n\r\n setFieldValue(field: string, value: any) {\r\n this.getFormControl(field)?.setValue(value);\r\n }\r\n\r\n isFieldValid(field: string) {\r\n return this.getFormControl(field)?.valid;\r\n }\r\n\r\n private buildFormModel() {\r\n const me = this;\r\n let formGroupObjet: any = {},\r\n fieldValue,\r\n fieldPropsObj;\r\n me.fields.forEach((field) => {\r\n field = me.preProcessDefinedField(field);\r\n fieldValue = (me.model as any)[field.name];\r\n fieldValue = fieldValue !== undefined ? fieldValue : field.defaultValue;\r\n // disabled Field\r\n if (field.disabled) {\r\n fieldPropsObj = { value: fieldValue, disabled: true };\r\n } else {\r\n fieldPropsObj = fieldValue;\r\n }\r\n formGroupObjet[field.name] = [fieldPropsObj, me.fbHelper.getValidators(field)];\r\n });\r\n if (me.formBuilder) me.formModel = me.formBuilder.group(formGroupObjet);\r\n }\r\n\r\n defineFormModel() {\r\n const me = this;\r\n const fields: any = {};\r\n for (const fieldName of Object.keys(me.formFields)) {\r\n fields[fieldName] = me.transformDefinedField(fieldName, me.formFields[fieldName]);\r\n }\r\n me.formModel = me.fbHelper.buildFormGroup(\r\n fields,\r\n me.getValuesForFormModel(me.model),\r\n );\r\n }\r\n\r\n /**\r\n * Permite modificar la definición original del campo antes de construir el formControl\r\n * @param field\r\n * @returns\r\n */\r\n protected transformDefinedField(_fieldName: string, field: FormFieldDefinition) {\r\n return field;\r\n }\r\n\r\n /**\r\n * Permite modificar los valores que se usarán para construir el formControl\r\n * @param field\r\n * @returns\r\n */\r\n protected getValuesForFormModel(values: T): any {\r\n return values;\r\n }\r\n\r\n protected updateForm() {\r\n this.buildFormModel();\r\n }\r\n\r\n /**\r\n * Permite modificar la definición original del campo antes de construir un formControl\r\n * @param field\r\n * @returns\r\n */\r\n protected preProcessDefinedField(field: FormField) {\r\n return field;\r\n }\r\n\r\n setFieldDisabled(fieldName: string, disabled: boolean) {\r\n const me = this;\r\n me.fields = me.fields.map((field) => {\r\n if (field.name == fieldName) {\r\n field.disabled = disabled;\r\n }\r\n return field;\r\n });\r\n me.updateForm();\r\n }\r\n\r\n // Estado por defecto\r\n setStatusReady() {\r\n this._isReady = true;\r\n this._isSaving = false;\r\n }\r\n\r\n // Guardando...\r\n setStatusSaving() {\r\n this._isSaving = true;\r\n this._isReady = false;\r\n }\r\n\r\n // Cierra inmediatamente la interfaz\r\n protected __forceClose() {\r\n this.dialogRef.close();\r\n }\r\n\r\n getApiUrl() {\r\n return this.apiUrl;\r\n }\r\n\r\n getDataPath() {\r\n return this.dataPath;\r\n }\r\n\r\n getCollectionUrl() {\r\n return this.getApiUrl() + '/' + this.getDataPath();\r\n }\r\n\r\n}\r\n","import { OnInit, Injector, Directive, HostListener } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { BehaviorSubject, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { NotificationsService } from './services/notifications.service';\r\nimport { MessageType } from './services/message.type';\r\n\r\n@Directive()\r\nexport abstract class ModelViewComponent<T> implements OnInit {\r\n // @config llama a loadData inmediatamente\r\n autoload = true;\r\n _loadDataCount = 0;\r\n _isLoadingData = false;\r\n _didLoadDataFailed = false;\r\n _didValidationFailed = false;\r\n model!: T;\r\n modelId: any;\r\n // Message\r\n messageText!: string;\r\n messageType: MessageType = 'info';\r\n messageActionText: string = 'Intentar nuevamente';\r\n messageActionIcon: string = 'app:refresh';\r\n\r\n private modelObs = new BehaviorSubject<any>(null);\r\n model$: Observable<any> = this.modelObs.asObservable();\r\n protected notifications: NotificationsService;\r\n protected router: Router;\r\n protected route: ActivatedRoute;\r\n protected location: Location;\r\n private loadObs = new Subject();\r\n public load = this.loadObs.asObservable();\r\n private errorStatus: number = 0;\r\n _loadSubcription!: Subscription;\r\n constructor(protected injector: Injector) {\r\n this.notifications = injector.get(NotificationsService);\r\n this.router = injector.get(Router);\r\n this.route = injector.get(ActivatedRoute);\r\n this.location = injector.get(Location);\r\n }\r\n // Keyboard listeners\r\n @HostListener('window:keyup', ['$event'])\r\n keyEvent(e: KeyboardEvent) {\r\n const me = this;\r\n if ((e.target as Element).tagName != 'BODY') {\r\n return;\r\n }\r\n // Reload data\r\n if (e.code === 'KeyA') {\r\n me.loadData();\r\n }\r\n }\r\n ngOnInit(): void {\r\n const me = this;\r\n me._subscribeLoadEvent();\r\n me.subscribeRouteParams();\r\n if (me.autoload) {\r\n me.loadData();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if (this._loadSubcription) {\r\n this._loadSubcription.unsubscribe();\r\n }\r\n }\r\n loadData() {\r\n if (this.validParams()) {\r\n this.loadObs.next(null);\r\n }\r\n }\r\n validParams() {\r\n return true;\r\n }\r\n subscribeRouteParams() { }\r\n _subscribeLoadEvent() {\r\n const me = this;\r\n me._loadSubcription = me.load\r\n .pipe(\r\n switchMap(() => {\r\n me._loadDataCount++;\r\n me._isLoadingData = true;\r\n return me.getDataService().pipe(\r\n catchError((xhr) => {\r\n me._isLoadingData = false;\r\n me._didLoadDataFailed = true;\r\n me.onError(xhr);\r\n return of(null);\r\n })\r\n );\r\n })\r\n )\r\n .subscribe(me.setModel.bind(me));\r\n }\r\n protected onData(data: any) { }\r\n protected onError(xhr: any) {\r\n this.errorStatus = xhr.status;\r\n }\r\n setModel(model: T) {\r\n this.model = model;\r\n this.onData(model);\r\n this.modelObs.next(model);\r\n }\r\n abstract getDataService(): Observable<any>;\r\n /**\r\n * Determina si se debería o no mostrar el mensaje de cargando\r\n */\r\n shouldShowProgressView() {\r\n const me = this;\r\n return me._isLoadingData && !me.model;\r\n }\r\n shouldShowErrorView() {\r\n const me = this;\r\n return (\r\n !me._isLoadingData && (me._didLoadDataFailed || me._didValidationFailed)\r\n );\r\n }\r\n shouldShowPageMessage() {\r\n const me = this;\r\n return (\r\n !me._isLoadingData && (me._didLoadDataFailed || me._didValidationFailed)\r\n );\r\n }\r\n print() {\r\n window.print();\r\n }\r\n getErrorStatus(): number {\r\n return this.errorStatus;\r\n }\r\n getCurrentUrl() {\r\n return location.href;\r\n }\r\n getBaseHref(): string {\r\n return document.baseURI;\r\n }\r\n}\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport { ModelViewComponent } from './model-view.component';\r\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\r\nimport { FieldValidations, FormBuilderHelper, FormFields } from './form-builder-helper';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class FormComponent<T> extends ModelViewComponent<T> {\r\n\r\n // Propiedades de formulario\r\n formModel!: UntypedFormGroup;\r\n formFields: FormFields = {};\r\n override model: T | any;\r\n modelIdProperty = 'id';\r\n override autoload = false;\r\n @Input()\r\n dataPath: string = '';\r\n // Texts\r\n fieldRequiredErrorMessageText = 'Requerido';\r\n invalidValuesMessageText = `<strong>El formulario contiene errores</strong>\r\n <div>\r\n Para continuar, corrija los errores indicados.\r\n </div>`;\r\n msgSuccessfulCreateText = 'Creado correctamente';\r\n msgSuccessfulUpdateText = 'Actualizado correctamente';\r\n _isSaving = false;\r\n /**\r\n * This property is used to idenfify whe the form model don't exist yet\r\n */\r\n routeCreateKeyword = 'registrar';\r\n protected fbHelper: FormBuilderHelper;\r\n\r\n constructor(\r\n injector: Injector,\r\n protected api: any,\r\n ) {\r\n super(injector);\r\n this.api = api;\r\n this.fbHelper = injector.get(FormBuilderHelper);\r\n }\r\n\r\n override subscribeRouteParams() {\r\n const me = this;\r\n me.route.paramMap.subscribe(function (paramMap: any) {\r\n let id = paramMap.get('id') || '';\r\n // Creation\r\n if (id === me.routeCreateKeyword) {\r\n return;\r\n }\r\n // Edition\r\n // RegEx id válido\r\n const re = /^[1-9]{1}\\d*/;\r\n\r\n // Id inválido.\r\n if (!re.test(id)) {\r\n alert('invalid route');\r\n return;\r\n }\r\n me.modelId = +id;\r\n });\r\n }\r\n\r\n override ngOnInit(): void {\r\n const me = this;\r\n super.ngOnInit();\r\n // Cargar datos\r\n me.loadDatasets();\r\n // Creation\r\n if (!me.isRecordStored()) {\r\n me.setModel(me.getNewModel());\r\n me.defineFormModel();\r\n return;\r\n }\r\n // Edition\r\n me.loadData();\r\n }\r\n\r\n override onData(model: any) {\r\n this.defineFormModel();\r\n }\r\n\r\n /**\r\n * Hook para cargar datasets relacionados como por ejemplo: listas de selección\r\n */\r\n loadDatasets() { };\r\n\r\n getPostData() {\r\n const me = this;\r\n return { ...me.model, ...me.formModel.value };\r\n }\r\n\r\n getNewModel(): T {\r\n const me = this;\r\n return {} as T;\r\n }\r\n\r\n getModelId() {\r\n return this.modelId || (this.model ? this.model[this.modelIdProperty] : null);\r\n }\r\n\r\n isFormValid() {\r\n return this.formModel.valid;\r\n }\r\n\r\n /**\r\n * Permite determinar si el campo debe incluirse en el formulario\r\n * @param field\r\n * @returns\r\n */\r\n hasField(field: string): boolean {\r\n return this.formFields && this.formFields.hasOwnProperty(field);\r\n }\r\n\r\n /**\r\n * Retorna el campo del formulario solicitado\r\n * @param name\r\n */\r\n getFormControl(name: string): AbstractControl | null {\r\n return this.formModel.get(name);\r\n }\r\n\r\n hasError(fieldName: string, errorType: string) {\r\n return this.getFormControl(fieldName)?.hasError(errorType);\r\n }\r\n\r\n getFieldProperty(fieldName: string, prop: keyof FieldValidations) {\r\n return this.formFields[fieldName] ? this.formFields[fieldName][prop] : null;\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.getFormControl(field)?.value;\r\n }\r\n\r\n defineFormModel() {\r\n const me = this;\r\n const fields: any = {};\r\n for (const fieldName of Object.keys(me.formFields)) {\r\n fields[fieldName] = me.transformDefinedField(fieldName, me.formFields[fieldName]);\r\n }\r\n me.formModel = me.fbHelper.buildFormGroup(\r\n fields,\r\n me.getValuesForFormModel(me.model),\r\n );\r\n }\r\n\r\n /**\r\n * Permite modificar la definición original del campo antes de construir el formControl\r\n * @param field\r\n * @returns\r\n */\r\n protected transformDefinedField(fieldName: string, field: FieldValidations) {\r\n return field;\r\n }\r\n\r\n /**\r\n * Permite modificar los valores que se usarán para construir el formControl\r\n * @param field\r\n * @returns\r\n */\r\n protected getValuesForFormModel(values: T | any) {\r\n return values;\r\n }\r\n\r\n isFieldRequired(fieldName: string) {\r\n return this.hasError(fieldName, 'required');\r\n }\r\n\r\n hasMinLengthError(fieldName: string) {\r\n return this.hasError(fieldName, 'minlength');\r\n }\r\n\r\n hasMaxLengthError(fieldName: string) {\r\n return this.hasError(fieldName, 'maxlength');\r\n }\r\n\r\n getRequiredErrorMessage(_fieldName: string = '') {\r\n return this.fieldRequiredErrorMessageText;\r\n }\r\n\r\n getMinLengthErrorMessage(fieldName: string) {\r\n return `Mín ${this.getFieldProperty(fieldName, 'minLength')} caracteres.`;\r\n }\r\n\r\n getMaxLengthErrorMessage(fieldName: string) {\r\n return `Máx ${this.getFieldProperty(fieldName, 'maxLength')} caracteres.`;\r\n }\r\n\r\n onSubmit() {\r\n const me = this;\r\n if (!me.isFormValid()) {\r\n me.notifications.snackWarning(me.invalidValuesMessageText);\r\n return;\r\n }\r\n me._isSaving = true;\r\n // Mostrar animación\r\n setTimeout(() => {\r\n me.getSaveService(me.getPostData()).subscribe(\r\n (model) => {\r\n me.notifications.snackSuccess(\r\n me.isRecordStored()\r\n ? me.msgSuccessfulUpdateText\r\n : me.msgSuccessfulCreateText\r\n );\r\n me.setModel(model);\r\n me._isSaving = false;\r\n },\r\n (xhr) => {\r\n me._isSaving = false;\r\n me.notifications.handleXhrError(xhr);\r\n }\r\n );\r\n }, 250);\r\n }\r\n\r\n resetValues() {\r\n this.setModel(this.model);\r\n }\r\n\r\n /**\r\n *\r\n * @returns true si el modelo posee un id.\r\n */\r\n isRecordStored(): boolean {\r\n return !!this.getModelId();\r\n }\r\n\r\n getDataService() {\r\n return this.api.get(this.modelId);\r\n }\r\n\r\n getSaveService(model: any): Observable<any> {\r\n return this.api.save(model, this.getModelId());\r\n }\r\n\r\n}\r\n","export class StringUtils {\r\n /**\r\n * Example:\r\n * ```\r\n * StringUtils.format('hello {0}', 'world');\r\n * ```\r\n *\r\n * @param tpl\r\n * @param args\r\n */\r\n static format(tpl: string, ...args: any[]) {\r\n args.forEach((value, idx) => {\r\n const re = new RegExp('\\\\{' + idx + '\\\\}', 'g');\r\n tpl = tpl.replace(re, value);\r\n });\r\n return tpl;\r\n }\r\n\r\n static compileTpl(tpl: string, tplData: { [key: string]: any }) {\r\n return tpl.replace(/\\{([^}]+)\\}/g, (_, key) => {\r\n return tplData[key];\r\n });\r\n }\r\n}\r\n","/**\r\n * Component Base Class\r\n *\r\n * Clase base para componentes que muestran datos en formato de listas o tablas\r\n * cargando datos desde el servidor.\r\n *\r\n * @author Jaime Cruz.\r\n */\r\nimport {\r\n OnInit,\r\n Injector,\r\n ViewChild,\r\n AfterViewInit,\r\n Directive,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { NotificationsService } from './services/notifications.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { DialogService } from './services/dialog.service';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { HttpCollectionService, CollectionQueryParams, QueryFilter, CollectionResponse } from 'ngx-core-business/http';\r\nimport { DataErrorViewComponent } from './data-error-view/data-error-view.component';\r\n\r\nimport { of, Subscription, Subject } from 'rxjs';\r\nimport { switchMap, catchError } from 'rxjs/operators';\r\nimport { StringUtils } from './utils/string-utils';\r\n\r\n\r\nenum COMPONENT_TYPE {\r\n PAGE = 'page',\r\n COMPONENT = 'component',\r\n}\r\n@Directive()\r\nexport class TableViewComponent<T> implements OnInit, AfterViewInit {\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n /**\r\n * Tipo de componente\r\n * - page: Si el componente que extiende está asociado con una ruta.\r\n * - component: Si el componente extendido esta dentro de otro componente\r\n *\r\n */\r\n protected type: string = 'page';\r\n // @config llama a loadData inmediatamente\r\n autoload = true;\r\n apiUrl: string = '';\r\n sendModelOnDelete = false;\r\n requestParams: { [key: string]: string | number | boolean } = {};\r\n dataPath: string = '';\r\n displayedColumns: string[] = [];\r\n itemSingularName: string = 'ítem';\r\n itemPluralName: string = 'ítems';\r\n itemSingularArticle: string = 'el';\r\n // Si se asigna un valor a la propiedad en una subclase, ya no se usará confirmDeleteTitleTpl\r\n confirmDeleteTitle: string = '';\r\n confirmDeleteTitleTpl = 'Eliminar {itemName}';\r\n deleteItemQuestionText = '';\r\n deleteItemQuestionTextTpl = '¿Seguro que desea eliminar {itemArticle} {itemName}?';\r\n deleteItemConfirmDialogContentTpl = '{question}<div class=\"mt-2\"><strong style=\"text-transform: capitalize;\">{itemName}</strong></div>';\r\n deleteItemConfirmButtonText = 'ELIMINAR';\r\n successfullyDeletedItemNotificationTpl = '{itemName} eliminado correctamente';\r\n protected editorClass: any;\r\n protected editionDisabled = false;\r\n\r\n // Propiedades disponibles\r\n pageSize = 25;\r\n pageIndex = 0;\r\n // Guarda una copia del array de datos recibidos del servicio,\r\n // Nota: solo se clonan los objetos de primer nivel usando\r\n // map(e => { return { ...e } });\r\n _rawData!: T[];\r\n // Guarda una copia de la data que ha pasado por el metodo transformServiceResponseData\r\n _rawTransformedData!: T[];\r\n // Contiene la data que es visualizada en la interfaz\r\n data!: T[];\r\n selectedRow: any;\r\n totalRecords = 0;\r\n selectedRowIndex: number = -1;\r\n selection: SelectionModel<any>;\r\n selectionMultiple: boolean = false;\r\n modelIdProperty = 'id';\r\n modelNameProperty = 'name';\r\n // Services\r\n protected notifications: NotificationsService;\r\n protected http: HttpClient;\r\n protected matDialog: MatDialog;\r\n protected dialogService: DialogService;\r\n protected httpGetList: HttpCollectionService;\r\n protected router: Router;\r\n protected route: ActivatedRoute;\r\n\r\n // Child components\r\n @ViewChild(MatTable) table?: MatTable<any>;\r\n @ViewChild(MatSort) sort?: MatSort;\r\n @ViewChild(MatPaginator) paginator?: MatPaginator;\r\n @ViewChild(DataErrorViewComponent) errorView?: DataErrorViewComponent;\r\n filters: QueryFilter[] = [];\r\n $fields: string = '';\r\n localSearchFilter!: QueryFilter;\r\n searchFilter!: QueryFilter;\r\n // Propiedades de estado\r\n _isLoadingData = false;\r\n _didLoadDataFailed = false;\r\n _loadSubcription?: Subscription;\r\n\r\n //\r\n clearDataOnFail = true;\r\n private loadObs = new Subject();\r\n public load = this.loadObs.asObservable();\r\n private errorStatus: number = 0;\r\n constructor(protected injector: Injector) {\r\n this.notifications = injector.get(NotificationsService);\r\n this.http = injector.get(HttpClient);\r\n this.httpGetList = injector.get(HttpCollectionService);\r\n this.matDialog = injector.get(MatDialog);\r\n this.router = injector.get(Router);\r\n this.route = injector.get(ActivatedRoute);\r\n this.dialogService = injector.get(DialogService);\r\n // Selection model\r\n this.selection = new SelectionModel<any>(this.selectionMultiple, []);\r\n }\r\n // Keyboard listeners\r\n @HostListener('window:keyup', ['$event'])\r\n keyEvent(e: KeyboardEvent) {\r\n const me = this;\r\n if ((e.target as Element).tagName != 'BODY') {\r\n return;\r\n }\r\n // Reload data\r\n if (e.code === 'KeyA') {\r\n me.loadData();\r\n return;\r\n }\r\n // Open editor\r\n if (e.code === 'Enter' && me.getSelection().length == 1 && me.editorClass) {\r\n me.editItemHandler(me.selection.selected[0]);\r\n return;\r\n }\r\n // Select Next\r\n if (e.code === 'ArrowDown' && me.getSelection().length == 1) {\r\n me.selectNext();\r\n return;\r\n }\r\n // Select Previus\r\n if (e.code === 'ArrowUp' && me.getSelection().length == 1) {\r\n me.selectPrevious();\r\n }\r\n }\r\n\r\n loadData() {\r\n this.loadObs.next(null);\r\n }\r\n\r\n _subscribeLoadEvent() {\r\n const me = this;\r\n me._loadSubcription = me.load\r\n .pipe(\r\n switchMap(() => {\r\n me.beforeLoad();\r\n me._isLoadingData = true;\r\n me._didLoadDataFailed = false;\r\n return me.httpGetList\r\n .get<CollectionResponse<T>>(me.getRequestUrl(), me.getBaseRequestParams())\r\n .pipe(\r\n catchError((xhr) => {\r\n me._isLoadingData = false;\r\n me._didLoadDataFailed = true;\r\n me.handleServerError(xhr);\r\n return of(null);\r\n })\r\n );\r\n })\r\n )\r\n .subscribe(me.onDataServiceResponse.bind(me));\r\n }\r\n onDataServiceResponse(res: any) {\r\n const me = this;\r\n // When error has happened and was catched by catchError\r\n if (me._didLoadDataFailed) return;\r\n\r\n let data: T[] = [],\r\n total = 0;\r\n // res: {data: any[], total: number }\r\n if (\r\n Object.prototype.toString.call(res) == '[object Object]' &&\r\n Array.isArray(res.data)\r\n ) {\r\n data = res.data;\r\n if (isNaN(res.total)) {\r\n total = data.length;\r\n } else {\r\n total = +res.total > data.length ? +res.total : data.length;\r\n }\r\n }\r\n // res: any[]\r\n else if (Array.isArray(res)) {\r\n data = res;\r\n total = res.length;\r\n }\r\n me._rawData = data.map(e => { return { ...e } });\r\n me._rawTransformedData = me.transformServiceResponseData(data);\r\n me.data = me._rawTransformedData.map(e => { return { ...e } });\r\n\r\n me.totalRecords = total;\r\n me._isLoadingData = false;\r\n }\r\n transformServiceResponseData(data: any[]) {\r\n return data;\r\n }\r\n\r\n /**\r\n * Hook\r\n * Es llamado antes de solicitar datos al servidor\r\n */\r\n beforeLoad() { }\r\n\r\n getSelection() {\r\n const me = this;\r\n let selection = me.selection.selected;\r\n if (selection.length) {\r\n // Single selection\r\n if (!me.selectionMultiple) {\r\n if (me.recordExists(selection[0])) {\r\n return selection;\r\n }\r\n me.selection.clear();\r\n return [];\r\n } else {\r\n selection = selection.filter((item) => me.recordExists(item));\r\n me.selection.clear();\r\n selection.forEach((item) => me.selection.select(item));\r\n }\r\n }\r\n return me.selection.selected;\r\n }\r\n\r\n recordExists(rec: any) {\r\n let out = false;\r\n let data = this.data || [];\r\n data.forEach((item: any) => {\r\n if (item == rec) {\r\n out = true;\r\n }\r\n });\r\n return out;\r\n }\r\n\r\n getRecordByIndex(idx: number) {\r\n let data = this.data || [];\r\n return data[idx] ? data[idx] : null;\r\n }\r\n\r\n getRecordIndex(rec: any) {\r\n let out = -1;\r\n let data = this.data || [];\r\n data.forEach((item: any, idx: number) => {\r\n if (item === rec) {\r\n out = idx;\r\n }\r\n });\r\n return out;\r\n }\r\n\r\n selectNext() {\r\n const me = this;\r\n // Matener condicionales separadas\r\n if (!me.selection.hasValue()) {\r\n return;\r\n }\r\n if (me.selectionMultiple) {\r\n return;\r\n }\r\n let index = me.getRecordIndex(me.selection.selected[0]);\r\n if (me.validIndex(index)) {\r\n let nextRec = me.getRecordByIndex(index + 1);\r\n if (nextRec) {\r\n me.selection.select(nextRec);\r\n }\r\n }\r\n }\r\n\r\n selectPrevious() {\r\n const me = this;\r\n // Matener condicionales separadas\r\n if (!me.selection.hasValue()) {\r\n return;\r\n }\r\n if (me.selectionMultiple) {\r\n return;\r\n }\r\n let index = me.getRecordIndex(me.selection.selected[0]);\r\n if (me.validIndex(index)) {\r\n let nextRec = me.getRecordByIndex(index - 1);\r\n if (nextRec) {\r\n me.selection.select(nextRec);\r\n }\r\n }\r\n }\r\n\r\n validIndex(index: number) {\r\n return index != -1;\r\n }\r\n\r\n getBaseRequestParams(): CollectionQueryParams {\r\n const me = this,\r\n paginator = me.paginator,\r\n sorter = me.sort,\r\n filters = me.getFilters(),\r\n fields = me.$fields;\r\n let out: CollectionQueryParams = {};\r\n // Paginación\r\n if (paginator) {\r\n out.page = paginator.pageIndex + 1;\r\n out.limit = paginator.pageSize;\r\n } else {\r\n out.page = me.pageIndex + 1;\r\n out.limit = me.pageSize;\r\n }\r\n // Query\r\n if (me.searchFilter?.value) {\r\n out.query = me.searchFilter?.value;\r\n }\r\n // Filters\r\n if (filters && filters.length) {\r\n out.filters = filters;\r\n }\r\n // Sorters\r\n // Por ahora solo está soportando un simple sort\r\n if (sorter && sorter.active && sorter.direction) {\r\n out.sorters = [{ field: sorter.active, direction: sorter.direction }];\r\n }\r\n if (fields) {\r\n out.fields = fields;\r\n }\r\n return out;\r\n }\r\n\r\n\r\n getApiUrl() {\r\n return this.apiUrl;\r\n }\r\n\r\n getDataPath() {\r\n return this.dataPath;\r\n }\r\n\r\n getCollectionUrl() {\r\n return this.getApiUrl() + '/' + this.getDataPath();\r\n }\r\n getDeleteResourceUrl(model: T) {\r\n const me = this;\r\n let modelId = (model as any)[me.modelIdProperty];\r\n return me.getCollectionUrl() + '/' + modelId\r\n }\r\n getRequestUrl(): string {\r\n const me = this,\r\n queryParams = me.getRequestParams(),\r\n url = me.router\r\n .createUrlTree([me.getDataPath()], { queryParams })\r\n .toString();\r\n return me.getApiUrl() + url;\r\n }\r\n\r\n getRequestParams(): { [key: string]: number | string | boolean } {\r\n return this.requestParams;\r\n }\r\n\r\n /**\r\n * ACTION HANDLERS\r\n */\r\n addItemHandler() {\r\n const me = this;\r\n const dialogRef = me.matDialog.open(me.editorClass, {\r\n data: me.getEditorData(),\r\n position: { top: '50px' },\r\n disableClose: true,\r\n });\r\n // Cuando el formulario se cierra.\r\n dialogRef.afterClosed().subscribe((data) => {\r\n me.afterCreateEditorClosed(data);\r\n });\r\n }\r\n\r\n editItemHandler(rec: any) {\r\n const me = this;\r\n if (me.editionDisabled) {\r\n return;\r\n }\r\n const dialogRef = me.matDialog.open(me.editorClass, {\r\n data: me.getEditorData(rec),\r\n disableClose: true,\r\n position: { top: '50px' },\r\n });\r\n dialogRef.afterClosed().subscribe((data) => {\r\n me.afterUpdateEditorClosed(data);\r\n });\r\n }\r\n\r\n deleteItemHandler(model: any) {\r\n const me = this;\r\n me.dialogService\r\n .confirmDelete(\r\n me.getDeleteItemConfirmDialogTitle(model),\r\n me.getDeleteItemConfirmDialogContent(model),\r\n me.deleteItemConfirmButtonText,\r\n )\r\n .subscribe((ok) => {\r\n if (ok) {\r\n me.deleteResource(model);\r\n }\r\n });\r\n }\r\n\r\n deleteResource(model: T) {\r\n const me = this;\r\n me.http.delete(me.getDeleteResourceUrl(model), me.sendModelOnDelete ? { body: model } : undefined).subscribe(() => {\r\n me.notifications.snackSuccess(me.getSuccessfullyDeletedItemNotificationContent(model));\r\n me.removeRecord(model);\r\n });\r\n }\r\n\r\n getEditorData(rec?: T): { [key: string]: any, model?: T } {\r\n return {\r\n model: rec,\r\n };\r\n }\r\n\r\n updateRecord(rec: T) {\r\n const me = this;\r\n me.data = me.data?.map((item: any) =>\r\n item[me.modelIdProperty] != (rec as any)[me.modelIdProperty] ? item : rec\r\n );\r\n me.updateView();\r\n }\r\n\r\n removeRecord(model: T) {\r\n const me = this;\r\n me.data = me.data?.filter((rec: T) => {\r\n return rec != model;\r\n });\r\n me.totalRecords--;\r\n me.updateView();\r\n }\r\n\r\n\r\n /**\r\n * Este metodo puede ser sobre escrito para evitar el comportamiento por defecto.\r\n */\r\n afterCreateEditorClosed(model: T) {\r\n const me = this;\r\n if (model) {\r\n //funcion creada para agregar datos a la matriz\r\n me.data?.push(model);\r\n me.updateView();\r\n }\r\n }\r\n\r\n /**\r\n * Este metodo puede ser sobre escrito para evitar el comportamiento por defecto.\r\n */\r\n afterUpdateEditorClosed(model: any) {\r\n const me = this;\r\n if (model) {\r\n // Update record\r\n me.updateRecord(model);\r\n }\r\n }\r\n\r\n /**\r\n * Nota: Sobrescribir este metodo para titulos personalizados.\r\n */\r\n getDeleteItemConfirmDialogTitle(model: any): string {\r\n const me = this;\r\n if (me.confirmDeleteTitle) return me.confirmDeleteTitle;\r\n return StringUtils.compileTpl(\r\n me.confirmDeleteTitleTpl,\r\n // Capitalize string\r\n { itemName: me.itemSingularName.charAt(0).toUpperCase() + me.itemSingularName.slice(1) }\r\n );\r\n }\r\n\r\n /**\r\n * Nota: Sobrescribir este metodo para mensajes personalizados\r\n */\r\n getDeleteItemConfirmDialogContent(model: T): string {\r\n return StringUtils.compileTpl(\r\n this.deleteItemConfirmDialogContentTpl,\r\n this.getDeleteItemConfirmDialogTplData(model)\r\n );\r\n }\r\n\r\n getDeleteItemConfirmDialogTplData(model: T): any {\r\n const me = this;\r\n let question = me.deleteItemQuestionText;\r\n if (!question) {\r\n question = StringUtils.compileTpl(\r\n me.deleteItemQuestionTextTpl,\r\n {\r\n itemName: me.itemSingularName,\r\n itemArticle: me.itemSingularArticle\r\n }\r\n );\r\n }\r\n return {\r\n question,\r\n itemName: this.getItemIdentificationName(model),\r\n };\r\n }\r\n\r\n /**\r\n * Nota: Sobrescribir este metodo para mensajes personalizados\r\n */\r\n getSuccessfullyDeletedItemNotificationContent(model: T): string {\r\n return StringUtils.compileTpl(\r\n this.successfullyDeletedItemNotificationTpl,\r\n this.getSuccessfullyDeletedItemNotificationTplData(model)\r\n );\r\n }\r\n\r\n getSuccessfullyDeletedItemNotificationTplData(model: T): any {\r\n return {\r\n itemName: this.getItemIdentificationName(model),\r\n };\r\n }\r\n\r\n getItemIdentificationName(model: T): string {\r\n return (model as any)[this.modelNameProperty] || '';\r\n }\r\n\r\n reloadHandler() {\r\n this.loadData();\r\n }\r\n\r\n ngOnInit(): void {\r\n const me = this;\r\n me._subscribeLoadEvent();\r\n me.subscribeRouteParams();\r\n me.loadDatasets();\r\n me._createSelectionModel();\r\n if (me.autoload) {\r\n me.loadData();\r\n }\r\n }\r\n subscribeRouteParams() { }\r\n loadDatasets() { }\r\n _createSelectionModel() {\r\n const me = this;\r\n me.selection = new SelectionModel<T>(me.selectionMultiple, []);\r\n me.selection.changed.subscribe((selection) => {\r\n me.selectionChange.emit(selection.source.selected);\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n const me = this;\r\n if (me.sort) {\r\n me.sort.sortChange.subscribe(() => {\r\n if (me.paginator) {\r\n me.paginator.pageIndex = 0;\r\n }\r\n me.loadData();\r\n });\r\n }\r\n if (me.paginator) {\r\n me.paginator.page.subscribe(() => {\r\n me.loadData();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Solo notificará los errores de servidor componentes tipo component\r\n */\r\n handleServerError(xhr: any) {\r\n const me = this;\r\n this.errorStatus = xhr.status;\r\n if (me.type == COMPONENT_TYPE.COMPONENT) {\r\n me.notifications.handleXhrError(xhr);\r\n }\r\n }\r\n\r\n //*** actualizar las celdas */\r\n updateView() {\r\n if (this.table) {\r\n this.table.renderRows();\r\n }\r\n }\r\n\r\n applyFilters(filters: QueryFilter[]) {\r\n const me = this;\r\n me.filters = filters;\r\n me.resetPageIndex();\r\n me.loadData();\r\n }\r\n\r\n resetPageIndex() {\r\n const me = this;\r\n if (me.paginator) me.paginator.pageIndex = 0;\r\n }\r\n\r\n getFilters(): QueryFilter[] {\r\n return this.filters;\r\n }\r\n\r\n applySearchFilter(filter: QueryFilter) {\r\n const me = this;\r\n me.searchFilter = filter;\r\n if (me.paginator) me.paginator.pageIndex = 0;\r\n me.loadData();\r\n }\r\n\r\n applyLocalSearchFilter(filter: QueryFilter) {\r\n const me = this;\r\n me.localSearchFilter = filter;\r\n me.filterData(filter.value);\r\n }\r\n /**\r\n * Determina si se debería o no mostrar el mensaje de cargando\r\n */\r\n shouldShowProgressView() {\r\n const me = this;\r\n return me._isLoadingData && !me.data;\r\n }\r\n\r\n shouldShowErrorView() {\r\n const me = this;\r\n return me._didLoadDataFailed && !me._isLoadingData;\r\n }\r\n\r\n // FIX\r\n shouldShowTitleBar() {\r\n const me = this;\r\n return !me._didLoadDataFailed && !me._isLoadingData;\r\n }\r\n\r\n shouldShowContent() {\r\n const me = this;\r\n return !me._didLoadDataFailed && !me._isLoadingData;\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.getSelection().length;\r\n const numRows = this.data?.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.selection.clear()\r\n : this.data?.forEach((row: any) => this.selection.select(row));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._loadSubcription) {\r\n this._loadSubcription.unsubscribe();\r\n }\r\n }\r\n\r\n // Updates a specific field and makes the http request if it's necessary\r\n updateValue(model: any, fieldName: string, newValue: string | number | boolean) {\r\n const me = this;\r\n // No requiere actualizar\r\n if (model[fieldName] == newValue) {\r\n return;\r\n }\r\n const oldValue = model[fieldName];\r\n model[fieldName] = newValue;\r\n me.http\r\n .put(me.getCollectionUrl() + '/' + model[me.modelIdProperty], model)\r\n .subscribe(\r\n (_) => {\r\n me.afterValueUpdated(model, fieldName, newValue, oldValue);\r\n },\r\n (xhr) => {\r\n // Reset on error\r\n model[fieldName] = oldValue;\r\n me.notifications.handleXhrError(xhr);\r\n }\r\n );\r\n }\r\n\r\n afterValueUpdated(model: T, fieldName: string, newValue: any, oldValue: any) {\r\n\r\n }\r\n\r\n navigateToItemView(id: number) {\r\n this.router.navigate(['./', id], { relativeTo: this.route });\r\n }\r\n\r\n getBaseHref(): string {\r\n return document.baseURI;\r\n }\r\n\r\n getPageIndex() {\r\n return this.paginator ? this.paginator.pageIndex : this.pageIndex;\r\n }\r\n\r\n getPageSize() {\r\n return this.paginator ? this.paginator.pageSize : this.pageSize;\r\n }\r\n\r\n getItemNumber(index: number): number {\r\n return this.getPageIndex() * this.getPageSize() + index + 1;\r\n }\r\n\r\n /**\r\n * Filtra por todas las columnas\r\n * @param text Texto buscado\r\n */\r\n filterData(text: string) {\r\n const me = this;\r\n text = (text || '').toString().trimStart().toLowerCase();\r\n me.data = me._rawTransformedData.filter((item: any) => {\r\n return Object.keys(item).some(key => {\r\n const value = (item[key] || '').toString().toLowerCase();\r\n return value.includes(text.toLowerCase());\r\n })\r\n });\r\n }\r\n\r\n getErrorStatus(): number {\r\n return this.errorStatus;\r\n }\r\n\r\n}\r\n","/*\n * Public API Surface of ngx-core-business\n */\n\nexport * from './app-header';\nexport * from './avatar';\nexport * from './data-error-view';\nexport * from './dialog';\nexport * from './edition-pin';\nexport * from './grid';\nexport * from './http-activity-bar';\nexport * from './list-toolbar';\nexport * from './nav-list';\nexport * from './process-button';\nexport * from './process-mask';\nexport * from './progress-view';\nexport * from './snack-bar';\nexport * from './text-filter';\nexport * from './view-breadcrumb';\nexport * from './view-content-wrapper';\nexport * from './view-title';\n\nexport * from './services';\n\nexport * from './filters-container.component';\nexport * from './form-builder-helper';\nexport * from './form-dialog.component';\nexport * from './form.component';\nexport * from './model-view.component';\nexport * from './table-view.component';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i5","i6.AvatarComponent","i2","i3","i4","i1","i1.HttpActivityService","i1.TextFilterComponent","i2.DataErrorViewComponent","i3.ProgressViewComponent"],"mappings":"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"}