render: function()

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;
    }