@navinc/base-react-components
Version:
Nav's Pattern Library
34 lines • 1.48 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { createContext, useCallback, useContext, useState } from 'react';
import { RawDialog } from './dialog.js';
const DialogContext = createContext(null);
/**
* @deprecated This component is deprecated and will be removed in a future release. Avoid using it in new code.
*/
export const DialogProvider = ({ children }) => {
const [dialogs, setDialogs] = useState([]);
const createDialog = useCallback((options) => {
const dialog = Object.assign(Object.assign({}, options), { open: true });
setDialogs((dialogs) => [...dialogs, dialog]);
}, [setDialogs]);
const closeDialog = useCallback(() => {
setDialogs((dialogs) => {
dialogs.pop();
return [...dialogs];
});
}, [setDialogs]);
return (_jsxs(DialogContext.Provider, { value: { createDialog, closeDialog, isDialogOpen: !!dialogs.length }, children: [children, dialogs.map((dialog, i) => {
return _jsx(RawDialog, Object.assign({ "data-testid": "dialog:root" }, dialog), i);
})] }));
};
/**
* @deprecated This component is deprecated and will be removed in a future release. Avoid using it in new code.
*/
export const useDialog = () => {
const result = useContext(DialogContext);
if (!result) {
throw new Error('Dialog context is only available inside its provider');
}
return result;
};
//# sourceMappingURL=use-dialog.js.map