fix: esc exit formEdit

This commit is contained in:
somnetsak123 2023-11-28 09:22:44 +07:00 committed by Methapon2001
parent e682485bce
commit 9d81097b4c
No known key found for this signature in database
GPG key ID: 849924FEF46BD132
4 changed files with 47 additions and 19 deletions

View file

@ -91,11 +91,8 @@ async function handleSubmit() {
class="inline-block" class="inline-block"
v-if="props.action && currentDept < 4" v-if="props.action && currentDept < 4"
tabindex="0" tabindex="0"
@keydown.esc="
() => {
drawer = false
}
"
> >
<div class="dashed border-radius-inherit"> <div class="dashed border-radius-inherit">
<q-card <q-card

View file

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { onMounted, onUnmounted, ref } from 'vue'
import { useTreeDataStore } from '@/stores/tree-data' import { useTreeDataStore } from '@/stores/tree-data'
const { createFolder, editFolder } = useTreeDataStore() const { createFolder, editFolder } = useTreeDataStore()
@ -19,7 +19,22 @@ const props = withDefaults(
drawerStatus: 'create', drawerStatus: 'create',
} }
) )
defineEmits(['update:drawer'])
let isListenerAdded = false
const emit = defineEmits(['update:drawer'])
const handleClose = (event: any) => {
console.log('key close event')
if (event.key === 'Escape') {
emit('update:drawer')
}
}
onMounted(() => {
if (!isListenerAdded) {
document.addEventListener('keyup', handleClose)
isListenerAdded = true
}
})
</script> </script>
<template> <template>
@ -60,6 +75,15 @@ defineEmits(['update:drawer'])
v-model="input" v-model="input"
:placeholder="`กรอกชื่อ${props.DEPT_NAME[props.currentDept]}`" :placeholder="`กรอกชื่อ${props.DEPT_NAME[props.currentDept]}`"
dense dense
@keyup.enter="
() => {
$emit('update:drawer')
props.drawerStatus === 'create'
? createFolder(input)
: editFolder(input, editPathname)
input = ''
}
"
/> />
<q-btn <q-btn
class="q-px-md" class="q-px-md"

View file

@ -2,7 +2,7 @@
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import type { QTableProps } from 'quasar' import type { QTableProps } from 'quasar'
import { useTreeDataStore } from '@/stores/tree-data' import { useTreeDataStore, type TreeDataFolder } from '@/stores/tree-data'
import { useFileInfoStore } from '@/stores/file-info-data' import { useFileInfoStore } from '@/stores/file-info-data'
import FromEdit from '@/components/FromEdit.vue' import FromEdit from '@/components/FromEdit.vue'
import FileIcon from '@/components/FileIcon.vue' import FileIcon from '@/components/FileIcon.vue'
@ -113,6 +113,10 @@ const columnsFile: QTableProps['columns'] = [
style: 'width: 20px', style: 'width: 20px',
}, },
] ]
const onRowClick = (evt: Event, row: TreeDataFolder, index: number) => {
getFolder(row.pathname)
}
</script> </script>
<template> <template>
@ -153,15 +157,11 @@ const columnsFile: QTableProps['columns'] = [
row-key="name" row-key="name"
hide-bottom hide-bottom
:rows-per-page-options="[0]" :rows-per-page-options="[0]"
@row-click="onRowClick"
class="cursor"
> >
<template v-slot:body-cell-name="nameRow"> <template v-slot:body-cell-name="nameRow">
<q-td <q-td>
@click="
() => {
getFolder(nameRow.row.pathname)
}
"
>
<q-icon :name="currentIcon" size="2em" color="primary" /> <q-icon :name="currentIcon" size="2em" color="primary" />
{{ nameRow.row.name }} {{ nameRow.row.name }}
</q-td> </q-td>
@ -191,7 +191,7 @@ const columnsFile: QTableProps['columns'] = [
color="positive" color="positive"
dense dense
icon="edit" icon="edit"
@click=" @click.stop="
() => { () => {
drawer = !drawer drawer = !drawer
drawerStatus = 'edit' drawerStatus = 'edit'
@ -204,7 +204,7 @@ const columnsFile: QTableProps['columns'] = [
color="negative" color="negative"
dense dense
icon="delete" icon="delete"
@click="() => deleteFolder(actionsRow.row.pathname)" @click.stop="() => deleteFolder(actionsRow.row.pathname)"
/> />
</div> </div>
</q-td> </q-td>
@ -250,7 +250,7 @@ const columnsFile: QTableProps['columns'] = [
} }
" "
> >
<file-icon size="list" :fileMimeType="nameRow.row.fileType" /> <file-icon size="list" :fileMimeType="nameRow.row.fileType" />
{{ nameRow.row.fileName }} {{ nameRow.row.fileName }}
</q-td> </q-td>
</template> </template>
@ -286,6 +286,7 @@ const columnsFile: QTableProps['columns'] = [
</div> </div>
<from-edit <from-edit
v-if="drawer"
:drawer="drawer" :drawer="drawer"
:drawerStatus="drawerStatus" :drawerStatus="drawerStatus"
:DEPT_NAME="DEPT_NAME" :DEPT_NAME="DEPT_NAME"
@ -301,4 +302,8 @@ const columnsFile: QTableProps['columns'] = [
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.cursor {
cursor: pointer;
}
</style> </style>

View file

@ -141,8 +141,10 @@ onMounted(getCabinet)
</div> </div>
</section> </section>
<from-edit <from-edit
v-if="currentDept === 0" v-if="currentDept === 0 && drawer "
:drawer="drawer" :drawer="drawer"
:drawerStatus="drawerStatus" :drawerStatus="drawerStatus"
:DEPT_NAME="DEPT_NAME" :DEPT_NAME="DEPT_NAME"