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.22 kB
JavaScript
import*as e from"react";import{PrimeReactContext as n}from"primereact/api";import{ComponentBase as t,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 s}from"primereact/icons/plus";import{Ripple as c}from"primereact/ripple";import{classNames as u,UniqueComponentId as p,IconUtils as g}from"primereact/utils";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 l in t)Object.prototype.hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},d.apply(this,arguments)}function f(e){if(Array.isArray(e))return e}function m(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var l,r,o,a,i=[],s=!0,c=!1;try{if(o=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(l=o.call(t)).done)&&(i.push(l.value),i.length!==n);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(c)throw r}}return i}}function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,l=new Array(n);t<n;t++)l[t]=e[t];return l}function y(e,n){if(e){if("string"==typeof e)return b(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)?b(e,n):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,n){return f(e)||m(e,n)||y(e,n)||v()}var h=t.extend({defaultProps:{__TYPE:"Fieldset",id:null,legend:null,className:null,style:null,toggleable:null,collapsed:null,collapseIcon:null,transitionOptions:null,expandIcon:null,onExpand:null,onCollapse:null,onToggle:null,onClick:null,children:void 0},css:{classes:{root:function(e){return u("p-fieldset p-component",{"p-fieldset-toggleable":e.props.toggleable})},toggleableContent:"p-toggleable-content",togglericon:"p-fieldset-toggler",legendTitle:"p-fieldset-legend-text",legend:"p-fieldset-legend p-unselectable-text",content:"p-fieldset-content",transition:"p-toggleable-content"},styles:"\n @layer primereact {\n .p-fieldset-legend > a,\n .p-fieldset-legend > span {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n .p-fieldset-toggleable .p-fieldset-legend a {\n cursor: pointer;\n user-select: none;\n overflow: hidden;\n position: relative;\n text-decoration: none;\n }\n \n .p-fieldset-legend-text {\n line-height: 1;\n }\n }\n "}}),x=e.forwardRef((function(t,f){var m=o(),b=e.useContext(n),y=h.getProps(t,b),v=E(e.useState(y.id),2),x=v[0],C=v[1],O=E(e.useState(y.collapsed),2),N=O[1],T=!!y.toggleable&&(y.onToggle?y.collapsed:O[0]),I=e.useRef(null),j=e.useRef(null),S=x+"_header",w=x+"_content",A=h.setMetaData({props:y,state:{id:x,collapsed:T}}),k=A.ptm,P=A.cx;l(h.css.styles,A.isUnstyled,{name:"fieldset"});var D=function(e){y.toggleable&&(T?R(e):_(e),y.onToggle&&y.onToggle({originalEvent:e,value:!T})),e.preventDefault()},R=function(e){y.onToggle||N(!1),y.onExpand&&y.onExpand(e)},_=function(e){y.onToggle||N(!0),y.onCollapse&&y.onCollapse(e)};a((function(){y.id||C(p())}));var F=function(e){"Enter"!==e.code&&"NumpadEnter"!==e.code&&"Space"!==e.code||(D(e),e.preventDefault())},M=function(){if(y.toggleable){var n=m({className:P("togglericon")},k("togglericon"));return g.getJSXIcon(T?y.expandIcon||e.createElement(s,n):y.collapseIcon||e.createElement(i,n),n,{props:y})}return null},U=function(){var n=m({className:P("legendTitle")},k("legendTitle")),t=m({id:S,role:"button","aria-expanded":!T,"aria-controls":w,onKeyDown:F,onClick:D,"aria-label":y.legend,tabIndex:0},k("toggler"));if(y.toggleable){var l=M();return e.createElement("a",t,l,e.createElement("span",n,y.legend),e.createElement(c,null))}return e.createElement("span",d({},n,{id:S}),y.legend)};e.useImperativeHandle(f,(function(){return{props:y,getElement:function(){return I.current},getContent:function(){return j.current}}}));var H,J,K,X=m({id:x,ref:I,style:y.style,className:u(y.className,P("root")),onClick:y.onClick},h.getOtherProps(y),k("root")),Y=function(){var n=m({className:P("legend")},k("legend"));if(null!=y.legend||y.toggleable){var t=U();return e.createElement("legend",n,t)}}(),$=(H=m({className:P("content")},k("content")),J=m({ref:j,id:w,role:"region","aria-labelledby":S,className:P("toggleableContent")},k("toggleableContent")),K=m({classNames:P("transition"),timeout:{enter:1e3,exit:450},in:!T,unmountOnExit:!0,options:y.transitionOptions},k("transition")),e.createElement(r,d({nodeRef:j},K),e.createElement("div",J,e.createElement("div",H,y.children))));return e.createElement("fieldset",X,Y,$)}));x.displayName="Fieldset";export{x as Fieldset};