From 0bc9f766d32db58da55b4b5ad22edcaa9d1ca977 Mon Sep 17 00:00:00 2001 From: u8array Date: Thu, 21 May 2026 17:09:36 +0200 Subject: [PATCH] fix(properties): replace default-font-id datalist with a select The text input with list="zpl-default-font-ids" hit a browser datalist quirk: after a datalist suggestion has been picked and the component re-renders (e.g. when a Labelary preview kicks in), Chrome and Firefox keep the previous suggestion bound to the input and the next keystroke gets discarded. The field looked editable but onChange stopped firing. Replaces the input with a real select that lists the same union of font IDs (built-ins + every ^CW alias + every preview binding), plus an explicit "(none)" option for clearing the default. Selects do not carry the autocomplete state that broke the datalist input, so the field stays responsive across re-renders. Drops the now-unused datalist element and adds the new label.defaultFontIdNone locale key across all 32 locales. --- src/components/Properties/PropertiesPanel.tsx | 20 +++++++++---------- src/locales/ar.ts | 1 + src/locales/bg.ts | 1 + src/locales/cs.ts | 1 + src/locales/da.ts | 1 + src/locales/de.ts | 1 + src/locales/el.ts | 1 + src/locales/en.ts | 1 + src/locales/es.ts | 1 + src/locales/et.ts | 1 + src/locales/fa.ts | 1 + src/locales/fi.ts | 1 + src/locales/fr.ts | 1 + src/locales/he.ts | 1 + src/locales/hr.ts | 1 + src/locales/hu.ts | 1 + src/locales/it.ts | 1 + src/locales/ja.ts | 1 + src/locales/ko.ts | 1 + src/locales/lt.ts | 1 + src/locales/lv.ts | 1 + src/locales/nl.ts | 1 + src/locales/no.ts | 1 + src/locales/pl.ts | 1 + src/locales/pt.ts | 1 + src/locales/ro.ts | 1 + src/locales/sk.ts | 1 + src/locales/sl.ts | 1 + src/locales/sr.ts | 1 + src/locales/sv.ts | 1 + src/locales/tr.ts | 1 + src/locales/zh-hans.ts | 1 + src/locales/zh-hant.ts | 1 + 33 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/components/Properties/PropertiesPanel.tsx b/src/components/Properties/PropertiesPanel.tsx index cccdef9f..f483574f 100644 --- a/src/components/Properties/PropertiesPanel.tsx +++ b/src/components/Properties/PropertiesPanel.tsx @@ -769,16 +769,21 @@ function LabelConfigPanel({ - onUpdate({ defaultFontId: e.target.value || undefined }) } - /> + > + + {fontIdOptions.map((opt) => ( + + ))} +
- - {fontIdOptions.map((opt) => ( - ); } diff --git a/src/locales/ar.ts b/src/locales/ar.ts index 12fd90b3..6c5804ac 100644 --- a/src/locales/ar.ts +++ b/src/locales/ar.ts @@ -118,6 +118,7 @@ const ar = { mirror: 'صورة معكوسة', defaultFont: 'نمط النص الافتراضي', defaultFontId: 'الخط', + defaultFontIdNone: '(لا شيء)', defaultFontHeight: 'الارتفاع (نقاط)', defaultFontWidth: 'العرض (dots)', customFontsHeading: 'خطوط مخصصة', diff --git a/src/locales/bg.ts b/src/locales/bg.ts index 77c02658..b8c8637f 100644 --- a/src/locales/bg.ts +++ b/src/locales/bg.ts @@ -118,6 +118,7 @@ const bg = { mirror: 'Огледален образ', defaultFont: 'Стил на текст по подразбиране', defaultFontId: 'Шрифт', + defaultFontIdNone: '(няма)', defaultFontHeight: 'Височина (точки)', defaultFontWidth: 'Ширина (dots)', customFontsHeading: 'Персонализирани шрифтове', diff --git a/src/locales/cs.ts b/src/locales/cs.ts index 87fe8a1e..379ce2b9 100644 --- a/src/locales/cs.ts +++ b/src/locales/cs.ts @@ -118,6 +118,7 @@ const cs = { mirror: 'Zrcadlový obraz', defaultFont: 'Výchozí styl textu', defaultFontId: 'Písmo', + defaultFontIdNone: '(žádné)', defaultFontHeight: 'Výška (body)', defaultFontWidth: 'Šířka (dots)', customFontsHeading: 'Vlastní písma', diff --git a/src/locales/da.ts b/src/locales/da.ts index d6ba9f5b..64d72c28 100644 --- a/src/locales/da.ts +++ b/src/locales/da.ts @@ -118,6 +118,7 @@ const da = { mirror: 'Spejlbillede', defaultFont: 'Standardtekststil', defaultFontId: 'Skrifttype', + defaultFontIdNone: '(ingen)', defaultFontHeight: 'Højde (punkter)', defaultFontWidth: 'Bredde (dots)', customFontsHeading: 'Tilpassede skrifttyper', diff --git a/src/locales/de.ts b/src/locales/de.ts index b58853bf..3d52cdb8 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -118,6 +118,7 @@ const de = { mirror: 'Spiegelbild', defaultFont: 'Standard-Textstil', defaultFontId: 'Schriftart', + defaultFontIdNone: '(keine)', defaultFontHeight: 'Höhe (Punkte)', defaultFontWidth: 'Breite (dots)', customFontsHeading: 'Eigene Schriften', diff --git a/src/locales/el.ts b/src/locales/el.ts index 89c93ea7..d7d23531 100644 --- a/src/locales/el.ts +++ b/src/locales/el.ts @@ -118,6 +118,7 @@ const el = { mirror: 'Καθρεπτική εικόνα', defaultFont: 'Προεπιλεγμένο στυλ κειμένου', defaultFontId: 'Γραμματοσειρά', + defaultFontIdNone: '(κανένα)', defaultFontHeight: 'Ύψος (κουκκίδες)', defaultFontWidth: 'Πλάτος (dots)', customFontsHeading: 'Προσαρμοσμένες γραμματοσειρές', diff --git a/src/locales/en.ts b/src/locales/en.ts index d760ea61..b62362a8 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -118,6 +118,7 @@ const en = { mirror: 'Mirror image', defaultFont: 'Default text style', defaultFontId: 'Font', + defaultFontIdNone: '(none)', defaultFontHeight: 'Height (dots)', defaultFontWidth: 'Width (dots)', customFontsHeading: 'Custom fonts', diff --git a/src/locales/es.ts b/src/locales/es.ts index 0a76c2cd..545a7998 100644 --- a/src/locales/es.ts +++ b/src/locales/es.ts @@ -118,6 +118,7 @@ const es = { mirror: 'Imagen reflejada', defaultFont: 'Estilo de texto predeterminado', defaultFontId: 'Fuente', + defaultFontIdNone: '(ninguna)', defaultFontHeight: 'Altura (puntos)', defaultFontWidth: 'Ancho (dots)', customFontsHeading: 'Fuentes personalizadas', diff --git a/src/locales/et.ts b/src/locales/et.ts index eb8cd0c4..a054938c 100644 --- a/src/locales/et.ts +++ b/src/locales/et.ts @@ -118,6 +118,7 @@ const et = { mirror: 'Peegelpilt', defaultFont: 'Vaikimisi teksti stiil', defaultFontId: 'Font', + defaultFontIdNone: '(puudub)', defaultFontHeight: 'Kõrgus (punktid)', defaultFontWidth: 'Laius (dots)', customFontsHeading: 'Kohandatud fondid', diff --git a/src/locales/fa.ts b/src/locales/fa.ts index 1a027f70..22a64d49 100644 --- a/src/locales/fa.ts +++ b/src/locales/fa.ts @@ -118,6 +118,7 @@ const fa = { mirror: 'تصویر آینه‌ای', defaultFont: 'سبک متن پیش‌فرض', defaultFontId: 'قلم', + defaultFontIdNone: '(هیچ)', defaultFontHeight: 'ارتفاع (نقطه)', defaultFontWidth: 'عرض (dots)', customFontsHeading: 'فونت‌های سفارشی', diff --git a/src/locales/fi.ts b/src/locales/fi.ts index 9e788a07..efc3ea23 100644 --- a/src/locales/fi.ts +++ b/src/locales/fi.ts @@ -118,6 +118,7 @@ const fi = { mirror: 'Peilikuva', defaultFont: 'Oletustekstityyli', defaultFontId: 'Fontti', + defaultFontIdNone: '(ei mitään)', defaultFontHeight: 'Korkeus (pisteet)', defaultFontWidth: 'Leveys (dots)', customFontsHeading: 'Mukautetut fontit', diff --git a/src/locales/fr.ts b/src/locales/fr.ts index 936e6d7f..98105d2e 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -118,6 +118,7 @@ const fr = { mirror: 'Image miroir', defaultFont: 'Style de texte par défaut', defaultFontId: 'Police', + defaultFontIdNone: '(aucune)', defaultFontHeight: 'Hauteur (points)', defaultFontWidth: 'Largeur (dots)', customFontsHeading: 'Polices personnalisées', diff --git a/src/locales/he.ts b/src/locales/he.ts index f9e9d06b..18d47b37 100644 --- a/src/locales/he.ts +++ b/src/locales/he.ts @@ -118,6 +118,7 @@ const he = { mirror: 'תמונת ראי', defaultFont: 'סגנון טקסט ברירת מחדל', defaultFontId: 'גופן', + defaultFontIdNone: '(ללא)', defaultFontHeight: 'גובה (נקודות)', defaultFontWidth: 'רוחב (dots)', customFontsHeading: 'גופנים מותאמים', diff --git a/src/locales/hr.ts b/src/locales/hr.ts index 99d602c6..e5740d9d 100644 --- a/src/locales/hr.ts +++ b/src/locales/hr.ts @@ -118,6 +118,7 @@ const hr = { mirror: 'Zrcalna slika', defaultFont: 'Zadani stil teksta', defaultFontId: 'Font', + defaultFontIdNone: '(nijedan)', defaultFontHeight: 'Visina (točke)', defaultFontWidth: 'Širina (dots)', customFontsHeading: 'Prilagođeni fontovi', diff --git a/src/locales/hu.ts b/src/locales/hu.ts index 273ef35e..4f76d8e9 100644 --- a/src/locales/hu.ts +++ b/src/locales/hu.ts @@ -118,6 +118,7 @@ const hu = { mirror: 'Tükörkép', defaultFont: 'Alapértelmezett szövegstílus', defaultFontId: 'Betűtípus', + defaultFontIdNone: '(nincs)', defaultFontHeight: 'Magasság (pontok)', defaultFontWidth: 'Szélesség (dots)', customFontsHeading: 'Egyéni betűtípusok', diff --git a/src/locales/it.ts b/src/locales/it.ts index 96ebf328..41bbdd64 100644 --- a/src/locales/it.ts +++ b/src/locales/it.ts @@ -118,6 +118,7 @@ const it = { mirror: 'Immagine speculare', defaultFont: 'Stile di testo predefinito', defaultFontId: 'Carattere', + defaultFontIdNone: '(nessuno)', defaultFontHeight: 'Altezza (punti)', defaultFontWidth: 'Larghezza (dots)', customFontsHeading: 'Font personalizzati', diff --git a/src/locales/ja.ts b/src/locales/ja.ts index a67e90be..232b70b4 100644 --- a/src/locales/ja.ts +++ b/src/locales/ja.ts @@ -118,6 +118,7 @@ const ja = { mirror: '鏡像', defaultFont: '既定のテキストスタイル', defaultFontId: 'フォント', + defaultFontIdNone: '(なし)', defaultFontHeight: '高さ (ドット)', defaultFontWidth: '幅 (dots)', customFontsHeading: 'カスタムフォント', diff --git a/src/locales/ko.ts b/src/locales/ko.ts index 646286f4..61a19520 100644 --- a/src/locales/ko.ts +++ b/src/locales/ko.ts @@ -118,6 +118,7 @@ const ko = { mirror: '거울 이미지', defaultFont: '기본 텍스트 스타일', defaultFontId: '글꼴', + defaultFontIdNone: '(없음)', defaultFontHeight: '높이 (도트)', defaultFontWidth: '너비 (dots)', customFontsHeading: '사용자 글꼴', diff --git a/src/locales/lt.ts b/src/locales/lt.ts index 6c829ae8..9b523b4c 100644 --- a/src/locales/lt.ts +++ b/src/locales/lt.ts @@ -118,6 +118,7 @@ const lt = { mirror: 'Veidrodinis vaizdas', defaultFont: 'Numatytasis teksto stilius', defaultFontId: 'Šriftas', + defaultFontIdNone: '(jokio)', defaultFontHeight: 'Aukštis (taškai)', defaultFontWidth: 'Plotis (dots)', customFontsHeading: 'Pasirinktiniai šriftai', diff --git a/src/locales/lv.ts b/src/locales/lv.ts index 70e8e5e2..406db758 100644 --- a/src/locales/lv.ts +++ b/src/locales/lv.ts @@ -118,6 +118,7 @@ const lv = { mirror: 'Spoguļattēls', defaultFont: 'Noklusējuma teksta stils', defaultFontId: 'Fonts', + defaultFontIdNone: '(nav)', defaultFontHeight: 'Augstums (punkti)', defaultFontWidth: 'Platums (dots)', customFontsHeading: 'Pielāgotie fonti', diff --git a/src/locales/nl.ts b/src/locales/nl.ts index 7f5a71b6..33185505 100644 --- a/src/locales/nl.ts +++ b/src/locales/nl.ts @@ -118,6 +118,7 @@ const nl = { mirror: 'Spiegelbeeld', defaultFont: 'Standaard tekststijl', defaultFontId: 'Lettertype', + defaultFontIdNone: '(geen)', defaultFontHeight: 'Hoogte (dots)', defaultFontWidth: 'Breedte (dots)', customFontsHeading: 'Aangepaste lettertypen', diff --git a/src/locales/no.ts b/src/locales/no.ts index 83262d4f..136ed305 100644 --- a/src/locales/no.ts +++ b/src/locales/no.ts @@ -118,6 +118,7 @@ const no = { mirror: 'Speilbilde', defaultFont: 'Standardtekststil', defaultFontId: 'Skrift', + defaultFontIdNone: '(ingen)', defaultFontHeight: 'Høyde (punkter)', defaultFontWidth: 'Bredde (dots)', customFontsHeading: 'Egendefinerte skrifter', diff --git a/src/locales/pl.ts b/src/locales/pl.ts index c7c36c38..ca0dace9 100644 --- a/src/locales/pl.ts +++ b/src/locales/pl.ts @@ -118,6 +118,7 @@ const pl = { mirror: 'Lustrzane odbicie', defaultFont: 'Domyślny styl tekstu', defaultFontId: 'Czcionka', + defaultFontIdNone: '(brak)', defaultFontHeight: 'Wysokość (punkty)', defaultFontWidth: 'Szerokość (dots)', customFontsHeading: 'Niestandardowe czcionki', diff --git a/src/locales/pt.ts b/src/locales/pt.ts index 98b178c1..d144b7e3 100644 --- a/src/locales/pt.ts +++ b/src/locales/pt.ts @@ -118,6 +118,7 @@ const pt = { mirror: 'Imagem espelhada', defaultFont: 'Estilo de texto predefinido', defaultFontId: 'Fonte', + defaultFontIdNone: '(nenhuma)', defaultFontHeight: 'Altura (pontos)', defaultFontWidth: 'Largura (dots)', customFontsHeading: 'Fontes personalizadas', diff --git a/src/locales/ro.ts b/src/locales/ro.ts index 8c885e90..c85e19d0 100644 --- a/src/locales/ro.ts +++ b/src/locales/ro.ts @@ -118,6 +118,7 @@ const ro = { mirror: 'Imagine în oglindă', defaultFont: 'Stil text implicit', defaultFontId: 'Font', + defaultFontIdNone: '(niciuna)', defaultFontHeight: 'Înălțime (puncte)', defaultFontWidth: 'Lățime (dots)', customFontsHeading: 'Fonturi personalizate', diff --git a/src/locales/sk.ts b/src/locales/sk.ts index 20f7f339..c0f5b683 100644 --- a/src/locales/sk.ts +++ b/src/locales/sk.ts @@ -118,6 +118,7 @@ const sk = { mirror: 'Zrkadlový obraz', defaultFont: 'Predvolený štýl textu', defaultFontId: 'Písmo', + defaultFontIdNone: '(žiadne)', defaultFontHeight: 'Výška (body)', defaultFontWidth: 'Šírka (dots)', customFontsHeading: 'Vlastné písma', diff --git a/src/locales/sl.ts b/src/locales/sl.ts index 51cbc744..690b82a1 100644 --- a/src/locales/sl.ts +++ b/src/locales/sl.ts @@ -118,6 +118,7 @@ const sl = { mirror: 'Zrcalna slika', defaultFont: 'Privzeti slog besedila', defaultFontId: 'Pisava', + defaultFontIdNone: '(brez)', defaultFontHeight: 'Višina (točke)', defaultFontWidth: 'Širina (dots)', customFontsHeading: 'Pisave po meri', diff --git a/src/locales/sr.ts b/src/locales/sr.ts index ef4340d6..a123752d 100644 --- a/src/locales/sr.ts +++ b/src/locales/sr.ts @@ -118,6 +118,7 @@ const sr = { mirror: 'Огледална слика', defaultFont: 'Подразумевани стил текста', defaultFontId: 'Фонт', + defaultFontIdNone: '(ниједно)', defaultFontHeight: 'Висина (тачке)', defaultFontWidth: 'Ширина (dots)', customFontsHeading: 'Прилагођени фонтови', diff --git a/src/locales/sv.ts b/src/locales/sv.ts index a993a888..1ba78277 100644 --- a/src/locales/sv.ts +++ b/src/locales/sv.ts @@ -118,6 +118,7 @@ const sv = { mirror: 'Spegelbild', defaultFont: 'Standardtextstil', defaultFontId: 'Typsnitt', + defaultFontIdNone: '(ingen)', defaultFontHeight: 'Höjd (punkter)', defaultFontWidth: 'Bredd (dots)', customFontsHeading: 'Egna typsnitt', diff --git a/src/locales/tr.ts b/src/locales/tr.ts index 8bc73384..97bfd584 100644 --- a/src/locales/tr.ts +++ b/src/locales/tr.ts @@ -118,6 +118,7 @@ const tr = { mirror: 'Ayna görüntüsü', defaultFont: 'Varsayılan metin stili', defaultFontId: 'Yazı tipi', + defaultFontIdNone: '(yok)', defaultFontHeight: 'Yükseklik (nokta)', defaultFontWidth: 'Genişlik (dots)', customFontsHeading: 'Özel yazı tipleri', diff --git a/src/locales/zh-hans.ts b/src/locales/zh-hans.ts index 46609ec0..4fd4146a 100644 --- a/src/locales/zh-hans.ts +++ b/src/locales/zh-hans.ts @@ -118,6 +118,7 @@ const zhHans = { mirror: '镜像', defaultFont: '默认文本样式', defaultFontId: '字体', + defaultFontIdNone: '(无)', defaultFontHeight: '高度 (点)', defaultFontWidth: '宽度 (dots)', customFontsHeading: '自定义字体', diff --git a/src/locales/zh-hant.ts b/src/locales/zh-hant.ts index 49d456c6..469dc221 100644 --- a/src/locales/zh-hant.ts +++ b/src/locales/zh-hant.ts @@ -118,6 +118,7 @@ const zhHant = { mirror: '鏡像', defaultFont: '預設文字樣式', defaultFontId: '字型', + defaultFontIdNone: '(無)', defaultFontHeight: '高度 (點)', defaultFontWidth: '寬度 (dots)', customFontsHeading: '自訂字型',