64 lines
1.5 KiB
Vue
64 lines
1.5 KiB
Vue
<template>
|
|
<button
|
|
v-if="dados?.acao"
|
|
type="button"
|
|
class="eli-tabela__celula-link"
|
|
@click.stop.prevent="dados.acao()"
|
|
>
|
|
{{ textoNumero }}
|
|
</button>
|
|
<span v-else>{{ textoNumero }}</span>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { computed, defineComponent, PropType } from "vue"
|
|
import type { TiposTabelaCelulas } from "./tiposTabelaCelulas";
|
|
|
|
export default defineComponent({
|
|
name: "EliTabelaCelulaNumero",
|
|
components: {},
|
|
props: {
|
|
dados: {
|
|
type: Object as PropType<TiposTabelaCelulas["numero"]>,
|
|
},
|
|
},
|
|
setup({ dados }) {
|
|
const textoNumero = computed(() => {
|
|
// Mantemos o comportamento anterior (trocar "." por ","), mas agora suportamos prefixo/sufixo.
|
|
const numero = String(dados?.numero).replace(".", ",");
|
|
const prefixo = dados?.prefixo?.trim();
|
|
const sufixo = dados?.sufixo?.trim();
|
|
|
|
const inicio = prefixo ? `${prefixo} ` : "";
|
|
const fim = sufixo ? ` ${sufixo}` : "";
|
|
|
|
return `${inicio}${numero}${fim}`;
|
|
});
|
|
|
|
return { dados, textoNumero }
|
|
},
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
.eli-tabela__celula-link {
|
|
all: unset;
|
|
display: inline;
|
|
color: #2563eb;
|
|
cursor: pointer;
|
|
text-decoration: underline;
|
|
text-decoration-color: rgba(37, 99, 235, 0.55);
|
|
text-underline-offset: 2px;
|
|
}
|
|
|
|
.eli-tabela__celula-link:hover {
|
|
color: #1d4ed8;
|
|
text-decoration-color: rgba(29, 78, 216, 0.75);
|
|
}
|
|
|
|
.eli-tabela__celula-link:focus-visible {
|
|
outline: 2px solid rgba(37, 99, 235, 0.45);
|
|
outline-offset: 2px;
|
|
border-radius: 4px;
|
|
}
|
|
</style>
|