UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

5 lines (4 loc) 11.5 kB
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details. v3.2.1 */ import{a as x,b as y}from"./BVJFCLMH.js";import{d as v}from"./HPN2C7M6.js";import{a as k}from"./JOSABGK6.js";import{a as f}from"./NNVH7JUI.js";import{E as b,F as n,R as m,c as p,d as l,q as g}from"./BJZTU5BQ.js";var i={description:"description",descriptionOnly:"description-only",heading:"heading",headingOnly:"heading-only",icon:"icon",iconOnly:"icon-only",inputAlignmentEnd:"input-alignment-end",inputAlignmentStart:"input-alignment-start",inputEnabled:"input-enabled",largeVisual:"large-visual",tile:"tile",tileContentContainer:"tile-content-container",tileContent:"tile-content",tileDescription:"tile-description",tileHeading:"tile-heading",tileLargeVisual:"tile--large-visual",widthAuto:"width-auto",widthFull:"width-full"},z=p`: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:block}:host .container{background-color:var(--calcite-color-foreground-1);box-shadow:0 0 0 1px var(--calcite-color-border-2);box-sizing:border-box;cursor:pointer;display:inline-block;block-size:100%;max-inline-size:300px;padding:.75rem;position:relative;vertical-align:top;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;transition-duration:var(--calcite-animation-timing);transition-timing-function:ease-in-out}:host .container.checked{z-index:var(--calcite-z-index);box-shadow:0 0 0 1px var(--calcite-color-brand)}:host .container.heading-only{align-items:center}:host .container:not(.input-enabled) ::slotted(calcite-checkbox),:host .container:not(.input-enabled) ::slotted(calcite-radio-button){position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host .container.focused{outline-color:transparent}:host .container.focused:not(.disabled):not(.input-enabled){outline:2px solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(-2px*(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))));outline-offset:-4px;box-shadow:0 0 0 1px var(--calcite-color-brand),inset 0 0 0 2px var(--calcite-color-foreground-1)}:host .container.input-enabled.input-alignment-start.width-auto.heading-only,:host .container.input-enabled.input-alignment-start.width-auto.icon-only,:host .container.input-enabled.input-alignment-start.width-auto.description-only,:host .container.input-enabled.input-alignment-start.width-auto.heading.description,:host .container.input-enabled.input-alignment-start.width-auto.icon.description,:host .container.input-enabled.input-alignment-start.width-auto.heading.icon.description{display:inline-grid;grid-template-columns:max-content 1fr}:host .container.input-enabled.input-alignment-start.heading-only,:host .container.input-enabled.input-alignment-start.icon-only,:host .container.input-enabled.input-alignment-start.description-only,:host .container.input-enabled.input-alignment-start.heading.description,:host .container.input-enabled.input-alignment-start.icon.description,:host .container.input-enabled.input-alignment-start.heading.icon.description{gap:.75rem}:host .container.input-enabled.input-alignment-start .tile{order:1}:host .container.input-enabled.input-alignment-start.large-visual ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-start.large-visual ::slotted(calcite-radio-button){position:absolute;inset-block-start:.75rem;inset-inline-start:.75rem}:host .container.input-enabled.input-alignment-end.width-auto.heading-only,:host .container.input-enabled.input-alignment-end.width-auto.icon-only{display:inline-grid;grid-gap:.75rem;grid-template-columns:max-content 1fr}:host .container.input-enabled.input-alignment-end.heading-only,:host .container.input-enabled.input-alignment-end.icon-only{gap:.75rem}:host .container.input-enabled.input-alignment-end.description-only ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-end.description-only ::slotted(calcite-radio-button),:host .container.input-enabled.input-alignment-end.heading.description ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-end.heading.description ::slotted(calcite-radio-button),:host .container.input-enabled.input-alignment-end.icon.description ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-end.icon.description ::slotted(calcite-radio-button),:host .container.input-enabled.input-alignment-end.heading.icon.description ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-end.heading.icon.description ::slotted(calcite-radio-button){position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem}:host .container.input-enabled.input-alignment-end.large-visual ::slotted(calcite-checkbox),:host .container.input-enabled.input-alignment-end.large-visual ::slotted(calcite-radio-button){position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem}:host .container.width-full{display:flex;max-inline-size:none}:host .container.width-full .tile{flex:1 1 auto}.tile{pointer-events:none;box-sizing:border-box;display:flex;-webkit-user-select:none;user-select:none;flex-direction:column;gap:.5rem;background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-3);transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tile-content-container{display:flex;inline-size:100%;align-items:stretch;padding:0;color:var(--calcite-color-text-2);outline-color:transparent}.tile-content{display:flex;flex:1 1 auto;flex-direction:column;gap:.5rem;inline-size:10%}.tile-heading{pointer-events:none;overflow-wrap:break-word;font-size:var(--calcite-font-size--1);line-height:1.375;font-weight:var(--calcite-font-weight-medium);color:var(--calcite-color-text-2);transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tile-description{pointer-events:none;overflow-wrap:break-word;font-size:var(--calcite-font-size--2);line-height:1.375;color:var(--calcite-color-text-3);transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tile--large-visual{display:grid;justify-content:center;text-align:center;min-block-size:12rem}.tile--large-visual .icon{align-self:flex-end}.tile--large-visual calcite-icon{block-size:64px;inline-size:64px}.tile--large-visual .tile-content-container{align-self:center}:host(:hover) .container:not(.input-enabled){box-shadow:0 0 0 1px var(--calcite-color-brand)}:host(:hover) .tile-heading,.checked .tile-heading{color:var(--calcite-color-text-1)}:host(:hover) .tile-description,.checked .tile-description{color:var(--calcite-color-text-2)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}:host([hidden]){display:none}[hidden]{display:none}`,s=class extends b{constructor(){super(),this.guid=`calcite-tile-select-${f()}`,this.focused=!1,this.checked=!1,this.disabled=!1,this.iconFlipRtl=!1,this.inputAlignment="start",this.inputEnabled=!1,this.type="radio",this.width="auto",this.calciteTileSelectChange=g({cancelable:!1}),this.listen("calciteCheckboxChange",this.checkboxChangeHandler),this.listen("calciteInternalCheckboxFocus",this.checkboxFocusBlurHandler),this.listen("calciteInternalCheckboxBlur",this.checkboxFocusBlurHandler),this.listen("calciteRadioButtonChange",this.radioButtonChangeHandler),this.listen("calciteInternalRadioButtonCheckedChange",this.radioButtonCheckedChangeHandler),this.listen("calciteInternalRadioButtonFocus",this.radioButtonFocusBlurHandler),this.listen("calciteInternalRadioButtonBlur",this.radioButtonFocusBlurHandler),this.listen("click",this.clickHandler),this.listen("pointerenter",this.pointerEnterHandler),this.listen("pointerleave",this.pointerLeaveHandler)}static{this.properties={focused:[16,{},{state:!0}],checked:[7,{},{reflect:!0,type:Boolean}],description:[3,{},{reflect:!0}],disabled:[7,{},{reflect:!0,type:Boolean}],heading:[3,{},{reflect:!0}],icon:[3,{},{reflect:!0}],iconFlipRtl:[7,{},{reflect:!0,type:Boolean}],inputAlignment:[3,{},{reflect:!0}],inputEnabled:[7,{},{reflect:!0,type:Boolean}],name:[3,{},{reflect:!0}],type:[3,{},{reflect:!0}],value:1,width:[3,{},{reflect:!0}]}}static{this.styles=z}async setFocus(){return await v(this),this.input?.setFocus()}connectedCallback(){super.connectedCallback(),this.renderInput()}load(){k.deprecated("component",{name:"tile-select",removalVersion:4,suggested:["tile","tile-group"]})}willUpdate(t){t.has("checked")&&(this.hasUpdated||this.checked!==!1)&&(this.input.checked=this.checked),t.has("name")&&(this.input.name=this.name)}updated(){x(this)}disconnectedCallback(){super.disconnectedCallback(),this.input?.remove()}checkboxChangeHandler(t){let e=t.target;e===this.input&&(this.checked=e.checked),t.stopPropagation(),this.calciteTileSelectChange.emit()}checkboxFocusBlurHandler(t){t.target===this.input&&(this.focused=t.detail),t.stopPropagation()}radioButtonChangeHandler(t){let e=t.target;e===this.input&&(this.checked=e.checked),t.stopPropagation(),this.calciteTileSelectChange.emit()}radioButtonCheckedChangeHandler(t){let e=t.target;e===this.input&&(this.checked=e.checked),t.stopPropagation()}radioButtonFocusBlurHandler(t){let e=t.target;e===this.input&&(this.focused=e.focused),t.stopPropagation()}clickHandler(t){if(this.disabled)return;let e=t.target;["calcite-tile","calcite-tile-select"].includes(e.localName)&&this.input.click()}pointerEnterHandler(){if(this.disabled)return;let{localName:t}=this.input;(t==="calcite-radio-button"||t==="calcite-checkbox")&&(this.input.hovered=!0)}pointerLeaveHandler(){if(this.disabled)return;let{localName:t}=this.input;(t==="calcite-radio-button"||t==="calcite-checkbox")&&(this.input.hovered=!1)}renderInput(){this.input=this.type==="radio"?document.createElement("calcite-radio-button"):document.createElement("calcite-checkbox"),this.input.checked=this.checked,this.input.disabled=this.disabled,this.input.hidden=this.el.hidden,this.input.id=this.guid,this.input.label=this.heading||this.name||"",this.name&&(this.input.name=this.name),this.value&&(this.input.value=this.value!=null?this.value.toString():""),this.el.insertAdjacentElement("beforeend",this.input)}render(){let{checked:t,description:e,disabled:c,focused:w,heading:o,icon:a,inputAlignment:r,inputEnabled:C,width:d,iconFlipRtl:B}=this,u=o&&a&&!e,h=!!a;return y({disabled:c,children:l`<div class=${n({checked:t,container:!0,[i.description]:!!e,[i.descriptionOnly]:!!(!o&&!a&&e),disabled:c,focused:w,[i.heading]:!!o,[i.headingOnly]:o&&!a&&!e,[i.icon]:h,[i.iconOnly]:!o&&a&&!e,[i.inputAlignmentEnd]:r==="end",[i.inputAlignmentStart]:r==="start",[i.inputEnabled]:C,[i.largeVisual]:u,[i.widthAuto]:d==="auto",[i.widthFull]:d==="full"})}><div class=${n({[i.tile]:!0,[i.tileLargeVisual]:u})}>${a&&l`<div class=${n({[i.icon]:h})}><calcite-icon .flipRtl=${B} .icon=${a} scale=l></calcite-icon></div>`||""}<div class=${n(i.tileContentContainer)}><div class=${n(i.tileContent)}>${o&&l`<div class=${n(i.tileHeading)}>${o}</div>`||""}${e&&l`<div class=${n(i.tileDescription)}>${e}</div>`||""}</div></div></div><slot></slot></div>`})}};m("calcite-tile-select",s);export{s as TileSelect};