From 84ae939d73e1eaa8bc98ff8f49962139a23fc4f3 Mon Sep 17 00:00:00 2001 From: Akira Date: Sun, 1 Mar 2026 17:16:08 +0900 Subject: [PATCH] =?UTF-8?q?=E6=96=BD=E8=82=A5=E6=A9=9F=E8=83=BD=E3=81=AE?= =?UTF-8?q?=20confirm()=20=E3=82=92=E3=81=99=E3=81=B9=E3=81=A6=E9=99=A4?= =?UTF-8?q?=E5=8E=BB=E3=81=97=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=90=E3=83=8A?= =?UTF-8?q?=E3=83=BC=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ブラウザが confirm() をブロックすると何も起きず原因不明になる問題を修正。 confirm() を除去し、失敗時はインラインエラーバナーで理由を表示する。 - masters: 肥料削除失敗 → バナー表示 - page: 計画削除失敗 → バナー表示 - FertilizerEditPage: 肥料除去はローカル操作のため confirm だけ除去 Co-Authored-By: Claude Sonnet 4.6 --- .../fertilizer/_components/FertilizerEditPage.tsx | 1 - frontend/src/app/fertilizer/masters/page.tsx | 1 - frontend/src/app/fertilizer/page.tsx | 13 +++++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/fertilizer/_components/FertilizerEditPage.tsx b/frontend/src/app/fertilizer/_components/FertilizerEditPage.tsx index 5f95e5a..1701ef9 100644 --- a/frontend/src/app/fertilizer/_components/FertilizerEditPage.tsx +++ b/frontend/src/app/fertilizer/_components/FertilizerEditPage.tsx @@ -143,7 +143,6 @@ export default function FertilizerEditPage({ planId }: { planId?: number }) { }; const removeFertilizer = (id: number) => { - if (!confirm('この肥料を計画から削除しますか?')) return; setPlanFertilizers((prev) => prev.filter((f) => f.id !== id)); setCalcSettings((prev) => prev.filter((s) => s.fertilizer_id !== id)); const dropCol = (m: Matrix): Matrix => { diff --git a/frontend/src/app/fertilizer/masters/page.tsx b/frontend/src/app/fertilizer/masters/page.tsx index f8e5f78..6ba10b6 100644 --- a/frontend/src/app/fertilizer/masters/page.tsx +++ b/frontend/src/app/fertilizer/masters/page.tsx @@ -94,7 +94,6 @@ export default function FertilizerMastersPage() { }; const handleDelete = async (id: number, name: string) => { - if (!confirm(`「${name}」を削除しますか?`)) return; setDeleteError(null); try { await api.delete(`/fertilizer/fertilizers/${id}/`); diff --git a/frontend/src/app/fertilizer/page.tsx b/frontend/src/app/fertilizer/page.tsx index 7e98a63..14a4082 100644 --- a/frontend/src/app/fertilizer/page.tsx +++ b/frontend/src/app/fertilizer/page.tsx @@ -20,6 +20,7 @@ export default function FertilizerPage() { }); const [plans, setPlans] = useState([]); const [loading, setLoading] = useState(true); + const [deleteError, setDeleteError] = useState(null); useEffect(() => { localStorage.setItem('fertilizerYear', String(year)); @@ -39,13 +40,13 @@ export default function FertilizerPage() { }; const handleDelete = async (id: number, name: string) => { - if (!confirm(`「${name}」を削除しますか?`)) return; + setDeleteError(null); try { await api.delete(`/fertilizer/plans/${id}/`); await fetchPlans(); } catch (e) { console.error(e); - alert('削除に失敗しました'); + setDeleteError(`「${name}」の削除に失敗しました`); } }; @@ -106,6 +107,14 @@ export default function FertilizerPage() { + {deleteError && ( +
+ + {deleteError} + +
+ )} + {loading ? (

読み込み中...

) : plans.length === 0 ? (