CSS ComponentThe latest version of this package is: 17.0.30-alpha.8, 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.30-alpha.8
Table of Contents
Edit this section, Opens in new windowUsage
Below is the markup for Slider element.
- Please note the
aria-valuenow
andvalue
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
andvalue
attributes without any value set and do not add the--val
css variable instyle
attribute.
<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>
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
);
});
};
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
);
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
14.9.0 (2022-03-03)
Miscellaneous chores
- ๐ค Bootstrap (6822f5b)
14.8.1 (2022-02-23)
Bug Fixes
reinstall (d425056)
bootstrap (9a713df)
merge (2b1c5f1)
reinstall (5221600)
reinstall (147df55)
reinstall (afce1f2)
reinstall (67f3140)
14.2.5 (2021-12-21)
Bug Fixes
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 fromif-design-system
toids-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
-
๐ก 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
bootstrap (6fc1ed8)
reinstall (da80dba)
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
bootstrap (d23e139)
- ๐ค Use correct order for diff (cc6a4fd)
12.14.1 (2021-08-12)
Miscellaneous chores
12.13.1 (2021-08-11)
Bug Fixes
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
7.6.0 (2020-11-23)
Features
Bug Fixes
- ๐ Fix less files, refactor into mixins, add dep (0b4cf04)