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) 2.21 kB
import*as e from"react";import{Ripple as n}from"primereact/ripple";import{Tooltip as l}from"primereact/tooltip";import{ObjectUtils as t,classNames as o,IconUtils as a}from"primereact/utils";function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var l=arguments[n];for(var t in l)Object.prototype.hasOwnProperty.call(l,t)&&(e[t]=l[t])}return e},i.apply(this,arguments)}function r(e,n,l){return n in e?Object.defineProperty(e,n,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[n]=l,e}var c=e.memo(e.forwardRef((function(p,b){var s=e.useRef(b);if(e.useEffect((function(){t.combinedRefs(s,b)}),[s,b]),!1===p.visible)return null;var u=t.isNotEmpty(p.tooltip),d=p.disabled||p.loading,m=t.findDiffKeys(p,c.defaultProps),g=o("p-button p-component",p.className,r({"p-button-icon-only":(p.icon||p.loading&&p.loadingIcon)&&!p.label&&!p.children,"p-button-vertical":("top"===p.iconPos||"bottom"===p.iconPos)&&p.label,"p-disabled":d,"p-button-loading":p.loading,"p-button-loading-label-only":p.loading&&!p.icon&&p.label},"p-button-loading-".concat(p.iconPos),p.loading&&p.loadingIcon&&p.label)),f=function(){var e=p.loading?p.loadingIcon:p.icon,n=o("p-button-icon p-c",r({"p-button-loading-icon":p.loading},"p-button-icon-".concat(p.iconPos),p.label));return a.getJSXIcon(e,{className:n},{props:p})}(),v=p.label?e.createElement("span",{className:"p-button-label p-c"},p.label):!p.children&&!p.label&&e.createElement("span",{className:"p-button-label p-c",dangerouslySetInnerHTML:{__html:"&nbsp;"}}),y=function(){if(p.badge){var n=o("p-badge",p.badgeClassName);return e.createElement("span",{className:n},p.badge)}return null}();return e.createElement(e.Fragment,null,e.createElement("button",i({ref:s,"aria-label":p.label?p.label+(p.badge?" "+p.badge:""):p["aria-label"]},m,{className:g,disabled:d}),f,v,p.children,y,e.createElement(n,null)),u&&e.createElement(l,i({target:s,content:p.tooltip},p.tooltipOptions)))})));c.displayName="Button",c.defaultProps={__TYPE:"Button",label:null,icon:null,iconPos:"left",badge:null,badgeClassName:null,tooltip:null,tooltipOptions:null,disabled:!1,loading:!1,loadingIcon:"pi pi-spinner pi-spin",visible:!0};export{c as Button};