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) • 4.43 kB
JavaScript
import*as e from"react";import{Tooltip as t}from"primereact/tooltip";import{classNames as n,ObjectUtils as l}from"primereact/utils";import{Ripple as o}from"primereact/ripple";function a(){return a=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},a.apply(this,arguments)}function r(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 i(e){if(Array.isArray(e))return r(e)}function u(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function s(e,t){if(e){if("string"==typeof e)return r(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)?r(e,t):void 0}}function p(){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){return i(e)||u(e)||s(e)||p()}function d(e){if(Array.isArray(e))return e}function m(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,o,a=[],r=!0,i=!1;try{for(n=n.call(e);!(r=(l=n.next()).done)&&(a.push(l.value),!t||a.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==n.return||n.return()}finally{if(i)throw o}}return a}}function f(){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 b=e.memo((function(t){var a,r,i=e.useState(!1),u=(r=2,d(a=i)||m(a,r)||s(a,r)||f()),p=u[1],c=function(e){t.onClick&&t.onClick({originalEvent:e,option:t.option})},b=n("p-button p-component",{"p-highlight":t.selected,"p-disabled":t.disabled,"p-focus":u[0]},t.className),v=t.template?l.getJSXElement(t.template,t.option):e.createElement("span",{className:"p-button-label p-c"},t.label);return e.createElement("div",{className:b,role:"button","aria-label":t.label,"aria-pressed":t.selected,onClick:c,onKeyDown:function(e){32===e.which&&(c(e),e.preventDefault())},tabIndex:t.tabIndex,onFocus:function(){p(!0)},onBlur:function(){p(!1)}},v,!t.disabled&&e.createElement(o,null))}));b.displayName="SelectButtonItem";var v=e.memo(e.forwardRef((function(o,r){var i=e.useRef(null),u=function(e){if(!o.disabled&&!d(e.option)){var t=m(e.option);if(!t||o.unselectable){var n,a=p(e.option);if(o.multiple){var r=o.value?c(o.value):[];n=t?r.filter((function(e){return!l.equals(e,a,o.dataKey)})):[].concat(c(r),[a])}else n=t?null:a;o.onChange&&o.onChange({originalEvent:e.originalEvent,value:n,stopPropagation:function(){},preventDefault:function(){},target:{name:o.name,id:o.id,value:n}})}}},s=function(e){return o.optionLabel?l.resolveFieldData(e,o.optionLabel):e&&void 0!==e.label?e.label:e},p=function(e){return o.optionValue?l.resolveFieldData(e,o.optionValue):e&&void 0!==e.value?e.value:e},d=function(e){return o.optionDisabled?l.isFunction(o.optionDisabled)?o.optionDisabled(e):l.resolveFieldData(e,o.optionDisabled):!(!e||void 0===e.disabled)&&e.disabled},m=function(e){var t=p(e);return o.multiple?!(!o.value||!o.value.length)&&o.value.some((function(e){return l.equals(e,t,o.dataKey)})):l.equals(o.value,t,o.dataKey)};e.useImperativeHandle(r,(function(){return{props:o,getElement:function(){return i.current}}}));var f=l.isNotEmpty(o.tooltip),y=l.findDiffKeys(o,v.defaultProps),g=n("p-selectbutton p-buttonset p-component",o.className),h=o.options&&o.options.length?o.options.map((function(t,n){var l=o.disabled||d(t),a=s(t),r=l?null:0,i=m(t);return e.createElement(b,{key:a+"_"+n,label:a,className:t.className,option:t,onClick:u,template:o.itemTemplate,selected:i,tabIndex:r,disabled:l})})):null;return e.createElement(e.Fragment,null,e.createElement("div",a({ref:i,id:o.id,className:g,style:o.style},y,{role:"group"}),h),f&&e.createElement(t,a({target:i,content:o.tooltip},o.tooltipOptions)))})));v.displayName="SelectButton",v.defaultProps={__TYPE:"SelectButton",id:null,value:null,options:null,optionLabel:null,optionValue:null,optionDisabled:null,tabIndex:null,multiple:!1,unselectable:!0,disabled:!1,style:null,className:null,dataKey:null,tooltip:null,tooltipOptions:null,itemTemplate:null,onChange:null};export{v as SelectButton};