1.5.0 • Published 4 years ago

@rakuten-rex/switch v1.5.0

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

ReX React UI Component: switch

This project is part of ReX Design System and it can be used to create UI Components compatible with:

React, HTML/CSS and Vue.js

How to install

npm install @rakuten-rex/switch@1.5.0 --save
yarn add @rakuten-rex/switch@1.5.0

Getting started

Storybook Live examples

For a complete guide of properties for React and HTML classes please visit our Storybook page:

https://rakuten-rex.github.io/switch/

Storybook features

  • Stories by component types
  • HTML raw output
  • JSX output
  • Stories source code
  • Knobs with multiple options

ZeroHeight Documentation

For a complete Documentation including all ReX Design System Components, Live HTML/React examples and Demos please visit:

https://rakuten-rex.github.io/

How to integrate ReX in your project

A) JavaScript modules

React component (JavaScript + CSS Styles)

For plug and play components integration.

Example:

my-component.jsx

// A single Switch
import SwitchToggle from '@rakuten-rex/switch/SwitchToggle';

function MyCustomComponent() {
  return (
    <SwitchToggle id='switch1' label='Label Text' name='pet' value='dog' />
  );
}
// Multiple Switches
import SwitchToggleGroup from '@rakuten-rex/switch/SwitchToggleGroup';
function () {
  return (
    <SwitchToggleGroup options={[{ "id" : "choice1" , "name" : "setting" , "value" : "airplane" , "label" : "Airplane Mode" , "checked" : false, "disabled" : false, "ariaChecked" : false }, { "id" : "choice2" , "name" : "setting" , "value" : "notification" , "label" : "Notification" , "checked" : false, "disabled" : false, "ariaChecked" : true }, { "id" : "choice5" , "name" : "setting" , "value" : "onoff" , "label" : "Show lists" , "checked" : false, "disabled" : false, "ariaChecked" : false }]} />
  );
}

Click here to see all working examples in Storybook.

CSS Styles only

For your own JavaScript integration (React, Vue, Angular, etc.) or Static HTML.

Using CSS Variables (Modern Websites and WebApps)

Example:

my-component.jsx

import '@rakuten-rex/switch/SwitchToggle/css';

function MyCustomComponent() {
  return (
    <!-- A single Switch -->
    <div class="rex-switch">
      <label class="rex-switch-container" for="switch1" aria-labelledby="switch1">
        <input type="checkbox" id="switch1" label="Label Text" value="dog" name="pet" role="switch" aria-checked="false" />
        <span class="rex-switch-knob"></span>
      </label>
      <label class="rex-switch-label label-right" for="switch1">Label Text</label>
    </div>
    <!--  -->
    
    <!-- Multiple Switches -->
    <div class="rex-switch-group">
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice1" aria-labelledby="choice1">
          <input type="checkbox" id="choice1" label="Airplane Mode" value="airplane" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice1">
          Airplane Mode
        </label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice2" aria-labelledby="choice2">
          <input type="checkbox" id="choice2" label="Notification" value="notification" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice2">Notification</label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice5" aria-labelledby="choice5">
          <input type="checkbox" id="choice5" label="Show lists" value="onoff" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice5">Show lists</label>
      </div>
    </div>
  );
}

Using Static CSS (Legacy Websites)

Example:

my-component.jsx

import '@rakuten-rex/switch/SwitchToggle/css/static';

function MyCustomComponent() {
  return (
    <!-- A single Switch -->
    <div class="rex-switch">
      <label class="rex-switch-container" for="switch1" aria-labelledby="switch1">
        <input type="checkbox" id="switch1" label="Label Text" value="dog" name="pet" role="switch" aria-checked="false" />
        <span class="rex-switch-knob"></span>
      </label>
      <label class="rex-switch-label label-right" for="switch1">Label Text</label>
    </div>
    <!--  -->
    
    <!-- Multiple Switches -->
    <div class="rex-switch-group">
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice1" aria-labelledby="choice1">
          <input type="checkbox" id="choice1" label="Airplane Mode" value="airplane" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice1">
          Airplane Mode
        </label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice2" aria-labelledby="choice2">
          <input type="checkbox" id="choice2" label="Notification" value="notification" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice2">Notification</label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice5" aria-labelledby="choice5">
          <input type="checkbox" id="choice5" label="Show lists" value="onoff" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice5">Show lists</label>
      </div>
    </div>
  );
}

Click here to see all working examples in Storybook.

Sass mixins

For your own customization of styles (React, Vue, Angular, etc.) or Static HTML.

Example:

my-styles.scss

