pzl-react-reusable-components
Version:
48 lines • 1.59 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
/* eslint-disable tsdoc/syntax */
import React, { useState } from 'react';
import { Toast } from './Toast';
/**
* Hook used to show a temporarily `<Toast />`
*
* @param defaultDuration - Default duration
* @param defaultProps - Default props
*
* @category Toast
*/
export function useToast(defaultDuration, defaultProps) {
if (defaultDuration === void 0) { defaultDuration = 5000; }
if (defaultProps === void 0) { defaultProps = {}; }
var _a = useState(null), state = _a[0], setState = _a[1];
var element = state && React.createElement(Toast, __assign({}, state));
/**
* Set message
*
* @param message - Message
* @param duration - Duration in ms (defaults to 5000)
*/
function set(message, duration) {
if (duration === void 0) { duration = defaultDuration; }
var props = __assign({}, defaultProps);
if (typeof message !== 'string')
props = __assign(__assign({}, props), message);
else
props.text = message;
setState(props);
window.setTimeout(function () {
setState(null);
}, duration);
}
return [element, set];
}
//# sourceMappingURL=useToast.js.map