UNPKG

@zohodesk/dot

Version:

In this Library, we Provide Some Basic Components to Build Your Application

44 lines (40 loc) 1.02 kB
import React, { useState, useEffect } from 'react'; import { cancelBubblingEffect } from '@zohodesk/components/es/utils/Common'; import { defaultProps } from "./props/defaultProps"; import { propTypes } from "./props/propTypes"; export default function AutoClose(props) { let { Element, isClose: givenClose, onPortalClose, autoClose, hideTime } = props; let [isClose, setClose] = useState(givenClose); function onClose(e) { cancelBubblingEffect(e); onPortalClose && onPortalClose(); } useEffect(() => { let id; if (autoClose) { id = setTimeout(() => { setClose(true); setTimeout(onClose, 300); // For animation }, hideTime); } return () => { if (autoClose) { clearTimeout(id); } }; }, []); let newProps = Object.assign({}, props, { isClose, onClose }); return /*#__PURE__*/React.createElement(Element, { ...newProps }); } AutoClose.propTypes = propTypes; AutoClose.defaultProps = defaultProps;