Back to Slider-guidelines

CSS ComponentThe latest version of this package is: 17.0.38, Opens in new window

The Slider Component allows users to enter a value within constrained range.

This component provides .css, .styl, .less and .scss -files.

To be able to install this component, please refer to the Project Setup documentation.

$ npm i @ids-core/slider@17.0.38

0
100

Table of Contents

Edit this section, Opens in new window

Usage

Below is the markup for Slider element.

  • Please note the aria-valuenow and value attributes and --val css variable - these values must be updated with javascript on input change (example code provided below).
  • If there is no initial value set on the Slider leave aria-valuenow and value attributes without any value set and do not add the --val css variable in style attribute.
0
100
<div class="if slider-container">
    <label for="slider-id" class="if slider-data">
        <span>Slider Data</span>
    </label>
    <input
        type="range"
        role="slider"
        id="slider-id"
        class="if slider"
        aria-valuemin="0"
        aria-valuemax="100"
        aria-valuenow=""
        max="100"
        min="0"
        step="1"
        value=""
        style="--min: 0; --max: 100;"
    />

    <div class="if slider-values">
        <div class="if min">0</div>
        <div class="if max">100</div>
    </div>
</div>
This is an example slider implementation in JavaScript
window.onload = function () {
    // class name used for progress bar display
    // it is crucial to not change it
    const PROGRESS_CLASSNAME = 'has-progress';
    // get every slider element
    const rangeInputList = document.querySelectorAll('input[type=range].slider');

    // initialize every slider element
    rangeInputList.forEach((rangeInput) => {
        const isValDefined = rangeInput.style.getPropertyValue('--val').length > 0;
        let hasProgressClass = rangeInput.classList.value.indexOf(PROGRESS_CLASSNAME) > -1;

        // if there is a value already provided and no progress element in DOM,
        // it means that progress should be displayed
        if (isValDefined && !hasProgressClass) {
            rangeInput.classList.add(PROGRESS_CLASSNAME);
        }

        // add "input" event listener to the slider
        rangeInput.addEventListener(
            'input',
            (event) => {
                const currentValue = event.target.value;
                // update the '--val' css variable
                // it is used in progress calculation
                rangeInput.style.setProperty('--val', currentValue);
                // set `value` and 'aria-valuenow' attributes according to
                // current position of slider thumb
                rangeInput.setAttribute('value', currentValue);
                rangeInput.setAttribute('aria-valuenow', currentValue);

                // if at this point there is no progress bar visible
                // add it to slider, since user has moved the thumb
                if (!hasProgressClass) {
                    hasProgressClass = true;
                    rangeInput.classList.add(PROGRESS_CLASSNAME);
                }
            },
            false
        );
    });
};
Edit this section, Opens in new window

Accessibility

Slider or input[type=range], just like any other input element, requires an associated label

<div class="if slider-container">
    <label for="slider-id" class="if slider-data">
        <span>Slider Data</span>
    </label>

    <input
        type="range"
        role="slider"
        id="slider-id"
        class="if slider has-progress"
        aria-valuemin="0"
        aria-valuemax="100"
        aria-valuenow="50"
        max="100"
        min="0"
        step="1"
        value="50"
        style="--min: 0; --max: 100; --val: 50;"
    />

    <div class="if slider-values">
        <div class="if min">0</div>
        <div class="if max">100</div>
    </div>
</div>

For screen readers to pick up the change in the value of Slider, it is necessary to update the aria-valuenow along with value attribute.

const rangeInput = document.querySelector('input[type=range].slider');
rangeInput.addEventListener(
    'input',
    (event) => {
        const currentValue = event.target.value;
        rangeInput.style.setProperty('--val', currentValue);
        rangeInput.setAttribute('value', currentValue);
        rangeInput.setAttribute('aria-valuenow', currentValue);
    },
    false
);

If the value of aria-valuenow is not user-friendly, e.g., the day of the week is represented by a number, the aria-valuetext attribute should be present and set to a string that makes the slider value understandable, e.g., " Monday".

