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) 5.86 kB
import*as e from"react";import{PrimeReactContext as t}from"primereact/api";import{ComponentBase as n,useHandleStyle as l}from"primereact/componentbase";import{CSSTransition as r}from"primereact/csstransition";import{useMergeProps as o,useMountEffect as a}from"primereact/hooks";import{MinusIcon as i}from"primereact/icons/minus";import{PlusIcon as p}from"primereact/icons/plus";import{Ripple as c}from"primereact/ripple";import{classNames as s,UniqueComponentId as u,ObjectUtils as m,IconUtils as g}from"primereact/utils";function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},d.apply(this,arguments)}function f(e){if(Array.isArray(e))return e}function h(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,o,a,i=[],p=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;p=!1}else for(;!(p=(l=o.call(n)).done)&&(i.push(l.value),i.length!==t);p=!0);}catch(e){c=!0,r=e}finally{try{if(!p&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return i}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,l=new Array(t);n<t;n++)l[n]=e[n];return l}function y(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function v(){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 E(e,t){return f(e)||h(e,t)||y(e,t)||v()}var x=n.extend({defaultProps:{__TYPE:"Panel",id:null,header:null,headerTemplate:null,footer:null,footerTemplate:null,toggleable:null,style:null,className:null,collapsed:null,expandIcon:null,collapseIcon:null,icons:null,transitionOptions:null,onExpand:null,onCollapse:null,onToggle:null,children:void 0},css:{classes:{root:function(e){return s("p-panel p-component",{"p-panel-toggleable":e.props.toggleable})},header:"p-panel-header",title:"p-panel-title",icons:"p-panel-icons",toggler:"p-panel-header-icon p-panel-toggler p-link",togglerIcon:"p-panel-header-icon p-panel-toggler p-link",toggleableContent:"p-toggleable-content",content:"p-panel-content",footer:"p-panel-footer",transition:"p-toggleable-content"},styles:"\n @layer primereact {\n .p-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .p-panel-title {\n line-height: 1;\n }\n \n .p-panel-header-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n overflow: hidden;\n position: relative;\n }\n }\n "}}),N=e.forwardRef((function(n,f){var h=o(),b=e.useContext(t),y=x.getProps(n,b),v=E(e.useState(y.id),2),N=v[0],T=v[1],C=E(e.useState(y.collapsed),2),S=C[0],O=C[1],j=e.useRef(null),I=e.useRef(null),w=!!y.toggleable&&(y.onToggle?y.collapsed:S),P=N+"_header",k=N+"_content",A=x.setMetaData({props:y,state:{id:N,collapsed:w}}),J=A.ptm,X=A.cx;l(x.css.styles,A.isUnstyled,{name:"panel"});var _=function(e){y.toggleable&&(w?R(e):D(e),e&&(y.onToggle&&y.onToggle({originalEvent:e,value:!w}),e.preventDefault()))},R=function(e){y.onToggle||O(!1),y.onExpand&&e&&y.onExpand(e)},D=function(e){y.onToggle||O(!0),y.onCollapse&&e&&y.onCollapse(e)};e.useImperativeHandle(f,(function(){return{props:y,toggle:_,expand:R,collapse:D,getElement:function(){return j.current},getContent:function(){return I.current}}})),a((function(){N||T(u())}));var M,U,H,Y=function(){if(y.toggleable){var t=N+"_label",n=h({className:X("toggler"),onClick:_,id:t,"aria-controls":k,"aria-expanded":!w,type:"button",role:"button","aria-label":y.header},J("toggler")),l=h(J("togglericon")),r=g.getJSXIcon(w?y.expandIcon||e.createElement(p,l):y.collapseIcon||e.createElement(i,l),l,{props:y,collapsed:w});return e.createElement("button",n,r,e.createElement(c,null))}return null},$=h({id:N,ref:j,style:y.style,className:s(y.className,X("root"))},x.getOtherProps(y),J("root")),q=function(){var t=m.getJSXElement(y.header,y),n=m.getJSXElement(y.icons,y),l=Y(),r=h({id:P,className:X("title")},J("title")),o=e.createElement("span",r,t),a=h({className:X("icons")},J("icons")),i=e.createElement("div",a,n,l),p=h({className:X("header")},J("header")),c=e.createElement("div",p,o,i);return y.headerTemplate?m.getJSXElement(y.headerTemplate,{className:"p-panel-header",titleClassName:"p-panel-title",iconsClassName:"p-panel-icons",togglerClassName:"p-panel-header-icon p-panel-toggler p-link",onTogglerClick:_,titleElement:o,iconsElement:i,togglerElement:l,element:c,id:N+"_header",props:y,collapsed:w}):y.header||y.toggleable?c:null}(),z=(M=h({ref:I,className:X("toggleableContent"),"aria-hidden":w,role:"region",id:k,"aria-labelledby":P},J("toggleablecontent")),U=h({className:X("content")},J("content")),H=h({classNames:X("transition"),timeout:{enter:1e3,exit:450},in:!w,unmountOnExit:!0,options:y.transitionOptions},J("transition")),e.createElement(r,d({nodeRef:I},H),e.createElement("div",M,e.createElement("div",U,y.children)))),B=function(){var t=m.getJSXElement(y.footer,y),n=h({className:X("footer")},J("footer")),l=e.createElement("div",n,t);if(y.footerTemplate){var r={className:X("footer"),element:l,props:y};return m.getJSXElement(y.footerTemplate,r)}return y.footer?l:null}();return e.createElement("div",$,q,z,B)}));N.displayName="Panel";export{N as Panel};