@import '@rakuten-rex/switch/Switch/sass/styles.mixin';

.my-custom-switch {
  @include rex-switch();
}

Vue.js

A basic implementation based on HTML structure and import CSS styles into your component.

Example:

my-component.vue

<template>
    <!-- A single Switch -->
    <div class="rex-switch">
      <label class="rex-switch-container" for="switch1" aria-labelledby="switch1">
        <input type="checkbox" id="switch1" label="Label Text" value="dog" name="pet" role="switch" aria-checked="false" />
        <span class="rex-switch-knob"></span>
      </label>
      <label class="rex-switch-label label-right" for="switch1">Label Text</label>
    </div>
    <!--  -->
    
    <!-- Multiple Switches -->
    <div class="rex-switch-group">
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice1" aria-labelledby="choice1">
          <input type="checkbox" id="choice1" label="Airplane Mode" value="airplane" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice1">
          Airplane Mode
        </label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice2" aria-labelledby="choice2">
          <input type="checkbox" id="choice2" label="Notification" value="notification" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice2">Notification</label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice5" aria-labelledby="choice5">
          <input type="checkbox" id="choice5" label="Show lists" value="onoff" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice5">Show lists</label>
      </div>
    </div>
</template>
<script>
export default {
  name: 'MyComponent',
}
</script>
<style scoped>
@import "~@rakuten-rex/switch/SwitchToggle/css";
</style>

B) Static HTML

Copy-paste the stylesheet <link> into your <head> tag to load our CSS styles.

Using CSS Variables (Modern Websites and WebApps)

Production mode URL (recommended for Static HTML projects):

https://unpkg.com/@rakuten-rex/switch@1.5.0/SwitchToggle/SwitchToggle.production.min.css

Development mode URL (for local testing):

https://unpkg.com/@rakuten-rex/switch@1.5.0/SwitchToggle/SwitchToggle.development.css

Using Static CSS (Legacy Websites)

https://unpkg.com/@rakuten-rex/switch@1.5.0/SwitchToggle/SwitchToggle.static.css

Single component integration

Add it from unpkg.com CDN (NPM) into your HTML template or HTML static page.

Example:

my-page.html

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My Page</title>
    <!-- ReX switch -->
    <link href="https://unpkg.com/@rakuten-rex/switch@1.5.0/SwitchToggle/SwitchToggle.production.min.css" rel="stylesheet">
  </head>
  <body>
    <!-- A single Switch -->
    <div class="rex-switch">
      <label class="rex-switch-container" for="switch1" aria-labelledby="switch1">
        <input type="checkbox" id="switch1" label="Label Text" value="dog" name="pet" role="switch" aria-checked="false" />
        <span class="rex-switch-knob"></span>
      </label>
      <label class="rex-switch-label label-right" for="switch1">Label Text</label>
    </div>
    <!--  -->
    
    <!-- Multiple Switches -->
    <div class="rex-switch-group">
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice1" aria-labelledby="choice1">
          <input type="checkbox" id="choice1" label="Airplane Mode" value="airplane" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice1">
          Airplane Mode
        </label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice2" aria-labelledby="choice2">
          <input type="checkbox" id="choice2" label="Notification" value="notification" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice2">Notification</label>
      </div>
      <div class="rex-switch">
        <label class="rex-switch-container" for="choice5" aria-labelledby="choice5">
          <input type="checkbox" id="choice5" label="Show lists" value="onoff" name="setting" role="switch" aria-checked="false" />
          <span class="rex-switch-knob"></span>
        </label>
        <label class="rex-switch-label label-right" for="choice5">Show lists</label>
      </div>
    </div>
  </body>
</html>

Documentation, source code and distribution

SiteURL
Github (Source Code)https://github.com/rakuten-rex
NPM (Package distribution)https://www.npmjs.com/org/rakuten-rex
ZeroHeight (Documentation)https://zeroheight.com/390c074f3

Project Stack

Front-end
HTML5 CSS3 & Sass JavaScript ES6 React
Tools
webpack Storybook Babel ESLint Prettier

Features

Styles featuresJavaScript features
Theme support via CSS variablesReact components splitted by type
Static CSS styles available for HTML/VueJS/AngularJSUniversal Module Definition support
Sass mixins for custom builds
Reset CSS styles already bundled by HTML tags
Removed duplicated CSS props
CSS classes prefix rex-

Browser Support

PCMobile
Chrome 49+ iOS 9+ (Safari 9.3+, Chrome 78+)
Safari 9.1+ Android 6+ (Chrome 78+, Android Browser 76+)
Firefox 31+
MS Edge 15+
IE 11+
1.5.0

4 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago