diff --git a/apps/business/src/components/AddVariationModal.tsx b/apps/business/src/components/AddVariationModal.tsx index 8ea3d26..3b4c75d 100644 --- a/apps/business/src/components/AddVariationModal.tsx +++ b/apps/business/src/components/AddVariationModal.tsx @@ -13,14 +13,22 @@ interface AddVariationModalProps { open: boolean onClose: () => void onSubmit: (variation: Omit) => void + /** When set, form opens in edit mode with values pre-filled. */ + initial?: Variation | null } const ANIMATION_MS = 220 -export function AddVariationModal({ open, onClose, onSubmit }: AddVariationModalProps) { +function seedCustomValues(values: string[]) { + const trimmed = values.map((value) => value.trim()).filter(Boolean) + return trimmed.length ? trimmed : [''] +} + +export function AddVariationModal({ open, onClose, onSubmit, initial = null }: AddVariationModalProps) { const t = useT() const { locale } = useLocale() const isFa = locale === 'fa' + const isEdit = Boolean(initial) const [mounted, setMounted] = useState(open) const [closing, setClosing] = useState(false) const [type, setType] = useState('color') @@ -41,11 +49,21 @@ export function AddVariationModal({ open, onClose, onSubmit }: AddVariationModal if (open) { setMounted(true) setClosing(false) - setType('color') - setCustomName('') - setSelectedColors([]) - setSelectedSizes([]) - setCustomValues(['']) + if (initial) { + setType(initial.type) + setCustomName(initial.type === 'custom' ? initial.name : '') + setSelectedColors(initial.type === 'color' ? [...initial.values] : []) + setSelectedSizes(initial.type === 'size' ? [...initial.values] : []) + setCustomValues( + initial.type === 'custom' ? seedCustomValues(initial.values) : [''], + ) + } else { + setType('color') + setCustomName('') + setSelectedColors([]) + setSelectedSizes([]) + setCustomValues(['']) + } } else if (mounted) { setClosing(true) const timer = setTimeout(() => { @@ -54,7 +72,7 @@ export function AddVariationModal({ open, onClose, onSubmit }: AddVariationModal }, ANIMATION_MS) return () => clearTimeout(timer) } - }, [open, mounted]) + }, [open, mounted, initial]) useEffect(() => { if (!mounted || closing) return @@ -128,7 +146,7 @@ export function AddVariationModal({ open, onClose, onSubmit }: AddVariationModal onClick={onClose} >
e.stopPropagation()} role="dialog" aria-modal="true" @@ -138,7 +156,7 @@ export function AddVariationModal({ open, onClose, onSubmit }: AddVariationModal >

- {t('categories.variations.addTitle')} + {isEdit ? t('categories.variations.editTitle') : t('categories.variations.addTitle')}