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) 10.8 kB
import*as e from"react";import n from"primereact/api";import{CSSTransition as t}from"primereact/csstransition";import{useMountEffect as r,useUpdateEffect as o,useOverlayListener as a,useUnmountEffect as l}from"primereact/hooks";import{OverlayService as i}from"primereact/overlayservice";import{Portal as c}from"primereact/portal";import{classNames as u,DomHandler as p,ObjectUtils as s,ZIndexUtils as f}from"primereact/utils";import{Ripple as d}from"primereact/ripple";function m(){return m=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},m.apply(this,arguments)}function v(e){if(Array.isArray(e))return e}function h(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a=[],l=!0,i=!1;try{for(t=t.call(e);!(l=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);l=!0);}catch(e){i=!0,o=e}finally{try{l||null==t.return||t.return()}finally{if(i)throw o}}return a}}function b(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 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 g(){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 v(e)||h(e,n)||y(e,n)||g()}var S=e.memo((function(n){var t=E(e.useState(null),2),a=t[0],l=t[1],i=e.useRef(null),c=function(e){n.onOptionSelect&&n.onOptionSelect(e)},f=function(e,t){var r=e.currentTarget.parentElement;switch(e.key){case"Down":case"ArrowDown":var o=m(r);o&&o.children[0].focus();break;case"Up":case"ArrowUp":var i=v(r);i&&i.children[0].focus();break;case"Right":case"ArrowRight":w(t)&&(a===t?r.children[1].children[0].children[0].focus():l(t));break;case"Left":case"ArrowLeft":l(null);var c=e.currentTarget.parentElement.parentElement.previousElementSibling;c&&c.focus();break;case"Enter":h(e,t);break;case"Tab":case"Escape":n.onPanelHide&&(n.onPanelHide(),e.preventDefault())}e.preventDefault()},m=function e(n){var t=n.nextElementSibling;return t?p.hasClass(t,"p-disabled")||!p.hasClass(t,"p-cascadeselect-item")?e(t):t:null},v=function e(n){var t=n.previousElementSibling;return t?p.hasClass(t,"p-disabled")||!p.hasClass(t,"p-cascadeselect-item")?e(t):t:null},h=function(e,t){w(t)?(l((function(e){return e===t?null:t})),n.onOptionGroupSelect&&n.onOptionGroupSelect({originalEvent:e,value:t})):n.onOptionSelect&&n.onOptionSelect({originalEvent:e,value:g(t)})},b=function(e){n.onOptionGroupSelect&&n.onOptionGroupSelect(e)},y=function(e){return n.optionLabel?s.resolveFieldData(e,n.optionLabel):e},g=function(e){return n.optionValue?s.resolveFieldData(e,n.optionValue):e},w=function(e){return Object.prototype.hasOwnProperty.call(e,n.optionGroupChildren[n.level])},O=function(e){return w(e)?(t=e,n.optionGroupLabel?s.resolveFieldData(t,n.optionGroupLabel):null):y(e);var t};r((function(){if(n.selectionPath&&n.options&&!n.dirty){var e=n.options.find((function(e){return n.selectionPath.includes(e)}));e&&l(e)}var t,r,o,a,c;n.root||(r=p.getOffset(t=i.current.parentElement),o=p.getViewport(),a=i.current.offsetParent?i.current.offsetWidth:p.getHiddenElementOuterWidth(element),c=p.getOuterWidth(t.children[0]),parseInt(r.left,10)+c+a>o.width-p.calculateScrollbarWidth()&&(i.current.style.left="-100%"))})),o((function(){l(null)}),[n.parentActive]);var C=function(t){if(w(t)&&a===t){var r=s.resolveFieldData(t,n.optionGroupChildren[n.level]);return e.createElement(S,{options:r,className:"p-cascadeselect-sublist",selectionPath:n.selectionPath,optionLabel:n.optionLabel,optionValue:n.optionValue,level:n.level+1,onOptionSelect:c,onOptionGroupSelect:b,parentActive:a===t,optionGroupLabel:n.optionGroupLabel,optionGroupChildren:n.optionGroupChildren,dirty:n.dirty,template:n.template,onPanelHide:n.onPanelHide})}return null},G=function(t,r){var o=u("p-cascadeselect-item",{"p-cascadeselect-item-group":w(t),"p-cascadeselect-item-active p-highlight":a===t},t.className),l=C(t),i=n.template?s.getJSXElement(n.template,g(t)):e.createElement("span",{className:"p-cascadeselect-item-text"},O(t)),c=w(t)&&e.createElement("span",{className:"p-cascadeselect-group-icon pi pi-angle-right"}),p=O(t)+"_"+r;return e.createElement("li",{key:p,className:o,style:t.style,role:"none"},e.createElement("div",{className:"p-cascadeselect-item-content",onClick:function(e){return h(e,t)},tabIndex:0,onKeyDown:function(e){return f(e,t)}},i,c,e.createElement(d,null)),l)},A=u("p-cascadeselect-panel p-cascadeselect-items",n.className),P=n.options?n.options.map(G):null;return e.createElement("ul",{ref:i,className:A,role:"listbox","aria-orientation":"horizontal"},P)}));function w(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=O(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}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,l=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==t.return||t.return()}finally{if(i)throw a}}}}function O(e,n){if(e){if("string"==typeof e)return C(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)?C(e,n):void 0}}function C(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}var G=e.memo(e.forwardRef((function(r,d){var v=E(e.useState(!1),2),h=v[0],b=v[1],y=E(e.useState(!1),2),g=y[0],O=y[1],C=e.useRef(null),A=e.useRef(null),P=e.useRef(null),x=e.useRef(null),I=e.useRef(!1),L=e.useRef(null),N=E(a({target:C,overlay:A,listener:function(e,n){n.valid&&q()},when:g}),2),R=N[0],D=N[1],k=function(e){r.onChange&&r.onChange({originalEvent:e,value:e.value}),F(),q(),p.focus(P.current)},T=function(e){I.current=!0,r.onGroupChange&&r.onGroupChange(e)},H=function(e){return(r.optionLabel?s.resolveFieldData(e,r.optionLabel):e)||e},j=function(e){return r.optionValue?s.resolveFieldData(e,r.optionValue):e},V=function(e,n){return s.resolveFieldData(e,r.optionGroupChildren[n])},B=function(e,n){return Object.prototype.hasOwnProperty.call(e,r.optionGroupChildren[n])},F=function(){var e;if(null!=r.value&&r.options){var n,t=w(r.options);try{for(t.s();!(n=t.n()).done;){if(e=K(n.value,0))break}}catch(e){t.e(e)}finally{t.f()}}L.current=e},K=function e(n,t){if(B(n,t)){var o,a,l=w(V(n,t));try{for(l.s();!(a=l.n()).done;){if(o=e(a.value,t+1))return o.unshift(n),o}}catch(e){l.e(e)}finally{l.f()}}else if(s.equals(r.value,j(n),r.dataKey))return[n];return null},_=function(e){r.disabled||A.current&&A.current.contains(e.target)||(p.focus(P.current),g?q():$())},U=function(){b(!0)},W=function(){b(!1)},z=function(e){switch(e.which){case 40:g?p.findSingle(A.current,".p-cascadeselect-item").children[0].focus():e.altKey&&r.options&&r.options.length&&$(),e.preventDefault();break;case 32:g?q():$(),e.preventDefault();break;case 9:q()}},M=function(e){i.emit("overlay-click",{originalEvent:e,target:C.current})},$=function(){r.onBeforeShow&&r.onBeforeShow(),O(!0)},q=function(){r.onBeforeHide&&r.onBeforeHide(),O(!1),p.focus(P.current)},J=function(){f.set("overlay",A.current,n.autoZIndex,n.zIndex.overlay),Q()},X=function(){R(),r.onShow&&r.onShow()},Y=function(){D(),I.current=!1},Z=function(){f.clear(A.current),r.onHide&&r.onHide()},Q=function(){p.alignOverlay(A.current,x.current.parentElement,r.appendTo||n.appendTo)};e.useImperativeHandle(d,(function(){return{props:r,getElement:function(){return C.current},getOverlay:function(){return A.current},getInput:function(){return P.current},getLabel:function(){return x.current}}})),e.useEffect((function(){s.combinedRefs(P,r.inputRef)}),[P,r.inputRef]),o((function(){F()}),[r.value]),l((function(){f.clear(A.current)}));var ee=s.findDiffKeys(r,G.defaultProps);s.reduceKeys(ee,p.DATA_PROPS);var ne,te,re,oe,ae,le,ie,ce,ue,pe=s.reduceKeys(ee,p.ARIA_PROPS);return ae=u("p-cascadeselect p-component p-inputwrapper",{"p-disabled":r.disabled,"p-focus":h,"p-inputwrapper-filled":r.value,"p-inputwrapper-focus":h||g},r.className),ne=r.value?H(r.value):void 0,le=e.createElement("div",{className:"p-hidden-accessible"},e.createElement("input",m({ref:P,type:"text",id:r.inputId,name:r.name,defaultValue:ne,readOnly:!0,disabled:r.disabled,onFocus:U,onBlur:W,onKeyDown:z,tabIndex:r.tabIndex,"aria-haspopup":"listbox"},pe))),te=r.value?H(r.value):r.placeholder||"p-emptylabel",re=u("p-cascadeselect-label ",{"p-placeholder":te===r.placeholder,"p-cascadeselect-label-empty":!r.value&&"p-emptylabel"===te}),ie=e.createElement("span",{ref:x,className:re},te),oe=u("p-cascadeselect-trigger-icon",r.dropdownIcon),ce=e.createElement("div",{className:"p-cascadeselect-trigger",role:"button","aria-haspopup":"listbox","aria-expanded":g},e.createElement("span",{className:oe})),ue=e.createElement(c,{element:e.createElement(t,{nodeRef:A,classNames:"p-connected-overlay",in:g,timeout:{enter:120,exit:100},options:r.transitionOptions,unmountOnExit:!0,onEnter:J,onEntered:X,onExit:Y,onExited:Z},e.createElement("div",{ref:A,className:"p-cascadeselect-panel p-component",onClick:M},e.createElement("div",{className:"p-cascadeselect-items-wrapper"},e.createElement(S,{options:r.options,selectionPath:L.current,className:"p-cascadeselect-items",optionLabel:r.optionLabel,optionValue:r.optionValue,level:0,optionGroupLabel:r.optionGroupLabel,optionGroupChildren:r.optionGroupChildren,onOptionSelect:k,onOptionGroupSelect:T,root:!0,template:r.itemTemplate,onPanelHide:q})))),appendTo:r.appendTo}),e.createElement("div",m({ref:C,id:r.id,className:ae,style:r.style},ee,{onClick:_}),le,ie,ce,ue)})));G.displayName="CascadeSelect",G.defaultProps={__TYPE:"CascadeSelect",id:null,inputRef:null,style:null,className:null,value:null,name:null,options:null,optionLabel:null,optionValue:null,optionGroupLabel:null,optionGroupChildren:null,placeholder:null,itemTemplate:null,disabled:!1,dataKey:null,inputId:null,tabIndex:null,ariaLabelledBy:null,appendTo:null,transitionOptions:null,dropdownIcon:"pi pi-chevron-down",onChange:null,onGroupChange:null,onBeforeShow:null,onBeforeHide:null,onShow:null,onHide:null};export{G as CascadeSelect};