From cc5e3ce5f24218f820cfab80ca8da2f25ac3c756 Mon Sep 17 00:00:00 2001 From: adonis Date: Mon, 22 Jun 2026 12:08:47 +0330 Subject: [PATCH] fix price input --- .../configuration/SettingValueField.vue | 39 ++++++++++++++++--- .../menuPages/configuration/settingTypes.ts | 26 +++++++------ 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/pages/menuPages/configuration/SettingValueField.vue b/src/pages/menuPages/configuration/SettingValueField.vue index 05fded4..811a73a 100644 --- a/src/pages/menuPages/configuration/SettingValueField.vue +++ b/src/pages/menuPages/configuration/SettingValueField.vue @@ -32,13 +32,24 @@ + + { +const priceValue = computed(() => { const n = parseFloat(String(props.modelValue || '').replace(/,/g, '')) return Number.isFinite(n) ? n : undefined }) -function onNumberChange(val: number | string | null) { +function onPriceChange(val: number | string | null) { if (val === null || val === undefined || val === '') { emit('update:value', '') return } emit('update:value', String(val)) } + +function normalizePlainNumberInput(value: string): string { + const latin = value.replace(/[۰-۹]/g, (d) => String('۰۱۲۳۴۵۶۷۸۹'.indexOf(d))) + let out = '' + let hasDot = false + for (const ch of latin.replace(/,/g, '')) { + if (ch >= '0' && ch <= '9') out += ch + else if (ch === '.' && !hasDot) { + hasDot = true + out += ch + } + } + return out +} + +function onPlainNumberChange(val: string) { + emit('update:value', normalizePlainNumberInput(val ?? '')) +}