0.0.2 • Published 6 months ago

@jcbautistam/custom-table v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

📊 custom-table

Versión: 0.0.6
Autor: Julio Cesar Bautista M
Licencia: MIT

Descripción general

Librería Angular reutilizable que proporciona una tabla personalizable con acciones, filtros por columna, exportación a Excel y gestión de visibilidad de columnas.

📥 Instalación

1. Descargar e instalar el paquete

npm i @jcbautistam/custom-table

📚 Requisitos

✔️En tu archivo angular.json, dentro del proyecto consumidor, agrega los siguientes estilos:

"styles": [
  "node_modules/bootstrap/dist/css/bootstrap.min.css",
  "node_modules/ngx-bootstrap/datepicker/bs-datepicker.css",
  "node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
  "src/styles.css"
]

📌 Esto es obligatorio para que los componentes visuales como mat-slide-toggle, modales, botones, íconos y tooltips se rendericen correctamente.

📦 Dependencias internas

Esta librería incluye internamente dependencias como:

  • ngx-bootstrap
  • ngx-spinner
  • xlsx
  • bootstrap
  • date-fns y date-fns-tz

Por lo tanto, no necesitas instalarlas manualmente en el proyecto consumidor, salvo que planees usarlas por tu cuenta o requieras una versión diferente.

🧩 Importación del módulo

En el AppModule o en el módulo donde uses la tabla, importa:

import { CustomTableModule } from 'custom-table';

@NgModule({
  declarations: [ ... ],
  imports: [
    CustomTableModule,
    // otros módulos necesarios
  ]
})
export class AppModule { }

✅ Compatibilidad

  • Paquete Versión mínima
  • Angular >=16.0.0
  • Angular Material >=16.0.0
  • ngx-bootstrap >=10.2.0
  • ngx-spinner >=17.0.0
  • bootstrap >=5.3.0
  • date-fns-tz >=2.0.0
  • xlsx >=0.18.0

🔵 Uso basico

📜 Html Implementacion de custom-table

<app-layout titulo="Pedidos">
  <custom-table
    [nombreMenu]="'Pedidos'"
    [columnConfigs]="columnConfigs"
    [actions]="tableActions"
    [parametros]="ParametrosPedidos"
    [nombreTabla]="'Pedidoss'"
    [mostrarFiltroGeneralFechas]="true"
    [fetchDataFunction]="apiServicioClienteService.getPedidosAsync.bind(apiServicioClienteService)"    
    [tableConfigs]="tableConfigs"
    [showCreateButtonModal]="true"
    [showExportarButton]="false"
    [excelFileName]="'CatalogoPedidos'"
  ></custom-table>
</app-layout>

⚙️ Typescript Configuracion de columnas

  columnConfigs: { [key: string]: ColumnConfig } = {
    idPedido: {
      displayName: 'Id',
      type: 'default',
      showFilter: true,
      visible: true,
    },
    remolque: {
      displayName: 'Remolque',
      type: 'default',
      showFilter: true,
      visible: true,
    }
  };

⚙️ Typescript Configuracion de botones de acción

  tableActions: TableAction[] = [
    {
      name: 'ver',
      title: 'Ver',
      icon: 'visibility',
      tooltip: 'Ver',
      callback: (item) => this.pedidoById(item, 0),
      showCondition: (row) => this.apiServicioClienteService.tienePermiso('EDITAR', 'Clientes') && row.activo,
    },
    {
      name: 'edit',
      title: 'Editar',
      icon: 'mode_edit',
      tooltip: 'Editar',
      callback: (item) => this.pedidoById(item, 1),
      showCondition: (row) => this.apiServicioClienteService.tienePermiso('EDITAR', 'Clientes') && row.activo,
    }
  ];

⚙️ Typescript Configuracion general de tabla

  tableConfigs: TableConfig = {
    pageSizeOptions: [5, 15, 30],
    headerColumFontSize: 5,
    createCallback: () => this.onCreateClick(),
  };

