@zohodesk/dot
Version:
In this Library, we Provide Some Basic Components to Build Your Application
44 lines (40 loc) • 1.02 kB
JavaScript
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;