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) • 15.4 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/button"),l=require("primereact/hooks"),r=require("primereact/inputtext"),o=require("primereact/overlayservice"),i=require("primereact/tooltip"),a=require("primereact/utils"),u=require("primereact/csstransition"),c=require("primereact/portal"),s=require("primereact/ripple"),p=require("primereact/virtualscroller");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function d(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,l.get?l:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var f=d(e),g=m(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 l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},v.apply(this,arguments)}function y(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 b(e){if(Array.isArray(e))return y(e)}function h(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function O(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}function E(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function C(e){if(Array.isArray(e))return e}function w(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,o=[],i=!0,a=!1;try{for(n=n.call(e);!(i=(l=n.next()).done)&&(o.push(l.value),!t||o.length!==t);i=!0);}catch(e){a=!0,r=e}finally{try{i||null==n.return||n.return()}finally{if(a)throw r}}return o}}function D(){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 x(e,t){return C(e)||w(e,t)||O(e,t)||D()}function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(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 I(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){S(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var k=f.memo(f.forwardRef((function(e,n){var l,r,o,i=function(t){return a.ObjectUtils.resolveFieldData(t,e.optionGroupLabel)},m=function(t,n,l){return e.getOptionGroupChildren(t).map((function(t,r){var o=n+"_"+r,i=e.selectedItem===t,u=e.itemTemplate?a.ObjectUtils.getJSXElement(e.itemTemplate,t,r):e.field?a.ObjectUtils.resolveFieldData(t,e.field):t;return f.createElement("li",{key:o,role:"option","aria-selected":i,className:"p-autocomplete-item",style:l,onClick:function(n){return e.onItemClick(n,t)},"data-group":n,"data-index":r},u,f.createElement(s.Ripple,null))}))},d=function(t,n){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={height:l.props?l.props.itemSize:void 0};if(e.optionGroupLabel){var o=e.optionGroupTemplate?a.ObjectUtils.getJSXElement(e.optionGroupTemplate,t,n):e.getOptionGroupLabel(t),u=m(t,n,r),c=n+"_"+i(t);return f.createElement(f.Fragment,{key:c},f.createElement("li",{className:"p-autocomplete-item-group",style:r},o),u)}var p=e.itemTemplate?a.ObjectUtils.getJSXElement(e.itemTemplate,t,n):e.field?a.ObjectUtils.resolveFieldData(t,e.field):t;return f.createElement("li",{key:n,role:"option","aria-selected":e.selectedItem===t,className:"p-autocomplete-item",style:r,onClick:function(n){return e.onItemClick(n,t)}},p,f.createElement(s.Ripple,null))},g=function(){if(e.showEmptyMessage&&a.ObjectUtils.isEmpty(e.suggestions)){var n=e.emptyMessage||t.localeOption("emptyMessage");return f.createElement("ul",{className:"p-autocomplete-items"},f.createElement("li",{className:"p-autocomplete-item"},n))}if(e.virtualScrollerOptions){var l=I(I({},e.virtualScrollerOptions),{style:I(I({},e.virtualScrollerOptions.style),{height:e.scrollHeight}),autoSize:!0,items:e.suggestions,itemTemplate:function(e,t){return e&&d(e,t.index,t)},contentTemplate:function(t){var n=a.classNames("p-autocomplete-items",t.className);return f.createElement("ul",{ref:t.contentRef,className:n,role:"listbox",id:e.listId},t.children)}});return f.createElement(p.VirtualScroller,v({ref:e.virtualScrollerRef},l))}var r=e.suggestions?e.suggestions.map(d):null;return f.createElement("ul",{className:"p-autocomplete-items",role:"listbox",id:e.listId},r)},y=(l=a.classNames("p-autocomplete-panel p-component",e.panelClassName),r=I({maxHeight:e.scrollHeight},e.panelStyle||{}),o=g(),f.createElement(u.CSSTransition,{nodeRef:n,classNames:"p-connected-overlay",in:e.in,timeout:{enter:120,exit:100},options:e.transitionOptions,unmountOnExit:!0,onEnter:e.onEnter,onEntering:e.onEntering,onEntered:e.onEntered,onExit:e.onExit,onExited:e.onExited},f.createElement("div",{ref:n,className:l,style:r,onClick:e.onClick},o)));return f.createElement(c.Portal,{element:y,appendTo:e.appendTo})})));k.displayName="AutoCompletePanel";var U=f.memo(f.forwardRef((function(e,u){var c=x(f.useState(e.id),2),s=c[0],p=c[1],m=x(f.useState(!1),2),d=m[0],y=m[1],C=x(f.useState(!1),2),w=C[0],D=C[1],S=x(f.useState(!1),2),j=S[0],I=S[1],N=f.useRef(null),H=f.useRef(null),T=f.useRef(e.inputRef),M=f.useRef(null),P=f.useRef(null),R=f.useRef(null),A=f.useRef(null),F=x(l.useOverlayListener({target:N,overlay:H,listener:function(e,t){t.valid&&("outside"===t.type?!G(e)&&Z():Z())},when:j}),2),L=F[0],q=F[1],G=function(t){return e.multiple?t.target===M.current||M.current.contains(t.target):t.target===T.current},K=function(t){R.current&&clearTimeout(R.current);var n=t.target.value;e.multiple||B(t,n),a.ObjectUtils.isEmpty(n)?(Z(),e.onClear&&e.onClear(t)):n.length>=e.minLength?R.current=setTimeout((function(){_(t,n,"input")}),e.delay):Z()},_=function(t,n,l){null!=n&&("input"===l&&0===n.trim().length||e.completeMethod&&(y(!0),e.completeMethod({originalEvent:t,query:n})))},z=function(t,n,l){if(e.multiple){if(T.current.value="",!ce(n)){var r=e.value?[].concat(b(o=e.value)||h(o)||O(o)||E(),[n]):[n];B(t,r)}}else V(n),B(t,n);var o;e.onSelect&&e.onSelect({originalEvent:t,value:n}),l||(a.DomHandler.focus(T.current),Z())},B=function(t,n){A&&A.current===n||(e.onChange&&e.onChange({originalEvent:t,value:n,stopPropagation:function(){},preventDefault:function(){},target:{name:e.name,id:s,value:n}}),A.current=n)},J=function(t){if(t){if("string"==typeof t)return t;if(e.selectedItemTemplate){var n=a.ObjectUtils.getJSXElement(e.selectedItemTemplate,t);return n||t}if(e.field){var l=a.ObjectUtils.resolveFieldData(t,e.field);return null!=l?l:t}return t}return""},V=function(e){T.current.value=J(e)},X=function(){I(!0)},Z=function(){I(!1),y(!1)},Y=function(){a.DomHandler.alignOverlay(H.current,e.multiple?M.current:T.current,e.appendTo||g.default.appendTo)},$=function(t){e.dropdownAutoFocus&&a.DomHandler.focus(T.current,e.dropdownAutoFocus),"blank"===e.dropdownMode?_(t,"","dropdown"):"current"===e.dropdownMode&&_(t,T.current.value,"dropdown"),e.onDropdownClick&&e.onDropdownClick({originalEvent:t,query:T.current.value})},Q=function(t,n){var l=e.value[n],r=e.value.filter((function(e,t){return n!==t}));B(t,r),e.onUnselect&&e.onUnselect({originalEvent:t,value:l})},W=function(t){if(j){var n=a.DomHandler.findSingle(H.current,"li.p-highlight");switch(t.which){case 40:if(n){var l=te(n);l&&(a.DomHandler.addClass(l,"p-highlight"),a.DomHandler.removeClass(n,"p-highlight"),a.DomHandler.scrollInView(se(),l))}else n=a.DomHandler.findSingle(H.current,"li"),a.DomHandler.hasClass(n,"p-autocomplete-item-group")&&(n=te(n)),n&&a.DomHandler.addClass(n,"p-highlight");t.preventDefault();break;case 38:if(n){var r=ne(n);r&&(a.DomHandler.addClass(r,"p-highlight"),a.DomHandler.removeClass(n,"p-highlight"),a.DomHandler.scrollInView(se(),r))}t.preventDefault();break;case 13:n&&(ee(t,n),Z(),t.preventDefault());break;case 27:Z(),t.preventDefault();break;case 9:n&&ee(t,n),Z()}}if(e.multiple&&8===t.which)if(e.value&&e.value.length&&!T.current.value){var o=e.value[e.value.length-1],i=e.value.slice(0,-1);B(t,i),e.onUnselect&&e.onUnselect({originalEvent:t,value:o})}},ee=function(t,n){e.optionGroupLabel?z(t,pe(e.suggestions[n.dataset.group])[n.dataset.index]):z(t,e.suggestions[a.DomHandler.index(n)])},te=function e(t){var n=t.nextElementSibling;return n?a.DomHandler.hasClass(n,"p-autocomplete-item-group")?e(n):n:null},ne=function e(t){var n=t.previousElementSibling;return n?a.DomHandler.hasClass(n,"p-autocomplete-item-group")?e(n):n:null},le=function(t){D(!0),e.onFocus&&e.onFocus(t)},re=function(t){var n=t.target.value.trim(),l=(e.suggestions||[]).find((function(t){var l=e.field?a.ObjectUtils.resolveFieldData(t,e.field):t;return l&&n===l.trim()}));l?z(t,l,!0):(T.current.value="",B(t,null),e.onClear&&e.onClear(t))},oe=function(t){D(!1),e.forceSelection&&re(t),e.onBlur&&e.onBlur(t)},ie=function(t){a.DomHandler.focus(T.current),e.onClick&&e.onClick(t)},ae=function(e){le(e),a.DomHandler.addClass(M.current,"p-focus")},ue=function(e){oe(e),a.DomHandler.removeClass(M.current,"p-focus")},ce=function(t){return!!e.value&&e.value.some((function(e){return a.ObjectUtils.equals(e,t)}))},se=function(){return P.current?H.current.firstChild:H.current},pe=function(t){return a.ObjectUtils.resolveFieldData(t,e.optionGroupChildren)};f.useEffect((function(){a.ObjectUtils.combinedRefs(T,e.inputRef)}),[T,e.inputRef]),l.useMountEffect((function(){s||p(a.UniqueComponentId()),e.autoFocus&&a.DomHandler.focus(T.current,e.autoFocus)})),l.useUpdateEffect((function(){d&&(a.ObjectUtils.isNotEmpty(e.suggestions)||e.showEmptyMessage?X():Z(),y(!1))}),[e.suggestions]),l.useUpdateEffect((function(){T.current&&!e.multiple&&V(e.value)})),l.useUnmountEffect((function(){R.current&&clearTimeout(R.current),a.ZIndexUtils.clear(H.current)})),f.useImperativeHandle(u,(function(){return{props:e,search:_,show:X,hide:Z,getElement:function(){return N.current},getOverlay:function(){return H.current},getInput:function(){return T.current},getVirtualScroller:function(){return P.current}}}));var me=function(){var t=J(e.value),n=j?s+"_list":null,l=a.classNames("p-autocomplete-input",e.inputClassName,{"p-autocomplete-dd-input":e.dropdown});return f.createElement(r.InputText,v({ref:T,id:e.inputId,type:e.type,name:e.name,defaultValue:t,role:"combobox","aria-autocomplete":"list","aria-controls":n,"aria-haspopup":"listbox","aria-expanded":j,className:l,style:e.inputStyle,autoComplete:"off",readOnly:e.readOnly,disabled:e.disabled,placeholder:e.placeholder,size:e.size,maxLength:e.maxLength,tabIndex:e.tabIndex,onBlur:oe,onFocus:le,onChange:K,onMouseDown:e.onMouseDown,onKeyUp:e.onKeyUp,onKeyDown:W,onKeyPress:e.onKeyPress,onContextMenu:e.onContextMenu,onClick:e.onClick,onDoubleClick:e.onDblClick},ye))},de=function(){var t=a.classNames("p-autocomplete-multiple-container p-component p-inputtext",{"p-disabled":e.disabled}),n=a.ObjectUtils.isNotEmpty(e.value)?e.value.map((function(t,n){return f.createElement("li",{key:n+"multi-item",className:"p-autocomplete-token p-highlight"},f.createElement("span",{className:"p-autocomplete-token-label"},J(t)),!e.disabled&&a.IconUtils.getJSXIcon(e.removeIcon,{className:"p-autocomplete-token-icon",onClick:function(e){return Q(e,n)}},{props:e}))})):null,l=f.createElement("li",{className:"p-autocomplete-input-token"},f.createElement("input",v({ref:T,type:e.type,disabled:e.disabled,placeholder:e.placeholder,role:"combobox","aria-autocomplete":"list","aria-controls":j?s+"_list":null,"aria-haspopup":"listbox","aria-expanded":j,autoComplete:"off",readOnly:e.readOnly,tabIndex:e.tabIndex,onChange:K,id:e.inputId,name:e.name,style:e.inputStyle,className:e.inputClassName,maxLength:e.maxLength,onKeyUp:e.onKeyUp,onKeyDown:W,onKeyPress:e.onKeyPress,onFocus:ae,onBlur:ue},ye)));return f.createElement("ul",{ref:M,className:t,onContextMenu:e.onContextMenu,onMouseDown:e.onMouseDown,onClick:ie,onDoubleClick:e.onDblClick},n,l)},fe=s+"_list",ge=a.ObjectUtils.isNotEmpty(e.tooltip),ve=a.ObjectUtils.findDiffKeys(e,U.defaultProps),ye=a.ObjectUtils.reduceKeys(ve,a.DomHandler.ARIA_PROPS),be=a.classNames("p-autocomplete p-component p-inputwrapper",{"p-autocomplete-dd":e.dropdown,"p-autocomplete-multiple":e.multiple,"p-inputwrapper-filled":e.value,"p-inputwrapper-focus":w},e.className),he=d?f.createElement("i",{className:"p-autocomplete-loader pi pi-spinner pi-spin"}):null,Oe=e.multiple?de():me(),Ee=function(){if(e.dropdown){var l=e.dropdownAriaLabel||e.placeholder||t.localeOption("choose");return f.createElement(n.Button,{type:"button",icon:e.dropdownIcon,className:"p-autocomplete-dropdown",disabled:e.disabled,onClick:$,"aria-label":l})}return null}();return f.createElement(f.Fragment,null,f.createElement("span",v({ref:N,id:s,style:e.style,className:be},ve),Oe,he,Ee,f.createElement(k,v({ref:H,virtualScrollerRef:P},e,{listId:fe,onItemClick:z,selectedItem:A,onClick:function(e){o.OverlayService.emit("overlay-click",{originalEvent:e,target:N.current})},getOptionGroupLabel:function(t){return e.optionGroupLabel?a.ObjectUtils.resolveFieldData(t,e.optionGroupLabel):t},getOptionGroupChildren:pe,in:j,onEnter:function(){a.ZIndexUtils.set("overlay",H.current,g.default.autoZIndex,g.default.zIndex.overlay),Y()},onEntering:function(){if(e.autoHighlight&&e.suggestions&&e.suggestions.length){var t=se().firstChild.firstChild;a.DomHandler.addClass(t,"p-highlight")}},onEntered:function(){L(),e.onShow&&e.onShow()},onExit:function(){q()},onExited:function(){a.ZIndexUtils.clear(H.current),e.onHide&&e.onHide()}}))),ge&&f.createElement(i.Tooltip,v({target:N,content:e.tooltip},e.tooltipOptions)))})));U.displayName="AutoComplete",U.defaultProps={__TYPE:"AutoComplete",id:null,appendTo:null,autoFocus:!1,autoHighlight:!1,className:null,completeMethod:null,delay:300,disabled:!1,dropdown:!1,dropdownAriaLabel:null,dropdownAutoFocus:!0,dropdownIcon:"pi pi-chevron-down",dropdownMode:"blank",emptyMessage:null,field:null,forceSelection:!1,inputClassName:null,inputId:null,inputRef:null,inputStyle:null,itemTemplate:null,maxLength:null,minLength:1,multiple:!1,name:null,onBlur:null,onChange:null,onClear:null,onClick:null,onContextMenu:null,onDblClick:null,onDropdownClick:null,onFocus:null,onHide:null,onKeyPress:null,onKeyUp:null,onMouseDown:null,onSelect:null,onShow:null,onUnselect:null,optionGroupChildren:null,optionGroupLabel:null,optionGroupTemplate:null,panelClassName:null,panelStyle:null,placeholder:null,readOnly:!1,removeIcon:"pi pi-times-circle",scrollHeight:"200px",selectedItemTemplate:null,showEmptyMessage:!1,size:null,style:null,suggestions:null,tabIndex:null,tooltip:null,tooltipOptions:null,transitionOptions:null,type:"text",value:null,virtualScrollerOptions:null},exports.AutoComplete=U;