From a2582a28e467ac66a364b0aa1cc92bb45962a5b3 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Tue, 16 Dec 2025 10:02:16 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=A0=EC=A7=9C=20=EC=9E=85=EB=A0=A5=20?= =?UTF-8?q?=EC=8B=9C=20=ED=95=98=EB=A3=A8=20=EB=B0=80=EB=A6=AC=EB=8A=94=20?= =?UTF-8?q?=ED=83=80=EC=9E=84=EC=A1=B4=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/webtypes/RepeaterInput.tsx | 32 ++++++---- .../date-input/DateInputComponent.tsx | 61 +++++++++++-------- 2 files changed, 58 insertions(+), 35 deletions(-) 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) && (