@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
101 lines (86 loc) • 2.65 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define([
'sap/m/semantic/SemanticControl',
'sap/m/Button',
'sap/m/semantic/SemanticOverflowToolbarButton',
"sap/ui/thirdparty/jquery"
], function(SemanticControl, Button, SemanticOverflowToolbarButton, jQuery) {
"use strict";
/**
* Constructor for a new SemanticButton.
* @param {string} [sId] ID for the new control, generated automatically if no ID is given
* @param {object} [mSettings] Initial settings for the new control
*
* @class
* A semantic button is either a {@link sap.m.Button} or {@link sap.m.semantic.SemanticOverflowToolbarButton} ,
* eligible for aggregation content of a {@link sap.m.semantic.SemanticPage}.
*
* @extends sap.m.semantic.SemanticControl
* @abstract
*
* @author SAP SE
* @version 1.117.4
*
* @constructor
* @public
* @since 1.30.0
* @alias sap.m.semantic.SemanticButton
*/
var SemanticButton = SemanticControl.extend("sap.m.semantic.SemanticButton", /** @lends sap.m.semantic.SemanticButton.prototype */ {
metadata : {
library : "sap.m",
"abstract" : true,
properties : {
/**
* See {@link sap.m.Button#enabled}
*/
enabled : {
type : "boolean",
group : "Behavior",
defaultValue : true
}
},
events : {
/**
* See {@link sap.m.Button#event:press}
*/
press : {}
}
}
});
SemanticButton.prototype._getControl = function() {
var oControl,
oClass,
oNewInstance,
oConfig = this._getConfiguration();
if (!oConfig) {
return null;
}
oControl = this.getAggregation('_control');
if (!oControl) {
oClass = this._getClass(oConfig);
oNewInstance = this._createInstance(oClass);
oNewInstance.applySettings(oConfig.getSettings());
if (typeof oConfig.getEventDelegates === "function") {
oNewInstance.addEventDelegate(oConfig.getEventDelegates(oNewInstance));
}
this.setAggregation('_control', oNewInstance, true); // don't invalidate - this is only called before/during rendering, where invalidation would lead to double rendering, or when invalidation anyway happens
oControl = this.getAggregation('_control');
}
return oControl;
};
SemanticButton.prototype._getClass = function(oConfig) {
return oConfig && oConfig.constraints === "IconOnly" ? SemanticOverflowToolbarButton : Button;
};
SemanticButton.prototype._createInstance = function(oClass) {
return new oClass({
id: this.getId() + "-button",
press: jQuery.proxy(this.firePress, this)
});
};
return SemanticButton;
});