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