UNPKG

carbon-react

Version:

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

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