diff --git a/resources/js/packages/ui/src/Input/TimePickerSimple.vue b/resources/js/packages/ui/src/Input/TimePickerSimple.vue index 153375152..ca76253ec 100644 --- a/resources/js/packages/ui/src/Input/TimePickerSimple.vue +++ b/resources/js/packages/ui/src/Input/TimePickerSimple.vue @@ -91,6 +91,47 @@ const emit = defineEmits(['changed']); useFocus(timeInput, { initialValue: props.focus }); const inputValue = ref(model.value ? getLocalizedDayJs(model.value).format('HH:mm') : null); + +let selectAllOnMouseUp = false; +let ignoreNextFocusSelect = props.focus; +let selectAllOnNextClick = props.focus; + +watch(() => props.focus, (newValue) => { + if (newValue) { + ignoreNextFocusSelect = true; + selectAllOnNextClick = true; + } +}); + +function handleFocus(event: FocusEvent) { + if (ignoreNextFocusSelect) { + ignoreNextFocusSelect = false; + return; + } + const target = event.target as HTMLInputElement; + target.select(); + selectAllOnMouseUp = true; +} + +function handleMouseUp(event: MouseEvent) { + if (selectAllOnNextClick) { + const target = event.target as HTMLInputElement; + target.select(); + selectAllOnNextClick = false; + selectAllOnMouseUp = false; + event.preventDefault(); + return; + } + if (selectAllOnMouseUp) { + event.preventDefault(); + selectAllOnMouseUp = false; + } +} + +function handleBlur(event: FocusEvent) { + selectAllOnNextClick = false; + updateTime(event); +}