in source/console/app/lib/aws-ui/AWS-UI-Components/components.js [2714:2797]
render: function (m, h) {
var component = this;
var isLink = Boolean(component.href);
var element = isLink ? 'a' : 'button';
var standalone = component.variant === 'standalone-icon';
var icon = component.icon;
var iconAlign = standalone ? 'left' : component.iconAlign;
var lightImage = component.variant === 'primary' || component.variant === 'danger';
function spinnerClass() {
var cb = new h.ClassBuilder(component);
cb.addClass('awsui-spinner')
.addClass('awsui-spinner-disabled', !lightImage)
.addClass('awsui-spinner-light', lightImage)
.addClass('awsui-button-icon')
.addClass('awsui-button-icon-left');
return cb.toClassName();
}
function iconClass() {
var disabled = !lightImage && component.__isDisabled();
var hasHover = standalone && !disabled;
var isLinkVariant = component.variant === 'link' && !disabled;
var cb = new h.ClassBuilder(component);
cb.addClass(icon)
.addClass('awsui-icon')
.addClass('awsui-icon-disabled', disabled)
.addClass('awsui-icon-has-hover', hasHover)
.addClass('awsui-icon-light', lightImage)
.addClass('awsui-icon-link', isLinkVariant)
.addClass('awsui-button-icon')
.addClass("awsui-button-icon-" + iconAlign);
return cb.toClassName();
}
function buttonClass() {
var cb = new h.ClassBuilder(component);
cb.addClass('awsui-button')
.addPropertyValueClass('size')
.addPropertyValueClass('variant')
.addClass('awsui-hover-child-icons')
.addClass('awsui-button-no-text', !component.text)
.addClass('awsui-button-disabled', component.__isDisabled())
.addClass('awsui-button-as-link', standalone);
return cb.toClassName();
}
function clickHandler(event) {
if (isLink && component.__isDisabled()) {
event.preventDefault();
}
else {
component.click();
}
}
;
function leftIcon() {
if (component.loading) {
return m('span', { className: spinnerClass() });
}
else if (icon && iconAlign === 'left') {
return m('span', { className: iconClass() });
}
}
function rightIcon() {
if (icon && iconAlign === 'right') {
return m('span', { className: iconClass() });
}
}
var buttonContent = [
leftIcon(),
component.text,
rightIcon()
];
var buttonType = component.formAction === 'none' ? 'button' : 'submit';
var buttonElement = m(element, h.copyDefined({
'className': buttonClass(),
'aria-label': component.label,
'onclick': clickHandler,
'href': component.href,
'role': isLink ? 'button' : undefined,
'type': !isLink ? buttonType : undefined,
'target': component.href && component.target ? component.target : undefined,
'disabled': (component.__isDisabled() && !isLink) ? true : undefined,
'aria-disabled': (component.__isDisabled() && isLink) ? true : undefined
}), buttonContent);
return buttonElement;
}