'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 _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _vueTypes = require('../../_util/vue-types'); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _BaseMixin = require('../../_util/BaseMixin'); var _BaseMixin2 = _interopRequireDefault(_BaseMixin); var _propsUtil = require('../../_util/props-util'); var _addEventListener = require('../../_util/Dom/addEventListener'); var _addEventListener2 = _interopRequireDefault(_addEventListener); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } exports['default'] = { name: 'Handle', mixins: [_BaseMixin2['default']], props: { prefixCls: _vueTypes2['default'].string, vertical: _vueTypes2['default'].bool, offset: _vueTypes2['default'].number, disabled: _vueTypes2['default'].bool, min: _vueTypes2['default'].number, max: _vueTypes2['default'].number, value: _vueTypes2['default'].number, tabIndex: _vueTypes2['default'].number, className: _vueTypes2['default'].string // handleFocus: PropTypes.func.def(noop), // handleBlur: PropTypes.func.def(noop), }, data: function data() { return { clickFocused: false }; }, mounted: function mounted() { // 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); }, beforeDestroy: function beforeDestroy() { if (this.onMouseUpListener) { this.onMouseUpListener.remove(); } }, methods: { setClickFocus: function setClickFocus(focused) { this.setState({ clickFocused: focused }); }, handleMouseUp: function handleMouseUp() { if (document.activeElement === this.$refs.handle) { this.setClickFocus(true); } }, handleBlur: function handleBlur(e) { this.setClickFocus(false); this.__emit('blur', e); }, handleKeyDown: function handleKeyDown() { this.setClickFocus(false); }, clickFocus: function clickFocus() { this.setClickFocus(true); this.focus(); }, focus: function focus() { this.$refs.handle.focus(); }, blur: function blur() { this.$refs.handle.blur(); }, // when click can not focus in vue, use mousedown trigger focus handleMousedown: function handleMousedown(e) { this.focus(); this.__emit('mousedown', e); } }, render: function render() { var h = arguments[0]; var _getOptionProps = (0, _propsUtil.getOptionProps)(this), prefixCls = _getOptionProps.prefixCls, vertical = _getOptionProps.vertical, offset = _getOptionProps.offset, disabled = _getOptionProps.disabled, min = _getOptionProps.min, max = _getOptionProps.max, value = _getOptionProps.value, tabIndex = _getOptionProps.tabIndex; var className = (0, _classnames2['default'])(this.$props.className, (0, _defineProperty3['default'])({}, prefixCls + '-handle-click-focused', this.clickFocused)); var postionStyle = vertical ? { bottom: offset + '%' } : { left: offset + '%' }; var ariaProps = { 'aria-valuemin': min, 'aria-valuemax': max, 'aria-valuenow': value, 'aria-disabled': !!disabled }; var handleProps = { attrs: (0, _extends3['default'])({ role: 'slider', tabIndex: disabled ? null : tabIndex || 0 }, ariaProps), 'class': className, on: (0, _extends3['default'])({}, this.$listeners, { blur: this.handleBlur, keydown: this.handleKeyDown, mousedown: this.handleMousedown }), ref: 'handle', style: postionStyle }; return h('div', handleProps); } };