native-time-picker.uvue 1.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
<template>
  <view class="def-picker">
    <native-view style="width: 100%; height: 100%;" @init="onviewinit" @timechanged="ontimechanged"></native-view>
  </view>
</template>

<script lang="uts">
	import { NativeTimePicker } from "@/uni_modules/native-time-picker";


	export default {

		data() {
			return {
				picker: null as NativeTimePicker | null,
				hourValue: 0 as number,
				minuteValue: 0 as number
			}
		},
		props: {
			"hour": {
				type: Number,
				default: 0
			},
			"minute": {
				type: Number,
				default: 0
			}
		},
		watch: {
			"hour": {
				handler(newValue : number, oldValue : number) {
					if (newValue < 23 && newValue >= 0) {
						this.hourValue = newValue
						this.picker?.setHour(this.hourValue)
					}
				},
				immediate: true
			},
			"minute": {
				handler(newValue : number, oldValue : number) {
					if (newValue < 59 && newValue >= 0) {
						this.minuteValue = newValue
						this.picker?.setMinute(this.minuteValue)
					}

				},
				immediate: true
			},
		},
		methods: {
			onviewinit(e : UniNativeViewInitEvent) {
				this.picker = new NativeTimePicker(e.detail.element, this.hourValue, this.minuteValue);
				this.$emit("load")
			},
			ontimechanged(e : UniNativeViewEvent) {
				this.$emit("changed", e)
			}
		},
		unmounted() {

		}
	}
</script>

<style>
	.def-picker {
		min-width: 300px;
		min-height: 380px;
    max-width: 400px;
    max-height: 400px;
	}
</style>