Skip to content

Commit 97e546a

Browse files
committed
fix: flow not working in time-picker mode (fixes #849)
1 parent d7be2d6 commit 97e546a

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/VueDatePicker/components/TimePicker/TimePickerSolo.vue

+23-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<template>
22
<InstanceWrap :multi-calendars="0" stretch>
33
<TimePicker
4+
ref="tpRef"
45
v-bind="$props"
56
:hours="time.hours"
67
:minutes="time.minutes"
@@ -12,6 +13,7 @@
1213
@update:minutes="updateTime($event, false)"
1314
@update:seconds="updateTime($event, false, true)"
1415
@am-pm-change="$emit('am-pm-change', $event)"
16+
@reset-flow="$emit('reset-flow')"
1517
>
1618
<template v-for="(slot, i) in timePickerSlots" #[slot]="args" :key="i">
1719
<slot :name="slot" v-bind="args" />
@@ -21,7 +23,7 @@
2123
</template>
2224

2325
<script lang="ts" setup>
24-
import { useSlots } from 'vue';
26+
import { onMounted, ref, useSlots } from 'vue';
2527
2628
import TimePicker from '@/components/TimePicker/TimePicker.vue';
2729
@@ -30,7 +32,14 @@
3032
import { useTimePicker } from '@/components/TimePicker/time-picker';
3133
import InstanceWrap from '@/components/Common/InstanceWrap.vue';
3234
33-
const emit = defineEmits(['update:internal-model-value', 'time-update', 'am-pm-change']);
35+
const emit = defineEmits([
36+
'update:internal-model-value',
37+
'time-update',
38+
'am-pm-change',
39+
'mount',
40+
'reset-flow',
41+
'update-flow-step',
42+
]);
3443
const props = defineProps({
3544
...PickerBaseProps,
3645
});
@@ -41,9 +50,16 @@
4150
});
4251
const slots = useSlots();
4352
const timePickerSlots = mapSlots(slots, 'timePicker');
53+
const tpRef = ref<InstanceType<typeof TimePicker> | null>(null);
4454
4555
const { time, modelValue, disabledTimesConfig, updateTime, validateTime } = useTimePicker(props, emit);
4656
57+
onMounted(() => {
58+
if (!props.shadow) {
59+
emit('mount', null);
60+
}
61+
});
62+
4763
const getSidebarProps = () => {
4864
return {
4965
modelValue,
@@ -52,5 +68,9 @@
5268
};
5369
};
5470
55-
defineExpose({ getSidebarProps });
71+
const toggleTimePicker = (show: boolean, flow = false, childOpen = '') => {
72+
tpRef.value?.toggleTimePicker(show, flow, childOpen);
73+
};
74+
75+
defineExpose({ getSidebarProps, toggleTimePicker });
5676
</script>

src/VueDatePicker/components/TimePicker/time-picker.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ export const useTimePicker = (props: PickerBasePropsType, emit: VueEmit) => {
1212
const { modelValue, time } = useModel(props, emit);
1313
const { defaultedStartTime, defaultedRange } = useDefaults(props);
1414
const { updateTimeValues, getSetDateTime, setTime, assignStartTime, disabledTimesConfig, validateTime } =
15-
useTimePickerUtils(props, time, modelValue);
15+
useTimePickerUtils(props, time, modelValue, updateFlowStep);
16+
17+
function updateFlowStep() {
18+
emit('update-flow-step');
19+
}
1620

1721
const parseStartTime = (startTime: TimeModel) => {
1822
const { hours, minutes, seconds } = startTime;

src/VueDatePicker/composables/flow.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const useFlow = (props: AllPropsType, emit: VueEmit, dynCmpRef: Ref<any>)
1515
[CMP.header]: false,
1616
});
1717

18-
const specificMode = computed(() => props.monthPicker);
18+
const specificMode = computed(() => props.monthPicker || props.timePicker);
1919

2020
const childMount = (cmp: unknown): void => {
2121
if (props.flow?.length) {

0 commit comments

Comments
 (0)