优化列表全选机制,修复列表未获得焦点时仍然可以全选的问题
parent
7d504f9231
commit
cac2d0e050
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
- 更新zh-tw翻译
|
- 更新zh-tw翻译
|
||||||
- 自定义源列显示源版本号、作者名字
|
- 自定义源列显示源版本号、作者名字
|
||||||
|
- 优化列表全选机制,修复列表未获得焦点时仍然可以全选的问题
|
||||||
|
|
||||||
### 修复
|
### 修复
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ export default {
|
||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
default: undefined,
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|
|
@ -155,7 +155,7 @@ export default {
|
||||||
listItemHeight,
|
listItemHeight,
|
||||||
handleSelectData,
|
handleSelectData,
|
||||||
removeAllSelect,
|
removeAllSelect,
|
||||||
} = useList({ props })
|
} = useList({ props, listRef })
|
||||||
|
|
||||||
const {
|
const {
|
||||||
handlePlayMusic,
|
handlePlayMusic,
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import { computed, watch, ref, onBeforeUnmount } from '@common/utils/vueTools'
|
import { computed, watch, ref, onBeforeUnmount, type Ref } from '@common/utils/vueTools'
|
||||||
import { isFullscreen } from '@renderer/store'
|
import { isFullscreen } from '@renderer/store'
|
||||||
import { appSetting } from '@renderer/store/setting'
|
import { appSetting } from '@renderer/store/setting'
|
||||||
import { getFontSizeWithScreen } from '@renderer/utils'
|
import { getFontSizeWithScreen } from '@renderer/utils'
|
||||||
|
|
||||||
const useKeyEvent = ({ handleSelectAllData }: {
|
const useKeyEvent = ({ handleSelectAllData, listRef }: {
|
||||||
handleSelectAllData: () => void
|
handleSelectAllData: () => void
|
||||||
|
listRef: Ref<any>
|
||||||
}) => {
|
}) => {
|
||||||
const keyEvent = {
|
const keyEvent = {
|
||||||
isShiftDown: false,
|
isShiftDown: false,
|
||||||
|
@ -24,7 +25,7 @@ const useKeyEvent = ({ handleSelectAllData }: {
|
||||||
keyEvent.isModDown &&= false
|
keyEvent.isModDown &&= false
|
||||||
}
|
}
|
||||||
const handle_key_mod_a_down = ({ event }: LX.KeyDownEevent) => {
|
const handle_key_mod_a_down = ({ event }: LX.KeyDownEevent) => {
|
||||||
if (!event || (event.target as HTMLElement).tagName == 'INPUT') return
|
if (!event || (event.target as HTMLElement).tagName == 'INPUT' || document.activeElement != listRef.value?.$el) return
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
if (event.repeat) return
|
if (event.repeat) return
|
||||||
keyEvent.isModDown = false
|
keyEvent.isModDown = false
|
||||||
|
@ -48,10 +49,11 @@ const useKeyEvent = ({ handleSelectAllData }: {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default ({ props }: {
|
export default ({ props, listRef }: {
|
||||||
props: {
|
props: {
|
||||||
list: LX.Music.MusicInfoOnline[]
|
list: LX.Music.MusicInfoOnline[]
|
||||||
}
|
}
|
||||||
|
listRef: Ref<any>
|
||||||
}) => {
|
}) => {
|
||||||
const selectedList = ref<LX.Music.MusicInfoOnline[]>([])
|
const selectedList = ref<LX.Music.MusicInfoOnline[]>([])
|
||||||
let lastSelectIndex = -1
|
let lastSelectIndex = -1
|
||||||
|
@ -66,7 +68,7 @@ export default ({ props }: {
|
||||||
removeAllSelect()
|
removeAllSelect()
|
||||||
selectedList.value = [...props.list]
|
selectedList.value = [...props.list]
|
||||||
}
|
}
|
||||||
const keyEvent = useKeyEvent({ handleSelectAllData })
|
const keyEvent = useKeyEvent({ handleSelectAllData, listRef })
|
||||||
|
|
||||||
const handleSelectData = (clickIndex: number) => {
|
const handleSelectData = (clickIndex: number) => {
|
||||||
if (keyEvent.isShiftDown) {
|
if (keyEvent.isShiftDown) {
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-if="list.length" ref="dom_listContent" :class="$style.content">
|
<div v-if="list.length" ref="dom_listContent" :class="$style.content">
|
||||||
<base-virtualized-list
|
<base-virtualized-list
|
||||||
v-slot="{ item, index }" :list="list" key-name="id" :item-height="listItemHeight"
|
ref="listRef" v-slot="{ item, index }" :list="list" key-name="id" :item-height="listItemHeight"
|
||||||
container-class="scroll" content-class="list"
|
container-class="scroll" content-class="list"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
|
@ -68,6 +68,7 @@
|
||||||
<script>
|
<script>
|
||||||
// import { checkPath, openDirInExplorer, openUrl } from '@common/utils/electron'
|
// import { checkPath, openDirInExplorer, openUrl } from '@common/utils/electron'
|
||||||
|
|
||||||
|
import { ref } from '@common/utils/vueTools'
|
||||||
import useListInfo from './useListInfo'
|
import useListInfo from './useListInfo'
|
||||||
import useList from './useList'
|
import useList from './useList'
|
||||||
import useTab from './useTab'
|
import useTab from './useTab'
|
||||||
|
@ -80,6 +81,7 @@ import { appSetting } from '@renderer/store/setting'
|
||||||
export default {
|
export default {
|
||||||
name: 'Download',
|
name: 'Download',
|
||||||
setup() {
|
setup() {
|
||||||
|
const listRef = ref()
|
||||||
const { tabs, activeTab } = useTab()
|
const { tabs, activeTab } = useTab()
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -95,7 +97,7 @@ export default {
|
||||||
listItemHeight,
|
listItemHeight,
|
||||||
removeAllSelect,
|
removeAllSelect,
|
||||||
handleSelectData,
|
handleSelectData,
|
||||||
} = useList({ list, listAll })
|
} = useList({ listRef, list, listAll })
|
||||||
|
|
||||||
const {
|
const {
|
||||||
handlePlayMusic,
|
handlePlayMusic,
|
||||||
|
@ -196,6 +198,7 @@ export default {
|
||||||
return quality == 'flac24bit' ? 'FLAC Hires' : quality?.toUpperCase()
|
return quality == 'flac24bit' ? 'FLAC Hires' : quality?.toUpperCase()
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
listRef,
|
||||||
list,
|
list,
|
||||||
downloadStatus,
|
downloadStatus,
|
||||||
rightClickSelectedIndex,
|
rightClickSelectedIndex,
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { isFullscreen } from '@renderer/store'
|
||||||
import { getFontSizeWithScreen } from '@renderer/utils'
|
import { getFontSizeWithScreen } from '@renderer/utils'
|
||||||
import { appSetting } from '@renderer/store/setting'
|
import { appSetting } from '@renderer/store/setting'
|
||||||
|
|
||||||
const useKeyEvent = ({ handleSelectAllData }) => {
|
const useKeyEvent = ({ listRef, handleSelectAllData }) => {
|
||||||
const keyEvent = {
|
const keyEvent = {
|
||||||
isShiftDown: false,
|
isShiftDown: false,
|
||||||
isModDown: false,
|
isModDown: false,
|
||||||
|
@ -22,7 +22,7 @@ const useKeyEvent = ({ handleSelectAllData }) => {
|
||||||
keyEvent.isModDown &&= false
|
keyEvent.isModDown &&= false
|
||||||
}
|
}
|
||||||
const handle_key_mod_a_down = ({ event }) => {
|
const handle_key_mod_a_down = ({ event }) => {
|
||||||
if (event.target.tagName == 'INPUT') return
|
if (event.target.tagName == 'INPUT' || document.activeElement != listRef.value?.$el) return
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
if (event.repeat) return
|
if (event.repeat) return
|
||||||
keyEvent.isModDown = false
|
keyEvent.isModDown = false
|
||||||
|
@ -45,7 +45,7 @@ const useKeyEvent = ({ handleSelectAllData }) => {
|
||||||
return keyEvent
|
return keyEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ({ list, listAll }) => {
|
export default ({ listRef, list, listAll }) => {
|
||||||
const selectedList = ref([])
|
const selectedList = ref([])
|
||||||
|
|
||||||
let lastSelectIndex = -1
|
let lastSelectIndex = -1
|
||||||
|
@ -60,7 +60,7 @@ export default ({ list, listAll }) => {
|
||||||
removeAllSelect()
|
removeAllSelect()
|
||||||
selectedList.value = [...list.value]
|
selectedList.value = [...list.value]
|
||||||
}
|
}
|
||||||
const keyEvent = useKeyEvent({ handleSelectAllData })
|
const keyEvent = useKeyEvent({ handleSelectAllData, listRef })
|
||||||
|
|
||||||
const handleSelectData = clickIndex => {
|
const handleSelectData = clickIndex => {
|
||||||
if (keyEvent.isShiftDown) {
|
if (keyEvent.isShiftDown) {
|
||||||
|
|
|
@ -164,7 +164,7 @@ export default {
|
||||||
listItemHeight,
|
listItemHeight,
|
||||||
handleSelectData,
|
handleSelectData,
|
||||||
removeAllSelect,
|
removeAllSelect,
|
||||||
} = useList({ list })
|
} = useList({ listRef, list })
|
||||||
|
|
||||||
const {
|
const {
|
||||||
handlePlayMusic,
|
handlePlayMusic,
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { isFullscreen } from '@renderer/store'
|
||||||
import { getFontSizeWithScreen } from '@renderer/utils'
|
import { getFontSizeWithScreen } from '@renderer/utils'
|
||||||
import { appSetting } from '@renderer/store/setting'
|
import { appSetting } from '@renderer/store/setting'
|
||||||
|
|
||||||
const useKeyEvent = ({ handleSelectAllData }) => {
|
const useKeyEvent = ({ handleSelectAllData, listRef }) => {
|
||||||
const keyEvent = {
|
const keyEvent = {
|
||||||
isShiftDown: false,
|
isShiftDown: false,
|
||||||
isModDown: false,
|
isModDown: false,
|
||||||
|
@ -22,7 +22,7 @@ const useKeyEvent = ({ handleSelectAllData }) => {
|
||||||
keyEvent.isModDown &&= false
|
keyEvent.isModDown &&= false
|
||||||
}
|
}
|
||||||
const handle_key_mod_a_down = ({ event }) => {
|
const handle_key_mod_a_down = ({ event }) => {
|
||||||
if (event.target.tagName == 'INPUT') return
|
if (event.target.tagName == 'INPUT' || document.activeElement != listRef.value?.$el) return
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
if (event.repeat) return
|
if (event.repeat) return
|
||||||
keyEvent.isModDown = false
|
keyEvent.isModDown = false
|
||||||
|
@ -45,7 +45,7 @@ const useKeyEvent = ({ handleSelectAllData }) => {
|
||||||
return keyEvent
|
return keyEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ({ list }) => {
|
export default ({ listRef, list }) => {
|
||||||
const selectedList = ref([])
|
const selectedList = ref([])
|
||||||
|
|
||||||
let lastSelectIndex = -1
|
let lastSelectIndex = -1
|
||||||
|
@ -60,7 +60,7 @@ export default ({ list }) => {
|
||||||
removeAllSelect()
|
removeAllSelect()
|
||||||
selectedList.value = [...list.value]
|
selectedList.value = [...list.value]
|
||||||
}
|
}
|
||||||
const keyEvent = useKeyEvent({ handleSelectAllData })
|
const keyEvent = useKeyEvent({ listRef, handleSelectAllData })
|
||||||
|
|
||||||
const handleSelectData = clickIndex => {
|
const handleSelectData = clickIndex => {
|
||||||
if (keyEvent.isShiftDown) {
|
if (keyEvent.isShiftDown) {
|
||||||
|
|
Loading…
Reference in New Issue