import OneMonth from "./svgs/oneMonth"; import Realtime from "./svgs/realtime"; import Arrow from "./svgs/arrow"; import { DateRangeEnum } from "@/app/constants/dateRange"; import { useState,useEffect } from "react"; export default function CalenderSelector({ dateString, is_small, onRangeChange, isOpen: controlledOpen, onOpenChange }: { dateString: string, is_ri: boolean, is_small: boolean, onRangeChange?: (start: Date, end: Date) => void, isOpen?: boolean, onOpenChange?: (open: boolean) => void }) { const CUSTOM = -1; // 커스텀(년/월) 선택 표기용 const [internalOpen, setInternalOpen] = useState(false); const isOpen = typeof controlledOpen === 'boolean' ? controlledOpen : internalOpen; const setOpen = (next: boolean) => { if (onOpenChange) onOpenChange(next); else setInternalOpen(next); }; const [selected, setSelected] = useState(DateRangeEnum.ONE_MONTH); const [rangeStart, setRangeStart] = useState(new Date()); const [rangeEnd, setRangeEnd] = useState(new Date()); const [yearInput, setYearInput] = useState(''); const [monthInput, setMonthInput] = useState(''); const [customLabel, setCustomLabel] = useState(''); const [isCustomActive, setIsCustomActive] = useState(false); useEffect(() => { const startDate = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); const endDate = new Date(Date.now()); setRangeStart(startDate); setRangeEnd(endDate); onRangeChange?.(startDate, endDate); const now = new Date(); setYearInput(String(now.getFullYear())); setMonthInput(String(now.getMonth() + 1).padStart(2,'0')); }, []); return ( <>
{ console.log('click'); setOpen(!isOpen); }} >
{selected === DateRangeEnum.ALL ? ( ) : ( )}
{customLabel || ( selected === DateRangeEnum.ONE_MONTH ? '최근 1개월' : selected === DateRangeEnum.ONE_WEEK ? '최근 1주일' : selected === DateRangeEnum.TWO_MONTHS ? '최근 2개월' : selected === DateRangeEnum.THREE_MONTHS ? '최근 3개월' : selected === DateRangeEnum.SIX_MONTHS ? '최근 6개월' : selected === DateRangeEnum.ONE_YEAR ? '최근 1년' : selected === DateRangeEnum.ALL ? '전체' : '' )}
{isOpen && (
setYearInput(e.target.value.replace(/[^0-9]/g,''))} /> { const v = e.target.value.replace(/[^0-9]/g,''); setMonthInput(v); }} />
)}
); }