You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							93 lines
						
					
					
						
							3.0 KiB
						
					
					
				
								"use strict";
							 | 
						|
								var __assign = (this && this.__assign) || function () {
							 | 
						|
								    __assign = Object.assign || function(t) {
							 | 
						|
								        for (var s, i = 1, n = arguments.length; i < n; i++) {
							 | 
						|
								            s = arguments[i];
							 | 
						|
								            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
							 | 
						|
								                t[p] = s[p];
							 | 
						|
								        }
							 | 
						|
								        return t;
							 | 
						|
								    };
							 | 
						|
								    return __assign.apply(this, arguments);
							 | 
						|
								};
							 | 
						|
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						|
								var utils_1 = require("../common/utils");
							 | 
						|
								var component_1 = require("../common/component");
							 | 
						|
								var version_1 = require("../common/version");
							 | 
						|
								(0, component_1.VantComponent)({
							 | 
						|
								    field: true,
							 | 
						|
								    classes: ['icon-class'],
							 | 
						|
								    props: {
							 | 
						|
								        value: {
							 | 
						|
								            type: Number,
							 | 
						|
								            observer: function (value) {
							 | 
						|
								                if (value !== this.data.innerValue) {
							 | 
						|
								                    this.setData({ innerValue: value });
							 | 
						|
								                }
							 | 
						|
								            },
							 | 
						|
								        },
							 | 
						|
								        readonly: Boolean,
							 | 
						|
								        disabled: Boolean,
							 | 
						|
								        allowHalf: Boolean,
							 | 
						|
								        size: null,
							 | 
						|
								        icon: {
							 | 
						|
								            type: String,
							 | 
						|
								            value: 'star',
							 | 
						|
								        },
							 | 
						|
								        voidIcon: {
							 | 
						|
								            type: String,
							 | 
						|
								            value: 'star-o',
							 | 
						|
								        },
							 | 
						|
								        color: String,
							 | 
						|
								        voidColor: String,
							 | 
						|
								        disabledColor: String,
							 | 
						|
								        count: {
							 | 
						|
								            type: Number,
							 | 
						|
								            value: 5,
							 | 
						|
								            observer: function (value) {
							 | 
						|
								                this.setData({ innerCountArray: Array.from({ length: value }) });
							 | 
						|
								            },
							 | 
						|
								        },
							 | 
						|
								        gutter: null,
							 | 
						|
								        touchable: {
							 | 
						|
								            type: Boolean,
							 | 
						|
								            value: true,
							 | 
						|
								        },
							 | 
						|
								    },
							 | 
						|
								    data: {
							 | 
						|
								        innerValue: 0,
							 | 
						|
								        innerCountArray: Array.from({ length: 5 }),
							 | 
						|
								    },
							 | 
						|
								    methods: {
							 | 
						|
								        onSelect: function (event) {
							 | 
						|
								            var _this = this;
							 | 
						|
								            var data = this.data;
							 | 
						|
								            var score = event.currentTarget.dataset.score;
							 | 
						|
								            if (!data.disabled && !data.readonly) {
							 | 
						|
								                this.setData({ innerValue: score + 1 });
							 | 
						|
								                if ((0, version_1.canIUseModel)()) {
							 | 
						|
								                    this.setData({ value: score + 1 });
							 | 
						|
								                }
							 | 
						|
								                wx.nextTick(function () {
							 | 
						|
								                    _this.$emit('input', score + 1);
							 | 
						|
								                    _this.$emit('change', score + 1);
							 | 
						|
								                });
							 | 
						|
								            }
							 | 
						|
								        },
							 | 
						|
								        onTouchMove: function (event) {
							 | 
						|
								            var _this = this;
							 | 
						|
								            var touchable = this.data.touchable;
							 | 
						|
								            if (!touchable)
							 | 
						|
								                return;
							 | 
						|
								            var clientX = event.touches[0].clientX;
							 | 
						|
								            (0, utils_1.getAllRect)(this, '.van-rate__icon').then(function (list) {
							 | 
						|
								                var target = list
							 | 
						|
								                    .sort(function (cur, next) { return cur.dataset.score - next.dataset.score; })
							 | 
						|
								                    .find(function (item) { return clientX >= item.left && clientX <= item.right; });
							 | 
						|
								                if (target != null) {
							 | 
						|
								                    _this.onSelect(__assign(__assign({}, event), { currentTarget: target }));
							 | 
						|
								                }
							 | 
						|
								            });
							 | 
						|
								        },
							 | 
						|
								    },
							 | 
						|
								});
							 | 
						|
								
							 |