148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports.default = void 0;
 | |
| 
 | |
| var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 | |
| 
 | |
| var _utils = require("../utils");
 | |
| 
 | |
| var _string = require("../utils/format/string");
 | |
| 
 | |
| var _number = require("../utils/format/number");
 | |
| 
 | |
| var _shared = require("./shared");
 | |
| 
 | |
| var _createNamespace = (0, _utils.createNamespace)('time-picker'),
 | |
|     createComponent = _createNamespace[0];
 | |
| 
 | |
| var _default = createComponent({
 | |
|   mixins: [_shared.TimePickerMixin],
 | |
|   props: (0, _extends2.default)({}, _shared.sharedProps, {
 | |
|     minHour: {
 | |
|       type: [Number, String],
 | |
|       default: 0
 | |
|     },
 | |
|     maxHour: {
 | |
|       type: [Number, String],
 | |
|       default: 23
 | |
|     },
 | |
|     minMinute: {
 | |
|       type: [Number, String],
 | |
|       default: 0
 | |
|     },
 | |
|     maxMinute: {
 | |
|       type: [Number, String],
 | |
|       default: 59
 | |
|     }
 | |
|   }),
 | |
|   computed: {
 | |
|     ranges: function ranges() {
 | |
|       return [{
 | |
|         type: 'hour',
 | |
|         range: [+this.minHour, +this.maxHour]
 | |
|       }, {
 | |
|         type: 'minute',
 | |
|         range: [+this.minMinute, +this.maxMinute]
 | |
|       }];
 | |
|     }
 | |
|   },
 | |
|   watch: {
 | |
|     filter: 'updateInnerValue',
 | |
|     minHour: function minHour() {
 | |
|       var _this = this;
 | |
| 
 | |
|       this.$nextTick(function () {
 | |
|         _this.updateInnerValue();
 | |
|       });
 | |
|     },
 | |
|     maxHour: function maxHour(value) {
 | |
|       var _this$innerValue$spli = this.innerValue.split(':'),
 | |
|           hour = _this$innerValue$spli[0],
 | |
|           minute = _this$innerValue$spli[1];
 | |
| 
 | |
|       if (hour >= value) {
 | |
|         this.innerValue = this.formatValue(value + ":" + minute);
 | |
|         this.updateColumnValue();
 | |
|       } else {
 | |
|         this.updateInnerValue();
 | |
|       }
 | |
|     },
 | |
|     minMinute: 'updateInnerValue',
 | |
|     maxMinute: function maxMinute(value) {
 | |
|       var _this$innerValue$spli2 = this.innerValue.split(':'),
 | |
|           hour = _this$innerValue$spli2[0],
 | |
|           minute = _this$innerValue$spli2[1];
 | |
| 
 | |
|       if (minute >= value) {
 | |
|         this.innerValue = this.formatValue(hour + ":" + value);
 | |
|         this.updateColumnValue();
 | |
|       } else {
 | |
|         this.updateInnerValue();
 | |
|       }
 | |
|     },
 | |
|     value: function value(val) {
 | |
|       val = this.formatValue(val);
 | |
| 
 | |
|       if (val !== this.innerValue) {
 | |
|         this.innerValue = val;
 | |
|         this.updateColumnValue();
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     formatValue: function formatValue(value) {
 | |
|       if (!value) {
 | |
|         value = (0, _string.padZero)(this.minHour) + ":" + (0, _string.padZero)(this.minMinute);
 | |
|       }
 | |
| 
 | |
|       var _value$split = value.split(':'),
 | |
|           hour = _value$split[0],
 | |
|           minute = _value$split[1];
 | |
| 
 | |
|       hour = (0, _string.padZero)((0, _number.range)(hour, this.minHour, this.maxHour));
 | |
|       minute = (0, _string.padZero)((0, _number.range)(minute, this.minMinute, this.maxMinute));
 | |
|       return hour + ":" + minute;
 | |
|     },
 | |
|     updateInnerValue: function updateInnerValue() {
 | |
|       var _this$getPicker$getIn = this.getPicker().getIndexes(),
 | |
|           hourIndex = _this$getPicker$getIn[0],
 | |
|           minuteIndex = _this$getPicker$getIn[1];
 | |
| 
 | |
|       var _this$originColumns = this.originColumns,
 | |
|           hourColumn = _this$originColumns[0],
 | |
|           minuteColumn = _this$originColumns[1];
 | |
|       var hour = hourColumn.values[hourIndex] || hourColumn.values[0];
 | |
|       var minute = minuteColumn.values[minuteIndex] || minuteColumn.values[0];
 | |
|       this.innerValue = this.formatValue(hour + ":" + minute);
 | |
|       this.updateColumnValue();
 | |
|     },
 | |
|     onChange: function onChange(picker) {
 | |
|       var _this2 = this;
 | |
| 
 | |
|       this.updateInnerValue();
 | |
|       this.$nextTick(function () {
 | |
|         _this2.$nextTick(function () {
 | |
|           // https://github.com/vant-ui/vant/issues/9775
 | |
|           _this2.updateInnerValue();
 | |
| 
 | |
|           _this2.$emit('change', picker);
 | |
|         });
 | |
|       });
 | |
|     },
 | |
|     updateColumnValue: function updateColumnValue() {
 | |
|       var _this3 = this;
 | |
| 
 | |
|       var formatter = this.formatter;
 | |
|       var pair = this.innerValue.split(':');
 | |
|       var values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
 | |
|       this.$nextTick(function () {
 | |
|         _this3.getPicker().setValues(values);
 | |
|       });
 | |
|     }
 | |
|   }
 | |
| });
 | |
| 
 | |
| exports.default = _default; | 