⚙️ Typescript Configuracion ordenamiento

  ParametrosPedidos = new ParametrosGenerales({
    ordenarPor: 'IdPedido',
    descending: true,
  });

🧠 Notas importantes

La librería no incluye estilos por sí sola. Debes agregarlos manualmente como se indica arriba.

Si alguna dependencia te genera conflicto, asegúrate de alinear las versiones según las peerDependencies.

Puedes extender o personalizar los estilos desde styles.css de tu proyecto principal.

Inputs

PropiedadTipoDescripciónValor por defecto
dataany[]Datos a mostrar en la tabla.[]
dataSelectanyDatos para campos de tipo select en la tabla.[]
columnConfigsanyConfiguración de columnas (tipo, filtros, visibilidad).-
withHeaderbooleanMostrar encabezado de la tabla.true
tableConfigsanyConfiguración visual como altura de filas, etc.{}
nombreMenustringNombre del menú o módulo (usado para validaciones de permisos si aplica).''
nombreTablastringTítulo que se muestra sobre la tabla.''
crearRoutestringRuta a la que redirige el botón Crear.''
showCreateButtonbooleanMuestra botón de crear estándar.false
showCreateButtonModalbooleanMuestra botón de crear con modal.false
showExportarButtonbooleanMuestra botón para exportar la tabla a Excel.true
excelFileNamestringNombre con el que se guardará el archivo Excel.''
showCreateButtonDetGralbooleanMuestra botón crear para catálogos generales.false
showRefreshButtonbooleanMuestra botón de refrescar datos.true
showAddButtonbooleanMuestra botón adicional de agregar.false
showConfColumnsButtonbooleanMuestra botón para configurar visibilidad de columnas.true
showFilterInactivosbooleanMuestra switch para incluir registros inactivos.true
actionsTableAction[]Arreglo con botones de acción a renderizar por fila.[]
resaltarSeleccionbooleanEstiliza la fila seleccionada.false
mostrarFiltroGeneralFechasbooleanMuestra filtro general por rango de fechas.false
showSelectAllbooleanHabilita checkbox para seleccionar todas las filas.false
columnsReqMinnumberNúmero mínimo de columnas visibles.3
isReportbooleanModo reporte (puede cambiar estilo o filtros).false
fetchDataFunction(params: HttpParams, extraParam?: any) => ObservableFunción de carga de datos paginada.-
parametrosParametrosGeneralesObjeto que contiene paginación, filtros, ordenamiento, etc.new ParametrosGenerales()
extraParams{ key: string: any }Parámetros adicionales dinámicos para filtros, usuarios, contexto, etc.{}
centerTablebooleanCentrar horizontalmente la tabla.true
tableHeightstringAltura del contenedor de la tabla.'auto'
showGranTotalbooleanMostrar fila con gran total.false
widthColumnstringAncho por defecto para columnas.'20%'

Outputs

EventoTipoDescripción
onSelectAllEventEmitterSe emite al marcar/desmarcar el checkbox de "Seleccionar todos".
cambiarEstatusEventEventEmitterSe emite cuando se cambia el estatus de un registro (ej. activo/inactivo).
createEventEventEmitterSe emite cuando se da clic en el botón Crear.
onCreateEventEmitterAlias de createEvent.
refreshEventEventEmitterSe emite al recargar los datos de la tabla manualmente.
AddEventEventEmitterSe emite al dar clic en el botón adicional de agregar.
enviarItemEventEventEmitterSe emite al seleccionar un ítem (para detalles o acciones).
filtroFechaGeneralEventEventEmitter<(Date | undefined)[]>Se emite cuando se aplica el filtro de rango de fechas general.
changeDataEventEmitterNotifica cambios en los datos o configuración.
filtroFechaReportEventEventEmitter<Date | undefined>Se emite al aplicar filtro de fecha individual (modo reporte).

Author