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) 5.84 kB
import*as e from"react";import n from"primereact/api";import{Button as t}from"primereact/button";import{useOverlayListener as o,useMountEffect as l,useUnmountEffect as r}from"primereact/hooks";import{OverlayService as a}from"primereact/overlayservice";import{Tooltip as i}from"primereact/tooltip";import{classNames as u,IconUtils as m,ObjectUtils as s,UniqueComponentId as p,ZIndexUtils as c,DomHandler as d}from"primereact/utils";import{CSSTransition as f}from"primereact/csstransition";import{Portal as b}from"primereact/portal";function y(){return y=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},y.apply(this,arguments)}function v(e){if(Array.isArray(e))return e}function E(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var o,l,r=[],a=!0,i=!1;try{for(t=t.call(e);!(a=(o=t.next()).done)&&(r.push(o.value),!n||r.length!==n);a=!0);}catch(e){i=!0,l=e}finally{try{a||null==t.return||t.return()}finally{if(i)throw l}}return r}}function g(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=new Array(n);t<n;t++)o[t]=e[t];return o}function N(e,n){if(e){if("string"==typeof e)return g(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)?g(e,n):void 0}}function h(){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 C(e,n){return v(e)||E(e,n)||N(e,n)||h()}var I=e.memo((function(n){var t=function(e){n.menuitem.command&&n.menuitem.command({originalEvent:e,item:n.menuitem}),n.onItemClick&&n.onItemClick(e),e.preventDefault()},o=function(){if(!1===n.menuitem.visible)return null;var o=n.menuitem,l=o.icon,r=o.label,a=o.template,i=o.url,p=o.target,c=u("p-menuitem-link",{"p-disabled":o.disabled}),d=u("p-menuitem-icon",l),f=m.getJSXIcon(l,{className:"p-menuitem-icon"},{props:n.splitButtonProps}),b=e.createElement("a",{href:i||"#",role:"menuitem",className:c,target:p,onClick:t,"aria-label":r},f,r&&e.createElement("span",{className:"p-menuitem-text"},r));a&&(b=s.getJSXElement(a,n.menuitem,{onClick:t,className:c,labelClassName:"p-menuitem-text",iconClassName:d,element:b,props:n}));return e.createElement("li",{className:"p-menuitem",role:"none"},b)};return n.menuitem.separator?e.createElement("li",{className:"p-menu-separator",role:"separator"}):o()}));I.displayName="SplitButtonItem";var S=e.forwardRef((function(n,t){var o,l=(o=u("p-menu p-menu-overlay p-component",n.menuClassName),e.createElement(f,{nodeRef:t,classNames:"p-connected-overlay",in:n.in,timeout:{enter:120,exit:100},options:n.transitionOptions,unmountOnExit:!0,onEnter:n.onEnter,onEntered:n.onEntered,onExit:n.onExit,onExited:n.onExited},e.createElement("div",{ref:t,className:o,style:n.menuStyle,onClick:n.onClick},e.createElement("ul",{id:n.menuId,className:"p-menu-list p-reset",role:"menu"},n.children))));return e.createElement(b,{element:l,appendTo:n.appendTo})}));S.displayName="SplitButtonPanel";var x=e.memo(e.forwardRef((function(m,f){var b=C(e.useState(m.id),2),v=b[0],E=b[1],g=C(e.useState(!1),2),N=g[0],h=g[1],k=e.useRef(null),w=e.useRef(null),O=e.useRef(null),T=C(o({target:k,overlay:O,listener:function(e,n){n.valid&&R()},when:N}),2),P=T[0],B=T[1],j=function(){R()},A=function(){h(!0)},R=function(){h(!1)},H=function(){d.alignOverlay(O.current,w.current.parentElement,m.appendTo||n.appendTo)};l((function(){v||E(p())})),r((function(){c.clear(O.current)})),e.useImperativeHandle(f,(function(){return{props:m,show:A,hide:R,getElement:function(){return k.current}}}));if(!1===m.visible)return null;var J=s.isNotEmpty(m.tooltip),X=s.findDiffKeys(m,x.defaultProps),_=u("p-splitbutton p-component",m.className,{"p-disabled":m.disabled}),D=u("p-splitbutton-defaultbutton",m.buttonClassName),z=u("p-splitbutton-menubutton",m.menuButtonClassName),F=m.buttonTemplate?s.getJSXElement(m.buttonTemplate,m):null,K=m.model?m.model.map((function(n,t){return e.createElement(I,{splitButtonProps:m,menuitem:n,key:t,onItemClick:j})})):null,M=v+"_menu";return e.createElement(e.Fragment,null,e.createElement("div",y({ref:k,id:v,className:_,style:m.style},X),e.createElement(t,y({ref:w,type:"button",className:D,icon:m.icon,loading:m.loading,loadingIcon:m.loadingIcon,label:m.label,onClick:m.onClick,disabled:m.disabled,tabIndex:m.tabIndex},m.buttonProps),F),e.createElement(t,y({type:"button",className:z,icon:m.dropdownIcon,onClick:function(){N?R():A()},disabled:m.disabled,"aria-expanded":N,"aria-haspopup":"true","aria-controls":N?M:null},m.menuButtonProps)),e.createElement(S,{ref:O,appendTo:m.appendTo,menuId:M,menuStyle:m.menuStyle,menuClassName:m.menuClassName,onClick:function(e){a.emit("overlay-click",{originalEvent:e,target:k.current})},in:N,onEnter:function(){c.set("overlay",O.current,n.autoZIndex,n.zIndex.overlay),H()},onEntered:function(){P(),m.onShow&&m.onShow()},onExit:function(){B()},onExited:function(){c.clear(O.current),m.onHide&&m.onHide()},transitionOptions:m.transitionOptions},K)),J&&e.createElement(i,y({target:k,content:m.tooltip},m.tooltipOptions)))})));x.displayName="SplitButton",x.defaultProps={__TYPE:"SplitButton",id:null,label:null,icon:null,loading:!1,loadingIcon:"pi pi-spinner pi-spin",model:null,disabled:null,style:null,className:null,buttonClassName:null,menuStyle:null,menuClassName:null,menuButtonClassName:null,buttonProps:null,menuButtonProps:null,tabIndex:null,appendTo:null,tooltip:null,tooltipOptions:null,buttonTemplate:null,transitionOptions:null,dropdownIcon:"pi pi-chevron-down",onClick:null,onShow:null,onHide:null};export{x as SplitButton};