@rakuten-rex/switch

Switch toggle a single option between two states: on and off


Keywords
css, sass, mobile-first, responsive, front-end, framework, web, react, ui-components, css3, es6, functional-programming, html5, javascript
License
MIT
Install
npm install @rakuten-rex/switch@1.5.0

Documentation

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.0.0 --save

yarn add @rakuten-rex/switch@1.0.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';

function MyCustomComponent() {
  return (
    <SwitchToggle id='switch' label='Toggle this switch element' name='pet' value='dog' aria-checked={true} checked={true} />
  );
}
// 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" : true, "disabled" : false, "ariaChecked" : true }, { "id" : "choice5" , "name" : "setting" , "value" : "onoff" , "label" : "Show lists" , "checked" : false, "disabled" : true, "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 (
    <div class="rex-switch">
      <input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
      <label class="rex-switch-label" for="switch1">Toggle switch element</label>
    </div>
  );
}

Using Static CSS (Legacy Websites)

Example:

my-component.jsx

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

function MyCustomComponent() {
  return (
    <div class="rex-switch">
      <input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
      <label class="rex-switch-label" for="switch1">Toggle switch element</label>
    </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';

.rex-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>
    <div class="rex-switch">
      <input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
      <label class="rex-switch-label" for="switch1">Toggle switch element</label>
    </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.0.0/SwitchToggle/SwitchToggle.production.min.css

Development mode URL (for local testing):

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

Using Static CSS (Legacy Websites)

https://unpkg.com/@rakuten-rex/switch@1.0.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.0.0/SwitchToggle/SwitchToggle.production.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="rex-switch">
      <input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
      <label class="rex-switch-label" for="switch1">Toggle switch element</label>
    </div>
  </body>
</html>

Documentation, source code and distribution

Site URL
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 features JavaScript features
Theme support via CSS variables React components splitted by type
Static CSS styles available for HTML/VueJS/AngularJS Universal 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

PC Mobile
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+

Development environment

How to initialize the project for a new repository

npm run setup

How to add a new ReX Component to the project

npm run generate:rex-component

How to start the project

The development environment is based on Storybook, for more info visit https://storybook.js.org/ .

npm start

How to build

The build task will generate a NPM package ready to be published and also a static version of Storybook, one folder for NPM ./npm/@rakuten-rex/switch and other one for Github pages ./docs.

npm run build

How to check build version

By using Node http-server, you can check the static version of Storybook with production settings and builds.

npm run serve

How to publish to NPM

Build the project

npm run build

Publish to NPM

Build the project first and then publish it to NPM.

npm run publish:component

Once the process finish, take a look to the NPM site:

https://www.npmjs.com/package/@rakuten-rex/switch

Javascript and React related documents

Take a look to this nice documentation pages to be more familiar with React and modern Javascript:

Official site

https://reactjs.org/docs/getting-started.html

Google Web Fundamentals (the whole site is a must to read)

https://developers.google.com/web/fundamentals/

Webpack as magic bundler

https://webpack.js.org/

Composing Software series (how to understand Funcional Programming)

https://medium.com/javascript-scene/composing-software-an-introduction-27b72500d6ea

Common React patterns

https://reactpatterns.com

Understanding Storybook with nice images

https://blog.hichroma.com/the-delightful-storybook-workflow-b322b76fd07

Some guidelines for clean code

https://americanexpress.io/clean-code-dirty-code/