UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 6.64 kB
import*as e from"react";import t,{localeOption as r}from"primereact/api";import{Button as n}from"primereact/button";import{CSSTransition as o}from"primereact/csstransition";import{useOverlayListener as c,useUpdateEffect as i,useUnmountEffect as a}from"primereact/hooks";import{OverlayService as l}from"primereact/overlayservice";import{Portal as u}from"primereact/portal";import{ZIndexUtils as p,ObjectUtils as s,classNames as f,DomHandler as m,IconUtils as v}from"primereact/utils";function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},b.apply(this,arguments)}function y(e){if(Array.isArray(e))return e}function d(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,c=[],i=!0,a=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(c.push(n.value),!t||c.length!==t);i=!0);}catch(e){a=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(a)throw o}}return c}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function j(e,t){if(e){if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?g(e,t):void 0}}function O(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){return y(e)||d(e,t)||j(e,t)||O()}function E(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function w(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?N(Object(r),!0).forEach((function(t){E(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):N(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=w(w({},e),{visible:void 0===e.visible||e.visible})).visible&&l.emit("confirm-popup",e);var t=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};l.emit("confirm-popup",w(w(w({},e),t),{visible:!0}))},r=function(){l.emit("confirm-popup",{visible:!1})};return{show:t,hide:r}},S=e.memo(e.forwardRef((function(y,d){var g=h(e.useState(y.visible),2),j=g[0],O=g[1],E=h(e.useState(!1),2),N=E[0],w=E[1],P=e.useRef(null),C=e.useRef(null),I=e.useRef(!1),x=e.useRef(null),k=e.useRef(null),A=function(){return k.current||y},L=function(e){return(k.current||y)[e]},R=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return s.getPropValue(L(e),r)},D=L("acceptLabel")||r("accept"),T=L("rejectLabel")||r("reject"),K=h(c({target:L("target"),overlay:P,listener:function(e,t){t.valid&&("outside"===t.type?y.dismissable&&!I.current&&U():U()),I.current=!1},when:j}),2),H=K[0],J=K[1],X=function(e){I.current=!0,l.emit("overlay-click",{originalEvent:e,target:L("target")})},_=function(){R("accept"),U("accept")},z=function(){R("reject"),U("reject")},M=function(){O(!0),w(!1),x.current=function(e){!B(e.target)&&(I.current=!0)},l.on("overlay-click",x.current)},U=function(e){O(!1),l.off("overlay-click",x.current),x.current=null,e&&R("onHide",e)},V=function(){p.set("overlay",P.current,t.autoZIndex,t.zIndex.overlay),q()},Y=function(){H(),C.current&&C.current.focus(),R("onShow")},Z=function(){J()},$=function(){p.clear(P.current),I.current=!1},q=function(){if(L("target")){m.absolutePosition(P.current,L("target"));var e=m.getOffset(P.current),t=m.getOffset(L("target")),r=0;e.left<t.left&&(r=t.left-e.left),P.current.style.setProperty("--overlayArrowLeft","".concat(r,"px")),e.top<t.top&&m.addClass(P.current,"p-confirm-popup-flipped")}},B=function(e){return P&&P.current&&!(P.current.isSameNode(e)||P.current.contains(e))},F=function(e){if(e.tagKey===y.tagKey){var t=j!==e.visible;L("target")!==e.target&&!y.target?(U(),k.current=e,w(!0)):t&&(k.current=e,e.visible?M():U())}};e.useEffect((function(){y.visible?M():U()}),[y.visible]),e.useEffect((function(){return y.target||y.message||l.on("confirm-popup",F),function(){l.off("confirm-popup",F)}}),[y.target]),i((function(){N&&M()}),[N]),a((function(){x.current&&(l.off("overlay-click",x.current),x.current=null),l.off("confirm-popup",F),p.clear(P.current)})),e.useImperativeHandle(d,(function(){return{props:y,confirm:F}}));var G,Q,W,ee,te,re,ne,oe=function(){var t=f("p-confirm-popup-accept p-button-sm",L("acceptClassName")),r=f("p-confirm-popup-reject p-button-sm",{"p-button-text":!L("rejectClassName")},L("rejectClassName")),o=e.createElement("div",{className:"p-confirm-popup-footer"},e.createElement(n,{label:T,icon:L("rejectIcon"),className:r,onClick:z}),e.createElement(n,{ref:C,label:D,icon:L("acceptIcon"),className:t,onClick:_}));if(L("footer")){var c={accept:_,reject:z,className:"p-confirm-popup-footer",acceptClassName:t,rejectClassName:r,acceptLabel:D,rejectLabel:T,element:o,props:A()};return s.getJSXElement(L("footer"),c)}return o},ce=(ee=s.findDiffKeys(y,S.defaultProps),te=f("p-confirm-popup p-component",L("className")),G=A(),Q=s.getJSXElement(L("message"),G),W=v.getJSXIcon(L("icon"),{className:"p-confirm-popup-icon"},{props:G}),re=e.createElement("div",{className:"p-confirm-popup-content"},W,e.createElement("span",{className:"p-confirm-popup-message"},Q)),ne=oe(),e.createElement(o,{nodeRef:P,classNames:"p-connected-overlay",in:j,timeout:{enter:120,exit:100},options:L("transitionOptions"),unmountOnExit:!0,onEnter:V,onEntered:Y,onExit:Z,onExited:$},e.createElement("div",b({ref:P,id:L("id"),className:te,style:L("style")},ee,{onClick:X}),re,ne)));return e.createElement(u,{element:ce,appendTo:L("appendTo"),visible:L("visible")})})));S.displayName="ConfirmPopup",S.defaultProps={__TYPE:"ConfirmPopup",tagKey:void 0,target:null,visible:!1,message:null,rejectLabel:null,acceptLabel:null,icon:null,rejectIcon:null,acceptIcon:null,rejectClassName:null,acceptClassName:null,className:null,style:null,appendTo:null,dismissable:!0,footer:null,onShow:null,onHide:null,accept:null,reject:null,transitionOptions:null};export{S as ConfirmPopup,P as confirmPopup};