nice-ui
Version:
React design system, components, and utilities
50 lines (49 loc) • 2.05 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.UseAlert = exports.useDeleteAlert = exports.useAlert = exports.AlertProvider = exports.context = void 0;
const React = require("react");
const use_t_1 = require("use-t");
const ModalAlert_1 = require("./ModalAlert");
exports.context = React.createContext({ alert: () => { } });
let counter = 0;
const AlertProvider = ({ children }) => {
const [alerts, setAlerts] = React.useState([]);
const value = React.useMemo(() => {
const alert = (msg, { showCloseButton, ...props } = {}) => {
const id = counter++;
const onClose = () => {
setAlerts((alerts) => alerts.filter((item) => item.id !== id));
};
const element = (React.createElement(ModalAlert_1.ModalAlert, { ...props, key: id, onOk: (event) => {
onClose();
if (props.onOk)
props.onOk(event);
}, onEsc: onClose, onOutsideClick: onClose, onCloseClick: showCloseButton ? onClose : undefined }, msg));
setAlerts((alerts) => [...alerts, { id, element }]);
};
return { alert };
}, []);
return (React.createElement(exports.context.Provider, { value: value },
children,
alerts.map(({ element }) => element)));
};
exports.AlertProvider = AlertProvider;
const useAlert = () => React.useContext(exports.context).alert;
exports.useAlert = useAlert;
const useDeleteAlert = () => {
const [t] = (0, use_t_1.useT)();
const alert = (0, exports.useAlert)();
return (msg, options = {}) => {
alert(msg, {
title: options.title ?? t('Delete'),
button: options.button ?? t('DELETE FOREVER'),
color: 'rgba(222, 44, 33, .8)',
raise: true,
showCloseButton: true,
...options,
});
};
};
exports.useDeleteAlert = useDeleteAlert;
const UseAlert = ({ children }) => children((0, exports.useAlert)());
exports.UseAlert = UseAlert;
;