Compare commits

...

3 Commits

Author SHA1 Message Date
Carson
7579fb2676 Attempt at making double slider accessible 2020-08-21 15:38:13 -05:00
Carson
3068554350 Move Aria labels to .irs-line 2020-08-21 14:35:05 -05:00
Carson
2691bcdd9d Make sliderInput() accessible for keyboard and screen readers, closes #2845 2020-08-20 15:55:46 -05:00
8 changed files with 75 additions and 8 deletions

View File

@@ -816,7 +816,7 @@
*/
pointerDown: function (target, e) {
e.preventDefault();
e.stopPropagation();
if (e.stopPropagation) e.stopPropagation();
var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
if (e.button === 2) {
return;
@@ -860,7 +860,7 @@
*/
pointerClick: function (target, e) {
e.preventDefault();
e.stopPropagation();
if (e.stopPropagation) e.stopPropagation();
var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
if (e.button === 2) {
return;

File diff suppressed because one or more lines are too long

View File

@@ -4569,6 +4569,42 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
var timeFormat = $el.data('time-format');
var timezone = $el.data('timezone');
opts.prettify = getTypePrettifyer(dataType, timeFormat, timezone);
function setAriaLabels(el, label, value, min, max) {
if (!el.length) return;
el.attr({
"role": "slider",
"tabindex": "0",
"aria-labelledby": label,
"aria-valuenow": value,
"aria-valuemin": min,
"aria-valuemax": max
});
}
; // Ensure accessibility labels are updated when the slider updates (programmatically or interactively)
function updateAriaLabels(data) {
var isSingleValue = !data.input.data("to");
var line = data.slider.find(".irs-line");
var label = el.id + "-label";
if (isSingleValue) {
setAriaLabels(line, label, data.from, data.min, data.max);
return;
}
line.attr("tabindex", "-1");
var from = data.slider.find(".irs-from");
setAriaLabels(from, label + "-upper", data.from, data.min, data.max);
var to = data.slider.find(".irs-to");
setAriaLabels(to, label + "-lower", data.to, data.min, data.max);
}
;
opts.onStart = updateAriaLabels;
opts.onChange = updateAriaLabels;
opts.onUpdate = updateAriaLabels;
$el.ionRangeSlider(opts);
},
_getLabelNode: function _getLabelNode(el) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -171,6 +171,37 @@ $.extend(sliderInputBinding, textInputBinding, {
opts.prettify = getTypePrettifyer(dataType, timeFormat, timezone);
function setAriaLabels(el, label, value, min, max) {
if (!el.length) return;
el.attr({
"role": "slider", "tabindex": "0",
"aria-labelledby": label,
"aria-valuenow": value,
"aria-valuemin": min,
"aria-valuemax": max
});
};
// Ensure accessibility labels are updated when the slider updates (programmatically or interactively)
function updateAriaLabels(data) {
var isSingleValue = !data.input.data("to");
var line = data.slider.find(".irs-line");
var label = el.id + "-label";
if (isSingleValue) {
setAriaLabels(line, label, data.from, data.min, data.max);
return;
}
line.attr("tabindex", "-1");
var from = data.slider.find(".irs-from");
setAriaLabels(from, label + "-lower", data.from, data.min, data.max);
var to = data.slider.find(".irs-to");
setAriaLabels(to, label + "-upper", data.to, data.min, data.max);
};
opts.onStart = updateAriaLabels;
opts.onChange = updateAriaLabels;
opts.onUpdate = updateAriaLabels;
$el.ionRangeSlider(opts);
},
_getLabelNode: function(el) {

View File

@@ -6,7 +6,7 @@ index 2fe2c8d..89d204e 100644
*/
pointerDown: function (target, e) {
e.preventDefault();
+ e.stopPropagation();
+ if (e.stopPropagation) e.stopPropagation();
var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
if (e.button === 2) {
return;
@@ -14,7 +14,7 @@ index 2fe2c8d..89d204e 100644
*/
pointerClick: function (target, e) {
e.preventDefault();
+ e.stopPropagation();
+ if (e.stopPropagation) e.stopPropagation();
var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
if (e.button === 2) {
return;