diff --git a/frontend/components/webtypes/RepeaterInput.tsx b/frontend/components/webtypes/RepeaterInput.tsx index 0b5a1328..1595036b 100644 --- a/frontend/components/webtypes/RepeaterInput.tsx +++ b/frontend/components/webtypes/RepeaterInput.tsx @@ -182,7 +182,8 @@ export const RepeaterInput: React.FC = ({ // ํ•ญ๋ชฉ ์ œ๊ฑฐ const handleRemoveItem = (index: number) => { - if (items.length <= minItems) { + // ๐Ÿ†• minItems๊ฐ€ 0์ด๋ฉด ๋ชจ๋“  ํ•ญ๋ชฉ ์‚ญ์ œ ๊ฐ€๋Šฅ, ๊ทธ ์™ธ์—๋Š” minItems ์ดํ•˜๋กœ ์ค„์ผ ์ˆ˜ ์—†์Œ + if (minItems > 0 && items.length <= minItems) { return; } @@ -518,17 +519,26 @@ export const RepeaterInput: React.FC = ({ ); case "date": { - // ๋‚ ์งœ ๊ฐ’ ์ •๊ทœํ™”: ISO ํ˜•์‹์ด๋ฉด YYYY-MM-DD๋กœ ๋ณ€ํ™˜ + // ๋‚ ์งœ ๊ฐ’ ์ •๊ทœํ™”: ISO ํ˜•์‹์ด๋ฉด YYYY-MM-DD๋กœ ๋ณ€ํ™˜ (ํƒ€์ž„์กด ์ด์Šˆ ํ•ด๊ฒฐ) let dateValue = value || ""; if (dateValue && typeof dateValue === "string") { - // ISO ํ˜•์‹(YYYY-MM-DDTHH:mm:ss)์ด๋ฉด ๋‚ ์งœ ๋ถ€๋ถ„๋งŒ ์ถ”์ถœ + // ISO ํ˜•์‹(YYYY-MM-DDTHH:mm:ss)์ด๋ฉด ๋กœ์ปฌ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‚ ์งœ ์ถ”์ถœ if (dateValue.includes("T")) { - dateValue = dateValue.split("T")[0]; - } - // ์œ ํšจํ•œ ๋‚ ์งœ์ธ์ง€ ํ™•์ธ - const parsedDate = new Date(dateValue); - if (isNaN(parsedDate.getTime())) { - dateValue = ""; // ์œ ํšจํ•˜์ง€ ์•Š์€ ๋‚ ์งœ๋ฉด ๋นˆ ๊ฐ’ + const date = new Date(dateValue); + if (!isNaN(date.getTime())) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + dateValue = `${year}-${month}-${day}`; + } else { + dateValue = ""; + } + } else { + // ์œ ํšจํ•œ ๋‚ ์งœ์ธ์ง€ ํ™•์ธ + const parsedDate = new Date(dateValue); + if (isNaN(parsedDate.getTime())) { + dateValue = ""; // ์œ ํšจํ•˜์ง€ ์•Š์€ ๋‚ ์งœ๋ฉด ๋นˆ ๊ฐ’ + } } } return ( @@ -801,7 +811,7 @@ export const RepeaterInput: React.FC = ({ {/* ์‚ญ์ œ ๋ฒ„ํŠผ */} - {!readonly && !disabled && items.length > minItems && ( + {!readonly && !disabled && (minItems === 0 || items.length > minItems) && (