index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <uni-shadow-root class="vant-rate-index"><view class="van-rate custom-class" @touchmove="onTouchMove">
  3. <view v-for="(item,index) in (count)" :key="item.index" class="van-rate__item" :style="'font-size: '+(size)+'px;'">
  4. <van-icon :name="index + 1 <= innerValue ? icon : voidIcon" class="van-rate__icon" custom-class="icon-class" :data-score="index" :color="disabled ? disabledColor : index + 1 <= innerValue ? color : voidColor" @click="onSelect"></van-icon>
  5. <van-icon v-if="allowHalf" :name="index + 0.5 <= innerValue ? icon : voidIcon" :class="utils.bem('rate__icon', ['half'])" custom-class="icon-class" :data-score="index - 0.5" :color="disabled ? disabledColor : index + 0.5 <= innerValue ? color : voidColor" @click="onSelect"></van-icon>
  6. </view>
  7. </view></uni-shadow-root>
  8. </template>
  9. <wxs src="../wxs/utils.wxs" module="utils"></wxs>
  10. <script>
  11. import VanIcon from '../icon/index.vue'
  12. global['__wxVueOptions'] = {components:{'van-icon': VanIcon}}
  13. global['__wxRoute'] = 'vant/rate/index'
  14. "use strict";
  15. var __assign = undefined && undefined.__assign || function () {
  16. __assign = Object.assign || function (t) {
  17. for (var s, i = 1, n = arguments.length; i < n; i++) {
  18. s = arguments[i];
  19. for (var p in s) {
  20. if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
  21. }
  22. }
  23. return t;
  24. };
  25. return __assign.apply(this, arguments);
  26. };
  27. Object.defineProperty(exports, "__esModule", { value: true });
  28. var component_1 = require('./../common/component.js');
  29. component_1.VantComponent({
  30. field: true,
  31. classes: ['icon-class'],
  32. props: {
  33. value: Number,
  34. readonly: Boolean,
  35. disabled: Boolean,
  36. allowHalf: Boolean,
  37. size: {
  38. type: Number,
  39. value: 20
  40. },
  41. icon: {
  42. type: String,
  43. value: 'star'
  44. },
  45. voidIcon: {
  46. type: String,
  47. value: 'star-o'
  48. },
  49. color: {
  50. type: String,
  51. value: '#ffd21e'
  52. },
  53. voidColor: {
  54. type: String,
  55. value: '#c7c7c7'
  56. },
  57. disabledColor: {
  58. type: String,
  59. value: '#bdbdbd'
  60. },
  61. count: {
  62. type: Number,
  63. value: 5
  64. }
  65. },
  66. data: {
  67. innerValue: 0
  68. },
  69. watch: {
  70. value: function value(_value) {
  71. if (_value !== this.data.innerValue) {
  72. this.set({ innerValue: _value });
  73. }
  74. }
  75. },
  76. methods: {
  77. onSelect: function onSelect(event) {
  78. var data = this.data;
  79. var score = event.currentTarget.dataset.score;
  80. if (!data.disabled && !data.readonly) {
  81. this.set({ innerValue: score + 1 });
  82. this.$emit('input', score + 1);
  83. this.$emit('change', score + 1);
  84. }
  85. },
  86. onTouchMove: function onTouchMove(event) {
  87. var _this = this;
  88. var _a = event.touches[0],
  89. clientX = _a.clientX,
  90. clientY = _a.clientY;
  91. this.getRect('.van-rate__icon', true).then(function (list) {
  92. var target = list.sort(function (item) {
  93. return item.right - item.left;
  94. }).find(function (item) {
  95. return clientX >= item.left && clientX <= item.right && clientY >= item.top && clientY <= item.bottom;
  96. });
  97. if (target != null) {
  98. _this.onSelect(__assign({}, event, { currentTarget: target }));
  99. }
  100. });
  101. }
  102. }
  103. });
  104. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIl9fYXNzaWduIiwiT2JqZWN0IiwiaSIsIm4iLCJhcmd1bWVudHMiLCJzIiwidCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwiZmllbGQiLCJjbGFzc2VzIiwicHJvcHMiLCJyZWFkb25seSIsImRpc2FibGVkIiwiYWxsb3dIYWxmIiwic2l6ZSIsInR5cGUiLCJpY29uIiwidm9pZEljb24iLCJjb2xvciIsInZvaWRDb2xvciIsImRpc2FibGVkQ29sb3IiLCJjb3VudCIsImRhdGEiLCJpbm5lclZhbHVlIiwid2F0Y2giLCJtZXRob2RzIiwib25TZWxlY3QiLCJzY29yZSIsImV2ZW50Iiwib25Ub3VjaE1vdmUiLCJfdGhpcyIsIl9hIiwiY2xpZW50WCIsImNsaWVudFkiLCJ0YXJnZXQiLCJpdGVtIiwiY3VycmVudFRhcmdldCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFJQSxXQUFZLGFBQVEsVUFBVCxRQUFDLElBQTBCLFlBQVk7QUFDbERBLGVBQVdDLE9BQUFBLE1BQUFBLElBQWlCLFVBQUEsQ0FBQSxFQUFZO0FBQ3BDLGFBQUssSUFBQSxDQUFBLEVBQU9DLElBQVAsQ0FBQSxFQUFjQyxJQUFJQyxVQUF2QixNQUFBLEVBQXlDRixJQUF6QyxDQUFBLEVBQUEsR0FBQSxFQUFxRDtBQUNqREcsZ0JBQUlELFVBQUpDLENBQUlELENBQUpDO0FBQ0EsaUJBQUssSUFBTCxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQWlCLG9CQUFJSixPQUFBQSxTQUFBQSxDQUFBQSxjQUFBQSxDQUFBQSxJQUFBQSxDQUFBQSxDQUFBQSxFQUFKLENBQUlBLENBQUosRUFDYkssRUFBQUEsQ0FBQUEsSUFBT0QsRUFBUEMsQ0FBT0QsQ0FBUEM7QUFESjtBQUVIO0FBQ0QsZUFBQSxDQUFBO0FBTkpOLEtBQUFBO0FBUUEsV0FBT0EsU0FBQUEsS0FBQUEsQ0FBQUEsSUFBQUEsRUFBUCxTQUFPQSxDQUFQO0FBVEosQ0FBQTtBQVdBQyxPQUFBQSxj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dXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb21wb25lbnRfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vY29tcG9uZW50XCIpO1xuY29tcG9uZW50XzEuVmFudENvbXBvbmVudCh7XG4gICAgZmllbGQ6IHRydWUsXG4gICAgY2xhc3NlczogWydpY29uLWNsYXNzJ10sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IE51bWJlcixcbiAgICAgICAgcmVhZG9ubHk6IEJvb2xlYW4sXG4gICAgICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgICAgICBhbGxvd0hhbGY6IEJvb2xlYW4sXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHZhbHVlOiAyMFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB2YWx1ZTogJ3N0YXInXG4gICAgICAgIH0sXG4gICAgICAgIHZvaWRJY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB2YWx1ZTogJ3N0YXItbydcbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHZhbHVlOiAnI2ZmZDIxZSdcbiAgICAgICAgfSxcbiAgICAgICAgdm9pZENvbG9yOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICB2YWx1ZTogJyNjN2M3YzcnXG4gICAgICAgIH0sXG4gICAgICAgIGRpc2FibGVkQ29sb3I6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHZhbHVlOiAnI2JkYmRiZCdcbiAgICAgICAgfSxcbiAgICAgICAgY291bnQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHZhbHVlOiA1XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRhdGE6IHtcbiAgICAgICAgaW5uZXJWYWx1ZTogMFxuICAgIH0sXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRhdGEuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgaW5uZXJWYWx1ZTogdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICAgICAgICB2YXIgc2NvcmUgPSBldmVudC5jdXJyZW50VGFyZ2V0LmRhdGFzZXQuc2NvcmU7XG4gICAgICAgICAgICBpZiAoIWRhdGEuZGlzYWJsZWQgJiYgIWRhdGEucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCh7IGlubmVyVmFsdWU6IHNjb3JlICsgMSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHNjb3JlICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgc2NvcmUgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHZhciBfYSA9IGV2ZW50LnRvdWNoZXNbMF0sIGNsaWVudFggPSBfYS5jbGllbnRYLCBjbGllbnRZID0gX2EuY2xpZW50WTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjdCgnLnZhbi1yYXRlX19pY29uJywgdHJ1ZSkudGhlbihmdW5jdGlvbiAobGlzdCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBsaXN0XG4gICAgICAgICAgICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtLnJpZ2h0IC0gaXRlbS5sZWZ0OyB9KVxuICAgICAgICAgICAgICAgICAgICAuZmluZChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xpZW50WCA+PSBpdGVtLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFggPD0gaXRlbS5yaWdodCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50WSA+PSBpdGVtLnRvcCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50WSA8PSBpdGVtLmJvdHRvbTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMub25TZWxlY3QoX19hc3NpZ24oe30sIGV2ZW50LCB7IGN1cnJlbnRUYXJnZXQ6IHRhcmdldCB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ==
  105. export default global['__wxComponents']['vant/rate/index']
  106. </script>
  107. <style platform="mp-weixin">
  108. @import '../common/index.css';.van-rate{-webkit-user-select:none;user-select:none}.van-rate__item{position:relative;display:inline-block;padding:0 2px}.van-rate__icon{display:block;height:1em}.van-rate__icon--half{position:absolute;top:0;left:2px;width:.5em;overflow:hidden}
  109. </style>