parent
615f9bd607
commit
a48247def5
@ -0,0 +1,80 @@ |
|||||||
|
import { Box, TextField } from "@mui/material" |
||||||
|
|
||||||
|
// 日付文字列(時間を含む可能性がある)から日付部分だけを返す
|
||||||
|
const parseDate = ((date: string) => date ? date.substring(0, 10) : '') |
||||||
|
|
||||||
|
// 今日の日付
|
||||||
|
const today = parseDate(new Date().toISOString()); |
||||||
|
|
||||||
|
// 日付文字列で早いほうを返す(空でないものは除く)
|
||||||
|
const validateBuyDate = ((buyDate: string) => { |
||||||
|
// console.log('validateBuyDate:', buyDate)
|
||||||
|
if (!buyDate) { // 購入日が未設定の場合は今日の日付を入れておく
|
||||||
|
return today; |
||||||
|
} |
||||||
|
return parseDate(buyDate); |
||||||
|
}) |
||||||
|
|
||||||
|
// 日付文字列で早いほうを返す(空でないものは除く)
|
||||||
|
const validateExpDate = ((buyDate: string, expDate: string) => { |
||||||
|
// console.log('validateExpDate:', buyDate, expDate)
|
||||||
|
if (!expDate) { // 賞味期限が未設定の場合そのまま未設定にする
|
||||||
|
return ''; |
||||||
|
} |
||||||
|
const buyDateParsed = validateBuyDate(buyDate); |
||||||
|
const expDateParsed = parseDate(expDate); |
||||||
|
// 購入日以降となるようにする
|
||||||
|
return buyDateParsed > expDateParsed ? buyDateParsed : expDateParsed; |
||||||
|
}) |
||||||
|
|
||||||
|
const BuyExpDateSelect = ({ |
||||||
|
newStock, |
||||||
|
setNewStock, |
||||||
|
}: { |
||||||
|
newStock: {buyDate: string, expDate: string}, |
||||||
|
setNewStock: (tobuy: {buyDate: string, expDate: string}) => void, |
||||||
|
}) => { |
||||||
|
|
||||||
|
{/* 購入日・消費期限を横並びに */ } |
||||||
|
return <Box sx={{ display: 'flex', gap: 2, mb: 2 }}> |
||||||
|
{/* 購入日入力フィールド */} |
||||||
|
<TextField |
||||||
|
margin="dense" |
||||||
|
label="購入日" |
||||||
|
type="date" |
||||||
|
fullWidth |
||||||
|
value={validateBuyDate(newStock.buyDate)} |
||||||
|
onChange={(e) => |
||||||
|
setNewStock({ ...newStock, buyDate: e.target.value }) |
||||||
|
} |
||||||
|
InputLabelProps={{ shrink: true }} |
||||||
|
InputProps={{ |
||||||
|
inputProps: { |
||||||
|
max: today, |
||||||
|
} |
||||||
|
}} |
||||||
|
/> |
||||||
|
|
||||||
|
{/* 消費・賞味期限入力フィールド */} |
||||||
|
<TextField |
||||||
|
margin="dense" |
||||||
|
label="消費・賞味期限" |
||||||
|
type="date" |
||||||
|
fullWidth |
||||||
|
value={validateExpDate(newStock.buyDate, newStock.expDate)} |
||||||
|
onChange={(e) => |
||||||
|
setNewStock({ ...newStock, expDate: e.target.value }) |
||||||
|
} |
||||||
|
InputLabelProps={{ shrink: true }} |
||||||
|
InputProps={{ |
||||||
|
inputProps: { |
||||||
|
min: validateBuyDate(newStock.buyDate), |
||||||
|
} |
||||||
|
}} |
||||||
|
/> |
||||||
|
|
||||||
|
</Box> |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default BuyExpDateSelect; |
Loading…
Reference in new issue