123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import _extends from "@babel/runtime/helpers/esm/extends";
- import { createNamespace } from '../utils';
- import { padZero } from '../utils/format/string';
- import { range } from '../utils/format/number';
- import { sharedProps, TimePickerMixin } from './shared';
- var _createNamespace = createNamespace('time-picker'),
- createComponent = _createNamespace[0];
- export default createComponent({
- mixins: [TimePickerMixin],
- props: _extends({}, 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 = padZero(this.minHour) + ":" + padZero(this.minMinute);
- }
- var _value$split = value.split(':'),
- hour = _value$split[0],
- minute = _value$split[1];
- hour = padZero(range(hour, this.minHour, this.maxHour));
- minute = padZero(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);
- });
- }
- }
- });
|