palabras(menubar): Editar — añade Deshacer / Rehacer

El menú Editar no ofrecía historial. Añadidos Deshacer (api.undo/canUndo) y
Rehacer (api.redo/canRedo) arriba del menú, con separador. Como son acciones
GLOBALES del documento (no necesitan selección), el trigger «Editar» pasa a estar
SIEMPRE habilitado, y son los items element-específicos (mover/copiar/pegar/
eliminar) los que se deshabilitan sin elemento activo. Verificado en Chrome real:
insertar (4->5 bloques) -> Deshacer revierte (->4) -> Rehacer se habilita.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
alpha-0.1-sec-dom
dev 3 months ago
parent f8f94d38f7
commit 3da8bf8004

@ -16,7 +16,7 @@
import type { Snippet } from 'svelte';
import { insertableBlockTypes } from './palabras-block-types';
import { blockSiblingInfo, deleteBlockAndReanchor, insertTypeAtActive } from './palabras-block-actions';
import { ArrowBigUp, ArrowBigDown, Copy, ClipboardPaste, Trash2 } from '$uix/eidos/components/icon';
import { ArrowBigUp, ArrowBigDown, Copy, ClipboardPaste, Trash2, Undo2, Redo2 } from '$uix/eidos/components/icon';
import { Button } from '$uix/eidos/components/button';
import { Breadcrumb } from '$uix/eidos/components/breadcrumb';
import { crumbLabel } from './panel-schema';
@ -183,13 +183,21 @@
</Menubar.Panel>
</Menubar.Menu>
<!-- Editar — active-element reorder + clipboard (subir / bajar / copiar /
pegar). Disabled with no active element, like the element entry. -->
<!-- Editar — document history (deshacer / rehacer, global) + active-element
reorder & clipboard. Always enabled: undo/redo don't need a selection, so
the menu stays reachable; the element-specific items disable without one. -->
<Menubar.Menu value="editar">
<Menubar.Trigger disabled={!loc}
>{ts('#?components.palabras.menu.edit|Editar')}</Menubar.Trigger
>
<Menubar.Trigger>{ts('#?components.palabras.menu.edit|Editar')}</Menubar.Trigger>
<Menubar.Content data-words-external-tool>
<Menubar.Item disabled={!api.canUndo} onSelect={() => api.undo()}>
<Undo2 />
<span>{ts('#?components.palabras.action.undo|Deshacer')}</span>
</Menubar.Item>
<Menubar.Item disabled={!api.canRedo} onSelect={() => api.redo()}>
<Redo2 />
<span>{ts('#?components.palabras.action.redo|Rehacer')}</span>
</Menubar.Item>
<Menubar.Separator />
<Menubar.Item disabled={!canMoveUp} onSelect={() => doMove('up')}>
<ArrowBigUp />
<span>{ts('#?components.palabras.action.move-up|Mover arriba')}</span>
@ -199,16 +207,16 @@
<span>{ts('#?components.palabras.action.move-down|Mover abajo')}</span>
</Menubar.Item>
<Menubar.Separator />
<Menubar.Item onSelect={doCopy}>
<Menubar.Item disabled={!activeEl} onSelect={doCopy}>
<Copy />
<span>{ts('#?components.palabras.action.copy|Copiar')}</span>
</Menubar.Item>
<Menubar.Item onSelect={doPaste}>
<Menubar.Item disabled={!loc} onSelect={doPaste}>
<ClipboardPaste />
<span>{ts('#?components.palabras.action.paste|Pegar')}</span>
</Menubar.Item>
<Menubar.Separator />
<Menubar.Item onSelect={doDelete}>
<Menubar.Item disabled={!loc} onSelect={doDelete}>
<Trash2 />
<span>{ts('#?components.palabras.action.delete|Borrar')}</span>
</Menubar.Item>

Loading…
Cancel
Save

Powered by TurnKey Linux.