feat: 新增按下空格多选功能

This commit is contained in:
ZiuChen 2022-09-24 18:16:59 +08:00
parent a1fcb6868e
commit 48786d13a5
2 changed files with 45 additions and 15 deletions

View File

@ -80,9 +80,18 @@ const props = defineProps({
currentActiveTab: { currentActiveTab: {
type: String, type: String,
required: true required: true
},
isSearchPanelExpand: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits(['onDataChange', 'onDataRemove', 'onSelectItemAdd', 'onMultiCopyExecute']) const emit = defineEmits([
'onDataChange',
'onDataRemove',
'onMultiCopyExecute',
'toggleMultiSelect'
])
const isOverSizedContent = (item) => { const isOverSizedContent = (item) => {
const { type, data } = item const { type, data } = item
if (type === 'text') { if (type === 'text') {
@ -159,8 +168,6 @@ const handleItemClick = (ev, item) => {
selectItemList.value.push(item) // selectItemList.value.push(item) //
} }
} }
emit('onSelectItemAdd')
} else { } else {
const { button } = ev const { button } = ev
if (button === 0) { if (button === 0) {
@ -194,25 +201,23 @@ onMounted(() => {
const isCopy = (ctrlKey || metaKey) && (key === 'C' || key === 'c') const isCopy = (ctrlKey || metaKey) && (key === 'C' || key === 'c')
const isNumber = parseInt(key) <= 9 && parseInt(key) >= 0 const isNumber = parseInt(key) <= 9 && parseInt(key) >= 0
const isShift = key === 'Shift' const isShift = key === 'Shift'
const isSpace = key === ' '
const activeNode = !props.isMultiple
? document.querySelector('.clip-item.active' + (isArrowDown ? '+.clip-item' : ''))
: document.querySelector('.clip-item.multi-active' + (isArrowDown ? '+.clip-item' : ''))
if (isArrowUp) { if (isArrowUp) {
if (activeIndex.value === 1) window.toTop()
if (activeIndex.value > 0) { if (activeIndex.value > 0) {
activeIndex.value-- activeIndex.value--
const activeNode = document.querySelector('.clip-item.active') activeNode.previousElementSibling.previousElementSibling.scrollIntoView({
if (activeIndex.value === 1) { block: 'nearest',
window.toTop() inline: 'nearest'
} else { })
activeNode?.previousElementSibling?.previousElementSibling?.scrollIntoView({
block: 'nearest',
inline: 'nearest'
})
}
} }
} else if (isArrowDown) { } else if (isArrowDown) {
if (activeIndex.value < props.showList.length - 1) { if (activeIndex.value < props.showList.length - 1) {
activeIndex.value++ activeIndex.value++
document activeNode.scrollIntoView({ block: 'nearest', inline: 'nearest' })
.querySelector('.clip-item.active+.clip-item')
?.scrollIntoView({ block: 'nearest', inline: 'nearest' })
} }
} else if (isCopy) { } else if (isCopy) {
if (!props.fullData.data) { if (!props.fullData.data) {
@ -246,6 +251,25 @@ onMounted(() => {
if (props.isMultiple) { if (props.isMultiple) {
isShiftDown.value = true isShiftDown.value = true
} }
} else if (isSpace) {
if (props.isSearchPanelExpand) {
//
return
}
if (!props.isMultiple) {
emit('toggleMultiSelect') //
}
e.preventDefault()
const i = selectItemList.value.findIndex((item) => item === props.showList[activeIndex.value])
if (i !== -1) {
selectItemList.value.splice(i, 1) //
} else {
selectItemList.value.push(props.showList[activeIndex.value]) //
activeIndex.value++
document
.querySelector('.clip-item.multi-active+.clip-item')
.scrollIntoView({ block: 'nearest', inline: 'nearest' })
}
} }
}) })
document.addEventListener('keyup', (e) => { document.addEventListener('keyup', (e) => {

View File

@ -47,7 +47,9 @@
:fullData="fullData" :fullData="fullData"
:isMultiple="isMultiple" :isMultiple="isMultiple"
:currentActiveTab="activeTab" :currentActiveTab="activeTab"
:isSearchPanelExpand="isSearchPanelExpand"
@onMultiCopyExecute="handleMultiCopyBtnClick" @onMultiCopyExecute="handleMultiCopyBtnClick"
@toggleMultiSelect="() => (isMultiple = true)"
@onDataChange="toggleFullData" @onDataChange="toggleFullData"
@onDataRemove="handleDataRemove" @onDataRemove="handleDataRemove"
> >
@ -291,6 +293,7 @@ onMounted(() => {
const isEnter = key === 'Enter' const isEnter = key === 'Enter'
const isShift = key === 'Shift' const isShift = key === 'Shift'
const isAlt = key === 'Alt' const isAlt = key === 'Alt'
const isSpace = key === ' '
if (isTab) { if (isTab) {
const tabTypes = tabs.map((item) => item.type) const tabTypes = tabs.map((item) => item.type)
const index = tabTypes.indexOf(activeTab.value) const index = tabTypes.indexOf(activeTab.value)
@ -312,6 +315,7 @@ onMounted(() => {
} else if (isMultiple.value) { } else if (isMultiple.value) {
// 退 // 退
isMultiple.value = !isMultiple.value isMultiple.value = !isMultiple.value
e.stopPropagation()
} else { } else {
// : uTools // : uTools
} }
@ -327,6 +331,8 @@ onMounted(() => {
} else if (ctrlKey || metaKey || isAlt) { } else if (ctrlKey || metaKey || isAlt) {
// Ctrl: utools // Ctrl: utools
// Alt: // Alt:
} else if (isSpace) {
//
} else { } else {
window.focus() // window.focus() //
} }