UNPKG

@evg-b/evg-ui

Version:

EVG-UI library inspired by Material Design.

120 lines (107 loc) 3.39 kB
import _extends from '@babel/runtime/helpers/extends'; import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import '@babel/runtime/helpers/slicedToArray'; import withStyles from '../styles/withStyles.js'; import '@babel/runtime/helpers/construct'; import '@babel/runtime/helpers/toConsumableArray'; import '@babel/runtime/helpers/defineProperty'; import '@babel/runtime/helpers/classCallCheck'; import '@babel/runtime/helpers/createClass'; import IconButton from '../IconButton/IconButton.js'; var styles = { base: { position: 'relative' }, input: { opacity: 0, cursor: 'inherit', position: 'absolute', top: 0, left: 0, margin: 0, padding: 0 }, checked: {} }; /** * Базовый компонент который реализует общую логику checked в Checkbox, Radio, Switch. */ var SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) { var classes = props.classes, className = props.className; props.children; var color = props.color; props.size; var type = props.type, Icon = props.icon, IconChecked = props.iconChecked, rippleOff = props.rippleOff, otherProps = _objectWithoutProperties(props, ["classes", "className", "children", "color", "size", "type", "icon", "iconChecked", "rippleOff"]); var iconChecked = IconChecked && /*#__PURE__*/React.cloneElement(IconChecked, { className: classNames(IconChecked.props.className, classes.iconChecked) }); return /*#__PURE__*/React.createElement(IconButton, { tabIndex: null, component: "label", className: classNames(classes.base, className), color: color, disabled: otherProps.disabled, rippleCenter: true, rippleOff: rippleOff }, /*#__PURE__*/React.createElement("input", _extends({ className: classNames(classes.input, classes.checked), tabIndex: 0, ref: ref, type: type, readOnly: true }, otherProps)), iconChecked, Icon); }); SwitchBase.propTypes = { /** * Объект содержит jss стили компонента. */ classes: PropTypes.object, /** * Чтобы указать CSS классы, используйте этот атрибут. */ className: PropTypes.string, /** * Это свойство не реализуется. */ children: PropTypes.any, /** * Название цвета в разных форматах. Подробнее <a>link</a> */ color: PropTypes.string, /** * Размер компонента. */ size: PropTypes.oneOf(['small', 'medium', 'large', 'extra']), /** * Тип input. */ type: PropTypes.oneOf(['checkbox', 'radio']), /** * Иконка которая отображается всегда. */ icon: PropTypes.node, /** * Иконка которая отображается при Checked=true. */ iconChecked: PropTypes.node, /** * Если true, Ripple эффект отключен. */ rippleOff: PropTypes.bool }; SwitchBase.defaultProps = { color: 'default', size: 'medium', rippleOff: false }; SwitchBase.displayName = 'SwitchBaseEVG'; var SwitchBase$1 = withStyles(styles)(SwitchBase); export default SwitchBase$1;