달력 수정

This commit is contained in:
focp212@naver.com
2025-11-12 17:52:06 +09:00
parent 2e8cdd6773
commit bfcb63681f
2 changed files with 27 additions and 16 deletions

View File

@@ -15,7 +15,7 @@ interface NiceCalendarProps {
endDate?: string;
singleDate?: string;
calendarType: CalendarType;
setNewDate: (date: string) => void;
setNewDate: (date: string, calendarType: CalendarType) => void;
minDate?: Date;
maxDate?: Date;
searchPeriod?: number;
@@ -47,8 +47,28 @@ const NiceCalendar = ({
const [valueDate, setValueDate] = useState<Date | undefined>();
const [minDate, setMinDate] = useState<Date | undefined>();
const [maxDate, setMaxDate] = useState<Date | undefined>();
const [calendarSearchPeriod, setCalendatSearchPeriod] = useState<number>(searchPeriod || 3);
const [calendarPeriodType, setCalendarPeriodType] = useState<'year' | 'month' | 'day'>(periodType || 'month');
const onchangeToDate = (selectedDate: any) => {
setNewDate(moment(selectedDate).format('YYYY.MM.DD'));
if(calendarType === CalendarType.Start){
if(endDate){
let newEndDateLimit = moment(selectedDate).add(calendarSearchPeriod, calendarPeriodType).format('YYYYMMDD');
if(moment(endDate).format('YYYYMMDD') > newEndDateLimit){
setNewDate(moment(newEndDateLimit).format('YYYY.MM.DD'), CalendarType.End);
}
}
}
else if(calendarType === CalendarType.End){
if(startDate){
let newStartDateLimit = moment(selectedDate).subtract(calendarSearchPeriod, calendarPeriodType).format('YYYYMMDD');
if(moment(startDate).format('YYYYMMDD') < newStartDateLimit){
setNewDate(moment(newStartDateLimit).format('YYYY.MM.DD'), CalendarType.Start);
}
}
}
setNewDate(moment(selectedDate).format('YYYY.MM.DD'), calendarType);
setCalendarOpen(false);
};
@@ -57,24 +77,15 @@ const NiceCalendar = ({
};
const setMinMaxValueDate = () => {
if(calendarType === CalendarType.Start){
if(!searchPeriod){
searchPeriod = 3;
}
if(!periodType){
periodType = 'month';
}
if(periodType && searchPeriod && searchPeriod > 0){
setMinDate(propMinDate || moment(endDate, 'YYYY.MM.DD').subtract(searchPeriod, periodType).toDate());
}
// setMinDate(propMinDate || undefined);
setMinDate(propMinDate || undefined);
if(!!endDate){
setMaxDate(moment(endDate, 'YYYY.MM.DD').toDate());
setMaxDate(propMaxDate || moment(endDate, 'YYYY.MM.DD').toDate());
}
setValueDate(startDate ? moment(startDate, 'YYYY.MM.DD').toDate() : undefined);
}
else if(calendarType === CalendarType.End){
if(!!startDate){
setMinDate(moment(startDate, 'YYYY.MM.DD').toDate());
setMinDate(propMinDate || moment(startDate, 'YYYY.MM.DD').toDate());
}
setMaxDate(propMaxDate || new Date());
setValueDate(endDate ? moment(endDate, 'YYYY.MM.DD').toDate() : undefined);

View File

@@ -74,7 +74,7 @@ export const FilterCalendar = ({
}
};
const setNewDate = (date: string) => {
const setNewDate = (date: string, calendarType: CalendarType) => {
if(calendarType === CalendarType.Start){
setStartDate(moment(date, 'YYYY.MM.DD').format('YYYYMMDD'));
setNewStartDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
@@ -84,7 +84,7 @@ export const FilterCalendar = ({
setNewEndDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
}
setCalendarOpen(false);
}
};
useEffect(() => {
if(startDate && startDate.length === 8){