diff --git a/src/elements/Button/Button.js b/src/elements/Button/Button.js index da8fa0792d..8808e03c1c 100644 --- a/src/elements/Button/Button.js +++ b/src/elements/Button/Button.js @@ -8,7 +8,6 @@ import { createShorthandFactory, getElementType, getUnhandledProps, - makeDebugger, META, SUI, useKeyOnly, @@ -21,8 +20,6 @@ import ButtonContent from './ButtonContent' import ButtonGroup from './ButtonGroup' import ButtonOr from './ButtonOr' -const debug = makeDebugger('button') - /** * A Button indicates a possible user action. * @see Form @@ -178,14 +175,14 @@ class Button extends Component { focus = () => _.invoke(this.ref, 'focus') handleClick = (e) => { - const { disabled, onClick } = this.props + const { disabled } = this.props if (disabled) { e.preventDefault() return } - if (onClick) onClick(e, this.props) + _.invoke(this.props, 'onClick', e, this.props) } handleRef = c => (this.ref = c) @@ -256,32 +253,18 @@ class Button extends Component { const ElementType = getElementType(Button, this.props, this.computeElementType) const tabIndex = this.computeTabIndex(ElementType) - if (!_.isNil(children)) { - const classes = cx('ui', baseClasses, wrapperClasses, labeledClasses, 'button', className) - debug('render children:', { classes }) - - return ( - - {children} - - ) - } - - const labelElement = Label.create(label, { defaultProps: { - basic: true, - pointing: labelPosition === 'left' ? 'right' : 'left', - } }) - - if (labelElement) { - const classes = cx('ui', baseClasses, 'button', className) + if (!_.isNil(label)) { + const buttonClasses = cx('ui', baseClasses, 'button', className) const containerClasses = cx('ui', labeledClasses, 'button', className, wrapperClasses) - - debug('render label:', { classes, containerClasses }, this.props) + const labelElement = Label.create(label, { defaultProps: { + basic: true, + pointing: labelPosition === 'left' ? 'right' : 'left', + } }) return ( {labelPosition === 'left' && labelElement} - {(labelPosition === 'right' || !labelPosition) && labelElement} @@ -289,23 +272,21 @@ class Button extends Component { ) } - if (!_.isNil(icon) && _.isNil(label)) { - const classes = cx('ui', labeledClasses, baseClasses, 'button', className, wrapperClasses) - debug('render icon && !label:', { classes }) - - return ( - - {Icon.create(icon)} {content} - - ) - } - - const classes = cx('ui', labeledClasses, baseClasses, 'button', className, wrapperClasses) - debug('render default:', { classes }) + const classes = cx('ui', baseClasses, wrapperClasses, labeledClasses, 'button', className) + const hasChildren = !_.isNil(children) return ( - - {content} + + {hasChildren && children} + {!hasChildren && Icon.create(icon)} + {!hasChildren && content} ) } diff --git a/test/specs/elements/Button/Button-test.js b/test/specs/elements/Button/Button-test.js index 201024ca00..f136740780 100644 --- a/test/specs/elements/Button/Button-test.js +++ b/test/specs/elements/Button/Button-test.js @@ -71,6 +71,35 @@ describe('Button', () => { }) }) + describe('disabled', () => { + it('is not set by default', () => { + shallow(