UNPKG

nice-ui

Version:

React design system, components, and utilities

50 lines (49 loc) 2.05 kB
"use strict"; 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;