mirror of
https://github.com/directus/directus.git
synced 2026-02-16 20:52:13 -05:00
add "press enter to close" for time inputs (#11705)
* add "enter to close" for time inputs * add menu closing to datetime in system filters
This commit is contained in:
@@ -36,12 +36,24 @@
|
||||
placeholder="--"
|
||||
@input="emitValue($event.target.value)"
|
||||
/>
|
||||
<v-menu :close-on-content-click="false" :show-arrow="true" placement="bottom-start" seamless full-height>
|
||||
<v-menu
|
||||
ref="dateTimeMenu"
|
||||
:close-on-content-click="false"
|
||||
:show-arrow="true"
|
||||
placement="bottom-start"
|
||||
seamless
|
||||
full-height
|
||||
>
|
||||
<template #activator="{ toggle }">
|
||||
<v-icon class="preview" name="event" small @click="toggle" />
|
||||
</template>
|
||||
<div class="date-input">
|
||||
<v-date-picker :type="type" :model-value="value" @update:model-value="emitValue" />
|
||||
<v-date-picker
|
||||
:type="type"
|
||||
:model-value="value"
|
||||
@update:model-value="emitValue"
|
||||
@close="dateTimeMenu?.deactivate"
|
||||
/>
|
||||
</div>
|
||||
</v-menu>
|
||||
</template>
|
||||
@@ -100,6 +112,8 @@ export default defineComponent({
|
||||
const inputEl = ref<HTMLElement>();
|
||||
const { t } = useI18n();
|
||||
|
||||
const dateTimeMenu = ref();
|
||||
|
||||
const displayValue = computed(() => {
|
||||
if (props.value === null) return null;
|
||||
if (props.value === undefined) return null;
|
||||
@@ -134,7 +148,7 @@ export default defineComponent({
|
||||
if (props.focus) inputEl.value?.focus();
|
||||
});
|
||||
|
||||
return { displayValue, width, t, emitValue, inputEl, inputPattern };
|
||||
return { displayValue, width, t, emitValue, inputEl, inputPattern, dateTimeMenu };
|
||||
|
||||
function emitValue(val: unknown) {
|
||||
if (val === '') {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-menu :close-on-content-click="false" attached :disabled="disabled" full-height seamless>
|
||||
<v-menu ref="dateTimeMenu" :close-on-content-click="false" attached :disabled="disabled" full-height seamless>
|
||||
<template #activator="{ toggle, active }">
|
||||
<v-input :active="active" clickable readonly :model-value="displayValue" :disabled="disabled" @click="toggle">
|
||||
<template v-if="!disabled" #append>
|
||||
@@ -15,6 +15,7 @@
|
||||
:use-24="use24"
|
||||
:model-value="value"
|
||||
@update:model-value="$emit('input', $event)"
|
||||
@close="dateTimeMenu?.deactivate"
|
||||
/>
|
||||
</v-menu>
|
||||
</template>
|
||||
@@ -53,6 +54,8 @@ export default defineComponent({
|
||||
setup(props, { emit }) {
|
||||
const { t } = useI18n();
|
||||
|
||||
const dateTimeMenu = ref();
|
||||
|
||||
const { displayValue } = useDisplayValue();
|
||||
|
||||
function useDisplayValue() {
|
||||
@@ -93,7 +96,7 @@ export default defineComponent({
|
||||
emit('input', null);
|
||||
}
|
||||
|
||||
return { displayValue, unsetValue };
|
||||
return { displayValue, unsetValue, dateTimeMenu };
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user