123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import _extends from 'babel-runtime/helpers/extends';
- import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
- import omit from 'omit.js';
- import PropTypes from '../_util/vue-types';
- import { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';
- import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
- import VcRate from '../vc-rate';
- import Icon from '../icon';
- import Tooltip from '../tooltip';
- import Base from '../base';
- export var RateProps = {
- prefixCls: PropTypes.string,
- count: PropTypes.number,
- value: PropTypes.value,
- defaultValue: PropTypes.value,
- allowHalf: PropTypes.bool,
- allowClear: PropTypes.bool,
- tooltips: PropTypes.arrayOf(PropTypes.string),
- disabled: PropTypes.bool,
- character: PropTypes.any,
- autoFocus: PropTypes.bool
- };
- var Rate = {
- name: 'ARate',
- model: {
- prop: 'value',
- event: 'change'
- },
- props: RateProps,
- inject: {
- configProvider: { 'default': function _default() {
- return ConfigConsumerProps;
- } }
- },
- methods: {
- characterRender: function characterRender(node, _ref) {
- var index = _ref.index;
- var h = this.$createElement;
- var tooltips = this.$props.tooltips;
- if (!tooltips) return node;
- return h(
- Tooltip,
- {
- attrs: { title: tooltips[index] }
- },
- [node]
- );
- },
- focus: function focus() {
- this.$refs.refRate.focus();
- },
- blur: function blur() {
- this.$refs.refRate.blur();
- }
- },
- render: function render() {
- var h = arguments[0];
- var _getOptionProps = getOptionProps(this),
- customizePrefixCls = _getOptionProps.prefixCls,
- restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls']);
- var getPrefixCls = this.configProvider.getPrefixCls;
- var prefixCls = getPrefixCls('rate', customizePrefixCls);
- var character = getComponentFromProp(this, 'character') || h(Icon, {
- attrs: { type: 'star', theme: 'filled' }
- });
- var rateProps = {
- props: _extends({
- character: character,
- characterRender: this.characterRender,
- prefixCls: prefixCls
- }, omit(restProps, ['tooltips'])),
- on: getListeners(this),
- ref: 'refRate'
- };
- return h(VcRate, rateProps);
- }
- };
- /* istanbul ignore next */
- Rate.install = function (Vue) {
- Vue.use(Base);
- Vue.component(Rate.name, Rate);
- };
- export default Rate;
|