This commit is contained in:
Luiz Silva 2026-01-29 08:49:40 -03:00
parent 5c587c9232
commit 4fd142ee70
22 changed files with 271 additions and 132 deletions

View file

@ -74,6 +74,7 @@
<script lang="ts">
import { defineComponent, PropType, ref, watch } from "vue";
import type { EliTabelaColunasConfig } from "./colunasStorage";
import type { EliColuna } from "./types-eli-tabela";
type OrigemLista = "visiveis" | "invisiveis";
@ -100,6 +101,10 @@ export default defineComponent({
type: Object as PropType<EliTabelaColunasConfig>,
required: true,
},
colunas: {
type: Array as PropType<Array<EliColuna<any>>>,
required: true,
},
},
emits: {
fechar() {
@ -115,9 +120,18 @@ export default defineComponent({
function sincronizarEstado() {
const todos = props.rotulosColunas;
const invisiveisSet = new Set(props.configInicial.invisiveis ?? []);
const configTemDados =
(props.configInicial.visiveis?.length ?? 0) > 0 ||
(props.configInicial.invisiveis?.length ?? 0) > 0;
const invisiveisPadraoSet = new Set(
props.colunas.filter((c) => c.visivel === false).map((c) => c.rotulo)
);
const invisiveisSet = configTemDados
? new Set(props.configInicial.invisiveis ?? [])
: invisiveisPadraoSet;
// default: todas visíveis
const baseVisiveis = todos.filter((r) => !invisiveisSet.has(r));
// ordenação: aplica ordem salva (visiveis) e adiciona novas ao final
@ -139,7 +153,7 @@ export default defineComponent({
}
watch(
() => [props.aberto, props.rotulosColunas, props.configInicial] as const,
() => [props.aberto, props.rotulosColunas, props.configInicial, props.colunas] as const,
() => {
if (props.aberto) sincronizarEstado();
},