You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
4.8 KiB

7 months ago
<script lang="ts">
7 months ago
import type { MetadataField } from '../../lib';
import FieldValueEditor from './FieldValueEditor.svelte';
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
import type {GlobInstance} from "@/glob/lib";
7 months ago
let {
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
fieldKey, field,
7 months ago
attributes = [],
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
glob,
7 months ago
onKeyChange, onFieldChange,
7 months ago
}: {
fieldKey: string;
field: MetadataField;
7 months ago
attributes?: string[];
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
glob: GlobInstance;
7 months ago
onKeyChange: (newKey: string) => void;
onFieldChange: (field: MetadataField) => void;
} = $props();
7 months ago
let editKey = $state(fieldKey);
let keyError = $state('');
7 months ago
7 months ago
$effect(() => { editKey = fieldKey; });
let asBase = $derived(field as MetadataField & { hidden?: boolean; attrs?: string[] });
let activeAttrs = $derived(asBase.attrs ?? []);
function handleKeyCommit(): void {
7 months ago
const trimmed = editKey.trim();
7 months ago
if (!trimmed) {
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
keyError = glob.t('vcen.editor.mtas.editor.keyEmpty');
editKey = fieldKey;
7 months ago
return;
}
keyError = '';
if (trimmed !== fieldKey) onKeyChange(trimmed);
7 months ago
}
7 months ago
function handleKeydown(e: KeyboardEvent): void {
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
e.stopPropagation();
if (e.key === 'Enter') (e.currentTarget as HTMLInputElement).blur();
7 months ago
if (e.key === 'Escape') { editKey = fieldKey; keyError = ''; (e.currentTarget as HTMLInputElement).blur(); }
7 months ago
}
7 months ago
function update(partial: Partial<MetadataField & { hidden?: boolean; attrs?: string[] }>): void {
onFieldChange({ ...field, ...partial } as MetadataField);
7 months ago
}
7 months ago
function toggleAttr(attr: string): void {
const current = asBase.attrs ?? [];
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
const next = current.includes(attr) ? current.filter(a => a !== attr) : [...current, attr];
7 months ago
update({ attrs: next });
}
7 months ago
</script>
7 months ago
<div class="flex flex-col gap-4 p-4">
7 months ago
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<!-- ── Field key ──────────────────────────────────────────────── -->
7 months ago
<fieldset class="fieldset w-full">
<legend class="fieldset-legend">
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
{glob.t('vcen.editor.mtas.editor.keyLabel')}
7 months ago
</legend>
7 months ago
<input
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
value={editKey}
oninput={(e) => { editKey = (e.currentTarget as HTMLInputElement).value; keyError = ''; }}
onblur={handleKeyCommit}
onkeydown={handleKeydown}
class={['input input-bordered w-full font-mono', keyError ? 'input-error' : ''].join(' ')}
placeholder={glob.t('vcen.editor.mtas.editor.keyPlaceholder')}
7 months ago
/>
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
{#if keyError}
<span class="fieldset-label text-error">{keyError}</span>
{/if}
7 months ago
</fieldset>
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<!-- ── Value editor ───────────────────────────────────────────── -->
<FieldValueEditor {field} {glob} {onFieldChange} />
7 months ago
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<!-- ── Attributes ────────────────────────────────────────────── -->
7 months ago
{#if attributes.length > 0}
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<div class="divider my-0 text-xs text-base-content/30">Atributos</div>
<div class="flex flex-wrap gap-1.5">
{#each attributes as attr (attr)}
{@const active = activeAttrs.includes(attr)}
<button
type="button"
onclick={() => toggleAttr(attr)}
class={[
'badge badge-md cursor-pointer select-none transition-all gap-1',
active
? 'badge-primary'
: 'badge-ghost border border-base-300 hover:border-primary/40',
].join(' ')}
>
{#if active}
<svg class="h-3 w-3" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 6l3 3 5-5"/>
</svg>
{/if}
{attr}
</button>
{/each}
7 months ago
</div>
{/if}
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<!-- ── Hidden toggle ──────────────────────────────────────────── -->
7 months ago
<div class="divider my-0"></div>
feat(mtas): rediseño UI, correcciones de bugs y mejoras de arquitectura Arquitectura / glob+ling: - glob_engine: inicialización lazy de módulos (numr, curr, dati, unit) con ??= - glob_types: añadido método register<NS, M>() para tipado fuerte de namespaces - ling engine: extend() soporta namespaces con punto ('vcen.editor.mtas') via deepMerge - ling guards: isLingRecord reforzado (comprueba typeof value !== 'function' y tipo del locale por defecto) Validación: - ISO_DATETIME_RE acepta HH:mm sin segundos (formato real de datetime-local) Componentes Svelte — correcciones: - App.svelte: corregido paso de prop glob (glob, → {glob}) - AddFieldMenu: añadida prop placement ('start'|'end') para controlar dirección del dropdown - AddFieldMenu: reemplazados glob.t(`...` as any) por helper t() para evitar errores de parser Svelte - FieldValueEditor: grupo muestra cuenta real de hijos en lugar de siempre "Grupo vacío" - FieldRow: tooltip de editar/borrar cambiado a tooltip-top, eliminado overflow-hidden del card - FieldRow: diálogo de confirmación antes de eliminar campo (modal DaisyUI) - TreeNodes: corregido bug summary (group-hover:hidden → group-hover:block), acciones sin flex duplicado - TreeNodes: diálogo de confirmación antes de eliminar (solo en depth=0 para evitar duplicados) Estilos (DaisyUI): - MetadataEditor y MetaTree: border-base-300, shadow-md, bg-base-200/60 en cabeceras - MetaTree: breadcrumb de ruta en panel derecho, texto placeholder via glob.t() - MetaTree: errores de validación con icono, alineados con MetadataEditor - TreeNodes: nodo seleccionado con borde lateral (border-l-2 border-primary) - AddFieldMenu: colores de icono por tipo, layout horizontal agrupado, contraste dropdown - AddFieldDrawer: modal-bottom sm:modal-middle, botones Cancel/X visibles, inputs con text-base-content - TypeBadge: colorMap aplicado correctamente al badge - Traducciones: deleteConfirm, deleteConfirmMsg, deleteYes, deleteNo, tree.selectHint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 months ago
<label class="flex items-center gap-3 cursor-pointer">
<input
type="checkbox"
checked={asBase.hidden ?? false}
onchange={(e) => update({ hidden: (e.currentTarget as HTMLInputElement).checked })}
class="toggle toggle-sm toggle-primary"
/>
<span class="text-sm text-base-content/70">{glob.t('vcen.editor.mtas.editor.hideField')}</span>
</label>
7 months ago
7 months ago
</div>

Powered by TurnKey Linux.