/** */ Ext.define('Ext.aria.form.field.Base', { override: 'Ext.form.field.Base', requires: [ 'Ext.util.Format', 'Ext.aria.Component' ], /** * @cfg {String} formatText The text to use for the field format announcement * placed in the `title` attribute of the input field. This format will not * be used if the title attribute is configured explicitly. */ ariaRenderAttributesToElement: false, msgTarget: 'side', // use this scheme because it is the only one working for now 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 = [data.inputAttrTpl, fmt(attrs)].join(' '); return data; }, ariaGetEl: function() { return this.inputEl; }, ariaGetRenderAttributes: function() { var me = this, readOnly = me.readOnly, formatText = me.formatText, attrs; attrs = me.callParent(); if (readOnly != null) { attrs['aria-readonly'] = !!readOnly; } if (formatText && !attrs.title) { attrs.title = Ext.String.format(formatText, me.format); } return attrs; }, ariaGetAfterRenderAttributes: function() { var me = this, labelEl = me.labelEl, attrs; attrs = me.callParent(); if (labelEl) { attrs['aria-labelledby'] = labelEl.id; } return attrs; }, setReadOnly: function(readOnly) { var me = this; me.callParent(arguments); me.ariaUpdate({ 'aria-readonly': readOnly }); }, markInvalid: function(f, isValid) { var me = this; me.callParent(arguments); me.ariaUpdate({ 'aria-invalid': true }); }, clearInvalid: function() { var me = this; me.callParent(arguments); me.ariaUpdate({ 'aria-invalid': false }); } });