UNPKG

progress-steps-webcomponent

Version:

A web component for displaying the steps of a process and letting users move between them

150 lines (117 loc) 5.21 kB
# progress-steps-webcomponent A web component for displaying the steps of a process and letting users move between them <img src="/docs/sample.png"> ## 👉[View Example](https://torrobinson.github.io/progress-steps-webcomponent/docs/)👈 ## Getting Started ### CDN Use the built files from npm from https://unpkg.com/progress-steps-webcomponent@latest ```html <!-- For example, use a CDN and replace 'latest' with your intended version --> <link rel="stylesheet" href="https://unpkg.com/progress-steps-webcomponent@latest/dist/progress-steps.min.css"/> <script src="https://unpkg.com/progress-steps-webcomponent@latest/dist/progress-steps.min.js"></script> ``` ### Manual To build yourself, clone the repo, and run ```node npm i npm run build ``` And use the `dist/progress-steps.min.js` and `dist/progress-steps.min.css` files ## Configuration View the example above for a complete working example. Add the component anywhere in your html: ```html <progress-steps id="my-steps"></progress-steps> ``` Then initialize the control ```js // Find the control let myStepper = document.querySelector('#my-steps'); // And initialize it myStepper.init({ steps: [{ name: 'Step 1' }, { name: 'Step 2' }, { name: 'Step 3' }], }); ``` ### Step configuration You can disable steps by setting `disabled` to `true`. You can attach any custom property to a step that you wish. When programmatically fetching the step later, those values can be retrieved and used. For example, you might attach custom IDs/GUIDs to them, so that when a step is changed, you can act upon the ID of that step: ```js myStepper.init({ steps: [ { name: 'Step 1', myCustomId: 1 }, { name: 'Step 2', myCustomId: 2 }, { name: 'Step 3', myCustomId: 3 }, { name: 'Step 4', myCustomId: 4 }, { name: 'Step 5', myCustomId: 5, disabled: true }, { name: 'Step 6', myCustomId: 6, disabled: true }, ], events: { onStepChanged: function (stepNumber, stepObj) { console.log(`Step changed to ${stepNumber}!`); let newId = stepObj.myCustomId; // [Act upon newId here] }, }, }); ``` ### Events | Event Name | Parameters | Description | | ------------- | --------------------- | ------------------------------ | | onStepChanged | (stepNumber, stepObj) | Fired when the step is changed | ### Methods | Method Name | Parameters | Description | | ----------- | ---------- | --------------------------------------------------------------- | | init | (options) | Initializes the control. See above examples for `options` usage | | getStep | | Returns the step object of the current active step | | setStep | (step) | Takes in the step number of the step to change to | | stepUp | | Increments the current active step | | stepDown | | Decrements the current active step | | disableStep | (step) | Takes in the step number of a step and disables it from use | | enableStep | (step) | Takes in the step number of a step and enables it for use | ### Styling Styling defaults can be overridden by overriding CSS variables on your component instance: ```css /* Ugly but complete style override demonstrating all the style components */ #my-steps{ /* The color to fill up, left-to-right, as steps are set to active */ --progress-fill-color: #cf78d9; /* The default color of the unfilled section of line and steps after the active step */ --progress-unfilled-color: purple; /* The width of each step icon */ --step-width: 20px; /* The font size of the step number and label */ --font-size: 12px; /* The border radius of the step icon */ --step-border-radius: 25%; /* The thickness of the line/progress bar/borders */ --line-thickness: 3px; /* The animation speed of the progress bar filling up */ --animation-speed: 500ms; /* Display attribute of the step labels. Show: 'inline-block', hide: 'none' */ --step-label-display: 'inline-block'; /* The vertical margin of the labels, if shown */ --step-label-spacing: 5px; /* The font weight to use on step labels */ --step-label-font-weight: normal; /* The font color of the step icon that is currently active */ --current-step-font-color: red; /* The font color of the current step label */ --current-label-font-color: blue; /* The font weight of the current step label */ --current-label-font-weight: bold; /* The font color of step labels that are before the current step */ --previous-label-font-color: red; /* The font color of the step icons that are before the current step */ --previous-step-font-color: pink; /* The fill-color for step icons that are after the current active step */ --future-step-fill-color: orange; /* The font color of step labels that are after the current step */ --future-label-font-color: green; /* The font color of step labels that are disabled */ --disabled-label-font-color: maroon; /* The font color of the disabled steps */ --disabled-step-font-color: red; /* The fill-color for disabled step icons */ --disabled-step-fill-color: blue; } ```