@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 4.49 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{b as r,c as k}from"./DNVOLHYG.js";import{a as v}from"./77EQHO2G.js";import{a as g}from"./3XLPUKLV.js";import"./3YEM2IPT.js";import"./QUTTHRH3.js";import"./MNIRD7Q7.js";import{e as m}from"./ZQBZ5QPB.js";import"./CIYXQ5G6.js";import{C as d,D as h,E as u,F as n,H as e,J as p,K as b,Q as f,g as a,h as o}from"./G7AHLVJ5.js";var R=a`:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{display:inline}:host a,:host button{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:0;border-style:none;font-family:inherit;text-decoration:none;line-height:inherit;font-size:inherit;-webkit-appearance:none}:host a:hover,:host button:hover{text-decoration:none}:host a,:host button{transition-property:background-color,block-size,border-color,box-shadow,color,inset-block-end,inset-block-start,inset-inline-end,inset-inline-start,inset-size,opacity,outline-color,transform,background-size;transition-duration:var(--calcite-animation-timing);transition-timing-function:ease-in-out;outline-color:transparent}:host a:focus,:host button:focus{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(var(--calcite-spacing-base) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}calcite-icon{inline-size:1em;block-size:1em;min-inline-size:unset;min-block-size:unset}.calcite-link--icon{vertical-align:middle;margin-block-start:-.25em}:host .calcite-link--icon.icon-start{margin-inline-end:.5rem}:host .calcite-link--icon.icon-end{margin-inline-start:.5rem}:host button,:host a{position:relative;display:inline;border-style:none;background-color:transparent;padding:0;color:var(--calcite-link-text-color, var(--calcite-color-text-link));line-height:inherit;white-space:initial;background-image:linear-gradient(currentColor,currentColor),linear-gradient(var(--calcite-color-brand-underline),var(--calcite-color-brand-underline));background-position-x:0%,100%;background-position-y:min(1.5em,100%);background-repeat:no-repeat,no-repeat;background-size:0% 1px,100% 1px}:host button:hover,:host button:focus,:host a:hover,:host a:focus{background-size:100% 1px,100% 1px}:host button:active,:host a:active{background-size:100% 2px,100% 2px}:host button.calcite--rtl,:host a.calcite--rtl{background-position:100% 100%,100% 100%}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([hidden]){display:none}[hidden]{display:none}`,c={calciteLinkIcon:"calcite-link--icon",iconStart:"icon-start",iconEnd:"icon-end"},l=class extends u{constructor(){super(),this.childRef=d(),this.focusSetter=g()(this),this.interactiveContainer=v(this),this.disabled=!1,this.download=!1,this.listen("click",this.clickHandler)}static{this.properties={disabled:[7,{},{reflect:!0,type:Boolean}],download:[3,{converter:p},{reflect:!0}],href:[3,{},{reflect:!0}],iconEnd:[3,{type:String},{reflect:!0}],iconFlipRtl:[3,{},{reflect:!0}],iconStart:[3,{type:String},{reflect:!0}],rel:1,target:1}}static{this.styles=R}async setFocus(t){return this.focusSetter(()=>this.childRef.value,t)}clickHandler(t){this.disabled||t.isTrusted||this.childRef.value.click()}childElClickHandler(t){t.isTrusted||t.stopPropagation()}render(){let{download:t,el:y}=this,$=m(y),i=this.href?"a":"button",x=o`<calcite-icon class=${n({[c.calciteLinkIcon]:!0,[c.iconStart]:!0})} .flipRtl=${this.iconFlipRtl==="start"||this.iconFlipRtl==="both"} .icon=${this.iconStart} scale=s></calcite-icon>`,S=o`<calcite-icon class=${n({[c.calciteLinkIcon]:!0,[c.iconEnd]:!0})} .flipRtl=${this.iconFlipRtl==="end"||this.iconFlipRtl==="both"} .icon=${this.iconEnd} scale=s></calcite-icon>`,s=i==="button"?r`button`:r`a`,E=i==="button"?0:null;return this.el.role="presentation",this.interactiveContainer({disabled:this.disabled,children:k`<${s} class=${n({[b.rtl]:$==="rtl"})} download=${(i==="a"?t===!0||t===""?"":t||null:null)??e} href=${(i==="a"&&this.href)??e} =${this.childElClickHandler} rel=${(i==="a"&&this.rel)??e} tabindex=${E??e} target=${(i==="a"&&this.target)??e} ${h(this.childRef)}>${o`${this.iconStart?x:null}<slot></slot>${this.iconEnd?S:null}`}</${s}>`})}};f("calcite-link",l);export{l as Link};