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) 19.8 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/componentbase"),r=require("primereact/csstransition"),o=require("primereact/hooks"),a=require("primereact/icons/chevrondown"),l=require("primereact/icons/spinner"),i=require("primereact/overlayservice"),c=require("primereact/portal"),s=require("primereact/utils"),u=require("primereact/icons/angleright"),p=require("primereact/ripple");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function f(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 m=f(e),b=d(t);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 r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},v.apply(null,arguments)}function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function h(e,t){if("object"!=y(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=y(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function g(e){var t=h(e,"string");return"symbol"==y(t)?t:t+""}function O(e,t,n){return(t=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e){if(Array.isArray(e))return e}function S(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,l,i=[],c=!0,s=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){s=!0,o=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw o}}return i}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function x(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.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 I(){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 j(e,t){return w(e)||S(e,t)||x(e,t)||I()}var D=n.ComponentBase.extend({defaultProps:{__TYPE:"CascadeSelect",appendTo:null,ariaLabelledBy:null,autoFocus:!1,breakpoint:void 0,className:null,dataKey:null,disabled:!1,loadingIcon:null,dropdownIcon:null,loading:!1,id:null,inputId:null,inputRef:null,invalid:!1,variant:null,itemTemplate:null,name:null,onBeforeHide:null,onBeforeShow:null,onChange:null,onGroupChange:null,onHide:null,onShow:null,optionGroupChildren:null,optionGroupIcon:null,optionGroupLabel:null,optionLabel:null,optionValue:null,options:null,placeholder:null,scrollHeight:"400px",style:null,tabIndex:null,transitionOptions:null,value:null,children:void 0},css:{classes:{root:function(e){var t=e.props,n=e.focusedState,r=e.context;return s.classNames("p-cascadeselect p-component p-inputwrapper",{"p-disabled":t.disabled,"p-invalid":t.invalid,"p-variant-filled":t.variant?"filled"===t.variant:r&&"filled"===r.inputStyle,"p-focus":n,"p-inputwrapper-filled":t.value,"p-inputwrapper-focus":n||e.overlayVisibleState})},label:function(e){var t=e.props,n=e.label;return s.classNames("p-cascadeselect-label ",{"p-placeholder":n===t.placeholder,"p-cascadeselect-label-empty":!t.value&&"p-emptylabel"===n})},list:"p-cascadeselect-panel p-cascadeselect-items",sublistWrapper:"p-cascadeselect-sublist-wrapper",sublist:"p-cascadeselect-panel p-cascadeselect-items p-cascadeselect-sublist",item:function(e){return s.classNames("p-cascadeselect-item",{"p-cascadeselect-item-group":e.isGroup,"p-cascadeselect-item-active p-highlight":e.isSelected})},dropdownIcon:"p-cascadeselect-trigger-icon",loadingIcon:"p-cascadeselect-trigger-icon",dropdownButton:"p-cascadeselect-trigger",loadingButton:"p-cascadeselect-trigger",wrapper:"p-cascadeselect-items-wrapper",panel:"p-cascadeselect-panel p-component",content:"p-cascadeselect-item-content",optionGroupIcon:"p-cascadeselect-group-icon",text:"p-cascadeselect-item-text",transition:"p-connected-overlay"},styles:"\n@layer primereact {\n .p-cascadeselect {\n display: inline-flex;\n cursor: pointer;\n position: relative;\n user-select: none;\n }\n \n .p-cascadeselect-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n \n .p-cascadeselect-label {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n flex: 1 1 auto;\n width: 1%;\n text-overflow: ellipsis;\n cursor: pointer;\n }\n \n .p-cascadeselect-label-empty {\n overflow: hidden;\n visibility: hidden;\n }\n \n .p-cascadeselect .p-cascadeselect-panel {\n min-width: 100%;\n }\n \n .p-cascadeselect-item {\n cursor: pointer;\n font-weight: normal;\n white-space: nowrap;\n }\n \n .p-cascadeselect-item-content {\n display: flex;\n align-items: center;\n overflow: hidden;\n position: relative;\n }\n \n .p-cascadeselect-group-icon {\n margin-left: auto;\n }\n \n .p-cascadeselect-items {\n margin: 0;\n padding: 0;\n list-style-type: none;\n min-width: 100%;\n }\n \n .p-fluid .p-cascadeselect {\n display: flex;\n }\n \n .p-fluid .p-cascadeselect .p-cascadeselect-label {\n width: 1%;\n }\n \n .p-cascadeselect-sublist-wrapper {\n position: absolute;\n min-width: 100%;\n z-index: 1;\n display: none;\n }\n \n .p-cascadeselect-item-active {\n overflow: visible;\n }\n \n .p-cascadeselect-item-active > .p-cascadeselect-sublist-wrapper {\n display: block;\n left: 100%;\n top: 0;\n }\n}\n"}});function P(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function C(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach((function(t){O(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var H=m.memo((function(e){var n=o.useMergeProps(),r=j(m.useState(null),2),a=r[0],l=r[1],i=m.useRef(null),c=m.useContext(t.PrimeReactContext),d=e.ptm,f=e.cx,b=function(t,n){return d(t,{hostName:e.hostName,state:C({},n)})},y=function(t){e.onOptionSelect&&e.onOptionSelect(t)},h=function(t,n){var r=t.currentTarget.parentElement;switch(t.key){case"Down":case"ArrowDown":var o=g(r);o&&o.children[0].focus();break;case"Up":case"ArrowUp":var i=O(r);i&&i.children[0].focus();break;case"Right":case"ArrowRight":I(n)&&(a===n?r.children[1].children[0].children[0].focus():l(n));break;case"Left":case"ArrowLeft":l(null);var c=t.currentTarget.parentElement.parentElement.previousElementSibling;c&&c.focus();break;case"Enter":w(t,n);break;case"Tab":case"Escape":e.onPanelHide&&(e.onPanelHide(),t.preventDefault())}t.preventDefault()},g=function(e){var t=e.nextElementSibling;return t?s.DomHandler.hasClass(t,"p-disabled")||!s.DomHandler.hasClass(t,"p-cascadeselect-item")?g(t):t:null},O=function(e){var t=e.previousElementSibling;return t?s.DomHandler.hasClass(t,"p-disabled")||!s.DomHandler.hasClass(t,"p-cascadeselect-item")?O(t):t:null},w=function(t,n){I(n)?(l((function(e){return e===n?null:n})),e.onOptionGroupSelect&&e.onOptionGroupSelect({originalEvent:t,value:n})):e.onOptionSelect&&e.onOptionSelect({originalEvent:t,value:x(n)})},S=function(t){e.onOptionGroupSelect&&e.onOptionGroupSelect(t)},E=function(t){return e.optionLabel?s.ObjectUtils.resolveFieldData(t,e.optionLabel):t},x=function(t){return e.optionValue?s.ObjectUtils.resolveFieldData(t,e.optionValue):t},I=function(t){return Object.prototype.hasOwnProperty.call(t,e.optionGroupChildren[e.level])},D=function(t){return I(t)?(n=t,e.optionGroupLabel?s.ObjectUtils.resolveFieldData(n,e.optionGroupLabel):null):E(t);var n};o.useMountEffect((function(){if(e.selectionPath&&e.options&&!e.dirty){var t=e.options.find((function(t){return e.selectionPath.includes(t)}));t&&l(t)}var n,r,o,a,c;e.root||(r=s.DomHandler.getOffset(n=i.current.parentElement.parentElement),o=s.DomHandler.getViewport(),a=i.current.offsetParent?i.current.offsetWidth:s.DomHandler.getHiddenElementOuterWidth(R),c=s.DomHandler.getOuterWidth(n.children[0]),parseInt(r.left,10)+c+a>o.width-s.DomHandler.calculateScrollbarWidth()&&(i.current.parentElement.style.left="-100%"))})),o.useUpdateEffect((function(){e.parentActive||l(null)}),[e.parentActive]);var P,G,N,A,U=function(t){if(I(t)&&a===t){var n=s.ObjectUtils.resolveFieldData(t,e.optionGroupChildren[e.level]),r=a===t,o=e.level+1;return m.createElement(H,{hostName:e.hostName,options:n,className:f("sublist"),selectionPath:e.selectionPath,optionLabel:e.optionLabel,optionValue:e.optionValue,level:o,onOptionSelect:y,onOptionGroupSelect:S,parentActive:r,optionGroupLabel:e.optionGroupLabel,optionGroupChildren:e.optionGroupChildren,dirty:e.dirty,template:e.template,onPanelHide:e.onPanelHide,ptm:d,cx:f})}return null},k=function(t,r){var o=U(t),l=n({className:f("text")},b("text")),i=e.template?s.ObjectUtils.getJSXElement(e.template,x(t)):m.createElement("span",l,D(t)),c=n({className:f("optionGroupIcon")},b("optionGroupIcon")),d=e.optionGroupIcon||m.createElement(u.AngleRightIcon,c),y=I(t)&&s.IconUtils.getJSXIcon(d,C({},c),{props:e}),g=D(t)+"_"+r,O=n({className:f("content"),onClick:function(e){return w(e,t)},tabIndex:0,onKeyDown:function(e){return h(e,t)}},b("content")),S=a===t,E=I(t),j=n({className:s.classNames(t.className,f("item",{option:t,isGroup:E,isSelected:S})),style:t.style,role:"none","data-p-item-group":E,"data-p-highlight":S},b("item",{selected:S,group:E}));return m.createElement("li",v({key:g},j),m.createElement("div",O,i,y,m.createElement(p.Ripple,null)),o)},R=(P=n({ref:i,className:f(0===e.level?"list":"sublist",{context:c}),role:"listbox","aria-orientation":"horizontal"},b(0===e.level?"list":"sublist")),G=e.options?e.options.map(k):null,N=m.createElement("ul",P,G),A=n({className:f("sublistWrapper")},b("sublistWrapper")),0===e.level?N:m.createElement("div",A,N));return R}));function G(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=N(e))||t&&e&&"number"==typeof e.length){n&&(e=n);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(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw a}}}}function N(e,t){if(e){if("string"==typeof e)return A(e,t);var n={}.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)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach((function(t){O(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var R=m.memo(m.forwardRef((function(e,u){var p=o.useMergeProps(),d=m.useContext(t.PrimeReactContext),f=D.getProps(e,d),y=j(m.useState(!1),2),h=y[0],g=y[1],O=j(m.useState(!1),2),w=O[0],S=O[1],E=j(m.useState(null),2),x=E[0],I=E[1],P=D.setMetaData({props:f,state:{focused:h,overlayVisible:w,attributeSelector:x},context:k({},d)}),C=P.ptm,N=P.cx;n.useHandleStyle(D.css.styles,P.isUnstyled,{name:"cascadeselect"});var A=m.useRef(null),U=m.useRef(null),R=m.useRef(null),L=m.useRef(null),T=m.useRef(null),B=m.useRef(!1),_=m.useRef(null),q=j(o.useOverlayListener({target:A,overlay:U,listener:function(e,t){t.valid&&(d.hideOverlaysOnDocumentScrolling||"outside"===t.type?re():s.DomHandler.isDocument(e.target)||ce())},when:w}),2),V=q[0],F=q[1],M=o.useDisplayOrder("cascade-select",w);o.useGlobalOnEscapeKey({callback:function(){re()},when:w&&M,priority:[o.ESC_KEY_HANDLING_PRIORITIES.CASCADE_SELECT,M]});var K=function(e){f.onChange&&f.onChange({originalEvent:e,value:e.value}),Y(),re(),s.DomHandler.focus(R.current)},W=function(e){B.current=!0,f.onGroupChange&&f.onGroupChange(e)},z=function(e){return(f.optionLabel?s.ObjectUtils.resolveFieldData(e,f.optionLabel):e)||e},Z=function(e){return f.optionValue?s.ObjectUtils.resolveFieldData(e,f.optionValue):e},J=function(e,t){return s.ObjectUtils.resolveFieldData(e,f.optionGroupChildren[t])},X=function(e,t){return Object.prototype.hasOwnProperty.call(e,f.optionGroupChildren[t])},Y=function(){var e;if(null!=f.value&&f.options){var t,n=G(f.options);try{for(n.s();!(t=n.n()).done;){if(e=$(t.value,0))break}}catch(e){n.e(e)}finally{n.f()}}_.current=e},$=function(e,t){if(X(e,t)){var n,r,o=G(J(e,t));try{for(o.s();!(r=o.n()).done;){if(n=$(r.value,t+1))return n.unshift(e),n}}catch(e){o.e(e)}finally{o.f()}}else if(s.ObjectUtils.equals(f.value,Z(e),f.dataKey))return[e];return null},Q=function(){g(!0)},ee=function(){g(!1)},te=function(e){switch(e.which){case 40:w?s.DomHandler.findSingle(U.current,'[data-pc-section="item"]').children[0].focus():e.altKey&&f.options&&f.options.length&&ne(),e.preventDefault();break;case 32:w?re():ne(),e.preventDefault();break;case 9:re()}},ne=function(){f.onBeforeShow&&f.onBeforeShow(),S(!0)},re=function(){f.onBeforeHide&&f.onBeforeHide(),S(!1),s.DomHandler.focus(R.current)},oe=function(){s.ZIndexUtils.set("overlay",U.current,d&&d.autoZIndex||b.default.autoZIndex,d&&d.zIndex.overlay||b.default.zIndex.overlay),s.DomHandler.addStyles(U.current,{position:"absolute",top:"0",left:"0"}),ce(),x&&f.breakpoint&&(U.current.setAttribute(x+"_panel",""),se())},ae=function(){V(),f.onShow&&f.onShow()},le=function(){F(),B.current=!1},ie=function(){s.ZIndexUtils.clear(U.current),f.onHide&&f.onHide(),ue()},ce=function(){s.DomHandler.alignOverlay(U.current,L.current.parentElement,f.appendTo||d&&d.appendTo||b.default.appendTo)},se=function(){if(!T.current){T.current=s.DomHandler.createInlineStyle(d&&d.nonce||b.default.nonce,d&&d.styleContainer);var e="".concat(x,"_panel"),t="\n@media screen and (max-width: ".concat(f.breakpoint,") {\n .p-cascadeselect-panel[").concat(e,"] .p-cascadeselect-items-wrapper > ul {\n max-height: ").concat(f.scrollHeight,";\n overflow: ").concat(f.scrollHeight?"auto":"",";\n }\n\n .p-cascadeselect-panel[").concat(e,"] .p-cascadeselect-sublist-wrapper {\n position:relative;\n left:0 !important;\n }\n\n .p-cascadeselect-panel[").concat(e,"] .p-cascadeselect-sublist {\n overflow: hidden !important;\n }\n\n .p-cascadeselect-panel[").concat(e,"] .p-cascadeselect-item-active .p-cascadeselect-sublist {\n left: 0;\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');T.current.innerHTML=t}},ue=function(){T.current=s.DomHandler.removeInlineStyle(T.current)};m.useImperativeHandle(u,(function(){return{props:f,getElement:function(){return A.current},getOverlay:function(){return U.current},getInput:function(){return R.current},getLabel:function(){return L.current},focus:function(){return s.DomHandler.focus(R.current)}}})),o.useMountEffect((function(){f.breakpoint&&!x&&I(s.UniqueComponentId()),f.autoFocus&&s.DomHandler.focus(R.current,f.autoFocus),ce()})),m.useEffect((function(){s.ObjectUtils.combinedRefs(R,f.inputRef)}),[R,f.inputRef]),o.useUpdateEffect((function(){Y()}),[f.value]),o.useUnmountEffect((function(){s.ZIndexUtils.clear(U.current)}));var pe=function(){var e=p({className:N("dropdownIcon")},C("dropdownIcon")),t=s.IconUtils.getJSXIcon(f.dropdownIcon||m.createElement(a.ChevronDownIcon,e),k({},e),{props:f}),n=p({className:N("dropdownButton"),role:"button","aria-haspopup":"listbox","aria-expanded":w},C("dropdownButton"));return m.createElement("div",n,t)},de=p({className:N("wrapper")},C("wrapper")),fe=p({ref:U,className:N("panel"),onClick:function(e){i.OverlayService.emit("overlay-click",{originalEvent:e,target:A.current})}},C("panel")),me=function(){var e=p({classNames:N("transition"),in:w,timeout:{enter:120,exit:100},options:f.transitionOptions,unmountOnExit:!0,onEnter:oe,onEntered:ae,onExit:le,onExited:ie},C("transition")),t=m.createElement(r.CSSTransition,v({nodeRef:U},e),m.createElement("div",fe,m.createElement("div",de,m.createElement(H,{hostName:"CascadeSelect",options:f.options,selectionPath:_.current,optionGroupIcon:f.optionGroupIcon,optionLabel:f.optionLabel,optionValue:f.optionValue,parentActive:null!=f.value,level:0,optionGroupLabel:f.optionGroupLabel,optionGroupChildren:f.optionGroupChildren,onOptionSelect:K,onOptionGroupSelect:W,root:!0,template:f.itemTemplate,onPanelHide:re,ptm:C,cx:N}))));return m.createElement(c.Portal,{element:t,appendTo:f.appendTo})},be=D.getOtherProps(f);s.ObjectUtils.reduceKeys(be,s.DomHandler.DATA_PROPS);var ve,ye,he,ge,Oe,we,Se,Ee,xe,Ie,je,De,Pe,Ce=s.ObjectUtils.reduceKeys(be,s.DomHandler.ARIA_PROPS);return ve=f.value?z(f.value):void 0,ye=p({className:"p-hidden-accessible"},C("hiddenSelectedMessage")),he=p(k({ref:R,type:"text",id:f.inputId,name:f.name,defaultValue:ve,readOnly:!0,disabled:f.disabled,onFocus:Q,onBlur:ee,onKeyDown:function(e){return te(e)},tabIndex:f.tabIndex,"aria-haspopup":"listbox"},Ce),C("input")),xe=m.createElement("div",ye,m.createElement("input",he)),ge=f.value?z(f.value):f.placeholder||"p-emptylabel",Oe=p({ref:L,className:N("label",{label:ge})},C("label",{context:k({label:ge},d)})),Ie=m.createElement("span",Oe,ge),je=f.loading?(we=p({className:N("loadingIcon")},C("loadingIcon")),Se=s.IconUtils.getJSXIcon(f.loadingIcon||m.createElement(l.SpinnerIcon,{spin:!0}),k({},we),{props:f}),Ee=p({className:N("loadingButton"),role:"button","aria-haspopup":"listbox","aria-expanded":w},C("dropdownButton")),m.createElement("div",Ee,Se)):pe(),De=me(),Pe=p({id:f.id,ref:A,className:s.classNames(f.className,N("root",{focusedState:h,overlayVisibleState:w,context:d})),style:f.style,onClick:function(e){return t=e,void(f.disabled||f.loading||U.current&&U.current.contains(t.target)||(s.DomHandler.focus(R.current),w?re():ne()));var t}},be,C("root")),m.createElement("div",Pe,xe,Ie,je,De)})));R.displayName="CascadeSelect",exports.CascadeSelect=R;