UNPKG

redux-modal-manager

Version:

A custom libary base on redux-modal with fix bug when close modal

2 lines (1 loc) 1.43 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("react-redux");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},o.apply(this,arguments)}function a(e){return r=>{r({type:"@redux-modal-manager/HIDE",name:e})}}const u={"@redux-modal-manager/SHOW":(e,r)=>({...e,[r.name]:{show:!0,props:r.props}}),"@redux-modal-manager/HIDE":(e,r)=>({...e,[r.name]:{show:!1,props:{}}}),"@redux-modal-manager/HIDE_ALL":e=>{const r={};return Object.keys(e).forEach((e=>{r[e]={show:!1,props:{}}})),r}},s={};exports.connectModal=({name:t,getModalState:u=(e=>e.modal)})=>s=>c=>{const[p,l]=e.useState(!1),d=r.useDispatch(),i=e.useRef(null),m=r.useSelector(u),f=m&&m[t]&&m[t].show,h=m&&m[t]&&m[t].props||{};e.useEffect((()=>{if(f)return clearTimeout(i.current),l(f);i.current=setTimeout((()=>{l(!1)}),500)}),[f]);return p?n.default.createElement(s,o({},c,h,{handleHide:()=>{d(a(t))},show:f})):null},exports.hide=a,exports.hideAll=function(){return e=>{e({type:"@redux-modal-manager/HIDE_ALL"})}},exports.reducer=function(e=s,r){const t=u[r.type];return t?t(e,r):e},exports.show=function(e,r={}){return t=>{t({type:"@redux-modal-manager/SHOW",name:e,props:r})}};