mobile-react-infinite-calendar
Version:
A mobile-optimized infinite scroll calendar component for React
41 lines (40 loc) • 1.94 kB
JavaScript
/**
* 헤더 옵션 처리 훅
* 헤더 관련 설정과 레거시 props 처리
*/
import { useMemo } from 'react';
export function useHeaderOptions({ options = {}, showTodayButton, showDatePicker, height, initialDate }) {
// options 합치기 (레거시 지원)
const mergedOptions = useMemo(() => {
const merged = {
...options,
height: height || options.height,
initialDate: initialDate || options.initialDate
};
return merged;
}, [options, height, initialDate]);
// 헤더 표시 옵션 처리
const headerOptions = useMemo(() => {
var _a, _b, _c, _d, _e, _f, _g;
if (typeof mergedOptions.header === 'boolean') {
return {
show: mergedOptions.header,
monthTitle: mergedOptions.header,
todayButton: mergedOptions.header,
weekDays: mergedOptions.header,
datePicker: mergedOptions.header
};
}
return {
show: ((_a = mergedOptions.header) === null || _a === void 0 ? void 0 : _a.show) !== false,
monthTitle: ((_b = mergedOptions.header) === null || _b === void 0 ? void 0 : _b.monthTitle) !== false,
todayButton: (_d = showTodayButton !== null && showTodayButton !== void 0 ? showTodayButton : (_c = mergedOptions.header) === null || _c === void 0 ? void 0 : _c.todayButton) !== null && _d !== void 0 ? _d : true,
datePicker: (_f = showDatePicker !== null && showDatePicker !== void 0 ? showDatePicker : (_e = mergedOptions.header) === null || _e === void 0 ? void 0 : _e.datePicker) !== null && _f !== void 0 ? _f : true,
weekDays: ((_g = mergedOptions.header) === null || _g === void 0 ? void 0 : _g.weekDays) !== false
};
}, [mergedOptions.header, showTodayButton, showDatePicker]);
return {
mergedOptions,
headerOptions
};
}