carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 3.31 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),o=require("invariant"),r=require("../tooltip/tooltip.component.js");require("../../style/utils/filter-styled-system-padding-props.js");var i=require("../../style/utils/filter-styled-system-margin-props.js"),n=require("../../__internal__/tooltip-provider/index.js"),l=require("./icon.style.js"),a=require("./icon-config.js"),s=require("../tabs/__next__/tabs.context.js");function u(e){return e&&e.__esModule?e:{default:e}}var p=u(t),c=u(o);function d(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function b(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter((function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable})))),r.forEach((function(t){d(e,t,o[t])}))}return e}const f=p.default.forwardRef(((o,u)=>{var{"aria-hidden":p,ariaLabel:d,bg:f,bgShape:g,bgSize:y,className:m,color:O,"data-element":v,"data-role":j,disabled:S,focusable:I=!0,fontSize:h="small",id:x,inputSize:P,isPartOfInput:_,tabIndex:q,tooltipMessage:w,tooltipPosition:z,tooltipVisible:C,tooltipBgColor:T,tooltipFontColor:M,tooltipFlipOverrides:N,tooltipId:F,type:V,role:k}=o,L=function(e,t){if(null==e)return{};var o,r,i=function(e,t){if(null==e)return{};var o,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)o=n[r],t.indexOf(o)>=0||(i[o]=e[o]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(o,["aria-hidden","ariaLabel","bg","bgShape","bgSize","className","color","data-element","data-role","disabled","focusable","fontSize","id","inputSize","isPartOfInput","tabIndex","tooltipMessage","tooltipPosition","tooltipVisible","tooltipBgColor","tooltipFontColor","tooltipFlipOverrides","tooltipId","type","role"]);const A=Array.isArray(N)&&N.every((e=>a.ICON_TOOLTIP_POSITIONS.includes(e)));N&&c.default(A,'The tooltipFlipOverrides prop supplied to `Icon` must be an array containing some or all of ["top", "bottom", "left", "right"].');const B=!!w&&!S,{tooltipPosition:E,focusable:D,tooltipVisible:R,disabled:G,target:H}=t.useContext(n.TooltipContext),{isInTab:J}=s.useTabs(),K=t.useMemo((()=>{switch(V){case"help":return"question";case"maintenance":return"settings";case"new":return"gift";case"success":return"tick";case"messages":case"email":return"message";default:return V}}),[V]),Q=!S&&!G&&!!w&&(void 0!==D?D:I),U=t.useMemo((()=>{if(!J)return Q&&void 0===q?0:q}),[J,Q,q]),W=b({"aria-hidden":p,"aria-label":d,bg:f,bgSize:y||h,bgShape:g,className:m||void 0,color:O,"data-component":"icon","data-element":null!=v?v:K,"data-role":null!=j?j:"icon",disabled:G||S,fontSize:h,hasTooltip:Q,id:x,isInteractive:B,ref:u,role:k,tabIndex:U,type:K},i.default(L));if(w){const t=!S&&(void 0!==R?R:C);return e.jsx(r.Tooltip,{message:w,position:E||z,type:V,id:F,isVisible:t,isPartOfInput:_,inputSize:P,bgColor:T,fontColor:M,flipOverrides:N,target:H,children:e.jsx(l.default,b({},W))})}return e.jsx(l.default,b({},W))}));f.displayName="Icon",exports.default=f;