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