const weekDayMap = { 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday' /* ... */ };
const rangeInput = document.querySelector('input[type=range].slider');
rangeInput.addEventListener(
    'input',
    (event) => {
        const currentValue = event.target.value;
        // ...
        rangeInput.setAttribute('aria-valuetext', weekDayMap[currentValue]);
    },
    false
);
Edit this section, Opens in new window

Changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

14.22.2 (2022-05-03)

Bug Fixes

  • slider focus: remove unnecessary focus border, fix thumb shifting (8b64a06)

Miscellaneous chores

  • package locks: update package locks (813eac7)

14.20.1 (2022-04-19)

Miscellaneous chores

  • changelog: regenerate all CHANGELOG.md files (64ab385) , closes #586342
  • changelog: regenerate all changelogs after updating changelog generation (70789c9) , closes #587270

14.18.3 (2022-04-13)

Bug Fixes

  • changelog: generate new CHANGELOG.md files for root and packages (349fda4) , closes #586063 . We regenerate the files to include all relevant commits and to use conventional-commits at 100%

14.16.0 (2022-04-07)

Bug Fixes

  • ๐Ÿ› Add missing imports for global CSS Variables (fbf6f06) , closes #582437

14.9.0 (2022-03-03)

Miscellaneous chores

14.8.1 (2022-02-23)

Bug Fixes

  • ๐Ÿ› Add missing imports of typography CSS variables (e716c65) , closes #559412

reinstall (d425056)

bootstrap (9a713df)

merge (2b1c5f1)

reinstall (5221600)

reinstall (147df55)

  • use correct versions (f1b5deb)

  • Add engines for all packages (e95dfff)

reinstall (afce1f2)

reinstall (67f3140)

14.2.5 (2021-12-21)

Bug Fixes

  • ๐Ÿ› Slider fonts (9ff10d1) . โœ… Closes: 527099

  • Add changelog.md to files (3338314)

Reinstall (a2abf51)

14.2.2 (2021-12-10)

Code Refactoring

  • ๐Ÿ’ก Change focus styles, remove whatinput (75fd31b) , closes #505205

  • rebuild and reinstall (f9fb687)

reinstall (885c74b)

  • fix changelogs manually (b1232b4)

reinstall (545a069)

reinstall (e149c2c)

13.12.3 (2021-11-09)

โš  BREAKING CHANGES

  • ๐Ÿงจ The scope for If Design System npm packages has now changed from @if-design-system to @ids-core. We have also renamed the repository from if-design-system to ids-core
  • ๐Ÿงจ Util is now renamed to Utils
  • ๐Ÿงจ We have now changed the navigation structure for the documentation site. Please update any saved links!
  • ๐Ÿงจ Navigation structure has now changed. Please see release notes!

Documentation Updates

  • โœ๏ธ Move position of the quick links (5cb0897)

  • โœ๏ธ Remove unneeded margins for shortcuts (36c7e8d)

  • โœ๏ธ Separate out CSS documentation (ffa6669) , closes #467386

  • โœ๏ธ Update links and change navigation structure (0bfd27d) , closes #490579

Code Refactoring

  • ๐Ÿ’ก Categorize components (9965266) , closes #490579

  • ๐Ÿ’ก Reduce spacing tokens, use correct size tokens (97aa461)

  • ๐Ÿ’ก Rename scope and repository (3ea5423)

  • ๐Ÿ’ก Use new navigation structure for documentation (415aee5) , closes #490579

  • another change in the structure (38a0d2e)

Miscellaneous chores

  • ๐Ÿค– Prune changelogs (2c660c2)

  • ๐Ÿค– Rename util to utils (f78721f)

bootstrap (6fc1ed8)

  • fix all old references to util (d57bf17)

  • prepare for merge (0184490)

reinstall (da80dba)

  • Rename scope and repo (257684e)

  • use correct version for utils (49e72d9)

13.11.0 (2021-10-19)

Features

  • ๐ŸŽธ Input field hot reload (eac76b7)

13.10.5 (2021-10-14)

Bug Fixes

  • ๐Ÿ› Slider focus (ab50f15) . โœ… Closes: 485717

13.7.0 (2021-09-22)

Documentation Updates

  • โœ๏ธ Update linking layout and naming (15c383b)

13.6.3 (2021-09-17)

Bug Fixes

13.6.0 (2021-09-08)

Documentation Updates

  • Use default shortcut listing for demo links (a746602)

  • ๐Ÿค– Use node v14 (4009973)

bootstrap (d23e139)

  • ๐Ÿค– Use correct order for diff (cc6a4fd)

12.14.1 (2021-08-12)

Miscellaneous chores

  • ๐Ÿค– Add ci task to package.json without tests (21222e0) , closes #457627

12.13.1 (2021-08-11)

Bug Fixes

  • ๐Ÿ› Whitelist docs dir for npm packaging (1a5cfd0) , closes #457621

12.12.1 (2021-08-10)

Bug Fixes

  • ๐Ÿ› Make sure components using fonts, have fonts bundled (d5bb642) , closes #354912

  • ๐Ÿค– Remove .gitignore, use npm package.json files instead, ignore zip files for npm pack (49f0269) , closes #412081 . This will whitelist files to be used in "npm pack"

  • ๐Ÿค– Reinstall (e660696)

  • ๐Ÿค– Update published date (61e7ccf)

12.6.0 (2021-05-27)

Bug Fixes

  • ๐Ÿ› Manually set firstPublished and lastModified (e83af7d)

  • ๐Ÿ› We don't need lastModified (e458a12)

12.0.0 (2021-05-05)

โš  BREAKING CHANGES

  • ๐Ÿงจ All of the mixins have now been renamed
  • ๐Ÿงจ Teasers are no more. It has been replaces with Lifestyle Navigational Card, Text Navigational Card. Studio Teasers is gone, use Studio Navigational Card instead, which is based on the old Studio Crosslinks
  • ๐Ÿงจ Notification is now renamed to Alert Banner
  • ๐Ÿงจ This extracts the Hero variation with no image into a separate, design updated component named Header
  • ๐Ÿงจ Footer is now renamed to Global Footer

Features

  • ๐ŸŽธ Rename and extract and update hero with no image to (384eb77) , closes #336508 . Header component

Bug Fixes

  • ๐Ÿ› Update references (c08f107)

Code Refactoring

  • ๐Ÿ’ก Remove Teasers, added Text and Lifestyle cards (1247479) , closes #336508

  • ๐Ÿ’ก Rename and consolidate mixins (67cf470) , closes #268081

  • ๐Ÿ’ก Rename Footer to Global Footer (7cb7239) , closes #336508

  • ๐Ÿ’ก Rename Notification to Alert Banner (8b4e48d) , closes #336508

Miscellaneous chores

  • ๐Ÿค– Convert typography tokens from theo to SD (e48f255)

  • ๐Ÿค– Convert util tokens from theo to style-dictionary (99fb4f5)

  • ๐Ÿค– Finalize breakpoint token conversion (f50ea0d)

  • ๐Ÿค– Reinstall (2c763ea)

  • ๐Ÿค– Reinstall (69e1a5b)

  • ๐Ÿค– Update all design token references (c640d15)

  • ๐Ÿค– Update references to util variables (b79ec36)

  • ๐Ÿค– Updating links (70f166e)

rebuild (7edb430)

  • ๐Ÿค– Rename Change Log to Changelog (d412e63)

  • ๐Ÿค– Remove all references to sketch (35fc554) , closes #339203

  • ๐Ÿค– Update package fields (200c0af)

10.0.0 (2021-02-15)

Documentation Updates

  • โœ๏ธ Fix broken component index (7bd939c)

  • reinstall packages (fcfacf4)

7.6.0 (2020-11-23)

Features

Bug Fixes

  • ๐Ÿ› Fix less files, refactor into mixins, add dep (0b4cf04)

Miscellaneous chores

  • ๐Ÿค– PR Adjustments (ed74eca)

  • ๐Ÿค– Update versions (e7781db)

Edit this section, Opens in new window
Contact us, Opens in new window