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) 13.4 kB
import*as e from"react";import{FilterService as t}from"primereact/api";import{useUpdateEffect as n}from"primereact/hooks";import{classNames as r,ObjectUtils as l,DomHandler as i}from"primereact/utils";import{Button as a}from"primereact/button";import{Ripple as o}from"primereact/ripple";function c(){return c=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},c.apply(this,arguments)}function s(e){if(Array.isArray(e))return e}function u(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,l,i=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){o=!0,l=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw l}}return i}}function p(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 f(e,t){if(e){if("string"==typeof e)return p(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)?p(e,t):void 0}}function m(){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 g(e,t){return s(e)||u(e,t)||f(e,t)||m()}function d(e){if(Array.isArray(e))return p(e)}function v(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function y(){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 h(e){return d(e)||v(e)||f(e)||y()}var S=e.memo((function(t){var n=!t.selection||!t.selection.length,i=r("p-picklist-buttons",t.className);return e.createElement("div",{className:i},e.createElement(a,{disabled:n,type:"button",icon:"pi pi-angle-up",onClick:function(e){var n=t.selection;if(n&&n.length){for(var r=h(t.list),i=0;i<n.length;i++){var a=l.findIndexInList(n[i],r,t.dataKey);if(0===a)break;var o=r[a-1];r[a-1]=r[a],r[a]=o}t.onReorder&&t.onReorder({originalEvent:e,value:r,direction:"up"})}}}),e.createElement(a,{disabled:n,type:"button",icon:"pi pi-angle-double-up",onClick:function(e){var n=t.selection;if(n&&n.length){for(var r=h(t.list),i=0;i<n.length;i++){var a=l.findIndexInList(n[i],r,t.dataKey);if(0===a)break;var o=r.splice(a,1)[0];r.unshift(o)}t.onReorder&&t.onReorder({originalEvent:e,value:r,direction:"top"})}}}),e.createElement(a,{disabled:n,type:"button",icon:"pi pi-angle-down",onClick:function(e){var n=t.selection;if(n&&n.length){for(var r=h(t.list),i=n.length-1;i>=0;i--){var a=l.findIndexInList(n[i],r,t.dataKey);if(a===r.length-1)break;var o=r[a+1];r[a+1]=r[a],r[a]=o}t.onReorder&&t.onReorder({originalEvent:e,value:r,direction:"down"})}}}),e.createElement(a,{disabled:n,type:"button",icon:"pi pi-angle-double-down",onClick:function(e){var n=t.selection;if(n&&n.length){for(var r=h(t.list),i=n.length-1;i>=0;i--){var a=l.findIndexInList(n[i],r,t.dataKey);if(a===r.length-1)break;var o=r.splice(a,1)[0];r.push(o)}t.onReorder&&t.onReorder({originalEvent:e,value:r,direction:"bottom"})}}}))}));S.displayName="PickListControls";var b=e.memo((function(t){var n=t.template?t.template(t.value):t.value,l=r("p-picklist-item",{"p-highlight":t.selected},t.className);return e.createElement("li",{className:l,onClick:function(e){t.onClick&&t.onClick({originalEvent:e,value:t.value})},onKeyDown:function(e){t.onKeyDown&&t.onKeyDown({originalEvent:e,value:t.value})},tabIndex:t.tabIndex,role:"option","aria-selected":t.selected},n,e.createElement(o,null))}));b.displayName="PickListItem";var T=e.memo(e.forwardRef((function(t,n){var a=e.useRef(null),o=function(e){var n=e.originalEvent,r=e.value,i=h(t.selection),a=l.findIndexInList(r,i,t.dataKey),o=-1!==a;if(t.metaKeySelection){var c=n.metaKey||n.ctrlKey;o&&c?i.splice(a,1):(c||(i.length=0),i.push(r))}else o?i.splice(a,1):i.push(r);t.onSelectionChange&&t.onSelectionChange({event:n,value:i})},c=function(e){var t=e.originalEvent,n=t.currentTarget;switch(t.which){case 40:var r=s(n);r&&r.focus(),t.preventDefault();break;case 38:var l=u(n);l&&l.focus(),t.preventDefault();break;case 13:o(e),t.preventDefault()}},s=function e(t){var n=t.nextElementSibling;return n?i.hasClass(n,"p-picklist-item")?n:e(n):null},u=function e(t){var n=t.previousElementSibling;return n?i.hasClass(n,"p-picklist-item")?n:e(n):null},p=function(e){return-1!==l.findIndexInList(e,t.selection,t.dataKey)},f=function(e){t.onFilter&&t.onFilter({originalEvent:e,value:e.target.value,type:t.type})},m=function(e){13===e.which&&e.preventDefault()};e.useImperativeHandle(n,(function(){return{listElementRef:a}}));var g=r("p-picklist-list-wrapper",t.className),d=t.header?e.createElement("div",{className:"p-picklist-header"},l.getJSXElement(t.header,t)):null,v=function(){if(t.showFilter){var n=e.createElement("div",{className:"p-picklist-filter"},e.createElement("input",{type:"text",value:t.filterValue,onChange:f,onKeyDown:m,placeholder:t.placeholder,className:"p-picklist-filter-input p-inputtext p-component"}),e.createElement("span",{className:"p-picklist-filter-icon pi pi-search"}));if(t.filterTemplate)n=l.getJSXElement(t.filterTemplate,{className:"p-picklist-filter",inputProps:{className:"p-picklist-filter-input p-inputtext p-component",onChange:f,onKeyDown:m},iconClassName:"p-picklist-filter-icon pi pi-search",element:n,props:t});return e.createElement("div",{className:"p-picklist-filter-container"},n)}return null}(),y=function(){var n=t.list?t.list.map((function(n){var r=JSON.stringify(n),l=p(n);return e.createElement(b,{key:r,value:n,template:t.itemTemplate,selected:l,onClick:o,onKeyDown:c,tabIndex:t.tabIndex})})):null,l=r("p-picklist-list",t.listClassName);return e.createElement("ul",{className:l,style:t.style,role:"listbox","aria-multiselectable":!0},n)}();return e.createElement("div",{ref:a,className:g},d,v,y)})));T.displayName="PickListSubList";var E=e.memo((function(t){var n=l.isEmpty(t.sourceSelection)||l.isEmpty(t.visibleSourceList),i=l.isEmpty(t.targetSelection)||l.isEmpty(t.visibleTargetList),o=l.isEmpty(t.visibleSourceList),c=l.isEmpty(t.visibleTargetList),s=r("p-picklist-buttons p-picklist-transfer-buttons",t.className);return e.createElement("div",{className:s},e.createElement(a,{disabled:n,type:"button",icon:"pi pi-angle-right",onClick:function(e){var n=t.sourceSelection;if(l.isNotEmpty(n)){for(var r=h(t.target),i=h(t.source),a=0;a<n.length;a++){var o=n[a];-1===l.findIndexInList(o,r,t.dataKey)&&r.push(i.splice(l.findIndexInList(o,i,t.dataKey),1)[0])}t.onTransfer&&t.onTransfer({originalEvent:e,source:i,target:r,direction:"toTarget"})}}}),e.createElement(a,{disabled:o,type:"button",icon:"pi pi-angle-double-right",onClick:function(e){if(t.source){var n=[].concat(h(t.target),h(t.visibleSourceList)),r=t.source.filter((function(e){return!t.visibleSourceList.some((function(t){return t===e}))}));t.onTransfer&&t.onTransfer({originalEvent:e,source:r,target:n,direction:"allToTarget"})}}}),e.createElement(a,{disabled:i,type:"button",icon:"pi pi-angle-left",onClick:function(e){var n=t.targetSelection;if(l.isNotEmpty(n)){for(var r=h(t.target),i=h(t.source),a=0;a<n.length;a++){var o=n[a];-1===l.findIndexInList(o,i,t.dataKey)&&i.push(r.splice(l.findIndexInList(o,r,t.dataKey),1)[0])}t.onTransfer&&t.onTransfer({originalEvent:e,source:i,target:r,direction:"toSource"})}}}),e.createElement(a,{disabled:c,type:"button",icon:"pi pi-angle-double-left",onClick:function(e){if(t.source){var n=[].concat(h(t.source),h(t.visibleTargetList)),r=t.target.filter((function(e){return!t.visibleTargetList.some((function(t){return t===e}))}));t.onTransfer&&t.onTransfer({originalEvent:e,source:n,target:r,direction:"allToSource"})}}}))}));E.displayName="PickListTransferControls";var k=e.memo(e.forwardRef((function(a,o){var s=g(e.useState([]),2),u=s[0],p=s[1],f=g(e.useState([]),2),m=f[0],d=f[1],v=g(e.useState(""),2),y=v[0],h=v[1],b=g(e.useState(""),2),C=b[0],I=b[1],w=e.useRef(null),N=e.useRef(null),K=e.useRef(null),L=e.useRef(null),F=e.useRef(null),x=a.sourceSelection?a.sourceSelection:u,R=a.targetSelection?a.targetSelection:m,M=a.onSourceFilterChange?a.sourceFilterValue:y,A=a.onTargetFilterChange?a.targetFilterValue:C,P=l.isNotEmpty(a.filterBy),D=P&&a.showSourceFilter,V=P&&a.showTargetFilter,j=function(e,t){if(e){var n=i.findSingle(e,".p-picklist-list");switch(t){case"up":O(n,-1);break;case"top":n.scrollTop=0;break;case"down":O(n,1);break;case"bottom":setTimeout((function(){return n.scrollTop=n.scrollHeight}),100)}}},H=function(e,t,n){a.onChange&&a.onChange({originalEvent:e.originalEvent,source:t,target:n})},O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.getElementsByClassName("p-highlight");l.isNotEmpty(n)&&i.scrollInView(e,-1===t?n[0]:n[n.length-1])},B=function(e,t,n){"sourceSelection"===t?p(e.value):d(e.value),n&&n(e),l.isNotEmpty(x)&&"targetSelection"===t?p([]):l.isNotEmpty(R)&&"sourceSelection"===t&&d([])},J=function(e){var t=e.originalEvent,n=e.value,r=g("source"===e.type?[h,a.onSourceFilterChange]:[I,a.onTargetFilterChange],2),l=r[0],i=r[1];i?i({originalEvent:t,value:n}):l(n)},X=function(e,t){var n=g("source"===t?[M,_]:[A,U],2),r=n[0],i=n[1];return P&&l.isNotEmpty(r)?i(r):e},_=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.trim().toLocaleLowerCase(a.filterLocale);return Y(a.source,t)},U=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.trim().toLocaleLowerCase(a.filterLocale);return Y(a.target,t)},Y=function(e,n){var r=P?a.filterBy.split(","):[];return t.filter(e,r,n,a.filterMatchMode,a.filterLocale)};e.useImperativeHandle(o,(function(){return{props:a,getElement:function(){return w.current}}})),n((function(){L.current&&(j(L.current,F.current),L.current=null,F.current=null)}));var $=l.findDiffKeys(a,k.defaultProps),q=r("p-picklist p-component",a.className),z=a.sourceItemTemplate?a.sourceItemTemplate:a.itemTemplate,G=a.targetItemTemplate?a.targetItemTemplate:a.itemTemplate,Q=X(a.source,"source"),W=X(a.target,"target");return e.createElement("div",c({id:a.id,ref:w,className:q,style:a.style},$),a.showSourceControls&&e.createElement(S,{list:a.source,selection:x,onReorder:function(e){H(e,e.value,a.target),L.current=N.current.listElementRef.current,F.current=e.direction},className:"p-picklist-source-controls",dataKey:a.dataKey}),e.createElement(T,{ref:N,type:"source",list:Q,selection:x,onSelectionChange:function(e){return B(e,"sourceSelection",a.onSourceSelectionChange)},itemTemplate:z,header:a.sourceHeader,style:a.sourceStyle,className:"p-picklist-source-wrapper",listClassName:"p-picklist-source",metaKeySelection:a.metaKeySelection,tabIndex:a.tabIndex,dataKey:a.dataKey,filterValue:M,onFilter:J,showFilter:D,placeholder:a.sourceFilterPlaceholder,template:a.sourceFilterTemplate}),e.createElement(E,{onTransfer:function(e){var t=e.originalEvent,n=e.source,r=e.target,l=[];switch(e.direction){case"toTarget":l=x,a.onMoveToTarget&&a.onMoveToTarget({originalEvent:t,value:l});break;case"allToTarget":l=a.source,a.onMoveAllToTarget&&a.onMoveAllToTarget({originalEvent:t,value:l});break;case"toSource":l=R,a.onMoveToSource&&a.onMoveToSource({originalEvent:t,value:l});break;case"allToSource":l=a.target,a.onMoveAllToSource&&a.onMoveAllToSource({originalEvent:t,value:l})}B({originalEvent:t,value:l},"sourceSelection",a.onSourceSelectionChange),B({originalEvent:t,value:l},"targetSelection",a.onTargetSelectionChange),H(e,n,r)},source:a.source,visibleSourceList:Q,target:a.target,visibleTargetList:W,sourceSelection:x,targetSelection:R,dataKey:a.dataKey}),e.createElement(T,{ref:K,type:"target",list:W,selection:R,onSelectionChange:function(e){return B(e,"targetSelection",a.onTargetSelectionChange)},itemTemplate:G,header:a.targetHeader,style:a.targetStyle,className:"p-picklist-target-wrapper",listClassName:"p-picklist-target",metaKeySelection:a.metaKeySelection,tabIndex:a.tabIndex,dataKey:a.dataKey,filterValue:A,onFilter:J,showFilter:V,placeholder:a.targetFilterPlaceholder,template:a.targetFilterTemplate}),a.showTargetControls&&e.createElement(S,{list:a.target,selection:R,onReorder:function(e){H(e,a.source,e.value),L.current=K.current.listElementRef.current,F.current=e.direction},className:"p-picklist-target-controls",dataKey:a.dataKey}))})));k.displayName="PickList",k.defaultProps={__TYPE:"PickList",id:null,source:null,target:null,sourceHeader:null,targetHeader:null,style:null,className:null,sourceStyle:null,targetStyle:null,sourceSelection:null,targetSelection:null,showSourceControls:!0,showTargetControls:!0,metaKeySelection:!0,filterBy:null,filterMatchMode:"contains",filterLocale:void 0,sourceFilterValue:null,targetFilterValue:null,showSourceFilter:!0,showTargetFilter:!0,sourceFilterPlaceholder:null,targetFilterPlaceholder:null,sourceFilterTemplate:null,targetFilterTemplate:null,tabIndex:0,dataKey:null,itemTemplate:null,sourceItemTemplate:null,targetItemTemplate:null,onChange:null,onMoveToSource:null,onMoveAllToSource:null,onMoveToTarget:null,onMoveAllToTarget:null,onSourceSelectionChange:null,onTargetSelectionChange:null,onSourceFilterChange:null,onTargetFilterChange:null};export{k as PickList};