UNPKG

@actinc/dls

Version:

Design Language System (DLS) for ACT & Encoura front-end projects.

59 lines 2.67 kB
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); }; import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; /** * Copyright (c) ACT, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { useCallback, useState } from 'react'; import { ConfirmDialog } from "../../components/ConfirmDialog"; import { ConfirmContext } from './confirmContext'; export var ConfirmProvider = function (props) { var children = props.children, _a = props.defaultOptions, defaultOptions = _a === void 0 ? {} : _a; var _b = useState(__assign({}, defaultOptions)), options = _b[0], setOptions = _b[1]; var _c = useState({}), resolveReject = _c[0], setResolveReject = _c[1]; var resolveHandler = resolveReject.resolve; var confirm = useCallback(function (confirmOptions) { if (confirmOptions === void 0) { confirmOptions = {}; } if (resolveHandler) { // There is an existing hook waiting to respond, the user // circumvented the blocking nature of confirms, so we will // auto trigger a default case. resolveHandler(false); } // eslint-disable-next-line promise/avoid-new return new Promise(function (resolve, reject) { setOptions(__assign(__assign({}, options), confirmOptions)); setResolveReject({ reject: reject, resolve: resolve }); }); }, [options, resolveHandler]); var handleClose = useCallback(function () { setResolveReject({}); }, []); var handleCancel = useCallback(function () { if (resolveHandler) { resolveHandler(false); } handleClose(); }, [resolveHandler, handleClose]); var handleConfirm = useCallback(function () { if (resolveHandler) { resolveHandler(true); } handleClose(); }, [resolveHandler, handleClose]); return (_jsxs(_Fragment, { children: [_jsx(ConfirmContext.Provider, { value: confirm, children: children }), _jsx(ConfirmDialog, __assign({ isOpen: resolveHandler !== undefined, onCancel: handleCancel, onClose: handleClose, onConfirm: handleConfirm }, options))] })); }; export default ConfirmProvider; //# sourceMappingURL=confirmProvider.js.map