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) 12.3 kB
import*as e from"react";import t,{localeOption as n}from"primereact/api";import{useOverlayListener as l,useMountEffect as r,useUpdateEffect as a,useUnmountEffect as o}from"primereact/hooks";import{OverlayService as i}from"primereact/overlayservice";import{Ripple as c}from"primereact/ripple";import{Tree as u}from"primereact/tree";import{classNames as s,ObjectUtils as p,ZIndexUtils as f,DomHandler as d}from"primereact/utils";import{CSSTransition as m}from"primereact/csstransition";import{Portal as y}from"primereact/portal";function v(){return v=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},v.apply(this,arguments)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){if(Array.isArray(e))return e}function b(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,a=[],o=!0,i=!1;try{for(n=n.call(e);!(o=(l=n.next()).done)&&(a.push(l.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(i)throw r}}return a}}function E(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 N(e,t){if(e){if("string"==typeof e)return E(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)?E(e,t):void 0}}function w(){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 S(e,t){return g(e)||b(e,t)||N(e,t)||w()}var O=e.forwardRef((function(t,n){var l,r,a=(l={maxHeight:t.scrollHeight||"auto"},r=s("p-treeselect-panel p-component",t.panelClassName),e.createElement(m,{nodeRef:n,classNames:"p-connected-overlay",in:t.in,timeout:{enter:120,exit:100},options:t.transitionOptions,unmountOnExit:!0,onEnter:t.onEnter,onEntering:t.onEntering,onEntered:t.onEntered,onExit:t.onExit,onExited:t.onExited},e.createElement("div",{ref:n,className:r,style:t.panelStyle,onClick:t.onClick},t.header,e.createElement("div",{className:"p-treeselect-items-wrapper",style:l},t.children),t.footer)));return e.createElement(y,{element:a,appendTo:t.appendTo})}));function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function C(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?x(Object(n),!0).forEach((function(t){h(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function k(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=T(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var l=0,r=function(){};return{s:r,n:function(){return l>=e.length?{done:!0}:{done:!1,value:e[l++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}function T(e,t){if(e){if("string"==typeof e)return I(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)?I(e,t):void 0}}function I(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}O.displayName="TreeSelectPanel";var j=e.memo(e.forwardRef((function(m,y){var g=S(e.useState(!1),2),b=g[0],E=g[1],N=S(e.useState(!1),2),w=N[0],x=N[1],T=S(e.useState(m.expandedKeys),2),I=T[0],P=T[1],A=S(e.useState(""),2),F=A[0],H=A[1],K=e.useRef(null),M=e.useRef(null),D=e.useRef(null),R=e.useRef(null),V=e.useRef(null),U=e.useRef(null),B=m.onToggle?m.expandedKeys:I,L=m.onFilterValueChange?m.filterValue:F,J=p.isEmpty(m.value),X=p.isEmpty(m.options),_="single"===m.selectionMode,$="checkbox"===m.selectionMode,z={filter:function(e){return ue(e)},reset:function(){return se()}},Y=S(l({target:K,overlay:M,listener:function(e,t){t.valid&&W()},when:w}),2),Z=Y[0],q=Y[1],G=function(){return Ee.length?Ee.map((function(e){return e.label})).join(", "):m.placeholder},Q=function(){x(!0)},W=function(){x(!1)},ee=function(){E(!0)},te=function(){E(!1)},ne=function(e){m.onChange&&(U.current=!0,m.onChange({originalEvent:e.originalEvent,value:e.value,stopPropagation:function(){},preventDefault:function(){},target:{name:m.name,id:m.id,value:e.value}}))},le=function(e){m.onNodeSelect&&m.onNodeSelect(e),_&&W()},re=function(e){m.onNodeUnselect&&m.onNodeUnselect(e)},ae=function(e){m.onToggle?m.onToggle(e):P(e.value)},oe=function(e){H(e.value)},ie=function(e){switch(e.which){case 40:!w&&e.altKey&&Q();break;case 32:w||(Q(),e.preventDefault());break;case 13:case 27:w&&(W(),e.preventDefault());break;case 9:W()}},ce=function(e){13===e.which&&e.preventDefault()},ue=function(e){var t=e.target.value;m.onFilterValueChange?m.onFilterValueChange({originalEvent:e,value:t}):H(t)},se=function(){H("")},pe=function(){d.alignOverlay(M.current,V.current.parentElement,m.appendTo||t.appendTo)},fe=function(){var e=d.findSingle(M.current,".p-treenode-content.p-highlight");e&&e.scrollIntoView&&e.scrollIntoView({block:"nearest",inline:"start"})},de=function e(t,n,l){if(t){if(me(t,n)&&(l.push(t),delete n[t.key]),Object.keys(n).length&&t.children){var r,a=k(t.children);try{for(a.s();!(r=a.n()).done;){e(r.value,n,l)}}catch(e){a.e(e)}finally{a.f()}}}else{var o,i=k(m.options);try{for(i.s();!(o=i.n()).done;){e(o.value,n,l)}}catch(e){i.e(e)}finally{i.f()}}},me=function(e,t){return $?t[e.key]&&t[e.key].checked:t[e.key]},ye=function(){var e=_?h({},"".concat(m.value),!0):C({},m.value);P({}),e&&m.options&&ve(null,null,e)},ve=function e(t,n,l){if(t){if(me(t,l)&&(he(n),delete l[t.key]),Object.keys(l).length&&t.children){var r,a=k(t.children);try{for(a.s();!(r=a.n()).done;){var o=r.value;n.push(t.key),e(o,n,l)}}catch(e){a.e(e)}finally{a.f()}}}else{var i,c=k(m.options);try{for(c.s();!(i=c.n()).done;){e(i.value,[],l)}}catch(e){c.e(e)}finally{c.f()}}},he=function(e){if(e.length>0){var t,n=C({},I||{}),l=k(e);try{for(l.s();!(t=l.n()).done;){n[t.value]=!0}}catch(e){l.e(e)}finally{l.f()}P(n)}};e.useImperativeHandle(y,(function(){return{props:m,getElement:function(){return K.current}}})),r((function(){ye()})),a((function(){w&&m.filter&&pe()})),a((function(){ye()}),[m.options]),a((function(){w&&I&&pe()}),[I]),a((function(){w&&(U.current||ye(),U.current=!1)}),[m.value]),o((function(){f.clear(M.current)}));var ge,be=function(){if(m.filter){var t=p.isNotEmpty(L)?L:"",n=e.createElement("div",{className:"p-treeselect-filter-container"},e.createElement("input",{ref:D,type:"text",value:t,autoComplete:"off",className:"p-treeselect-filter p-inputtext p-component",placeholder:m.filterPlaceholder,onKeyDown:ce,onChange:ue,disabled:m.disabled}),e.createElement("span",{className:"p-treeselect-filter-icon pi pi-search"}));if(m.filterTemplate)n=p.getJSXElement(m.filterTemplate,{className:"p-treeselect-filter-container",element:n,filterOptions:z,filterInputKeyDown:ce,filterInputChange:ue,filterIconClassName:"p-dropdown-filter-icon pi pi-search",props:m});return e.createElement(e.Fragment,null,n)}},Ee=function(){var e=[];if(p.isNotEmpty(m.value)&&m.options){var t=_?h({},"".concat(m.value),!0):C({},m.value);de(null,t,e)}return e}(),Ne=p.findDiffKeys(m,j.defaultProps),we=p.reduceKeys(Ne,d.ARIA_PROPS),Se=s("p-treeselect p-component p-inputwrapper",{"p-treeselect-chip":"chip"===m.display,"p-disabled":m.disabled,"p-focus":b,"p-inputwrapper-filled":!J,"p-inputwrapper-focus":b||w},m.className),Oe=e.createElement("div",{className:"p-hidden-accessible"},e.createElement("input",v({ref:R,role:"listbox",id:m.inputId,type:"text",readOnly:!0,"aria-expanded":w,onFocus:ee,onBlur:te,onKeyDown:ie,disabled:m.disabled,tabIndex:m.tabIndex},we))),xe=function(){var t=s("p-treeselect-label",{"p-placeholder":G()===m.placeholder,"p-treeselect-label-empty":!m.placeholder&&J}),n=null;return m.valueTemplate?n=p.getJSXElement(m.valueTemplate,Ee,m):"comma"===m.display?n=G()||"empty":"chip"===m.display&&(n=e.createElement(e.Fragment,null,Ee&&Ee.map((function(t,n){return e.createElement("div",{className:"p-treeselect-token",key:"".concat(t.key,"_").concat(n)},e.createElement("span",{className:"p-treeselect-token-label"},t.label))})),J&&(m.placeholder||"empty"))),e.createElement("div",{className:"p-treeselect-label-container"},e.createElement("div",{className:t},n))}(),Ce=(ge=s("p-treeselect-trigger-icon p-clickable",m.dropdownIcon),e.createElement("div",{ref:V,className:"p-treeselect-trigger",role:"button","aria-haspopup":"listbox","aria-expanded":w},e.createElement("span",{className:ge}))),ke=e.createElement(e.Fragment,null,e.createElement(u,{value:m.options,selectionMode:m.selectionMode,selectionKeys:m.value,metaKeySelection:m.metaKeySelection,onSelectionChange:ne,onSelect:le,onUnselect:re,expandedKeys:B,onToggle:ae,onExpand:m.onNodeExpand,onCollapse:m.onNodeCollapse,filter:m.filter,filterValue:L,filterBy:m.filterBy,filterMode:m.filterMode,filterPlaceholder:m.filterPlaceholder,filterLocale:m.filterLocale,showHeader:!1,onFilterValueChange:oe}),X&&e.createElement("div",{className:"p-treeselect-empty-message"},m.emptyMessage||n("emptyMessage"))),Te=function(){var t=be(),l=e.createElement("button",{type:"button",className:"p-treeselect-close p-link",onClick:W,"aria-label":n("close")},e.createElement("span",{className:"p-treeselect-close-icon pi pi-times","aria-hidden":"true"}),e.createElement(c,null)),r=e.createElement("div",{className:"p-treeselect-header"},t,l);return m.panelHeaderTemplate?p.getJSXElement(m.panelHeaderTemplate,{className:"p-treeselect-header",filterElement:t,closeElement:l,closeElementClassName:"p-treeselect-close p-link",closeIconClassName:"p-treeselect-close-icon pi pi-times",onCloseClick:W,element:r,props:m}):r}(),Ie=p.getJSXElement(m.panelFooterTemplate,m);return e.createElement("div",v({id:m.id,ref:K,className:Se,style:m.style},Ne,{onClick:function(e){m.disabled||M.current&&M.current.contains(e.target)||d.hasClass(e.target,"p-treeselect-close")||(d.focus(R.current),w?W():Q())}}),Oe,xe,Ce,e.createElement(O,{ref:M,appendTo:m.appendTo,panelStyle:m.panelStyle,panelClassName:m.panelClassName,scrollHeight:m.scrollHeight,onClick:function(e){i.emit("overlay-click",{originalEvent:e,target:K.current})},header:Te,footer:Ie,transitionOptions:m.transitionOptions,in:w,onEnter:function(){f.set("overlay",M.current,t.autoZIndex,t.zIndex.overlay),pe(),fe()},onEntered:function(){Z(),m.filter&&m.filterInputAutoFocus&&d.focus(D.current,m.filterInputAutoFocus),m.onShow&&m.onShow()},onExit:function(){q()},onExited:function(){m.filter&&m.resetFilterOnHide&&se(),f.clear(M.current),m.onHide&&m.onHide()}},ke))})));j.displayName="TreeSelect",j.defaultProps={__TYPE:"TreeSelect",id:null,value:null,name:null,style:null,className:null,disabled:!1,options:null,scrollHeight:"400px",placeholder:null,tabIndex:null,inputId:null,ariaLabel:null,ariaLabelledBy:null,selectionMode:"single",expandedKeys:null,panelStyle:null,panelClassName:null,appendTo:null,emptyMessage:null,display:"comma",metaKeySelection:!0,valueTemplate:null,panelHeaderTemplate:null,panelFooterTemplate:null,transitionOptions:null,dropdownIcon:"pi pi-chevron-down",filter:!1,filterTemplate:null,filterValue:null,filterBy:"label",filterMode:"lenient",filterPlaceholder:null,filterLocale:void 0,filterInputAutoFocus:!0,resetFilterOnHide:!1,onShow:null,onHide:null,onChange:null,onNodeSelect:null,onNodeUnselect:null,onNodeExpand:null,onNodeCollapse:null,onFilterValueChange:null};export{j as TreeSelect};