Saltar al contenido
EspañolEnglish
Todos los componentes (244)

Comparador de textos

Gestión · DiffViewer · .amset-diff

Qué es y cuándo usarlo

Compara dos textos, uno tras otro o lado a lado: línea a línea y, dentro de las líneas cambiadas, palabra a palabra. Sirve para dos versiones de un texto, de un documento o de un JSON.

Cuándo usarlo

  • Enseñar qué cambió entre dos versiones: una nota, una plantilla, una configuración.
  • layout="split" pone las dos versiones lado a lado; unified (por defecto) las líneas quitadas y añadidas una tras otra.
  • format="json" ordena las claves y sangra los dos textos antes de compararlos, para que solo se vea lo que cambia de verdad.
  • context son las líneas iguales que se dejan a cada lado de un cambio; el resto se pliega en un botón que las abre. null no pliega nada.

Cuándo no

  • Revisar cambios dentro del editor de texto enriquecido: ya tiene su propia revisión.
  • Comparar datos estructurados campo a campo: una tabla de dos columnas.

Teclado: la tabla es una región que se desplaza con las flechas cuando no cabe, y los botones de líneas plegadas son botones normales.

Accesibilidad: la tabla tiene nombre (label, obligatorio). Cada línea cambiada lleva un signo y un texto escondido («Línea añadida»), así que el cambio no depende del color. Los recuentos se anuncian como estado.

Aspecto fino: variables --amset-diff-added y --amset-diff-removed (el tono de cada lado) y --amset-diff-line (el interlineado).

Cómo se ve

4 líneas añadidas3 líneas quitadas
1Línea quitada: Precio: 89 €
1Línea añadida: Precio: 95 €
22Material: plata 925
3Línea quitada: Envío: 3 a 5 días
4Línea quitada: Garantía: 1 año
3Línea añadida: Envío: 24 horas
4Línea añadida: Garantía: 2 años
5Línea añadida: Grabado incluido

<DiffViewer
  label="Cambios en la ficha del anillo"
  before={antes}
  after={despues}
  beforeLabel="Antes"
  afterLabel="Ahora"
  layout="split"
  summary
/>

Props

Se importa con import { DiffViewer } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
afterobligatoriastring—
beforeobligatoriastring—
labelobligatoriastringQue se compara: nombra la tabla para quien usa un lector de pantalla. Obligatorio.
afterLabelstring—
beforeLabelstring—
classNamestringSe une a las clases de la biblioteca, no las sustituye.
contextnumber | nullLineas iguales que se dejan a cada lado de un cambio; el resto se pliega. `null` no pliega nada. Por defecto, 3.
formatDiffFormat`json` ordena las claves y sangra los dos textos antes de compararlos, para que solo se vea lo que cambia de verdad.
layoutDiffLayout`unified` pone las lineas quitadas y las añadidas una tras otra; `split` las pone lado a lado.
lineNumbersbooleanLos numeros de linea. Por defecto, si.
summarybooleanEl recuento de lineas añadidas y quitadas sobre la tabla. Por defecto, si.

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

Mandos

Estas variables CSS son la forma de adaptarlo. Se declaran sobre el selector del componente, no en :root: la hoja las redeclara en la propia regla y una declaración en el mismo elemento gana siempre.

VariablePor defecto
--amset-diff-addedvar(--amset-success)
--amset-diff-removedvar(--amset-error)
--amset-diff-line1.5

Cómo se cambia

.amset-diff {
  --amset-diff-added: ...;
  --amset-diff-removed: ...;
}

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: