@rakuten-rex/stepper
v1.6.0
Published
Input Stepper is a UI control used to incrementally increase of decrease a numeric value.
Downloads
4
Readme
ReX React UI Component: stepper
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/[email protected] --save
yarn add @rakuten-rex/[email protected]
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/stepper/
Storybook features
- [x] Stories by component types
- [x] HTML raw output
- [x] JSX output
- [x] Stories source code
- [x] 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
import Stepper from '@rakuten-rex/stepper/Stepper';
function MyCustomComponent() {
return (
<Stepper id='defaultId' name='name_age' minusLabel='minus button' plusLabel='plus button' />
);
}
import StepperLabel from '@rakuten-rex/stepper/StepperLabel';
function MyCustomComponent() {
return (
<StepperLabel label='Label' id='age' name='name_age' labelId='labelId' minusLabel='minus button' plusLabel='plus button' />
);
}
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/stepper/Stepper/css';
function MyCustomComponent() {
return (
<!-- html Stepper Without Label -->
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="defaultId" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
<!-- //html Stepper Without Label -->
<!-- html Stepper With Label -->
<div class="rex-stepper-label">
<label for="age" class="rex-stepper-label-ui" id="labelId">Label</label>
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="age" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
</div>
<!-- //html Stepper With Label -->
);
}
Using Static CSS (Legacy Websites)
Example:
my-component.jsx
import '@rakuten-rex/stepper/Stepper/css/static';
function MyCustomComponent() {
return (
<!-- html Stepper Without Label -->
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="defaultId" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
<!-- //html Stepper Without Label -->
<!-- html Stepper With Label -->
<div class="rex-stepper-label">
<label for="age" class="rex-stepper-label-ui" id="labelId">Label</label>
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="age" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
</div>
<!-- //html Stepper With Label -->
);
}
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/stepper/Stepper/sass/styles.mixin';
.rex-stepper {
@include rex-stepper();
}
Vue.js
A basic implementation based on HTML structure and import CSS styles into your component.
Example:
my-component.vue
<template>
<!-- html Stepper Without Label -->
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="defaultId" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
<!-- //html Stepper Without Label -->
<!-- html Stepper With Label -->
<div class="rex-stepper-label">
<label for="age" class="rex-stepper-label-ui" id="labelId">Label</label>
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="age" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
</div>
<!-- //html Stepper With Label -->
</template>
<script>
export default {
name: 'Stepper',
}
</script>
<style scoped>
@import "~@rakuten-rex/stepper/Stepper/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/[email protected]/Stepper/Stepper.production.min.css
Development mode URL (for local testing):
https://unpkg.com/@rakuten-rex/[email protected]/Stepper/Stepper.development.css
Using Static CSS (Legacy Websites)
https://unpkg.com/@rakuten-rex/[email protected]/Stepper/Stepper.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 stepper -->
<link href="https://unpkg.com/@rakuten-rex/[email protected]/Stepper/Stepper.production.min.css" rel="stylesheet">
</head>
<body>
<!-- html Stepper Without Label -->
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="defaultId" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
<!-- //html Stepper Without Label -->
<!-- html Stepper With Label -->
<div class="rex-stepper-label">
<label for="age" class="rex-stepper-label-ui" id="labelId">Label</label>
<div class="rex-stepper">
<button class="rex-icon-button minus" type="button" aria-label="minus button">
<svg width="40" height="32"><path d="M14 17h12v-1.3H14V17z" fill-rule="evenodd" clip-rule="evenodd" fill="#b6b6b6"></path></svg>
</button>
<input type="text" id="age" class="rex-stepper-counter" name="name_age" pattern="[0-9]*" value="0" aria-label="name_age" />
<button class="rex-icon-button plus" type="button" aria-label="plus button">
<svg width="40" height="32"><path d="M19.3 10v5.3H14v1.3h5.3V22h1.3v-5.3H26v-1.3h-5.3V10z" fill="#b6b6b6" fill-rule="evenodd"></path></svg>
</button>
</div>
</div>
<!-- //html Stepper With Label -->
</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+ | |