import React from 'react'; import Toggle from 'react-toggle'; import cx from 'classnames'; import { defineMessages, injectIntl } from 'react-intl'; import { styles } from './styles'; const intlMessages = defineMessages({ on: { id: 'app.switch.onLabel', description: 'label for toggle switch on state', }, off: { id: 'app.switch.offLabel', description: 'label for toggle switch off state', }, }); const defaultProps = { showToggleLabel: true, invertColors: false, }; class Switch extends Toggle { render() { const { intl, className, icons: _icons, ariaLabelledBy, ariaDescribedBy, ariaLabel, ariaDesc, showToggleLabel, invertColors, disabled, ...inputProps } = this.props; const { checked, hasFocus, } = this.state; const classes = cx('react-toggle', { 'react-toggle--checked': checked, 'react-toggle--focus': hasFocus, 'react-toggle--disabled': disabled, }, className); return (
{ this.input = ref; }} onFocus={this.handleFocus} onBlur={this.handleBlur} className="react-toggle-screenreader-only" type="checkbox" tabIndex="0" disabled={disabled} aria-label={ariaLabel} aria-describedby={ariaDescribedBy} />
); } } Switch.defaultProps = defaultProps; export default injectIntl(Switch);