{"version":3,"names":["CSS","container","track","handle","switchCss","CalciteSwitchStyle0","Switch","this","keyDownHandler","event","disabled","isActivationKey","key","toggle","preventDefault","clickHandler","setSwitchEl","el","switchEl","setFocus","componentFocusable","focusElement","syncHiddenFormInput","input","type","onLabelClick","checked","calciteSwitchChange","emit","connectedCallback","connectLabel","connectForm","componentWillLoad","setUpLoadableComponent","componentDidLoad","setComponentLoaded","disconnectedCallback","disconnectLabel","disconnectForm","componentDidRender","updateHostInteraction","render","h","Host","onClick","onKeyDown","InteractiveContainer","toAriaBoolean","getLabelText","class","ref","role","tabIndex","HiddenFormInputSlot","component"],"sources":["src/components/switch/resources.ts","src/components/switch/switch.scss?tag=calcite-switch&encapsulation=shadow","src/components/switch/switch.tsx"],"sourcesContent":["export const CSS = {\n container: \"container\",\n track: \"track\",\n handle: \"handle\",\n};\n","// sizes\n:host([scale=\"s\"]) {\n .container {\n @apply h-3;\n }\n .track {\n @apply h-3 w-6;\n }\n .handle {\n @apply h-2 w-2;\n }\n}\n\n:host([scale=\"m\"]) {\n .container {\n @apply h-4;\n }\n .track {\n @apply h-4 w-8;\n }\n .handle {\n @apply h-3 w-3;\n }\n}\n\n:host([scale=\"l\"]) {\n .container {\n @apply h-6;\n }\n .track {\n @apply h-6 w-12;\n }\n .handle {\n @apply h-5 w-5;\n }\n}\n\n:host {\n @apply relative\n inline-block\n w-auto\n cursor-pointer\n select-none\n align-middle;\n tap-highlight-color: transparent;\n}\n\n@include disabled();\n\n.container {\n @apply outline-0;\n}\n\n.track {\n @apply bg-foreground-2\n border-color-2\n pointer-events-none\n relative\n box-border\n inline-block\n rounded-full\n border\n border-solid\n align-top\n focus-base;\n}\n\n.container:focus .track {\n @apply focus-outset;\n}\n\n.handle {\n @apply bg-foreground-1\n border-color-input\n pointer-events-none\n absolute\n block\n rounded-full\n border-2\n border-solid\n transition-all\n duration-150\n ease-in-out;\n inset-block-start: -1px;\n inset-inline: -1px theme(\"inset.auto\");\n}\n\n.container:hover,\n.container:focus {\n .handle {\n @apply border-color-brand;\n box-shadow: inset 0 0 0 1px var(--calcite-color-brand);\n }\n}\n\n:host([checked]) {\n .track {\n @apply bg-brand border-color-brand-hover;\n }\n .handle {\n @apply border-color-brand;\n inset-inline: theme(\"inset.auto\") -1px;\n }\n\n .container:hover {\n .handle {\n @apply border-color-brand-hover;\n box-shadow: inset 0 0 0 1px var(--calcite-color-brand-hover);\n }\n }\n}\n\n@media (forced-colors: active) {\n :host([checked]) {\n .track {\n background-color: canvasText;\n }\n }\n}\n\n@include hidden-form-input();\n@include base-component();\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n VNode,\n} from \"@stencil/core\";\nimport { focusElement, toAriaBoolean } from \"../../utils/dom\";\nimport {\n CheckableFormComponent,\n connectForm,\n disconnectForm,\n HiddenFormInputSlot,\n} from \"../../utils/form\";\nimport {\n InteractiveComponent,\n InteractiveContainer,\n updateHostInteraction,\n} from \"../../utils/interactive\";\nimport { isActivationKey } from \"../../utils/key\";\nimport { connectLabel, disconnectLabel, getLabelText, LabelableComponent } from \"../../utils/label\";\nimport {\n componentFocusable,\n LoadableComponent,\n setComponentLoaded,\n setUpLoadableComponent,\n} from \"../../utils/loadable\";\nimport { Scale } from \"../interfaces\";\nimport { CSS } from \"./resources\";\n\n@Component({\n tag: \"calcite-switch\",\n styleUrl: \"switch.scss\",\n shadow: true,\n})\nexport class Switch\n implements LabelableComponent, CheckableFormComponent, InteractiveComponent, LoadableComponent\n{\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n /** When `true`, interaction is prevented and the component is displayed with lower opacity. */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * The `id` of the form that will be associated with the component.\n *\n * When not set, the component will be associated with its ancestor form element, if any.\n */\n @Prop({ reflect: true })\n form: string;\n\n /** Accessible name for the component. */\n @Prop() label: string;\n\n /**\n * Specifies the name of the component.\n *\n * Required to pass the component's `value` on form submission.\n */\n @Prop({ reflect: true }) name: string;\n\n /** Specifies the size of the component. */\n @Prop({ reflect: true }) scale: Scale = \"m\";\n\n /** When `true`, the component is checked. */\n @Prop({ reflect: true, mutable: true }) checked = false;\n\n /** The component's value. */\n @Prop() value: any;\n\n //--------------------------------------------------------------------------\n //\n // Private Properties\n //\n //--------------------------------------------------------------------------\n\n @Element() el: HTMLCalciteSwitchElement;\n\n labelEl: HTMLCalciteLabelElement;\n\n switchEl: HTMLDivElement;\n\n formEl: HTMLFormElement;\n\n defaultValue: Switch[\"checked\"];\n\n defaultChecked: boolean;\n\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n\n /** Sets focus on the component. */\n @Method()\n async setFocus(): Promise {\n await componentFocusable(this);\n\n focusElement(this.switchEl);\n }\n\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n\n syncHiddenFormInput(input: HTMLInputElement): void {\n input.type = \"checkbox\";\n }\n\n keyDownHandler = (event: KeyboardEvent): void => {\n if (!this.disabled && isActivationKey(event.key)) {\n this.toggle();\n event.preventDefault();\n }\n };\n\n onLabelClick(): void {\n if (!this.disabled) {\n this.toggle();\n this.setFocus();\n }\n }\n\n private toggle(): void {\n this.checked = !this.checked;\n this.calciteSwitchChange.emit();\n }\n\n private clickHandler = (): void => {\n if (this.disabled) {\n return;\n }\n\n this.toggle();\n };\n\n private setSwitchEl = (el: HTMLDivElement): void => {\n this.switchEl = el;\n };\n\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n\n /**\n * Fires when the `checked` value has changed.\n */\n @Event({ cancelable: false }) calciteSwitchChange: EventEmitter;\n\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n\n connectedCallback(): void {\n connectLabel(this);\n connectForm(this);\n }\n\n componentWillLoad(): void {\n setUpLoadableComponent(this);\n }\n\n componentDidLoad(): void {\n setComponentLoaded(this);\n }\n\n disconnectedCallback(): void {\n disconnectLabel(this);\n disconnectForm(this);\n }\n\n componentDidRender(): void {\n updateHostInteraction(this);\n }\n\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n\n render(): VNode {\n return (\n \n \n \n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n"],"mappings":";;;;;2aAAO,MAAMA,EAAM,CACjBC,UAAW,YACXC,MAAO,QACPC,OAAQ,UCHV,MAAMC,EAAY,k3FAClB,MAAAC,EAAeD,E,MCsCFE,EAAM,M,kFAiFjBC,KAAAC,eAAkBC,IAChB,IAAKF,KAAKG,UAAYC,EAAgBF,EAAMG,KAAM,CAChDL,KAAKM,SACLJ,EAAMK,gB,GAgBFP,KAAAQ,aAAe,KACrB,GAAIR,KAAKG,SAAU,CACjB,M,CAGFH,KAAKM,QAAQ,EAGPN,KAAAS,YAAeC,IACrBV,KAAKW,SAAWD,CAAE,E,cAnGgB,M,wEAqBI,I,aAGU,M,qBA+BlD,cAAME,SACEC,EAAmBb,MAEzBc,EAAad,KAAKW,S,CASpB,mBAAAI,CAAoBC,GAClBA,EAAMC,KAAO,U,CAUf,YAAAC,GACE,IAAKlB,KAAKG,SAAU,CAClBH,KAAKM,SACLN,KAAKY,U,EAID,MAAAN,GACNN,KAAKmB,SAAWnB,KAAKmB,QACrBnB,KAAKoB,oBAAoBC,M,CAgC3B,iBAAAC,GACEC,EAAavB,MACbwB,EAAYxB,K,CAGd,iBAAAyB,GACEC,EAAuB1B,K,CAGzB,gBAAA2B,GACEC,EAAmB5B,K,CAGrB,oBAAA6B,GACEC,EAAgB9B,MAChB+B,EAAe/B,K,CAGjB,kBAAAgC,GACEC,EAAsBjC,K,CASxB,MAAAkC,GACE,OACEC,EAACC,EAAI,CAAA/B,IAAA,2CAACgC,QAASrC,KAAKQ,aAAc8B,UAAWtC,KAAKC,gBAChDkC,EAACI,EAAoB,CAAAlC,IAAA,2CAACF,SAAUH,KAAKG,UACnCgC,EAAA,OAAA9B,IAAA,0DACgBmC,EAAcxC,KAAKmB,SAAQ,aAC7BsB,EAAazC,MACzB0C,MAAOjD,EAAIC,UACXiD,IAAK3C,KAAKS,YACVmC,KAAK,SACLC,SAAU,GAEVV,EAAA,OAAA9B,IAAA,2CAAKqC,MAAOjD,EAAIE,OACdwC,EAAA,OAAA9B,IAAA,2CAAKqC,MAAOjD,EAAIG,UAElBuC,EAACW,EAAmB,CAAAzC,IAAA,2CAAC0C,UAAW/C,S","ignoreList":[]}