import { useState } from "react"; import { normalize } from "../lib/normalize"; import { faNum } from "../lib/formatters"; import { useClickOutside } from "./useClickOutside"; import { ConfirmDeleteDialog } from "./ConfirmDeleteDialog"; export interface SpecDrawerProps { specs: string[]; onChange: (specs: string[]) => void; } // کشوی چیپ مشخصه‌های فنی: دکمه‌ی «نوع (N)» → کشو با چیپ‌ها + input برای افزودن export function SpecDrawer({ specs, onChange }: SpecDrawerProps) { const [open, setOpen] = useState(false); const [draft, setDraft] = useState(""); const [pendingRemove, setPendingRemove] = useState(null); const ref = useClickOutside(() => setOpen(false)); const addChip = (val?: string) => { const v = String(val ?? draft).trim(); if (!v) return; if (specs.some((s) => normalize(s) === normalize(v))) return; onChange([...specs, v]); setDraft(""); }; const removeChip = (v: string) => { onChange(specs.filter((s) => s !== v)); }; return (
{open && (
{specs.map((s) => ( {s} ))}
setDraft(e.target.value)} onKeyDown={(e) => { if (e.key === "Escape") setOpen(false); if (e.key === "Enter") { e.preventDefault(); addChip(); } }} />
)} { if (pendingRemove !== null) removeChip(pendingRemove); setPendingRemove(null); }} onCancel={() => setPendingRemove(null)} />
); }