@marxa/crud-panel
v12.2210.2
Published
Componente para crear una dinámica CRUD con componentes de **@angular/material**. Permite agregar un template para **Create**, Enlistar un array para **Read**, un template para **Update** y un botón para **Delete**
Downloads
2
Readme
MxCrudPanel
Componente para crear una dinámica CRUD con componentes de @angular/material. Permite agregar un template para Create, Enlistar un array para Read, un template para Update y un botón para Delete
Primerso pasos
| ❗ IMPORTANTE ❗ | |-----------------------------------------| | Esta librería está construida con @angular/material |
Instalación
Como dependencia Node
- Inicia sesión en https://marxa.jfrog.io/. En el menú de navegación ve a Set me up. y sigue las instrucciones para ingresar tus contraseñas.
- Si usas VSCode, en la terminal corre el comando
code ~/.npmrc
, si no, navega a~/.npmrc
en tu explorador de archivos y ábrelo. - Pega el código resultante de las instrucciones, asegurándote que la URL del artifact tenga el prefijo
@marxa:
en cada uno de los registros. Ejemplo:
_auth = <PASSWORD> (converted to base 64)
email = [email protected]
always-auth = true
@marxa:registry = https://marxa.jfrog.io/artifactory/api/npm/mx-library-npm/
- Importa la dependencia
npm i -s @marxa/crud-panel
Como submódulo
- Asegúrate de que tienes permisos para copiar el repositorio
- Abre la terminal en la raíz de tu proyecto
- Corre los comandos
git submodule init git submodule add -b develop https://github.com/Marxa-Digital/mx-crud-panel libs/marxa/crud-panel
- Configura el archivo
angular.json
incluyendo este bloque de códgio dentro deprojects
{ "projects":{ "@marxa/mail": { "projectType": "library", "root": "projects/marxa/crud-panel", "sourceRoot": "projects/marxa/crud-panel/src", "prefix": "mx", "architect": { "build": { "builder": "@angular-devkit/build-angular:ng-packagr", "options": { "project": "projects/marxa/crud-panel/ng-package.json" }, "configurations": { "production": { "tsConfig": "projects/marxa/crud-panel/tsconfig.lib.prod.json" }, "development": { "tsConfig": "projects/marxa/crud-panel/tsconfig.lib.json" } }, "defaultConfiguration": "production" }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "projects/marxa/crud-panel/src/test.ts", "tsConfig": "projects/marxa/crud-panel/tsconfig.spec.json", "karmaConfig": "projects/marxa/crud-panel/karma.conf.js" } } } } } }
- Configura el archivo
tsconfig.json
incluyendo este bloque de códgio dentro depaths
{ "compilerOptions": { ... "paths":{ "@marxa/crud-panel": [ "dist/marxa/crud-panel/marxa-crud-panel", "dist/marxa/crud-panel" ], } } }
- Corre el siguiente comando
cd libs/marxa/crud-panel && start cmd /k ng build @marxa/crud-panel --watch
- Instala la lib de manera manual con el siguiente comando
npm i "./dist/marxa/crud-panel"
Importa el módulo
import { MxCrudPanelModule } from "@marxa/crud-panel";
@NgModule({
declarations: [
AppComponent
],
imports: [
MxCrudPanelModule
],
bootstrap: [AppComponent]
})
export class AppModule { }
Importa los estilos en tu styles.scss
o stlyes.css
@import '~@marxa/crud-panel/styles/mx-crud-panel.scss';
Modo de uso
El método para usar es anidar componentes en este componente. Pondremos el ejemplo con un componente para crear post de blog
En el comonente crea tu formulario y un EventEmitter
que se encargará de cerrar el panel
interface Post {
title: string,
extract:string,
releasedImage: string,
content: string
}
@Component({
selector: 'app-post',
templateUrl: './app-post.component.html',
styleUrls: ['./app-post.component.scss']
})
export class AppPostComponent {
@Input() post: Post
@Output() onSaved: EventEmitter<any> = new EventEmitter()
constructor(){}
onSubmit(){
// do the submit action
this.onSaved.emit()
}
}
Agrega el panel de la siguiente manera:
<mx-crud-panel
listName="Entradas de blog"
[selectTemplate]="select"
[addTemplate]="add"
[list]="posts"
[height_vh]="90"
[width_vw]="80"
itemSelector="nombre"
#crudPanel
>
<!-- Agrega un componente para agregar como #add o el nombre que tú quieras-->
<ng-template #add>
<app-post (onSave)="crudPanel.closePanel()"></app-post>
</ng-template>
<!-- Agrega otro componente para editar como #select o el nombre que quieras -->
<!-- Designa una variable para el item seleccionado importarlo en tu formulario de edición -->
<ng-template #select let-slide="item" >
<app-post (onUpdate)="crudPanel.closePanel()" [post]="post"></app-post>
</ng-template>
</mx-crud-panel>
Parámentros
| Parámetro | Descripción |
|-----------|-------------|
| @Input() list: any[]
| La lista de items |
| @Input() listName: string
| El título encabezado del panel |
| @Input() selectTemplate
| El template que será incrustado en el panel de selección |
| @Input() addTemplate
| El template que será incrustado en el panel de adición |
| @Input() addBtnConfig: MxCrudCreateConfig
| Configuración del botón de creación |
| @Input() height_vh: number
| Cantidad ViewHeigth del panel |
| @Input() width_vw: number
| Cantidad ViewWidth del panel |
| @Input() panelPosition: MatDrawer.position
| Posisión del panel, 'start'
del lado izquierdo, 'end'
del lado derecho |
| @Input() itemSelector: string
| El selector del item que aparecerá en el listado |
| @Input() columns: string[] or MxCrudPanelColumns[]
| Lista de las columnas que aparecerán en la tabla de lectura llamando cada nombre como de columna como el parámetro de cada item |
| @Input() backdrop: boolean
| Controla si se verá el fondo transparente al abrir addTemplate
o selectTemplate
|
| @Output() onDelete: EventEmitter<any>
| Emite un evento del tipo del item que se convoca para eliminar desde el botón en la lista |
| @Output() onAdd: EventEmitter<void>
| Emite un evento vacío cuando se convoca el botón para crear un item en la lista |
| @Output() onClose: EventEmitter<void>
| Emite un evento vacío cuando se cierra alguno de los páneles |
| @Output() onSelect: EventEmitter<void>
| Emite un evento del tipado del objeto seleccionado cuando se da click en él |
Modelos
MxCrudPanelColumns
Controla como se verán las columnas en el panel del lectura de la lista
| Parámetro | Descripción |
|-----------|-------------|
|id: string
| Nombre con el cuál se identifica el campo en el el objeto de cada item de la lista |
|displayName: string
| Como se desea que aparezca el nombre de la columna en el encabezado |
MxCrudCreateConfig
Controla la vista del botón de crear
| Parámetro | Descripción |
|-----------|-------------|
|label: string
| El mensaje que aparecerá dentro del botón |
|color: ThemePalette
| string reservado para de la paleta Angular Material: 'primary' | 'accent' | 'warn'
|
|icon: string
| Nombre del ícono de la lista de Google Icons |
|enableIcon: boolean
| Habilitar la creación de nuevos items para la lista |
Métodos
openAddPanel()
| DESCRIPCIÓN |
|------------------|
| Abre el panel para agregar items |
| RETORNA void
|
closeAddPanel()
| DESCRIPCIÓN |
|------------------|
| Cierra el panel para agregar items |
| RETORNA void
|
closeSelectedPanel()
| DESCRIPCIÓN |
|------------------|
| Cierra el panel para agregar items |
| RETORNA void
|
closeAll()
| DESCRIPCIÓN |
|------------------|
| Forza a cerrar todos los páneles abiertos |
| RETORNA void
|
Importando
Puedes acceder al componente con @ViewChild
@Component({
selector: 'app-posts-list',
templateUrl: './app-post-list.component.html',
styleUrls: ['./app-post-list.component.scss']
})
export class AppPostListComponent {
@ViewChild('crudPanel') private crudPanel!: MxCrudPanel
constructor(){}
}
This library was generated with Angular CLI version 12.