UNPKG

yqcloud-ui

Version:

An enterprise-class UI design language and React-based implementation

164 lines (122 loc) 5.27 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _addEventListener = require('../util/Dom/addEventListener'); var _addEventListener2 = _interopRequireDefault(_addEventListener); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var Handle = function (_React$Component) { (0, _inherits3['default'])(Handle, _React$Component); function Handle() { var _temp, _this, _ret; (0, _classCallCheck3['default'])(this, Handle); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { clickFocused: false }, _this.handleMouseUp = function () { if (document.activeElement === _this.handle) { _this.setClickFocus(true); } }, _this.handleBlur = function () { _this.setClickFocus(false); }, _this.handleKeyDown = function () { _this.setClickFocus(false); }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret); } Handle.prototype.componentDidMount = function componentDidMount() { // mouseup won't trigger if mouse moved out of handle, // so we listen on document here. this.onMouseUpListener = (0, _addEventListener2['default'])(document, 'mouseup', this.handleMouseUp); }; Handle.prototype.componentWillUnmount = function componentWillUnmount() { if (this.onMouseUpListener) { this.onMouseUpListener.remove(); } }; Handle.prototype.setClickFocus = function setClickFocus(focused) { this.setState({ clickFocused: focused }); }; Handle.prototype.clickFocus = function clickFocus() { this.setClickFocus(true); this.focus(); }; Handle.prototype.focus = function focus() { this.handle.focus(); }; Handle.prototype.blur = function blur() { this.handle.blur(); }; Handle.prototype.render = function render() { var _this2 = this; var _props = this.props, prefixCls = _props.prefixCls, vertical = _props.vertical, offset = _props.offset, style = _props.style, disabled = _props.disabled, min = _props.min, max = _props.max, value = _props.value, tabIndex = _props.tabIndex, restProps = (0, _objectWithoutProperties3['default'])(_props, ['prefixCls', 'vertical', 'offset', 'style', 'disabled', 'min', 'max', 'value', 'tabIndex']); var className = (0, _classnames2['default'])(this.props.className, (0, _defineProperty3['default'])({}, prefixCls + '-handle-click-focused', this.state.clickFocused)); var postionStyle = vertical ? { bottom: offset + '%' } : { left: offset + '%' }; var elStyle = (0, _extends3['default'])({}, style, postionStyle); var ariaProps = {}; if (value !== undefined) { ariaProps = (0, _extends3['default'])({}, ariaProps, { 'aria-valuemin': min, 'aria-valuemax': max, 'aria-valuenow': value, 'aria-disabled': !!disabled }); } return _react2['default'].createElement('div', (0, _extends3['default'])({ ref: function ref(node) { return _this2.handle = node; }, role: 'slider', tabIndex: disabled ? null : tabIndex || 0 }, ariaProps, restProps, { className: className, style: elStyle, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown })); }; return Handle; }(_react2['default'].Component); exports['default'] = Handle; Handle.propTypes = { prefixCls: _propTypes2['default'].string, className: _propTypes2['default'].string, vertical: _propTypes2['default'].bool, offset: _propTypes2['default'].number, style: _propTypes2['default'].object, disabled: _propTypes2['default'].bool, min: _propTypes2['default'].number, max: _propTypes2['default'].number, value: _propTypes2['default'].number, tabIndex: _propTypes2['default'].number }; module.exports = exports['default'];