UNPKG

expo-modal-popup

Version:

Modal component for expo react native

58 lines (57 loc) 2.38 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModalProvider = exports.useModal = exports.TypeEnum = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = require("react"); var ModalPopup_1 = require("./ModalPopup"); var TypeEnum_1 = require("./TypeEnum"); var TypeEnum_2 = require("./TypeEnum"); Object.defineProperty(exports, "TypeEnum", { enumerable: true, get: function () { return TypeEnum_2.TypeEnum; } }); var ModalContext = (0, react_1.createContext)({ openModal: function () { } }); var useModal = function () { return (0, react_1.useContext)(ModalContext); }; exports.useModal = useModal; var ModalProvider = function (_a) { var children = _a.children; var _b = (0, react_1.useState)(false), isOpen = _b[0], setIsOpen = _b[1]; var _c = (0, react_1.useState)(""), message = _c[0], setMessage = _c[1]; var _d = (0, react_1.useState)(TypeEnum_1.TypeEnum.error), type = _d[0], setType = _d[1]; /** Opens a global modal for three seconds * @param {string} message - Message to show * @param {string} type - Could be either: 'error|warning|success' */ var openModal = function (message, type) { // I think I might need a reducer because I want it to cause only one rerendering // while (!isOpen); setMessage(message); setType(type); setIsOpen(true); }; (0, react_1.useEffect)(function () { var id = setTimeout(function () { if (isOpen) { setIsOpen(false); } }, 3000); return function () { clearTimeout(id); }; }, [isOpen]); var value = { openModal: openModal, }; return ((0, jsx_runtime_1.jsxs)(ModalContext.Provider, __assign({ value: value }, { children: [(0, jsx_runtime_1.jsx)(ModalPopup_1.ModalPopup, { isOpen: isOpen, setIsOpen: setIsOpen, errorMsg: message, type: type }), children] }))); }; exports.ModalProvider = ModalProvider;