NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/ant-design-vue/lib/vc-rate/src/Rate.js
2023-09-14 14:47:11 +08:00

261 lines
6.6 KiB
Java

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _vueTypes = require('../../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _KeyCode = require('../../_util/KeyCode');
var _KeyCode2 = _interopRequireDefault(_KeyCode);
var _propsUtil = require('../../_util/props-util');
var _BaseMixin = require('../../_util/BaseMixin');
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _util = require('./util');
var _Star = require('./Star');
var _Star2 = _interopRequireDefault(_Star);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var rateProps = {
disabled: _vueTypes2['default'].bool,
value: _vueTypes2['default'].number,
defaultValue: _vueTypes2['default'].number,
count: _vueTypes2['default'].number,
allowHalf: _vueTypes2['default'].bool,
allowClear: _vueTypes2['default'].bool,
prefixCls: _vueTypes2['default'].string,
character: _vueTypes2['default'].any,
characterRender: _vueTypes2['default'].func,
tabIndex: _vueTypes2['default'].number,
autoFocus: _vueTypes2['default'].bool
};
function noop() {}
exports['default'] = {
name: 'Rate',
mixins: [_BaseMixin2['default']],
model: {
prop: 'value',
event: 'change'
},
props: (0, _propsUtil.initDefaultProps)(rateProps, {
defaultValue: 0,
count: 5,
allowHalf: false,
allowClear: true,
prefixCls: 'rc-rate',
tabIndex: 0,
character: '★'
}),
data: function data() {
var value = this.value;
if (!(0, _propsUtil.hasProp)(this, 'value')) {
value = this.defaultValue;
}
return {
sValue: value,
focused: false,
cleanedValue: null,
hoverValue: undefined
};
},
watch: {
value: function value(val) {
this.setState({
sValue: val
});
}
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
if (_this.autoFocus && !_this.disabled) {
_this.focus();
}
});
},
methods: {
onHover: function onHover(event, index) {
var hoverValue = this.getStarValue(index, event.pageX);
var cleanedValue = this.cleanedValue;
if (hoverValue !== cleanedValue) {
this.setState({
hoverValue: hoverValue,
cleanedValue: null
});
}
this.$emit('hoverChange', hoverValue);
},
onMouseLeave: function onMouseLeave() {
this.setState({
hoverValue: undefined,
cleanedValue: null
});
this.$emit('hoverChange', undefined);
},
onClick: function onClick(event, index) {
var allowClear = this.allowClear,
value = this.sValue;
var newValue = this.getStarValue(index, event.pageX);
var isReset = false;
if (allowClear) {
isReset = newValue === value;
}
this.onMouseLeave(true);
this.changeValue(isReset ? 0 : newValue);
this.setState({
cleanedValue: isReset ? newValue : null
});
},
onFocus: function onFocus() {
this.setState({
focused: true
});
this.$emit('focus');
},
onBlur: function onBlur() {
this.setState({
focused: false
});
this.$emit('blur');
},
onKeyDown: function onKeyDown(event) {
var keyCode = event.keyCode;
var count = this.count,
allowHalf = this.allowHalf;
var sValue = this.sValue;
if (keyCode === _KeyCode2['default'].RIGHT && sValue < count) {
if (allowHalf) {
sValue += 0.5;
} else {
sValue += 1;
}
this.changeValue(sValue);
event.preventDefault();
} else if (keyCode === _KeyCode2['default'].LEFT && sValue > 0) {
if (allowHalf) {
sValue -= 0.5;
} else {
sValue -= 1;
}
this.changeValue(sValue);
event.preventDefault();
}
this.$emit('keydown', event);
},
getStarDOM: function getStarDOM(index) {
return this.$refs['stars' + index].$el;
},
getStarValue: function getStarValue(index, x) {
var value = index + 1;
if (this.allowHalf) {
var starEle = this.getStarDOM(index);
var leftDis = (0, _util.getOffsetLeft)(starEle);
var width = starEle.clientWidth;
if (x - leftDis < width / 2) {
value -= 0.5;
}
}
return value;
},
focus: function focus() {
if (!this.disabled) {
this.$refs.rateRef.focus();
}
},
blur: function blur() {
if (!this.disabled) {
this.$refs.rateRef.blur();
}
},
changeValue: function changeValue(value) {
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({
sValue: value
});
}
this.$emit('change', value);
}
},
render: function render() {
var h = arguments[0];
var _getOptionProps = (0, _propsUtil.getOptionProps)(this),
count = _getOptionProps.count,
allowHalf = _getOptionProps.allowHalf,
prefixCls = _getOptionProps.prefixCls,
disabled = _getOptionProps.disabled,
tabIndex = _getOptionProps.tabIndex;
var sValue = this.sValue,
hoverValue = this.hoverValue,
focused = this.focused;
var stars = [];
var disabledClass = disabled ? prefixCls + '-disabled' : '';
var character = (0, _propsUtil.getComponentFromProp)(this, 'character');
var characterRender = this.characterRender || this.$scopedSlots.characterRender;
for (var index = 0; index < count; index++) {
var starProps = {
props: {
index: index,
count: count,
disabled: disabled,
prefixCls: prefixCls + '-star',
allowHalf: allowHalf,
value: hoverValue === undefined ? sValue : hoverValue,
character: character,
characterRender: characterRender,
focused: focused
},
on: {
click: this.onClick,
hover: this.onHover
},
key: index,
ref: 'stars' + index
};
stars.push(h(_Star2['default'], starProps));
}
return h(
'ul',
{
'class': (0, _classnames2['default'])(prefixCls, disabledClass),
on: {
'mouseleave': disabled ? noop : this.onMouseLeave,
'focus': disabled ? noop : this.onFocus,
'blur': disabled ? noop : this.onBlur,
'keydown': disabled ? noop : this.onKeyDown
},
attrs: {
tabIndex: disabled ? -1 : tabIndex,
role: 'radiogroup'
},
ref: 'rateRef' },
[stars]
);
}
};