UNPKG

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) 15.4 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),t=require("primereact/button"),r=require("primereact/componentbase"),i=require("primereact/hooks"),a=require("primereact/icons/minus"),o=require("primereact/icons/plus"),l=require("primereact/ripple"),c=require("primereact/utils");function s(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var u=s(e);function d(){return d=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},d.apply(this,arguments)}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 f(e,n){if("object"!==p(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!==p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}function m(e){var n=f(e,"string");return"symbol"===p(n)?n:String(n)}function b(e,n,t){return(n=m(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function y(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function v(e){if(Array.isArray(e))return y(e)}function h(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function g(e,n){if(e){if("string"==typeof e)return y(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(e,n):void 0}}function w(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function S(e){return v(e)||h(e)||g(e)||w()}function D(e){if(Array.isArray(e))return e}function O(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,a,o,l=[],c=!0,s=!1;try{if(a=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=a.call(t)).done)&&(l.push(r.value),l.length!==n);c=!0);}catch(e){s=!0,i=e}finally{try{if(!c&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(s)throw i}}return l}}function I(){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 x(e,n){return D(e)||O(e,n)||g(e,n)||I()}var N=r.ComponentBase.extend({defaultProps:{__TYPE:"SpeedDial",id:null,model:null,visible:!1,style:null,className:null,direction:"up",transitionDelay:30,type:"linear",radius:0,mask:!1,disabled:!1,hideOnClickOutside:!0,buttonStyle:null,buttonClassName:null,buttonTemplate:null,"aria-label":null,ariaLabelledby:null,maskStyle:null,maskClassName:null,showIcon:null,hideIcon:null,rotateAnimation:!0,onVisibleChange:null,onClick:null,onShow:null,onHide:null,children:void 0},css:{classes:{root:function(e){var n=e.props,t=e.visible;return c.classNames("p-speeddial p-component p-speeddial-".concat(n.type),b(b(b({},"p-speeddial-direction-".concat(n.direction),"circle"!==n.type),"p-speeddial-opened",t),"p-disabled",n.disabled))},button:function(e){var n=e.props;return c.classNames("p-speeddial-button p-button-rounded",{"p-speeddial-rotate":n.rotateAnimation&&!n.hideIcon})},mask:function(e){return c.classNames("p-speeddial-mask",{"p-speeddial-mask-visible":e.visible})},action:function(e){return c.classNames("p-speeddial-action",{"p-disabled":e.disabled})},actionIcon:function(e){return c.classNames("p-speeddial-action-icon",e._icon)},menu:"p-speeddial-list",menuitem:function(e){return c.classNames("p-speeddial-item",{"p-focus":e.active})}},styles:"\n@layer primereact {\n .p-speeddial {\n position: absolute;\n display: flex;\n z-index: 1;\n }\n\n .p-speeddial-list {\n margin: 0;\n padding: 0;\n list-style: none;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: top 0s linear 0.2s;\n pointer-events: none;\n }\n\n .p-speeddial-item {\n transform: scale(0);\n opacity: 0;\n transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, opacity 0.8s;\n will-change: transform;\n }\n\n .p-speeddial-action {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n position: relative;\n overflow: hidden;\n text-decoration: none;\n }\n\n .p-speeddial-circle .p-speeddial-item,\n .p-speeddial-semi-circle .p-speeddial-item,\n .p-speeddial-quarter-circle .p-speeddial-item {\n position: absolute;\n }\n\n .p-speeddial-rotate {\n transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n will-change: transform;\n }\n\n .p-speeddial-mask {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n transition: opacity 250ms cubic-bezier(0.25, 0.8, 0.25, 1);\n }\n\n .p-speeddial-mask-visible {\n pointer-events: none;\n opacity: 1;\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n }\n\n .p-speeddial-opened .p-speeddial-list {\n pointer-events: auto;\n }\n\n .p-speeddial-opened .p-speeddial-item {\n transform: scale(1);\n opacity: 1;\n }\n\n .p-speeddial-opened .p-speeddial-rotate {\n transform: rotate(45deg);\n }\n}\n",inlineStyles:{root:function(e){var n=e.props;return{alignItems:"up"===n.direction||"down"===n.direction?"center":"",justifyContent:"left"===n.direction||"right"===n.direction?"center":"",flexDirection:"up"===n.direction?"column-reverse":"down"===n.direction?"column":"left"===n.direction?"row-reverse":"right"===n.direction?"row":null}},menu:function(e){var n=e.props;return{flexDirection:"up"===n.direction?"column-reverse":"down"===n.direction?"column":"left"===n.direction?"row-reverse":"right"===n.direction?"row":null}}}}});function k(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?k(Object(t),!0).forEach((function(n){b(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var j=u.memo(u.forwardRef((function(e,s){var p=x(u.useState(!1),2),f=p[0],m=p[1],y=x(u.useState(null),2),v=y[0],h=y[1],g=x(u.useState(!1),2),w=g[0],D=g[1],O=x(u.useState(-1),2),I=O[0],k=O[1],j=u.useRef(!1),C=u.useRef(null),P=u.useRef(null),H=i.useMergeProps(),A=u.useContext(n.PrimeReactContext),M=N.getProps(e,A),_=M.onVisibleChange?M.visible:f,q=i.useDisplayOrder("speed-dial",_),R={props:M,state:{visible:_}},U=N.setMetaData(R),T=U.ptm,L=U.cx,z=U.sx;r.useHandleStyle(N.css.styles,U.isUnstyled,{name:"speeddial"}),i.useGlobalOnEscapeKey({callback:function(){G()},when:_&&q,priority:[i.ESC_KEY_HANDLING_PRIORITIES.SPEED_DIAL,q]});var V=x(i.useEventListener({type:"click",listener:function(e){!j.current&&me(e)&&G(),j.current=!1},when:f}),2),J=V[0],K=V[1],X=function(){M.onVisibleChange?M.onVisibleChange(!0):m(!0),M.onShow&&M.onShow()},B=function(){D(!0)},F=function(){D(!1),k(-1)},G=function(){M.onVisibleChange?M.onVisibleChange(!1):m(!1),M.onHide&&M.onHide()},W=function(e){_?G():X(),M.onClick&&M.onClick(e),j.current=!0},Y=function(e,n){n.command&&n.command({originalEvent:e,item:n}),G(),j.current=!0,e.preventDefault()},$=function(e){switch(e.code){case"ArrowDown":ie(e);break;case"ArrowUp":re(e);break;case"ArrowLeft":ae(e);break;case"ArrowRight":oe(e);break;case"Enter":case"NumpadEnter":case"Space":ne(e);break;case"Escape":te();break;case"Home":ce(e);break;case"End":le(e)}},Q=function(e){switch(e.code){case"ArrowDown":case"ArrowLeft":ee(e);break;case"ArrowUp":case"ArrowRight":Z(e);break;case"Escape":te()}},Z=function(e){D(!0),c.DomHandler.focus(P.current),X(),ue(e),e.preventDefault()},ee=function(e){D(!0),c.DomHandler.focus(P.current),X(),se(e),e.preventDefault()},ne=function(e){var n=S(c.DomHandler.find(C.current,'[data-pc-section="menuitem"]')).findIndex((function(e){return e.id===I}));Y(e,M.model[n]),F();var t=c.DomHandler.findSingle(C.current,"button");t&&c.DomHandler.focus(t)},te=function(){G();var e=c.DomHandler.findSingle(C.current,"button");e&&c.DomHandler.focus(e)},re=function(e){var n=M.direction;"up"===n?se(e):"down"===n?ue(e):se(e)},ie=function(e){var n=M.direction;"up"===n?ue(e):"down"===n?se(e):ue(e)},ae=function(e){var n=M.direction;["left","up-right","down-left"].includes(n)?se(e):(["right","up-left","down-right"].includes(n),ue(e))},oe=function(e){var n=M.direction;["left","up-right","down-left"].includes(n)?ue(e):(["right","up-left","down-right"].includes(n),se(e))},le=function(e){e.preventDefault(),k(-1),ue(e,-1)},ce=function(e){e.preventDefault(),k(-1),se(e,-1)},se=function(e){var n=fe((arguments.length>1&&void 0!==arguments[1]?arguments[1]:null)||I);de(n),e.preventDefault()},ue=function(e){var n=pe((arguments.length>1&&void 0!==arguments[1]?arguments[1]:null)||I);de(n),e.preventDefault()},de=function(e){var n=S(c.DomHandler.find(C.current,'[data-pc-section="menuitem"]')).filter((function(e){return!c.DomHandler.hasClass(c.DomHandler.findSingle(e,"a"),"p-disabled")}));n[e]&&k(n[e].getAttribute("id"))},pe=function(e){var n=S(c.DomHandler.find(C.current,'[data-pc-section="menuitem"]')).filter((function(e){return!c.DomHandler.hasClass(c.DomHandler.findSingle(e,"a"),"p-disabled")})),t=-1===e?n[n.length-1].id:e,r=n.findIndex((function(e){return e.getAttribute("id")===t}));return r=-1===e?n.length-1:r-1},fe=function(e){var n=S(c.DomHandler.find(C.current,'[data-pc-section="menuitem"]')).filter((function(e){return!c.DomHandler.hasClass(c.DomHandler.findSingle(e,"a"),"p-disabled")})),t=-1===e?n[0].id:e,r=n.findIndex((function(e){return e.getAttribute("id")===t}));return r=-1===e?0:r+1},me=function(e){return C.current&&!(C.current.isSameNode(e.target)||C.current.contains(e.target))},be=function(e){return(_?e:M.model.length-e-1)*M.transitionDelay},ye=function(e){var n=M.type;if("linear"!==n){var t=M.model.length,r=M.radius||20*t;if("circle"===n){var i=2*Math.PI/t;return{left:"calc(".concat(r*Math.cos(i*e),"px + var(--item-diff-x, 0px))"),top:"calc(".concat(r*Math.sin(i*e),"px + var(--item-diff-y, 0px))")}}if("semi-circle"===n){var a=M.direction,o=Math.PI/(t-1),l="calc(".concat(r*Math.cos(o*e),"px + var(--item-diff-x, 0px))"),c="calc(".concat(r*Math.sin(o*e),"px + var(--item-diff-y, 0px))");if("up"===a)return{left:l,bottom:c};if("down"===a)return{left:l,top:c};if("left"===a)return{right:c,top:l};if("right"===a)return{left:c,top:l}}else if("quarter-circle"===n){var s=M.direction,u=Math.PI/(2*(t-1)),d="calc(".concat(r*Math.cos(u*e),"px + var(--item-diff-x, 0px))"),p="calc(".concat(r*Math.sin(u*e),"px + var(--item-diff-y, 0px))");if("up-left"===s)return{right:d,bottom:p};if("up-right"===s)return{left:d,bottom:p};if("down-left"===s)return{right:p,top:d};if("down-right"===s)return{left:p,top:d}}}return{}},ve=function(e){var n=be(e),t=ye(e);return E({transitionDelay:"".concat(n,"ms")},t)};i.useMountEffect((function(){if("linear"!==M.type){var e=c.DomHandler.findSingle(C.current,".p-speeddial-button"),n=c.DomHandler.findSingle(P.current,".p-speeddial-item");if(e&&n){var t=Math.abs(e.offsetWidth-n.offsetWidth),r=Math.abs(e.offsetHeight-n.offsetHeight);P.current.style.setProperty("--item-diff-x","".concat(t/2,"px")),P.current.style.setProperty("--item-diff-y","".concat(r/2,"px"))}}})),i.useUpdateEffect((function(){return f&&M.hideOnClickOutside&&J(),function(){M.hideOnClickOutside&&K()}}),[f]),u.useImperativeHandle(s,(function(){return{props:M,show:X,hide:G,getElement:function(){return C.current}}}));var he=function(e,n){if(!1===e.visible)return null;var t=e.disabled,r=e.icon,i=e.label,a=e.template,o=e.url,s=e.target,p=e.className,f=e.style,m=c.classNames("p-speeddial-action",{"p-disabled":t}),b=c.classNames("p-speeddial-action-icon",r),y=H({className:L("actionIcon")},T("actionIcon")),h=H({href:o||"#",role:"menuitem",className:c.classNames(p,L("action",{disabled:t})),"aria-label":e.label,style:f,target:s,tabIndex:"-1","data-pr-tooltip":i,onClick:function(n){return Y(n,e)}},T("action")),g=c.IconUtils.getJSXIcon(r,E({},y),{props:M}),w=u.createElement("a",h,g,u.createElement(l.Ripple,null));a&&(w=c.ObjectUtils.getJSXElement(a,e,{onClick:function(n){return Y(n,e)},className:m,iconClassName:b,element:w,props:M,visible:_}));var S,D=H({id:"".concat(v,"_").concat(n),className:L("menuitem",{active:(S="".concat(v,"_").concat(n),I===S)}),style:ve(n),role:"menuitem"},T("menuitem"));return u.createElement("li",d({},D,{key:"".concat(v,"_").concat(n)}),w)},ge=function(){for(var e="",n=0;n<M.model.length;n++)e+="".concat(v,"_").concat(n," ");return e.trim()};u.useEffect((function(){h(M.id||c.UniqueComponentId())}),[M.id]);var we,Se,De,Oe,Ie,xe,Ne,ke,Ee,je=(we=!_&&!!M.showIcon||!M.hideIcon,Se=_&&!!M.hideIcon,De=c.classNames("p-speeddial-button p-button-rounded",{"p-speeddial-rotate":M.rotateAnimation&&!M.hideIcon},M.buttonClassName),Oe=c.classNames(b(b({},"".concat(M.showIcon),!_&&!!M.showIcon||!M.hideIcon),"".concat(M.hideIcon),_&&!!M.hideIcon)),Ie=c.IconUtils.getJSXIcon(we?M.showIcon||u.createElement(o.PlusIcon,null):Se?M.hideIcon||u.createElement(a.MinusIcon,null):null,void 0,{props:M,visible:_}),xe=H({type:"button",style:M.buttonStyle,className:c.classNames(M.buttonClassName,L("button")),icon:Ie,onClick:function(e){return W(e)},disabled:M.disabled,onKeyDown:Q,"aria-label":M["aria-label"],"aria-expanded":_,"aria-haspopup":!0,"aria-controls":ge,"aria-labelledby":M.ariaLabelledby,pt:T("button"),unstyled:M.unstyled,__parentMetadata:{parent:R}}),Ne=u.createElement(t.Button,xe),M.buttonTemplate?c.ObjectUtils.getJSXElement(M.buttonTemplate,{onClick:W,className:De,iconClassName:Oe,element:Ne,props:M,visible:_}):Ne),Ce=(ke=M.model?M.model.map(he):null,Ee=H({ref:P,className:L("menu"),style:z("menu"),role:"menu",tabIndex:"-1",onFocus:B,onKeyDown:$,onBlur:F,"aria-activedescendant":w?-1!==I?I:null:void 0},T("menu")),u.createElement("ul",Ee,ke)),Pe=function(){if(M.mask){var e=H({className:c.classNames(M.maskClassName,L("mask",{visible:_})),style:M.maskStyle},T("mask"));return u.createElement("div",e)}return null}(),He=H({className:c.classNames(M.className,L("root",{visible:_})),style:E(E({},M.style),z("root")),id:v},N.getOtherProps(M),T("root"));return u.createElement(u.Fragment,null,u.createElement("div",d({ref:C},He),je,Ce),Pe)})));j.displayName="SpeedDial",exports.SpeedDial=j;