reactjs - Închiderea manuală a calendarului primereact
Folosesc primereact versiunea 6.2.1. În timp ce folosesc calendarul din primereact am activat opțiunea pentru showTime. Aceasta afișează un selectator de dată cu un overlay care blochează restul paginii web. Totul funcționează bine. Cu excepția faptului că după ce o dată și o oră sunt selectate, singura modalitate de a închide selectatorul de dată este să dai clic în altă parte pe browser. Există o modalitate de a-l închide manual?
Răspuns #1
import React, { useRef } from 'react';
import { Calendar } from 'primereact/calendar';
const CustomCalendar = (props) => {
const cal = useRef(null);
const handleClose = () => {
cal.current.hideOverlay()
// if you're using touchUI option you have to hade it also ;)
cal.current.touchUIMask.style.display = "none";
};
return <Calendar
ref={cal}
{...props}
footerTemplate={(e) => <div className='footer-calendar'><button onClick={handleClose}>Done</button></div>}
/>
}
Poți închide suprapunerea manual folosind ref, poți verifica acest link sandbox
verifică linkul GitHub pentru mai multe opțiuni: https://github.com/melloware/primereact/blob/8e459797ee6a74766b195274979eb84a9b2282f0/components/lib/calendar/Calendar.d.ts#L154
Pentru mai multe detalii, puteți verifica documentația din acest articol Din documentație: https://primereact.org/calendar/#api.Calendar.props.hideOnDateTimeSelect
Răspunsul #2
Dacă obții o referință la Calendar, poți apela calendarRef.current.hideOverlay();
Am deschis de asemenea acest tichet: https://github.com/primefaces/primereact/issues/2685
Am trimis acest PR: https://github.com/primefaces/primereact/pull/2687
