Форк Rambox
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.
 
 
 

79 lines
1.9 KiB

/** */
Ext.define('Ext.aria.form.field.ComboBox', {
override: 'Ext.form.field.ComboBox',
requires: [
'Ext.aria.form.field.Picker'
],
createPicker: function() {
var me = this,
picker;
picker = me.callParent(arguments);
if (picker) {
// update aria-activedescendant whenever the picker highlight changes
me.mon(picker, {
highlightitem: me.ariaUpdateActiveDescendant,
scope: me
});
}
return picker;
},
ariaGetRenderAttributes: function() {
var me = this,
attrs;
attrs = me.callParent();
attrs['aria-readonly'] = !!(!me.editable || me.readOnly);
attrs['aria-expanded'] = !!me.isExpanded;
attrs['aria-autocomplete'] = "list";
return attrs;
},
setReadOnly: function(readOnly) {
var me = this;
me.callParent(arguments);
me.ariaUpdate({ 'aria-readonly': me.readOnly });
},
setEditable: function(editable) {
var me = this;
me.callParent(arguments);
me.ariaUpdate({ 'aria-readonly': !me.editable });
},
onExpand: function() {
var me = this,
selected = me.picker.getSelectedNodes();
me.callParent(arguments);
me.ariaUpdate({
'aria-expanded': true,
'aria-activedescendant': (selected.length ? selected[0].id : undefined)
});
},
onCollapse: function() {
var me = this;
me.callParent(arguments);
me.ariaUpdate({
'aria-expanded': false,
'aria-activedescendant': undefined
});
},
ariaUpdateActiveDescendant: function(list) {
this.ariaUpdate({
'aria-activedescendant': list.highlightedItem ? list.highlightedItem.id : undefined
});
}
});