UNPKG

carbon-react

Version:

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

2 lines (1 loc) 4.56 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("../icon/icon.component.js"),r=require("../menu/__internal__/menu.context.js"),o=require("./link.style.js"),i=require("../../__internal__/utils/helpers/tags/tags.js"),l=require("../../hooks/__internal__/useLocale/useLocale.js"),a=require("../batch-selection/__internal__/batch-selection.context.js"),s=require("../../__internal__/utils/logger/index.js");function u(e){return e&&e.__esModule?e:{default:e}}var c=u(t);function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){d(e,t,n[t])}))}return e}function f(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 n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}let b=!1,y=!1,k=!1,v=!1;const O={default:!1,neutral:!1},g={default:"typical",neutral:"subtle"},j=c.default.forwardRef(((u,d)=>{var{children:j,onKeyDown:m,href:h,onClick:w,onMouseDown:_,icon:P,iconAlign:L="left",isSkipLink:S,disabled:x=!1,underline:D="always",ariaLabel:M,rel:q,tooltipMessage:C,tooltipPosition:A,target:B,variant:E="typical",isDarkBackground:T,inverse:I,removeAriaLabelOnIcon:N,className:z,linkSize:F="medium",download:K}=u,R=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(u,["children","onKeyDown","href","onClick","onMouseDown","icon","iconAlign","isSkipLink","disabled","underline","ariaLabel","rel","tooltipMessage","tooltipPosition","target","variant","isDarkBackground","inverse","removeAriaLabelOnIcon","className","linkSize","download"]);const[$,W]=t.useState(!1),G=l.default(),{inMenu:H}=t.useContext(r.default),{batchSelectionDisabled:J}=t.useContext(a.default),Q=x||J,U=t.useRef(null);!b&&x&&(b=!0,s.default.deprecate("The 'disabled' prop in Link is deprecated and will soon be removed.")),!k&&C&&(k=!0,s.default.deprecate("The 'tooltipMessage' prop in Link is deprecated and will soon be removed.")),!y&&A&&(y=!0,s.default.deprecate("The 'tooltipPosition' prop in Link is deprecated and will soon be removed.")),!v&&T&&(v=!0,s.default.deprecate("The 'isDarkBackground' prop in Link is deprecated and will soon be removed. Please use 'inverse' prop instead.")),!O[E]&&g[E]&&(O[E]=!0,s.default.deprecate(`The value '${E}' for the variant prop is deprecated and will soon be removed. Please use value '${g[E]}' instead.`));const V=null!=I?I:T;var X;const Y=null!==(X=g[E])&&void 0!==X?X:E,Z=t.useCallback((e=>{U.current=e,d&&("function"!=typeof d?"object"!=typeof d||(d.current=e):d(e))}),[d]),ee=t.useCallback((e=>{var t,n;null===(n=U.current)||void 0===n||null===(t=n.focus)||void 0===t||t.call(n,{preventScroll:!0}),null==w||w(e)}),[w]),te=(t="left")=>P&&L===t?e.jsx(n.default,{type:P,disabled:Q,ariaLabel:N?void 0:M,tooltipMessage:C,tooltipPosition:A}):null,ne=t.useMemo((()=>{const e=R;return Object.keys(e).filter((e=>e.startsWith("aria"))).reduce(((t,n)=>(t[n]=e[n],t)),{})}),[R]),re=f(p({onKeyDown:m,onMouseDown:_,onClick:ee,disabled:Q,target:B,ref:Z,href:h,rel:q,"aria-label":M},ne),{onFocus:()=>W(!0),onBlur:()=>W(!1)}),oe={type:"button"};return t.useEffect((()=>{(x||!h&&!w)&&W(!1)}),[x,h,w]),e.jsx(o.StyledLink,f(p({isSkipLink:S,disabled:Q,underline:D,iconAlign:L,className:z,hasContent:Boolean(j),variant:Y,inverse:V,isMenuItem:H},i.default("link",R),S&&{"data-element":"skip-link"}),{hasFocus:$,linkSize:F,children:(()=>{let t="a";return w&&!h&&(t="button"),c.default.createElement(t,"button"===t?p({},re,oe):f(p({},re),{download:K,"data-role":"link-anchor"}),e.jsxs(e.Fragment,{children:[te(),e.jsx(o.StyledContent,{children:S?G.link.skipLinkLabel():j}),te("right")]}))})()}))}));j.displayName="Link",exports.Link=j,exports.default=j;