UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 4.41 kB
import{jsx as e,jsxs as t,Fragment as o}from"react/jsx-runtime";import i,{useContext as n,useState as r,useCallback as l}from"react";import a from"invariant";import c from"../icon/icon.component.js";import s,{StyledButtonMainText as p,StyledButtonSubtext as b}from"./button.style.js";import u from"../../__internal__/utils/helpers/tags/tags.js";import{TooltipProvider as d}from"../../__internal__/tooltip-provider/index.js";import f from"../button-bar/__internal__/button-bar.context.js";import y from"../split-button/__internal__/split-button.context.js";import m from"../batch-selection/__internal__/batch-selection.context.js";function h(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},i=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(o).filter((function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable})))),i.forEach((function(t){h(e,t,o[t])}))}return e}function O(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}(Object(t)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))})),e}function j({iconType:i,iconPosition:n,size:r,subtext:l,children:a,disabled:s,buttonType:u,iconTooltipMessage:f,iconTooltipPosition:y,tooltipTarget:m}){const h={"aria-hidden":!0,disabled:s,color:"primary"===u?"--colorsActionMajorYang100":u.includes("gradient")?"--colorsActionMinorYin090":"--colorsActionMajor500",bg:"transparent"},j=void 0!==a&&!1!==a;return t(o,{children:[i&&"before"===n&&j&&e(c,g({type:i},h)),j&&t("span",{children:[e(p,{"data-element":"main-text",children:a}),"large"===r&&e(b,{"data-element":"subtext","data-role":"subtext",children:l})]}),i&&!j&&e(d,{disabled:s,focusable:!1,target:m,children:e(c,O(g({type:i},h),{tooltipMessage:f,tooltipPosition:y}))}),i&&"after"===n&&a&&e(c,g({type:i},h))]})}const v=i.forwardRef(((t,o)=>{var{"aria-describedby":i,"aria-label":c,"aria-labelledby":p,buttonType:b="secondary",children:d,destructive:h=!1,disabled:v=!1,isWhite:P=!1,fullWidth:T=!1,href:_,iconPosition:x="before",iconTooltipMessage:w,iconTooltipPosition:k,iconType:W,m:S=0,noWrap:M,onClick:D,px:z,rel:C,size:E="medium",subtext:A="",target:B}=t,Y=function(e,t){if(null==e)return{};var o,i,n=function(e,t){if(null==e)return{};var o,i,n={},r=Object.keys(e);for(i=0;i<r.length;i++)o=r[i],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)o=r[i],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}(t,["aria-describedby","aria-label","aria-labelledby","buttonType","children","destructive","disabled","isWhite","fullWidth","href","iconPosition","iconTooltipMessage","iconTooltipPosition","iconType","m","noWrap","onClick","px","rel","size","subtext","target"]);const{buttonType:I,size:K,iconPosition:N,fullWidth:R}=n(f),{batchSelectionDisabled:q}=n(m),F=I||b,G=K||E,H=N||x,J=R||T,L=v||q;a(void 0!==d||!!W,"Either prop `iconType` must be defined or this node must have children."),A&&a("large"===G,"subtext prop has no effect unless the button is large.");const[Q,U]=r(null),{inSplitButton:V,onChildButtonClick:X}=n(y);let Z;switch(G){case"small":Z=2;break;case"large":Z=4;break;default:Z=3}const $=l((e=>{U(e),o&&("object"==typeof o&&(o.current=e),"function"==typeof o&&o(e))}),[o]),ee=void 0!==d&&!1!==d;return e(s,O(g({"aria-label":!ee&&W?c||W:c,"aria-labelledby":p,"aria-describedby":i,as:!L&&_?"a":"button",onKeyDown:_?e=>{" "===e.key&&(e.preventDefault(),null==Q||Q.click())}:void 0,onClick:e=>{var t;null==Q||Q.focus({preventScroll:!0}),V?null==X||null===(t=X(D))||void 0===t||t(e):D&&D(e)},draggable:!1,buttonType:F,disabled:L,destructive:h,isWhite:P,type:_?void 0:"button",iconType:W,size:G,px:null!=z?z:Z,m:S,noWrap:M,iconOnly:!ee&&!!W,iconPosition:H,target:B,rel:C,fullWidth:J},u("button",Y),Y,_&&{href:_}),{ref:$,children:j({iconType:W,iconPosition:H,size:G,subtext:A,children:d,disabled:L,buttonType:F,iconTooltipMessage:w,iconTooltipPosition:k,tooltipTarget:Q})}))}));v.displayName="Button";export{v as default};