linuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacos
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.7 KiB
116 lines
2.7 KiB
// There is no clear way to support multi-thumb sliders |
|
// in accessible applications, so we default to support |
|
// only single-slider ones |
|
|
|
|
|
/** */ |
|
Ext.define('Ext.aria.slider.Multi', { |
|
override: 'Ext.slider.Multi', |
|
|
|
/** |
|
* @cfg {Number} [tipHideTimeout=1000] Timeout in ms after which |
|
* the slider tip will be hidden. |
|
*/ |
|
tipHideTimeout: 1000, |
|
|
|
animate: false, |
|
tabIndex: 0, |
|
|
|
ariaGetRenderAttributes: function() { |
|
var me = this, |
|
attrs; |
|
|
|
attrs = me.callParent(); |
|
|
|
attrs['aria-minvalue'] = me.minValue; |
|
attrs['aria-maxvalue'] = me.maxValue; |
|
attrs['aria-valuenow'] = me.getValue(0); |
|
|
|
return attrs; |
|
}, |
|
|
|
getSubTplData: function() { |
|
var me = this, |
|
fmt = Ext.util.Format.attributes, |
|
data, attrs; |
|
|
|
data = me.callParent(arguments); |
|
attrs = me.ariaGetRenderAttributes(); |
|
|
|
// Role is rendered separately |
|
delete attrs.role; |
|
|
|
data.inputAttrTpl = fmt(attrs); |
|
|
|
return data; |
|
}, |
|
|
|
onKeyDown: function(e) { |
|
var me = this, |
|
key, value; |
|
|
|
if (me.disabled || me.thumbs.length !== 1) { |
|
e.preventDefault(); |
|
|
|
return; |
|
} |
|
|
|
key = e.getKey(); |
|
|
|
switch (key) { |
|
case e.HOME: |
|
e.stopEvent(); |
|
me.setValue(0, me.minValue, undefined, true); |
|
return; |
|
|
|
case e.END: |
|
e.stopEvent(); |
|
me.setValue(0, me.maxValue, undefined, true); |
|
return; |
|
|
|
case e.PAGE_UP: |
|
e.stopEvent(); |
|
value = me.getValue(0) - me.keyIncrement * 10; |
|
me.setValue(0, value, undefined, true); |
|
return; |
|
|
|
case e.PAGE_DOWN: |
|
e.stopEvent(); |
|
value = me.getValue(0) + me.keyIncrement * 10; |
|
me.setValue(0, value, undefined, true); |
|
return; |
|
} |
|
|
|
me.callParent(arguments); |
|
}, |
|
|
|
setMinValue: function(value) { |
|
var me = this; |
|
|
|
me.callParent(arguments); |
|
me.ariaUpdate({ |
|
'aria-minvalue': value |
|
}); |
|
}, |
|
|
|
setMaxValue: function(value) { |
|
var me = this; |
|
|
|
me.callParent(arguments); |
|
me.ariaUpdate({ |
|
'aria-maxvalue': value |
|
}); |
|
}, |
|
|
|
setValue: function(index, value) { |
|
var me = this; |
|
|
|
me.callParent(arguments); |
|
|
|
if (index === 0) { |
|
me.ariaUpdate({ |
|
'aria-valuenow': value |
|
}); |
|
} |
|
} |
|
});
|
|
|