primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ 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) • 7.52 kB
JavaScript
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 i,useUpdateEffect as c,useUnmountEffect as l}from"primereact/hooks";import{OverlayService as a}from"primereact/overlayservice";import{Portal as u}from"primereact/portal";import{ObjectUtils as p,ZIndexUtils as f,classNames as s,DomHandler as m,IconUtils as b}from"primereact/utils";function v(){return v=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},v.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,i,c,l=[],a=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{if(!a&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(u)throw o}}return l}}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 P(e){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},P(e)}function S(e,t){if("object"!==P(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==P(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function E(e){var t=S(e,"string");return"symbol"===P(t)?t:String(t)}function w(e,t,r){return(t=E(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var N={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,children:void 0},getProps:function(e){return p.getMergedProps(e,N.defaultProps)},getOtherProps:function(e){return p.getDiffProps(e,N.defaultProps)}};function C(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 I(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?C(Object(r),!0).forEach((function(t){w(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):C(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=I(I({},e),{visible:void 0===e.visible||e.visible})).visible&&a.emit("confirm-popup",e);return{show:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a.emit("confirm-popup",I(I(I({},e),t),{visible:!0}))},hide:function(){a.emit("confirm-popup",{visible:!1})}}},k=e.memo(e.forwardRef((function(y,d){var g=N.getProps(y),j=h(e.useState(g.visible),2),O=j[0],P=j[1],S=h(e.useState(!1),2),E=S[0],w=S[1],C=e.useRef(null),I=e.useRef(null),x=e.useRef(!1),k=e.useRef(null),A=e.useRef(null),L=function(){return A.current||g},R=function(e){return(A.current||g)[e]},T=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 p.getPropValue(R(e),r)},D=R("acceptLabel")||r("accept"),H=R("rejectLabel")||r("reject"),J=h(i({target:R("target"),overlay:C,listener:function(e,t){t.valid&&("outside"===t.type?g.dismissable&&!x.current&&V("hide"):V("hide")),x.current=!1},when:O}),2),K=J[0],X=J[1],M=function(e){x.current=!0,a.emit("overlay-click",{originalEvent:e,target:R("target")})},_=function(){T("accept"),V("accept")},z=function(){T("reject"),V("reject")},U=function(){P(!0),w(!1),k.current=function(e){!F(e.target)&&(x.current=!0)},a.on("overlay-click",k.current)},V=function(e){P(!1),a.off("overlay-click",k.current),k.current=null,e&&T("onHide",e)},Y=function(){f.set("overlay",C.current,t.autoZIndex,t.zIndex.overlay),B()},Z=function(){K(),I.current&&I.current.focus(),T("onShow")},$=function(){X()},q=function(){f.clear(C.current),x.current=!1},B=function(){if(R("target")){m.absolutePosition(C.current,R("target"));var e=m.getOffset(C.current),t=m.getOffset(R("target")),r=0;e.left<t.left&&(r=t.left-e.left),C.current.style.setProperty("--overlayArrowLeft","".concat(r,"px")),e.top<t.top&&m.addClass(C.current,"p-confirm-popup-flipped")}},F=function(e){return C&&C.current&&!(C.current.isSameNode(e)||C.current.contains(e))},G=function(e){if(e.tagKey===g.tagKey){var t=O!==e.visible;R("target")!==e.target&&!g.target?(V(),A.current=e,w(!0)):t&&(A.current=e,e.visible?U():V())}};e.useEffect((function(){g.visible?U():V()}),[g.visible]),e.useEffect((function(){return g.target||g.message||a.on("confirm-popup",G),function(){a.off("confirm-popup",G)}}),[g.target]),c((function(){E&&U()}),[E]),l((function(){k.current&&(a.off("overlay-click",k.current),k.current=null),a.off("confirm-popup",G),f.clear(C.current)})),e.useImperativeHandle(d,(function(){return{props:g,confirm:G}}));var Q,W,ee,te,re,ne,oe,ie=function(){var t=s("p-confirm-popup-accept p-button-sm",R("acceptClassName")),r=s("p-confirm-popup-reject p-button-sm",{"p-button-text":!R("rejectClassName")},R("rejectClassName")),o=e.createElement("div",{className:"p-confirm-popup-footer"},e.createElement(n,{label:H,icon:R("rejectIcon"),className:r,onClick:z}),e.createElement(n,{ref:I,label:D,icon:R("acceptIcon"),className:t,onClick:_}));if(R("footer")){var i={accept:_,reject:z,className:"p-confirm-popup-footer",acceptClassName:t,rejectClassName:r,acceptLabel:D,rejectLabel:H,element:o,props:L()};return p.getJSXElement(R("footer"),i)}return o},ce=(te=N.getOtherProps(g),re=s("p-confirm-popup p-component",R("className"),{"p-input-filled":"filled"===t.inputStyle,"p-ripple-disabled":!1===t.ripple}),Q=L(),W=p.getJSXElement(R("message"),Q),ee=b.getJSXIcon(R("icon"),{className:"p-confirm-popup-icon"},{props:Q}),ne=e.createElement("div",{className:"p-confirm-popup-content"},ee,e.createElement("span",{className:"p-confirm-popup-message"},W)),oe=ie(),e.createElement(o,{nodeRef:C,classNames:"p-connected-overlay",in:O,timeout:{enter:120,exit:100},options:R("transitionOptions"),unmountOnExit:!0,onEnter:Y,onEntered:Z,onExit:$,onExited:q},e.createElement("div",v({ref:C,id:R("id"),className:re,style:R("style")},te,{onClick:M}),ne,oe)));return e.createElement(u,{element:ce,appendTo:R("appendTo"),visible:R("visible")})})));k.displayName="ConfirmPopup";export{k as ConfirmPopup,x as confirmPopup};