diff --git a/frontend/src/pages/StockPage.tsx b/frontend/src/pages/StockPage.tsx index f97bd66..4775b77 100644 --- a/frontend/src/pages/StockPage.tsx +++ b/frontend/src/pages/StockPage.tsx @@ -204,12 +204,8 @@ const StockPage: React.FC = () => { }; /** - * セルを選択する関数. 再度クリックで選択解除 → 修正 + * セルを選択して編集画面 */ - // const handleRowClick = (stock: Stock) => { - // setSelectedRow(prev => (prev?.stockId === stock.stockId ? null : stock)); - // }; - // セルを選択して編集画面 const handleRowClick = (stock: Stock) => { setSelectedRow(stock); // 行選択 setEditStock({ ...stock }); // 編集対象にセット @@ -301,7 +297,6 @@ const StockPage: React.FC = () => { } }; - /** 編集ダイアログを閉じる */ const handleCloseEdit = () => { setIsEditOpen(false); @@ -332,9 +327,9 @@ const StockPage: React.FC = () => { - 食材名 - 数量 - 消費・賞味期限 + 食材名 + 数量 + 消費・賞味期限 @@ -361,9 +356,9 @@ const StockPage: React.FC = () => { onClick={() => handleRowClick(stock)} style={{ backgroundColor: selectedRow?.stockId === stock.stockId ? "yellow" : "white", cursor: "pointer" }} > - {stock.stuffName} - {stock.amount} - {stock.stuffName} + {stock.amount} + {formatDate(stock.expDate)} @@ -375,7 +370,6 @@ const StockPage: React.FC = () => {
- {/* 編集ダイアログ */} @@ -401,7 +395,6 @@ const StockPage: React.FC = () => { e.preventDefault(); } }} - /> { e.preventDefault(); } }} - /> {/* 購入日・消費期限を横並びに */} @@ -532,250 +524,211 @@ const StockPage: React.FC = () => { 在庫リスト - {/* */} - {/* */} - - - {/* 在庫の食材追加ボタン */} - {/* */} - {/* */} - {/* - 食材の追加 - - - - */} - - - 食材の追加 - - - - - + > + {/* 在庫の食材追加ボタン */} + + + 食材の追加 + + + + + - {/* 新規タスク作成ダイアログ */} - - - - - 在庫に食材を追加 - - - - } - label="食材を新規追加" - checked={newStock.newAddition} - onChange={(e) => setNewStock({ ...newStock, newAddition: (e.target as HTMLInputElement).checked })} - /> - - - - - {/*材料カテゴリ選択 */} - - - カテゴリ - - - - {!newStock.newAddition && - 材料名(選択) - - } - - {/* タスクタイトル入力フィールド */} - {newStock.newAddition && setNewStock({ ...newStock, stuffName: e.target.value })} - sx={{ marginBottom: 2 }} - />} - {/* 数量入力フィールド */} - { - const value = e.target.value; - const parsedValue = parseInt(value, 10); // 数値に変換 - if (isNaN(parsedValue) || parsedValue >= 1) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は1以上のみOK - setNewStock({ ...newStock, amount: parsedValue }); // number型で保存 - } - }} - // sx={{ width: "50%" }} - type="number" - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + {/* 新規タスク作成ダイアログ */} + + + + + 在庫に食材を追加 + + + + } + label="食材を新規追加" + checked={newStock.newAddition} + onChange={(e) => setNewStock({ ...newStock, newAddition: (e.target as HTMLInputElement).checked })} + /> + + + + + {/*材料カテゴリ選択 */} + + + カテゴリ + + + + {!newStock.newAddition && + 材料名(選択) + + } + + {/* タスクタイトル入力フィールド */} + {newStock.newAddition && setNewStock({ ...newStock, stuffName: e.target.value })} + sx={{ marginBottom: 2 }} + />} + {/* 数量入力フィールド */} + { + const value = e.target.value; + const parsedValue = parseInt(value, 10); // 数値に変換 + if (isNaN(parsedValue) || parsedValue >= 1) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は1以上のみOK + setNewStock({ ...newStock, amount: parsedValue }); // number型で保存 + } + }} + // sx={{ width: "50%" }} + type="number" + inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + /> + {/* 購入価格入力フィールド */} + { + const value = e.target.value; + const parsedValue = parseInt(value, 10); // 数値に変換 + if (isNaN(parsedValue) || parsedValue >= 0) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は0以上のみOK + setNewStock({ ...newStock, price: parsedValue }); // number型で保存 + } + }} + // sx={{ width: "50%" }} + type="number" + inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + /> + + {/* 購入日・消費期限を横並びに */} + + {/* 購入日入力フィールド */} + + setNewStock({ ...newStock, buyDate: date ? formatDateLocal(date) : '' }) + } + dateFormat="yyyy/MM/dd" + customInput={ + + } + isClearable + //withPortal // ← 他の文字との重なり対策 /> - {/* 購入価格入力フィールド */} - { - const value = e.target.value; - const parsedValue = parseInt(value, 10); // 数値に変換 - if (isNaN(parsedValue) || parsedValue >= 0) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は0以上のみOK - setNewStock({ ...newStock, price: parsedValue }); // number型で保存 - } - }} - // sx={{ width: "50%" }} - type="number" - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + {/* 消費・賞味期限入力フィールド */} + + setNewStock({ ...newStock, expDate: date ? formatDateLocal(date) : '' }) + } + dateFormat="yyyy/MM/dd" + customInput={ + + } + isClearable + //withPortal /> - - {/* 購入日・消費期限を横並びに */} - - {/* 購入日入力フィールド */} - - setNewStock({ ...newStock, buyDate: date ? formatDateLocal(date) : '' }) - } - dateFormat="yyyy/MM/dd" - customInput={ - - } - isClearable - //withPortal // ← 他の文字との重なり対策 - /> - {/* 消費・賞味期限入力フィールド */} - - setNewStock({ ...newStock, expDate: date ? formatDateLocal(date) : '' }) - } - dateFormat="yyyy/MM/dd" - customInput={ - - } - isClearable - //withPortal - /> - - - - - - - - - {/* 在庫の食材編集ボタン(全テーブル共通) - */} - - {/* 在庫の食材削除ボタン (全テーブル共通) - */} - - - - {/* 在庫一覧リスト */} - {/* 乳製品 */} - 乳製品 -
- {StockTable(stocks, ["乳製品"])} -
- - {/* 肉・魚 */} - 魚・肉 -
- {StockTable(stocks, ["魚・肉"])} -
- - {/* 野菜 */} - 野菜 -
- {StockTable(stocks, ["野菜"])} -
- - {/* 調味料 */} - 調味料 -
- {StockTable(stocks, ["調味料"])} -
- - {/* その他 */} - その他 -
- {StockTable(stocks, ["その他"])} -
- {/* フッターの高さと同じくらいに調整 */} + +
+ + + + +
+
+ + {/* 在庫一覧リスト */} + {/* 乳製品 */} + 乳製品 +
+ {StockTable(stocks, ["乳製品"])} +
+ + {/* 肉・魚 */} + 魚・肉 +
+ {StockTable(stocks, ["魚・肉"])} +
+ + {/* 野菜 */} + 野菜 +
+ {StockTable(stocks, ["野菜"])} +
+ + {/* 調味料 */} + 調味料 +
+ {StockTable(stocks, ["調味料"])} +
+ + {/* その他 */} + その他 +
+ {StockTable(stocks, ["その他"])} +
+ {/* フッターの高さと同じくらいに調整 */} ); };