multi-step-form-vanilla
Version:
A modern, customizable multi-step form system with reusable Web Components.
142 lines (108 loc) β’ 4.02 kB
Markdown
# πͺ Multi-Step Form Components
A modern, customizable **multi-step form system** with reusable Web Components.
This library provides clean, scalable components for building advanced forms with minimal effort.

## π Features
- **Multi-Step Flow** β build guided wizards with `<multi-step-form>` and `<step>`.
- **Custom Elements** β fully encapsulated Web Components.
- **Reusable Form Inputs** β text, textarea, file, checkbox, date, time.
- **Interactive Components** β alerts, OTP inputs, question cards, countdowns, infinite surveys.
- **Grid & Layout System** β responsive `.row` and `.col` helpers.
- **No Dependencies** β vanilla JS + custom CSS.
- **Events & Callbacks** β OTP verification, form-finished payloads, infinite-save survey results.
## π Documentation
A full interactive documentation page is included:
π Open `doc.html` in your browser to explore all components.
It features:
- Sidebar navigation
- π Grid System
- π·οΈ Form-Title
- π€ Form-Input
- βοΈ Form-Checkbox
- π Form-File
- π Form-Textarea
- β οΈ Form-Alert
- π Form-Code (OTP)
- β Form-Quest
- β¬οΈ Form-Select
- π Form-Button
- β³ Form-Countdown
- βΎοΈ Form-Infinite
- πͺ Multi-Step Form
- Live component demos
- Copy-paste ready code snippets
- Callback functions
## π§© Components
| Component | Purpose |
|--------------------|---------|
| `<form-title>` | Title + description |
| `<form-input>` | Text, email, password, tel⦠|
| `<form-checkbox>` | Checkbox with optional description |
| `<form-file>` | File uploader (drag-drop ready) |
| `<form-textarea>` | Multi-line text input |
| `<form-alert>` | Alert messages (info, success, warning, error) |
| `<form-code>` | OTP / verification code input |
| `<form-quest>` | Radio/checkbox question cards |
| `<form-select>` | Hierarchical select with search |
| `<form-button>` | Styled button variants |
| `<form-countdown>` | Circular countdown timer with expire slot |
| `<form-infinite>` | Infinite branching Q&A system |
| `<multi-step-form>`| Step-based form container |
## π Example Usage
```html
<multi-step-form id="msf">
<step title="User Info">
<form-input type="text" name="name" label="Full Name" required></form-input>
<form-input type="email" name="email" label="Email"></form-input>
</step>
<step title="Verification">
<form-code name="otp" length="4" verify label="Enter OTP"></form-code>
</step>
<step>
<form-title desc="Form summary and confirmation">Result</form-title>
<div class="result-box">
<p>Your form has been submitted successfully.</p>
</div>
<form-button type="success">Finish</form-button>
</step>
</multi-step-form>
```
## β‘ JavaScript Integration
```js
// Attach OTP verification logic
const msf = document.getElementById('msf');
msf.setVerificationCallback(code => new Promise((resolve, reject) => {
setTimeout(() => code === '1234'
? resolve(true)
: reject('Invalid code. Try 1234 for demo.'), 300);
}));
// Listen when form is finished
msf.addEventListener('form-finished', (e) => {
console.log('Collected Data:', e.detail);
alert('Form completed π');
});
```
## π¦ Installation
Clone the repo and include `styles.css` and `form.js` in your project:
```html
<link rel="stylesheet" href="styles.css">
<script src="form.js"></script>
```
## π Development
- Written in vanilla **HTML, CSS, JS**
- Custom Elements API
- Grid system based on `.row` / `.col-*`
- Designed with **Mulish** font
## π License
Β© 2025 HakkΔ± Cengiz
Licensed under the MIT License.
If you find this project useful, consider β starring the repository!
Donations are also welcome to support continued development.