/*!
* UI development toolkit for HTML5 (OpenUI5)
* (c) Copyright 2009-2018 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define(['jquery.sap.global', './TextFieldRenderer'],
function(jQuery, TextFieldRenderer) {
"use strict";
/**
* PasswordFieldRenderer.
* @namespace
*/
var PasswordFieldRenderer = sap.ui.core.Renderer.extend(TextFieldRenderer);
/**
* Renders the HTML for the given control, using the provided {@link sap.ui.fw.RenderManager}.
*
* @param {sap.ui.fw.RenderManager} oRenderManager the RenderManager that can be used for writing to the Render-Output-Buffer
* @param {sap.ui.fw.Control} oPasswordField an object representation of the control that should be rendered
*/
PasswordFieldRenderer.renderInnerAttributes = function(rm, oPasswordField) {
if (sap.ui.Device.support.input.placeholder || oPasswordField.getValue() || !oPasswordField.getPlaceholder()) {
// if browser not supports placeholder on input tag, set the password type only if placeholder is not displayed
rm.writeAttribute('type', 'password');
}
};
PasswordFieldRenderer.renderTextFieldEnabled = function(rm, oPasswordField) {
if (!oPasswordField.getEnabled() && !oPasswordField.getEditable()) {
// "disabled" may not be rendered because the Jaws screenreader then reads the password
// use "readonly" instead
// but write it only if it has not yet been written by the TextFieldRenderer
rm.writeAttribute('readonly', 'readonly');
rm.writeAttribute('tabindex', '-1'); // apart from that, act as if disabled, e.g. no tab-stop
} else {
rm.writeAttribute('tabindex', '0'); // editable and readonly have a tab-stop
}
};
// this method uses "readonly" instead of "disabled" because with "disabled" the Jaws screenreader reads the password
PasswordFieldRenderer.setEnabled = function(oPasswordField, bEnabled) {
var oTfRef = oPasswordField.getDomRef();
if (bEnabled) {
if (oPasswordField.getEditable()) {
jQuery(oTfRef).removeClass('sapUiTfDsbl').addClass('sapUiTfStd');
jQuery(oTfRef).removeAttr('readonly').attr('tabindex', '0');
} else {
jQuery(oTfRef).removeClass('sapUiTfDsbl').addClass('sapUiTfRo');
jQuery(oTfRef).attr('tabindex', '0');
}
} else {
if (oPasswordField.getEditable()) {
jQuery(oTfRef).removeClass('sapUiTfStd').addClass('sapUiTfDsbl');
jQuery(oTfRef).attr('readonly', 'readonly').attr('tabindex', '-1');
} else {
jQuery(oTfRef).removeClass('sapUiTfRo').addClass('sapUiTfDsbl');
jQuery(oTfRef).attr( 'tabindex', '-1');
}
}
};
return PasswordFieldRenderer;
}, /* bExport= */ true);