/*!
* 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.
*/
// Provides default renderer for control sap.ui.commons.TextArea
sap.ui.define(['jquery.sap.global', './TextFieldRenderer', 'sap/ui/core/Renderer'],
function(jQuery, TextFieldRenderer, Renderer) {
"use strict";
/**
* TextArea renderer.
* @namespace
*/
var TextAreaRenderer = Renderer.extend(TextFieldRenderer);
/**
* Use TextField to render TextArea but change tag to TEXTAREA
* @protected
*/
TextAreaRenderer.getInnerTagName = function(){
return ('textarea');
}
/**
* Add attributes, styles and so on to TextField tag
*/;
TextAreaRenderer.renderInnerAttributes = function(oRenderManager, oTextArea){
var rm = oRenderManager;
rm.addClass("sapUiTxtA");
rm.addStyle('overflow', 'auto');
/*eslint-disable no-empty */
//TODO Rethink if empty block is needed
if (oTextArea.getWidth() && oTextArea.getWidth() != '') {
// done in TextField renderer
} else {
if (oTextArea.getCols() && oTextArea.getCols() != '') {
rm.writeAttribute('cols', oTextArea.getCols());
}
}
/*eslint-enable no-empty */
if (oTextArea.getHeight() && oTextArea.getHeight() != '') {
rm.addStyle('height',oTextArea.getHeight());
//if a height is set don't use margin-top and margin-button because this would it make higher than wanted
//this would lead to scrollbars or cut controls in layouts
rm.addStyle('margin-top','0');
rm.addStyle('margin-bottom','0');
} else {
if (oTextArea.getRows() && oTextArea.getRows() != '') {
rm.writeAttribute('rows', oTextArea.getRows());
}
}
// Changes of the wrap property require re-rendering for browser reasons.
// Therefore, no dynamic function to change wrapping necessary.
switch (oTextArea.getWrapping()) {
case (sap.ui.core.Wrapping.Soft) :
rm.writeAttribute('wrap', 'soft');
break;
case (sap.ui.core.Wrapping.Hard) :
rm.writeAttribute('wrap', 'hard');
break;
case (sap.ui.core.Wrapping.Off) :
rm.writeAttribute('wrap', 'off');
break;
}
}
/**
* Overwrite renderARIAInfo function of TextField
*/;
TextAreaRenderer.renderARIAInfo = function(rm, oTextArea) {
rm.writeAccessibilityState(oTextArea, {
role: oTextArea.getAccessibleRole().toLowerCase() || 'textbox',
labelledby: oTextArea.getLabeledBy() ? (oTextArea.getLabeledBy() + " " + oTextArea.getAriaDescribedBy().join(" ")) : undefined,
required: oTextArea.getRequired(),
readonly: !oTextArea.getEditable(),
multiline: true,
autocomplete: "none",
invalid: oTextArea.getValueState() == sap.ui.core.ValueState.Error});
};
/**
* Renders additional HTML for the TextArea to the TextField
*
* @param {sap.ui.fw.RenderManager} oRenderManager The RenderManager that can be used for writing to the render output buffer.
* @param {sap.ui.fw.Control} oControl An object representation of the control that should be rendered.
*/
TextAreaRenderer.renderInnerContent = function(oRenderManager, oTextArea){
// Convenience variable
var rm = oRenderManager;
var sValue = oTextArea.getValue();
var sPlaceholder = oTextArea.getPlaceholder();
if (sValue.length > oTextArea.getMaxLength() && oTextArea.getMaxLength() > 0) {
sValue = sValue.substring(0,oTextArea.getMaxLength());
}
if (!sap.ui.Device.support.input.placeholder && sPlaceholder && !sValue) {
rm.writeEscaped(sPlaceholder);
} else {
rm.writeEscaped(sValue);
}
};
return TextAreaRenderer;
}, /* bExport= */ true);