5.0.6 • Published 5 years ago

@lightspeed/cirrus-switch v5.0.6

Weekly downloads
4
License
MIT
Repository
-
Last release
5 years ago

Switch

Switch component is a visual representation of an input type checkbox.

Installation

First, make sure you have been through the Getting Started steps of adding Cirrus in your application.

If using Yarn:

yarn add @lightspeed/cirrus-switch

Or using npm:

npm i -S @lightspeed/cirrus-switch

Usage

To empower our users to turn settings on or off we offer them the switch. A visual indicator and control that shows our users if it’s enabled or not.

When the switch enables content to be active or disabled, make sure there is a clear state between those two states.

Like stated in the Checkbox component, Switches are only for turning settings on or off, NOT for opting in or out of something.

Import required styles in your .scss:

@import '@lightspeed/cirrus-switch/Switch.scss';

React Component

Props

PropTypeDescription
idstringInput ID (recommended for accessibility)
namestringInput name
checkedbooleanChecked component
disabledbooleanDisabled component
onChangefunctionTriggers when the input value (checked) changes, callback returns event
html propertystringAny extra properties passed will be added to the <input> element

Example

import React from 'react';
import Switch from '@lightspeed/cirrus-switch';

// Controlled component (recommended)
class ControlledComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      checked: false,
    };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(event) {
    this.setState({ checked: event.target.checked });
  }

  render() {
    const { checked } = this.state;
    return (
      <div>
        <Switch id="feature-id" name="feature" checked={checked} onChange={this.handleChange} />
      </div>
    )
  }
}

// Half-controlled component (state is handled inside the `<Switch>`)
const HalfControlledComponent = () => (
  <div>
    <Switch id="feature-id" name="feature" value="on" />
  </div>
);

export { ControlledComponent, HalfControlledComponent };

CSS Component

Component classes

TypeClass
base.cr-switch
input.cr-switch__input
wrapper.cr-switch__wrapper
slider.cr-switch__slider
icon wrapper.cr-switch__icon-wrapper

Component HTML

The Cirrus icon sprite needs to be included to reference the icons using <use /> tag.

<label role="presentation" class="cr-switch">
  <input id="feature1" name="feature1" class="cr-switch__input" type="checkbox" value="1" />
  <span class="cr-switch__wrapper">
    <span class="cr-switch__slider">
      <svg width="10" height="2" xmlns="http://www.w3.org/2000/svg">
        <path d="M0 .505C0 .226.232 0 .5 0c.276 0 .5.214.5.505v.99A.508.508 0 0 1 .5 2a.495.495 0 0 1-.5-.505v-.99zm3 0C3 .226 3.232 0 3.5 0c.276 0 .5.214.5.505v.99A.508.508 0 0 1 3.5 2a.495.495 0 0 1-.5-.505v-.99zm3 0C6 .226 6.232 0 6.5 0c.276 0 .5.214.5.505v.99A.508.508 0 0 1 6.5 2a.495.495 0 0 1-.5-.505v-.99zm3 0C9 .226 9.232 0 9.5 0c.276 0 .5.214.5.505v.99A.508.508 0 0 1 9.5 2a.495.495 0 0 1-.5-.505v-.99z" fill="#C4CACC" fill-rule="evenodd"></path>
      </svg>
    </span>
    <span class="cr-switch__icon-wrapper">
      <svg className="cr-icon cr-icon-apps" style="width:0.75rem;height:0.75rem;" fill="#fff">
        <use xlinkHref="#cr-icon-apps" />
      </svg>
      <svg className="cr-icon cr-icon-apps" style="width:0.75rem;height:0.75rem;" fill="#848a8a">
        <use xlinkHref="#cr-icon-apps" />
      </svg>
    </span>
  </span>
</label>
5.0.6

5 years ago

6.0.0-beta.1

5 years ago

6.0.0-beta.0

5 years ago

6.0.0-alpha.2

5 years ago

6.0.0-alpha.1

5 years ago

6.0.0-alpha.0

5 years ago

5.0.5

6 years ago

5.0.4

6 years ago

5.0.3

6 years ago

5.0.2

6 years ago

5.0.1

6 years ago

5.0.0

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

3.0.0

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago