Skip to content

ui 0.8.0: Übersetzungsleiste verschiebbar + andockbar, Werkzeugleiste bricht um - #24

Merged
rrolf merged 2 commits into
mainfrom
feature/translation-controls-drag-slot
Oct 10, 2026
Merged

rrolf merged 2 commits into
mainfrom
feature/translation-controls-drag-slot

Conversation

@rrolf

@rrolf rrolf commented Oct 10, 2026

Copy link
Copy Markdown
Contributor

@basicbar/ui 0.8.0 — Übersetzungsleiste verschiebbar und andockbar, Editor-Werkzeugleiste bricht um.

Anlass: abstimmbar #179 (Mobilansicht). Dort überdeckte die schwebende Leiste „DE · EN · Alle Felder übersetzen“ auf dem Handy Formularinhalte; abstimmbar hatte dafür lokale Behelfe (verschachtelter Provider, zwei CSS-Overrides auf Paket-Markup), die hiermit ins Paket wandern.

Neu

  • Ziehgriff (⋮⋮) an der schwebenden Leiste: verschieben per Maus/Finger, bleibt immer im sichtbaren Bereich (auch wenn die Leiste wächst — Fehlermeldung, „Übersetze…“ — und bei Fenstergrößenänderung), Position pro Browser in localStorage gespeichert. Doppelklick, Pos1 oder Esc setzt zurück; Pfeiltasten verschieben um 16 px (mit Shift 64 px). Abschaltbar mit movable={false}. Standardposition unverändert.
  • <TranslationControlsSlot />: Platzhalter, den eine Seite in ihr Formular setzt. Solange ein Slot gemountet ist und seine media-Query passt (Standard: unter md), rendert der Provider die Leiste dort im Seitenfluss (Portal, ohne Griff/Versatz); sonst schwebt sie wie bisher. Neues Prop slotControlsClassName für die angedockte Variante.
  • Rich-Text-Werkzeugleiste bricht in weitere Zeilen um statt seitlich zu scrollen.
  • DE/EN-Reiter im TranslatableField mit ≥ 24 px Tippfläche (WCAG 2.5.8), Aussehen unverändert.

Kompatibilität

Rückwärtskompatibel; ohne Slot ändert sich für Tools nur: Griff an der Leiste, umbrechende Werkzeugleiste, größere Reiter-Tippfläche. Neuer UI-String "Move translation controls" — die Tools ergänzen die Übersetzung in ihrem Katalog (CHANGELOG nennt den Schlüssel).

Sonstiges

CHANGELOG: ui/v0.7.2 aus [Unreleased] in einen eigenen Abschnitt verschoben, ui/v0.8.0 mit Migrationsschritten.

Geprüft

npm run build + tsc sauber. Im Browser gegen abstimmbar (Dist testweise eingespielt, danach zurückgesetzt): 1280 px (Ziehen, Speichern, Begrenzen, Zurücksetzen, Tastatur, Wachsen am Rand) und 324 px (Andocken im Slot, sonst schwebend mit Griff), hell und dunkel.

Nach dem Merge: Tag ui/v0.8.0 auf den Merge-Commit, Draft-Release veröffentlichen, dann Umstieg in abstimmbar (Slots in Editor, Raum-/Set-Einstellungen, Abschnittstitel, Admin; lokale Behelfe entfernen).

🤖 Generated with Claude Code

rrolf and others added 2 commits October 10, 2026 18:55
…r (0.8.0)

- TranslationFormProvider: drag handle on the floating controls (pointer
  and keyboard, clamped to the viewport, offset persisted in localStorage,
  double-click/Home/Escape reset); `movable` prop to opt out.
- New TranslationControlsSlot: docks the controls into the page flow while
  its media query matches (default below md); `slotControlsClassName`.
- RichTextEditor toolbar wraps instead of scrolling horizontally.
- TranslatableField language tabs get a >=24px hit area.
- CHANGELOG with migration steps, README usage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ctions

- ResizeObserver on the floating controls re-runs the viewport clamp when
  the pill itself changes size (error message, "Translating…").
- First clamp waits until the offset is actually applied.
- Offset via the CSS `translate` property so it composes with Tailwind
  transform utilities in controlsClassName.
- Escape/Home on the handle don't propagate (no closing a dialog).
- A slot whose `media` changes is updated in place instead of re-appended.
- CHANGELOG: ui/v0.7.2 gets its dated section, ui/v0.8.0 dated 2026-10-10;
  README notes slot precedence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rrolf
rrolf merged commit b3e7408 into main Oct 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant