vue-componentes/src/componentes/EliTabela/celulas/registryTabelaCelulas.ts

27 lines
1.3 KiB
TypeScript

import type { Component } from "vue"
import EliTabelaCelulaComponente from "./EliTabelaCelulaComponente.vue"
import EliTabelaCelulaData from "./EliTabelaCelulaData.vue"
import EliTabelaCelulaNumero from "./EliTabelaCelulaNumero.vue"
import EliTabelaCelulaTags from "./EliTabelaCelulaTags.vue"
import EliTabelaCelulaTextoSimples from "./EliTabelaCelulaTextoSimples.vue"
import EliTabelaCelulaTextoTruncado from "./EliTabelaCelulaTextoTruncado.vue"
import type { tipoTabelaCelula } from "./tiposTabelaCelulas"
/**
* Mapa (dispatch table) que associa cada `tipoTabelaCelula` ao seu componente Vue de renderização.
* Usado por `EliTabelaCelula.vue` para resolver dinamicamente qual componente renderizar
* a partir do tipo retornado por `tipoEliColuna.celula(linha)`.
*
* Adicionar um novo tipo de célula requer:
* 1. Criar o componente `EliTabelaCelula<Tipo>.vue`
* 2. Adicionar a chave em `tipoTabelaCelula` (tiposTabelaCelulas.ts)
* 3. Registrar aqui no mapa
*/
export const registryTabelaCelulas = {
textoSimples: EliTabelaCelulaTextoSimples,
textoTruncado: EliTabelaCelulaTextoTruncado,
numero: EliTabelaCelulaNumero,
tags: EliTabelaCelulaTags,
data: EliTabelaCelulaData,
componente: EliTabelaCelulaComponente,
} as const satisfies Record<tipoTabelaCelula, Component>