달력 수정
This commit is contained in:
@@ -15,7 +15,7 @@ interface NiceCalendarProps {
|
|||||||
endDate?: string;
|
endDate?: string;
|
||||||
singleDate?: string;
|
singleDate?: string;
|
||||||
calendarType: CalendarType;
|
calendarType: CalendarType;
|
||||||
setNewDate: (date: string) => void;
|
setNewDate: (date: string, calendarType: CalendarType) => void;
|
||||||
minDate?: Date;
|
minDate?: Date;
|
||||||
maxDate?: Date;
|
maxDate?: Date;
|
||||||
searchPeriod?: number;
|
searchPeriod?: number;
|
||||||
@@ -47,8 +47,28 @@ const NiceCalendar = ({
|
|||||||
const [valueDate, setValueDate] = useState<Date | undefined>();
|
const [valueDate, setValueDate] = useState<Date | undefined>();
|
||||||
const [minDate, setMinDate] = useState<Date | undefined>();
|
const [minDate, setMinDate] = useState<Date | undefined>();
|
||||||
const [maxDate, setMaxDate] = 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) => {
|
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);
|
setCalendarOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -57,24 +77,15 @@ const NiceCalendar = ({
|
|||||||
};
|
};
|
||||||
const setMinMaxValueDate = () => {
|
const setMinMaxValueDate = () => {
|
||||||
if(calendarType === CalendarType.Start){
|
if(calendarType === CalendarType.Start){
|
||||||
if(!searchPeriod){
|
setMinDate(propMinDate || undefined);
|
||||||
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);
|
|
||||||
if(!!endDate){
|
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);
|
setValueDate(startDate ? moment(startDate, 'YYYY.MM.DD').toDate() : undefined);
|
||||||
}
|
}
|
||||||
else if(calendarType === CalendarType.End){
|
else if(calendarType === CalendarType.End){
|
||||||
if(!!startDate){
|
if(!!startDate){
|
||||||
setMinDate(moment(startDate, 'YYYY.MM.DD').toDate());
|
setMinDate(propMinDate || moment(startDate, 'YYYY.MM.DD').toDate());
|
||||||
}
|
}
|
||||||
setMaxDate(propMaxDate || new Date());
|
setMaxDate(propMaxDate || new Date());
|
||||||
setValueDate(endDate ? moment(endDate, 'YYYY.MM.DD').toDate() : undefined);
|
setValueDate(endDate ? moment(endDate, 'YYYY.MM.DD').toDate() : undefined);
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export const FilterCalendar = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const setNewDate = (date: string) => {
|
const setNewDate = (date: string, calendarType: CalendarType) => {
|
||||||
if(calendarType === CalendarType.Start){
|
if(calendarType === CalendarType.Start){
|
||||||
setStartDate(moment(date, 'YYYY.MM.DD').format('YYYYMMDD'));
|
setStartDate(moment(date, 'YYYY.MM.DD').format('YYYYMMDD'));
|
||||||
setNewStartDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
|
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'));
|
setNewEndDate(moment(date, 'YYYY.MM.DD').format('YYYY.MM.DD'));
|
||||||
}
|
}
|
||||||
setCalendarOpen(false);
|
setCalendarOpen(false);
|
||||||
}
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(startDate && startDate.length === 8){
|
if(startDate && startDate.length === 8){
|
||||||
|
|||||||
Reference in New Issue
Block a user