An <sp-switch>
is used to turn an option on or off. Switches allow users to select the state of a single option at a time. Use a switch rather than a checkbox when activating (or deactivating) an option, instead of selecting.

yarn add @spectrum-web-components/switch
Import the side effectful registration of <sp-switch>
via:
import '@spectrum-web-components/switch/sp-switch.js';
When looking to leverage the Switch
base class as a type and/or for extension purposes, do so via:
import { Switch } from '@spectrum-web-components/switch';
A switch consists of a switch input and slotted label.
<sp-switch>Email notifications</sp-switch>
A switch can be checked by setting the checked
property/attribute.
<sp-field-group vertical>
<sp-switch>Not checked</sp-switch>
<sp-switch checked>Checked</sp-switch>
</sp-field-group>
Small <sp-switch size="s">Small</sp-switch>
Medium <sp-switch size="m">Medium</sp-switch>
Large <sp-switch size="l">Large</sp-switch>
Extra Large <sp-switch size="xl">Extra Large</sp-switch>
Emphasized switches, which use the empahasized
attribute/property are a secondary style for switches. The blue color provides a visual prominence that is optimal for forms, settings, etc. where the switches need to be noticed.
<sp-field-group vertical>
<sp-switch emphasized>Emphasized</sp-switch>
<sp-switch emphasized checked>Emphasized and checked</sp-switch>
</sp-field-group>
A switch can be disabled using the disabled
property/attribute.
<sp-field-group vertical>
<sp-switch disabled>Disabled</sp-switch>
<sp-switch disabled checked>Disabled and checked</sp-switch>
</sp-field-group>
Event handlers for clicks and other user actions can be registered on an <sp-switch>
similar to a standard <input type="checkbox">
element.
<sp-switch id="switch-example" onclick="spAlert(this, '<sp-switch> clicked!')">
Web component
</sp-switch>
Switch are rendered in HTML using the <input type="checkbox">
element with the appropriate accessibility role, switch
. When the Switch is checked
, the appropriate ARIA state attribute will automatically be applied.
A switch is required to have either a visible text label nested inside <sp-switch>
itself.
<sp-switch>Email notifications</sp-switch>
Standalone switches should be used in situations where the context is clear without an associated text label. For example, a switch located at the top of a panel next to the panel's title makes it clear that the switch will enable/disable the panel options.
In those cases, you can use CSS to visually hide the text label.
<div id="settings">
<sp-field-label for="notifications-settings">Notifications</sp-field-label>
<sp-switch id="notify">
<span class="visually-hidden">Notifications</span>
</sp-switch>
<sp-field-group id="notifications-settings" vertical>
<sp-switch disabled>Email</sp-switch>
<sp-switch disabled>Telephone</sp-switch>
<sp-switch disabled>Text</sp-switch>
</sp-field-group>
</div>
<style>
.visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
#settings {
display: grid;
grid-gap: 10px;
grid-template-columns: calc(100% - 50px) 50px;
}
#notifications-settings {
grid-column: 1 / 3;
grid-row: 2;
}
</style>
Changelog
- Updated dependencies [
a4de4c7
]: - @spectrum-web-components/checkbox@1.5.0
- @spectrum-web-components/base@1.5.0
- Updated dependencies []:
- @spectrum-web-components/checkbox@1.4.0
- @spectrum-web-components/base@1.4.0
- Updated dependencies [
468314f
]: - @spectrum-web-components/checkbox@1.3.0
- @spectrum-web-components/base@1.3.0
All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- lock prerelease versions for Spectrum CSS (#5014) (8aa7734)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- asset: use core tokens (99e76f4)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- checkbox: refactor architecture for more rendering perf and DOM element count (7c2277f)
- textfield: added name attribute to textfield (#3752) (593005a)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- add support for "readonly" attribute (4bce3b7)
- correct @element jsDoc listing across library (c97a632)
- ensure [disabled] styling (4c067eb)
- ensure aria attributes based on state (6ee43de)
- focusable style (48ea3e7)
- implement "emphasized" styles (750bbe7)
- include "type" in package.json, generate custom-elements.json (1a8d716)
- include default export in the "exports" fields (f32407d)
- include the "types" entry in package.json files (b432f59)
- move hover/focus hoisting into conditioning (15ac2f7)
- stop merging selectors in a way that alters the cascade (369388f)
- switch: process CSS correction (292fff1)
- switch: track aria-checked (1980046)
- update configuration for Spectrum CSS processing for specificity (5c2e21e)
- update latest Spectrum CSS beta releases (d8d3acc)
- update side effect listings (8160d3a)
- update to latest spectrum-css packages (a5ca19f)
- workaround bug in Edge with switches (7014a2c)
- action-button: add action button pattern (03ac00a)
- action-group: add action-group pattern (d2de766)
- adopt DNA@7 base Spectrum CSS (e08cafd)
- include all Dev Mode files in side effects (f70817c)
- leverage "exports" field in package.json (321abd7)
- shared pkg versions, devmode define warning, registry-conflicts docs (6e49565)
- switch: update spectrum css input (1d2ce17)
- switch: use core tokens (8011ead)
- update to Spectrum CSS v3.0.0 (e8b3d8f)
- use :focus-visable (via polyfill) instead of :focus (11c6fc7)
- use @adobe/spectrum-css@2.15.1 (3918888)
- use latest exports specification (a7ecf4b)
- use "sideEffects" listing in package.json (7271614)
- use imported TypeScript helpers instead of inlining them (cc2bd0a)
- Revert "chore: release new versions" (a6d655d)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- move hover/focus hoisting into conditioning (15ac2f7)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- switch: use core tokens (8011ead)
- include all Dev Mode files in side effects (f70817c)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- adopt DNA@7 base Spectrum CSS (e08cafd)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- correct @element jsDoc listing across library (c97a632)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- add support for "readonly" attribute (4bce3b7)
Note: Version bump only for package @spectrum-web-components/switch
- use latest exports specification (a7ecf4b)
- update to latest spectrum-css packages (a5ca19f)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- ensure [disabled] styling (4c067eb)
- implement "emphasized" styles (750bbe7)
- include the "types" entry in package.json files (b432f59)
- stop merging selectors in a way that alters the cascade (369388f)
- update configuration for Spectrum CSS processing for specificity (5c2e21e)
- update latest Spectrum CSS beta releases (d8d3acc)
- action-button: add action button pattern (03ac00a)
- switch: update spectrum css input (1d2ce17)
- implement "emphasized" styles (750bbe7)
- include the "types" entry in package.json files (b432f59)
- stop merging selectors in a way that alters the cascade (369388f)
- update latest Spectrum CSS beta releases (d8d3acc)
- action-button: add action button pattern (03ac00a)
- switch: update spectrum css input (1d2ce17)
Note: Version bump only for package @spectrum-web-components/switch
- include default export in the "exports" fields (f32407d)
- update side effect listings (8160d3a)
Note: Version bump only for package @spectrum-web-components/switch
- update to Spectrum CSS v3.0.0 (e8b3d8f)
- action-group: add action-group pattern (d2de766)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- switch: track aria-checked (1980046)
- leverage "exports" field in package.json (321abd7)
Note: Version bump only for package @spectrum-web-components/switch
- switch: process CSS correction (292fff1)
- ensure aria attributes based on state (6ee43de)
- workaround bug in Edge with switches (7014a2c)
- use "sideEffects" listing in package.json (7271614)
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
Note: Version bump only for package @spectrum-web-components/switch
- focusable style (48ea3e7)
Note: Version bump only for package @spectrum-web-components/switch
- include "type" in package.json, generate custom-elements.json (1a8d716)
- use :focus-visable (via polyfill) instead of :focus (11c6fc7)
- use @adobe/spectrum-css@2.15.1 (3918888)
Note: Version bump only for package @spectrum-web-components/switch
- use imported TypeScript helpers instead of inlining them (cc2bd0a)
Note: Version bump only for package @spectrum-web-components/switch