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