diff --git a/src/Components/DatePicker.tsx b/src/Components/DatePicker.tsx index acadaff..c9473fe 100644 --- a/src/Components/DatePicker.tsx +++ b/src/Components/DatePicker.tsx @@ -4,6 +4,7 @@ import { IOptions } from "../Options" import defaultOptions from "../Options" import DatePickerPopup from "./DatePickerPopup" import DatePickerProvider, { DatePickerContext } from "./DatePickerProvider" +import { useCombinedRef } from "../hooks/useCombinedRefs" export interface IDatePickerProps { value?: Date @@ -31,6 +32,7 @@ const DatePickerMain = ({ value, options: customOptions, children }: { value?: D const { setShow, show } = useContext(DatePickerContext) const InputRef = useRef(null) const DatePickerRef = useRef(null) + const combinedInputRef = useCombinedRef(options?.inputRef || null, InputRef) useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -57,7 +59,7 @@ const DatePickerMain = ({ value, options: customOptions, children }: { value?: D } const options: IOptions = { diff --git a/src/hooks/useCombinedRefs.ts b/src/hooks/useCombinedRefs.ts new file mode 100644 index 0000000..4b616f0 --- /dev/null +++ b/src/hooks/useCombinedRefs.ts @@ -0,0 +1,16 @@ +import { MutableRefObject, RefCallback, useCallback } from "react"; + +type RefType = MutableRefObject | RefCallback | null; + +export function useCombinedRef(...refs: RefType[]): RefCallback { + return useCallback(instance => { + refs.forEach(ref => { + if (ref instanceof Function) { + ref(instance); + } + else if (ref) { + ref.current = instance; + } + }); + }, [...refs]); +} \ No newline at end of file