Show accounting adjust notes on transactions and polish input/lottie boot.
Transaction detail surfaces note text for adjustments; Persian digit input and local Lottie preload are included. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
/** Lottieهای لوکال (`public/lottie`) — پیشدانلود تا مودال/لیست خالی نماند */
|
||||
|
||||
const LOTTIE_FILES = {
|
||||
logoutConfirm: 'lottie/logoutConfirm.json',
|
||||
emptyList: 'lottie/emptyList.json',
|
||||
goldBars: 'lottie/goldBars.json',
|
||||
} as const
|
||||
|
||||
export type LottieAssetKey = keyof typeof LOTTIE_FILES
|
||||
|
||||
const cache = new Map<LottieAssetKey, string>()
|
||||
|
||||
export function lottieSrc(key: LottieAssetKey): string {
|
||||
const base = import.meta.env.BASE_URL || '/'
|
||||
const path = `${base}${LOTTIE_FILES[key]}`
|
||||
return path.replace(/([^:]\/)\/+/g, '$1')
|
||||
}
|
||||
|
||||
export function getLottieData(key: LottieAssetKey): string | undefined {
|
||||
return cache.get(key)
|
||||
}
|
||||
|
||||
export async function preloadLottieAssets(): Promise<void> {
|
||||
const keys = Object.keys(LOTTIE_FILES) as LottieAssetKey[]
|
||||
await Promise.all(
|
||||
keys.map(async (key) => {
|
||||
if (cache.has(key)) return
|
||||
try {
|
||||
const res = await fetch(lottieSrc(key))
|
||||
if (!res.ok) return
|
||||
cache.set(key, await res.text())
|
||||
} catch {
|
||||
/* شبکه/آفلاین — بعداً از src لوکال میخواند */
|
||||
}
|
||||
}),
|
||||
)
|
||||
}
|
||||
@@ -56,19 +56,13 @@ export function parseDecimalInput(
|
||||
return Number(normalized)
|
||||
}
|
||||
|
||||
export function shouldNormalizeInputDigits(options: {
|
||||
export function shouldNormalizeInputDigits(_options?: {
|
||||
isPassword?: boolean
|
||||
type?: string
|
||||
inputmode?: string
|
||||
}): boolean {
|
||||
if (options.isPassword) {
|
||||
return false
|
||||
}
|
||||
if (options.type === 'price' || options.type === 'number') {
|
||||
return true
|
||||
}
|
||||
const mode = String(options.inputmode ?? '').trim().toLowerCase()
|
||||
return mode === 'numeric' || mode === 'decimal' || mode === 'number'
|
||||
// همیشه ارقام فارسی/عربی → انگلیسی (لاگین، گرم، تعداد، مظنه، …)
|
||||
return true
|
||||
}
|
||||
|
||||
/** فیلدهای وزن/مبلغ/عدد اعشاری که باید `/` را ممیز بگیرند */
|
||||
|
||||
Reference in New Issue
Block a user