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) 6.67 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/componentbase"),r=require("primereact/hooks"),l=require("primereact/tooltip"),o=require("primereact/utils"),a=require("primereact/ripple");function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var u=i(e);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)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s.apply(null,arguments)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e){if(Array.isArray(e))return c(e)}function d(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function f(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.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)?c(e,t):void 0}}function m(){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 b(e){return p(e)||d(e)||f(e)||m()}function v(e){if(Array.isArray(e))return e}function y(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,l,o,a,i=[],u=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);u=!0);}catch(e){s=!0,l=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw l}}return i}}function g(){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 h(e,t){return v(e)||y(e,t)||f(e,t)||g()}var x=n.ComponentBase.extend({defaultProps:{__TYPE:"SelectButton",id:null,value:null,options:null,optionLabel:null,optionValue:null,optionDisabled:null,tabIndex:null,multiple:!1,invalid:!1,unselectable:!0,allowEmpty:!0,disabled:!1,style:null,className:null,dataKey:null,tooltip:null,tooltipOptions:null,itemTemplate:null,onChange:null,children:void 0},css:{classes:{root:function(e){return o.classNames("p-selectbutton p-button-group p-component",{"p-invalid":e.props.invalid})},button:function(e){var t=e.itemProps;return o.classNames("p-button p-component",{"p-highlight":t.selected,"p-disabled":t.disabled,"p-focus":e.focusedState})},label:"p-button-label p-c"}}}),O=u.memo((function(e){var t,n=h(u.useState(!1),2),l=n[0],i=n[1],s=r.useMergeProps(),c=e.ptm,p=e.cx,d=function(t){return c(t,{hostName:e.hostName,context:{selected:e.selected,disabled:e.disabled,option:e.option}})},f=function(t,n){e.setFocusedIndex(n),e.onClick&&e.onClick({originalEvent:t,option:e.option})},m=function(e,t){switch(e.code){case"Space":f(e,t),e.preventDefault();break;case"ArrowDown":case"ArrowRight":b(e,"next"),e.preventDefault();break;case"ArrowUp":case"ArrowLeft":b(e,"prev"),e.preventDefault()}},b=function(t,n){for(var r,l,o=0;o<=e.elementRef.current.children.length-1;o++)"0"===e.elementRef.current.children[o].getAttribute("tabindex")&&(r={elem:e.elementRef.current.children[o],index:o});e.setFocusedIndex(l="prev"===n?0===r.index?e.elementRef.current.children.length-1:r.index-1:r.index===e.elementRef.current.children.length-1?0:r.index+1),e.elementRef.current.children[l].focus()},v=(t=s({className:p("label")},d("label")),e.template?o.ObjectUtils.getJSXElement(e.template,e.option):u.createElement("span",t,e.label)),y=s({className:o.classNames(e.className,p("button",{itemProps:e,focusedState:l})),role:"button","aria-label":e.label,"aria-pressed":e.selected,onClick:function(t){return f(t,e.index)},onKeyDown:function(t){return m(t,e.index)},tabIndex:e.tabIndex,"aria-disabled":e.disabled,onFocus:function(){i(!0)},onBlur:function(){i(!1)}},d("button"));return u.createElement("div",y,v,!e.disabled&&u.createElement(a.Ripple,null))}));O.displayName="SelectButtonItem";var j=u.memo(u.forwardRef((function(e,a){var i=r.useMergeProps(),c=u.useContext(t.PrimeReactContext),p=x.getProps(e,c),d=h(u.useState(0),2),f=d[0],m=d[1],v=u.useRef(null),y=x.setMetaData({props:p}),g=y.ptm,j=y.cx;n.useHandleStyle(x.css.styles,y.isUnstyled,{name:"selectbutton",styled:!0});var E=function(e){if(!p.disabled&&!N(e.option)){var t=w(e.option);if(!t||p.unselectable&&p.allowEmpty){var n,r=D(e.option);if(p.multiple){var l=p.value?b(p.value):[];n=t?l.filter((function(e){return!o.ObjectUtils.equals(e,r,p.dataKey)})):[].concat(b(l),[r])}else n=t?null:r;p.onChange&&p.onChange({originalEvent:e.originalEvent,value:n,stopPropagation:function(){e.originalEvent.stopPropagation()},preventDefault:function(){e.originalEvent.preventDefault()},target:{name:p.name,id:p.id,value:n}})}}},S=function(e){return p.optionLabel?o.ObjectUtils.resolveFieldData(e,p.optionLabel):e&&void 0!==e.label?e.label:e},D=function(e){return p.optionValue?o.ObjectUtils.resolveFieldData(e,p.optionValue):e&&void 0!==e.value?e.value:e},N=function(e){return p.optionDisabled?o.ObjectUtils.isFunction(p.optionDisabled)?p.optionDisabled(e):o.ObjectUtils.resolveFieldData(e,p.optionDisabled):!(!e||void 0===e.disabled)&&e.disabled},w=function(e){var t=D(e);return p.multiple?!(!p.value||!p.value.length)&&p.value.some((function(e){return o.ObjectUtils.equals(e,t,p.dataKey)})):o.ObjectUtils.equals(p.value,t,p.dataKey)};u.useImperativeHandle(a,(function(){return{props:p,focus:function(){return o.DomHandler.focusFirstElement(v.current)},getElement:function(){return v.current}}}));var P=o.ObjectUtils.isNotEmpty(p.tooltip),A=p.options&&p.options.length?p.options.map((function(e,t){var n=p.disabled||N(e),r=S(e),l=p.disabled||t!==f?"-1":"0",o=w(e);return u.createElement(O,{hostName:"SelectButton",key:r+"_"+t,label:r,className:e.className,option:e,setFocusedIndex:m,onClick:E,template:p.itemTemplate,selected:o,tabIndex:l,index:t,disabled:n,ptm:g,cx:j,elementRef:v})})):null,I=i({ref:v,id:p.id,className:o.classNames(p.className,j("root")),style:p.style,role:"group"},x.getOtherProps(p),g("root"));return u.createElement(u.Fragment,null,u.createElement("div",I,A,p.children),P&&u.createElement(l.Tooltip,s({target:v,content:p.tooltip,pt:g("tooltip")},p.tooltipOptions)))})));j.displayName="SelectButton",exports.SelectButton=j;