UNPKG

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) 11.5 kB
import*as e from"react";import{FilterService as t}from"primereact/api";import{useMountEffect as n}from"primereact/hooks";import{Tooltip as r}from"primereact/tooltip";import{ObjectUtils as l,classNames as o,DomHandler as i}from"primereact/utils";import{VirtualScroller as a}from"primereact/virtualscroller";import{InputText as u}from"primereact/inputtext";import{Ripple as c}from"primereact/ripple";function s(){return s=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},s.apply(this,arguments)}function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(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 m(e){if(Array.isArray(e))return f(e)}function d(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function v(e,t){if(e){if("string"==typeof e)return f(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)?f(e,t):void 0}}function b(){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 y(e){return m(e)||d(e)||v(e)||b()}function h(e){if(Array.isArray(e))return e}function g(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,l,o=[],i=!0,a=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){a=!0,l=e}finally{try{i||null==n.return||n.return()}finally{if(a)throw l}}return o}}function E(){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 x=e.memo((function(t){var n={filter:function(e){return r(e)},reset:function(){return t.resetFilter()}},r=function(e){t.onFilter&&t.onFilter({originalEvent:e,value:e.target.value})},o=function(){var o=e.createElement("div",{className:"p-listbox-filter-container"},e.createElement(u,s({type:"text",value:t.filter,onChange:r,className:"p-listbox-filter",disabled:t.disabled,placeholder:t.filterPlaceholder},t.filterInputProps)),e.createElement("span",{className:"p-listbox-filter-icon pi pi-search"}));t.filterTemplate&&(o=l.getJSXElement(t.filterTemplate,{className:"p-listbox-filter-container",element:o,filterOptions:n,filterInputChange:r,filterIconClassName:"p-dropdown-filter-icon pi pi-search",props:t}));return e.createElement("div",{className:"p-listbox-header"},o)}();return e.createElement(e.Fragment,null,o)}));x.displayName="ListBoxHeader";var O=e.memo((function(t){var n=function(e){t.onClick&&t.onClick({originalEvent:e,option:t.option}),e.preventDefault()},r=function e(t){var n=t.nextElementSibling;return n?i.hasClass(n,"p-disabled")||i.hasClass(n,"p-listbox-item-group")?e(n):n:null},a=function e(t){var n=t.previousElementSibling;return n?i.hasClass(n,"p-disabled")||i.hasClass(n,"p-listbox-item-group")?e(n):n:null},u=o("p-listbox-item",{"p-highlight":t.selected,"p-disabled":t.disabled},t.option.className),s=t.template?l.getJSXElement(t.template,t.option):t.label;return e.createElement("li",{className:u,style:t.style,onClick:n,onTouchEnd:function(e){t.onTouchEnd&&t.onTouchEnd({originalEvent:e,option:t.option})},onKeyDown:function(e){var t=e.currentTarget;switch(e.which){case 40:var l=r(t);l&&l.focus(),e.preventDefault();break;case 38:var o=a(t);o&&o.focus(),e.preventDefault();break;case 13:n(e),e.preventDefault()}},tabIndex:"-1","aria-label":t.label,key:t.label,role:"option","aria-selected":t.selected,"aria-disabled":t.disabled},s,e.createElement(c,null))}));function S(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?S(Object(n),!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function w(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=I(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,l=function(){};return{s:l,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:l}}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 o,i=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(a)throw o}}}}function I(e,t){if(e){if("string"==typeof e)return T(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)?T(e,t):void 0}}function T(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}O.displayName="ListBoxItem";var P=e.memo(e.forwardRef((function(u,c){var p,f,m=e.useState(""),d=(f=2,h(p=m)||g(p,f)||v(p,f)||E()),b=d[0],S=d[1],I=e.useRef(null),T=e.useRef(null),D=e.useRef(!1),L=(u.onFilterValueChange?u.filterValue:b)||"",j=L&&L.trim().length>0,F=function(e){var t=e.option;u.disabled||H(t)||(u.multiple?K(e.originalEvent,t):A(e.originalEvent,t),D.current=!1)},N=function(){u.disabled||(D.current=!0)},A=function(e,t){var n=q(t),r=!1,l=null;!D.current&&u.metaKeySelection?n?(e.metaKey||e.ctrlKey)&&(l=null,r=!0):(l=J(t),r=!0):(l=n?null:J(t),r=!0);r&&V(e,l)},K=function(e,t){var n=q(t),r=!1,l=null;if(!D&&u.metaKeySelection){var o=e.metaKey||e.ctrlKey;n?(l=o?M(t):[J(t)],r=!0):(l=[].concat(y(l=o&&u.value||[]),[J(t)]),r=!0)}else l=n?M(t):[].concat(y(u.value||[]),[J(t)]),r=!0;r&&u.onChange({originalEvent:e,value:l,stopPropagation:function(){},preventDefault:function(){},target:{name:u.name,id:u.id,value:l}})},k=function(e){T.current&&T.current.scrollToIndex(0);var t=e.value;u.onFilterValueChange?u.onFilterValueChange({originalEvent:e.originalEvent,value:t}):S(t)},G=function(){S(""),u.onFilter&&u.onFilter({filter:""})},V=function(e,t){u.onChange&&u.onChange({originalEvent:e,value:t,stopPropagation:function(){},preventDefault:function(){},target:{name:u.name,id:u.id,value:t}})},M=function(e){return u.value.filter((function(t){return!l.equals(t,J(e),u.dataKey)}))},B=function(){if(null!=u.value&&ee){if(!u.optionGroupLabel)return _(u.value,ee);for(var e=0;e<ee.length;e++){var t=_(u.value,Y(ee[e]));if(-1!==t)return{group:e,option:t}}}return-1},R=function(){return u.optionValue?null:u.dataKey},_=function(e,t){var n=R();return t.findIndex((function(t){return l.equals(e,J(t),n)}))},q=function(e){var t=J(e),n=R();return u.multiple&&u.value?u.value.some((function(e){return l.equals(e,t,n)})):l.equals(u.value,t,n)},z=function(e){return u.optionLabel?l.resolveFieldData(e,u.optionLabel):e&&void 0!==e.label?e.label:e},J=function(e){return u.optionValue?l.resolveFieldData(e,u.optionValue):e&&void 0!==e.value?e.value:e},X=function(e){return u.dataKey?l.resolveFieldData(e,u.dataKey):z(e)},H=function(e){return u.optionDisabled?l.isFunction(u.optionDisabled)?u.optionDisabled(e):l.resolveFieldData(e,u.optionDisabled):!(!e||void 0===e.disabled)&&e.disabled},U=function(e){return l.resolveFieldData(e,u.optionGroupLabel)},$=function(e){return l.resolveFieldData(e,u.optionGroupLabel)},Y=function(e){return l.resolveFieldData(e,u.optionGroupChildren)},Q=function(){if(T.current){var e=B();-1!==e&&setTimeout((function(){return T.current.scrollToIndex(e)}),0)}};e.useImperativeHandle(c,(function(){return{props:u,getElement:function(){return I.current},getVirtualScroller:function(){return T.current}}})),n((function(){Q()}));var W=function(t,n){return Y(t).map((function(t,r){var l=z(t),o=r+"_"+X(t),i=H(t),a=i?null:u.tabIndex||0;return e.createElement(O,{key:o,label:l,option:t,style:n,template:u.itemTemplate,selected:q(t),onClick:F,onTouchEnd:N,tabIndex:a,disabled:i})}))},Z=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o={height:r.props?r.props.itemSize:void 0};if(u.optionGroupLabel){var i=u.optionGroupTemplate?l.getJSXElement(u.optionGroupTemplate,t,n):$(t),a=W(t,o),c=n+"_"+U(t);return e.createElement(e.Fragment,{key:c},e.createElement("li",{className:"p-listbox-item-group",style:o,role:"group"},i),a)}var s=z(t),p=n+"_"+X(t),f=H(t),m=f?null:u.tabIndex||0;return e.createElement(O,{key:p,label:s,option:t,style:o,template:u.itemTemplate,selected:q(t),onClick:F,onTouchEnd:N,tabIndex:m,disabled:f})},ee=function(){if(j){var e=L.trim().toLocaleLowerCase(u.filterLocale),n=u.filterBy?u.filterBy.split(","):[u.optionLabel||"label"];if(u.optionGroupLabel){var r,l=[],o=w(u.options);try{for(o.s();!(r=o.n()).done;){var i=r.value,a=t.filter(Y(i),n,e,u.filterMatchMode,u.filterLocale);a&&a.length&&l.push(C(C({},i),{items:a}))}}catch(e){o.e(e)}finally{o.f()}return l}return t.filter(u.options,n,e,u.filterMatchMode,u.filterLocale)}return u.options}(),te=l.isNotEmpty(u.tooltip),ne=l.findDiffKeys(u,P.defaultProps),re=l.reduceKeys(ne,i.ARIA_PROPS),le=o("p-listbox p-component",{"p-disabled":u.disabled},u.className),oe=o("p-listbox-list-wrapper",u.listClassName),ie=function(){if(u.virtualScrollerOptions){var t=C(C({},u.virtualScrollerOptions),{items:ee,onLazyLoad:function(e){return u.virtualScrollerOptions.onLazyLoad(C(C({},e),{filter:ee}))},itemTemplate:function(e,t){return e&&Z(e,t.index,t)},contentTemplate:function(t){var n=o("p-listbox-list",t.className);return e.createElement("ul",s({ref:t.contentRef,className:n,role:"listbox","aria-multiselectable":u.multiple},re),t.children)}});return e.createElement(a,s({ref:T},t))}var n=ee?ee.map(Z):null;return e.createElement("ul",s({className:"p-listbox-list",role:"listbox","aria-multiselectable":u.multiple},re),n)}(),ae=u.filter?e.createElement(x,{filter:L,onFilter:k,resetFilter:G,filterTemplate:u.filterTemplate,disabled:u.disabled,filterPlaceholder:u.filterPlaceholder,filterInputProps:u.filterInputProps}):null;return e.createElement(e.Fragment,null,e.createElement("div",s({ref:I,id:u.id,className:le,style:u.style},ne),ae,e.createElement("div",{className:oe,style:u.listStyle},ie)),te&&e.createElement(r,s({target:I,content:u.tooltip},u.tooltipOptions)))})));P.displayName="ListBox",P.defaultProps={__TYPE:"ListBox",id:null,value:null,options:null,optionLabel:null,optionValue:null,optionDisabled:null,optionGroupLabel:null,optionGroupChildren:null,optionGroupTemplate:null,itemTemplate:null,style:null,listStyle:null,listClassName:null,className:null,virtualScrollerOptions:null,disabled:null,dataKey:null,multiple:!1,metaKeySelection:!1,filter:!1,filterTemplate:null,filterBy:null,filterValue:null,filterMatchMode:"contains",filterPlaceholder:null,filterLocale:void 0,filterInputProps:null,tabIndex:0,tooltip:null,tooltipOptions:null,onChange:null,onFilterValueChange:null};export{P as ListBox};