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) • 5.58 kB
JavaScript
import*as e from"react";import{KeyFilter as n}from"primereact/keyfilter";import{Tooltip as t}from"primereact/tooltip";import{ObjectUtils as r,DomHandler as l,classNames as a}from"primereact/utils";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},o.apply(this,arguments)}function i(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function u(e){if(Array.isArray(e))return i(e)}function c(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function p(e,n){if(e){if("string"==typeof e)return i(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?i(e,n):void 0}}function f(){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 s(e){return u(e)||c(e)||p(e)||f()}function m(e){if(Array.isArray(e))return e}function d(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,l,a=[],o=!0,i=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(a.push(r.value),!n||a.length!==n);o=!0);}catch(e){i=!0,l=e}finally{try{o||null==t.return||t.return()}finally{if(i)throw l}}return a}}function v(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var y=e.memo(e.forwardRef((function(i,u){var c,f,h=e.useState(!1),g=(f=2,m(c=h)||d(c,f)||p(c,f)||v()),b=g[0],w=g[1],E=e.useRef(null),O=e.useRef(null),k=e.useRef(i.inputRef),x=function(e,n){if(!i.disabled||!i.readOnly){var t=s(i.value),r=t.splice(n,1);K(r,n)&&(i.onRemove&&i.onRemove({originalEvent:e,value:r}),i.onChange&&i.onChange({originalEvent:e,value:t,stopPropagation:function(){},preventDefault:function(){},target:{name:i.name,id:i.id,value:t}}))}},D=function(e,n,t){if(n&&n.trim().length){var r=i.value?s(i.value):[];if(i.allowDuplicate||-1===r.indexOf(n)){var l=!0;i.onAdd&&(l=i.onAdd({originalEvent:e,value:n})),!1!==l&&r.push(n)}P(e,r,t)}},A=function(){l.focus(k.current)},R=function(e){var t=e.target.value,r=i.value||[];if(i.onKeyDown&&i.onKeyDown(e),!e.defaultPrevented)switch(e.which){case 8:0===k.current.value.length&&r.length>0&&x(e,r.length-1);break;case 13:t&&t.trim().length&&(!i.max||i.max>r.length)&&D(e,t,!0);break;default:i.keyfilter&&n.onKeyPress(e,i.keyfilter),S()?e.preventDefault():","===i.separator&&188===e.which&&D(e,t,!0)}},P=function(e,n,t){i.onChange&&i.onChange({originalEvent:e,value:n,stopPropagation:function(){},preventDefault:function(){},target:{name:i.name,id:i.id,value:n}}),k.current.value="",t&&e.preventDefault()},N=function(e){if(i.separator){var t=(e.clipboardData||window.clipboardData).getData("Text");if(i.keyfilter&&n.onPaste(e,i.keyfilter),t){var r=i.value||[],l=t.split(i.separator);l=l.filter((function(e){return(i.allowDuplicate||-1===r.indexOf(e))&&e.trim().length})),r=[].concat(s(r),s(l)),P(e,r,!0)}}},C=function(e){w(!0),i.onFocus&&i.onFocus(e)},I=function(e){if(i.addOnBlur){var n=e.target.value,t=i.value||[];n&&n.trim().length&&(!i.max||i.max>t.length)&&D(e,n,!0)}w(!1),i.onBlur&&i.onBlur(e)},S=function(){return i.max&&i.value&&i.max===i.value.length},j=k.current&&k.current.value,B=e.useMemo((function(){return r.isNotEmpty(i.value)||r.isNotEmpty(j)}),[i.value,j]),K=function(e,n){return r.getPropValue(i.removable,{value:e,index:n,props:i})};e.useImperativeHandle(u,(function(){return{props:i,getElement:function(){return E.current},getInput:function(){return k.current}}})),e.useEffect((function(){r.combinedRefs(k,i.inputRef)}),[k,i.inputRef]);var T=function(n,t){return i.disabled||i.readOnly||!K(n,t)?null:e.createElement("span",{className:"p-chips-token-icon pi pi-times-circle",onClick:function(e){return x(e,t)}})},F=function(n,t){var r=i.itemTemplate?i.itemTemplate(n):n,l=e.createElement("span",{className:"p-chips-token-label"},r),a=T(n,t);return e.createElement("li",{key:t,className:"p-chips-token p-highlight"},l,a)},_=r.isNotEmpty(i.tooltip),M=r.findDiffKeys(i,y.defaultProps),H=r.reduceKeys(M,l.ARIA_PROPS),L=a("p-chips p-component p-inputwrapper",{"p-inputwrapper-filled":B,"p-inputwrapper-focus":b},i.className),U=function(){var n=a("p-inputtext p-chips-multiple-container",{"p-disabled":i.disabled,"p-focus":b}),t=i.value?i.value.map(F):null,r=e.createElement("li",{className:"p-chips-input-token"},e.createElement("input",o({ref:k,id:i.inputId,placeholder:i.placeholder,type:"text",name:i.name,disabled:i.disabled||S(),onKeyDown:R,onPaste:N,onFocus:C,onBlur:I,readOnly:i.readOnly},H)));return e.createElement("ul",{ref:O,className:n,onClick:A},t,r)}();return e.createElement(e.Fragment,null,e.createElement("div",o({ref:E,id:i.id,className:L,style:i.style},M),U),_&&e.createElement(t,o({target:k,content:i.tooltip},i.tooltipOptions)))})));y.displayName="Chips",y.defaultProps={__TYPE:"Chips",id:null,inputRef:null,inputId:null,name:null,placeholder:null,value:null,max:null,disabled:null,readOnly:!1,removable:!0,style:null,className:null,tooltip:null,tooltipOptions:null,ariaLabelledBy:null,separator:null,allowDuplicate:!0,itemTemplate:null,keyfilter:null,addOnBlur:null,onAdd:null,onRemove:null,onChange:null,onFocus:null,onBlur:null,onKeyDown:null};export{y as Chips};