wip
This commit is contained in:
parent
36725b3e8c
commit
4f57fd3e14
|
@ -8,7 +8,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:class="[$style.root, { [$style.isSelected]: isSelected }]"
|
:class="[$style.root, { [$style.isSelected]: isSelected }]"
|
||||||
draggable="true"
|
draggable="true"
|
||||||
:title="title"
|
:title="title"
|
||||||
@click="onClick"
|
|
||||||
@contextmenu.stop="onContextmenu"
|
@contextmenu.stop="onContextmenu"
|
||||||
@dragstart="onDragstart"
|
@dragstart="onDragstart"
|
||||||
@dragend="onDragend"
|
@dragend="onDragend"
|
||||||
|
@ -46,24 +45,17 @@ import * as os from '@/os.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { $i } from '@/i.js';
|
import { $i } from '@/i.js';
|
||||||
import { getDriveFileMenu } from '@/utility/get-drive-file-menu.js';
|
import { getDriveFileMenu } from '@/utility/get-drive-file-menu.js';
|
||||||
import { deviceKind } from '@/utility/device-kind.js';
|
|
||||||
import { useRouter } from '@/router.js';
|
|
||||||
import { setDragData } from '@/drag-and-drop.js';
|
import { setDragData } from '@/drag-and-drop.js';
|
||||||
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
file: Misskey.entities.DriveFile;
|
file: Misskey.entities.DriveFile;
|
||||||
folder: Misskey.entities.DriveFolder | null;
|
folder: Misskey.entities.DriveFolder | null;
|
||||||
isSelected?: boolean;
|
isSelected?: boolean;
|
||||||
selectMode?: boolean;
|
|
||||||
}>(), {
|
}>(), {
|
||||||
isSelected: false,
|
isSelected: false,
|
||||||
selectMode: false,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'chosen', r: Misskey.entities.DriveFile): void;
|
|
||||||
(ev: 'dragstart', dragEvent: DragEvent): void;
|
(ev: 'dragstart', dragEvent: DragEvent): void;
|
||||||
(ev: 'dragend'): void;
|
(ev: 'dragend'): void;
|
||||||
}>();
|
}>();
|
||||||
|
@ -72,18 +64,6 @@ const isDragging = ref(false);
|
||||||
|
|
||||||
const title = computed(() => `${props.file.name}\n${props.file.type} ${bytes(props.file.size)}`);
|
const title = computed(() => `${props.file.name}\n${props.file.type} ${bytes(props.file.size)}`);
|
||||||
|
|
||||||
function onClick(ev: MouseEvent) {
|
|
||||||
if (props.selectMode) {
|
|
||||||
emit('chosen', props.file);
|
|
||||||
} else {
|
|
||||||
if (deviceKind === 'desktop') {
|
|
||||||
router.push(`/my/drive/file/${props.file.id}`);
|
|
||||||
} else {
|
|
||||||
os.popupMenu(getDriveFileMenu(props.file, props.folder), (ev.currentTarget ?? ev.target ?? undefined) as HTMLElement | undefined);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onContextmenu(ev: MouseEvent) {
|
function onContextmenu(ev: MouseEvent) {
|
||||||
os.contextMenu(getDriveFileMenu(props.file, props.folder), ev);
|
os.contextMenu(getDriveFileMenu(props.file, props.folder), ev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,9 +104,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:class="$style.file"
|
:class="$style.file"
|
||||||
:file="file"
|
:file="file"
|
||||||
:folder="folder"
|
:folder="folder"
|
||||||
:selectMode="select === 'file' || isEditMode"
|
|
||||||
:isSelected="selectedFiles.some(x => x.id === file.id)"
|
:isSelected="selectedFiles.some(x => x.id === file.id)"
|
||||||
@chosen="onChooseFile"
|
@click="onFileClick($event, file)"
|
||||||
@dragstart="onFileDragstart(file, $event)"
|
@dragstart="onFileDragstart(file, $event)"
|
||||||
@dragend="isDragSource = false"
|
@dragend="isDragSource = false"
|
||||||
/>
|
/>
|
||||||
|
@ -154,6 +153,7 @@ import { isSeparatorNeeded, getSeparatorInfo, makeDateGroupedTimelineComputedRef
|
||||||
import { usePagination } from '@/composables/use-pagination.js';
|
import { usePagination } from '@/composables/use-pagination.js';
|
||||||
import { globalEvents, useGlobalEvent } from '@/events.js';
|
import { globalEvents, useGlobalEvent } from '@/events.js';
|
||||||
import { checkDragDataType, getDragData, setDragData } from '@/drag-and-drop.js';
|
import { checkDragDataType, getDragData, setDragData } from '@/drag-and-drop.js';
|
||||||
|
import { getDriveFileMenu } from '@/utility/get-drive-file-menu.js';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
initialFolder?: Misskey.entities.DriveFolder['id'] | null;
|
initialFolder?: Misskey.entities.DriveFolder['id'] | null;
|
||||||
|
@ -458,7 +458,12 @@ function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onChooseFile(file: Misskey.entities.DriveFile) {
|
function onFileClick(ev: MouseEvent, file: Misskey.entities.DriveFile) {
|
||||||
|
if (ev.shiftKey) {
|
||||||
|
isEditMode.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (props.select === 'file' || isEditMode.value) {
|
||||||
const isAlreadySelected = selectedFiles.value.some(f => f.id === file.id);
|
const isAlreadySelected = selectedFiles.value.some(f => f.id === file.id);
|
||||||
|
|
||||||
if (isEditMode.value) {
|
if (isEditMode.value) {
|
||||||
|
@ -483,6 +488,9 @@ function onChooseFile(file: Misskey.entities.DriveFile) {
|
||||||
selectedFiles.value = [file];
|
selectedFiles.value = [file];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
os.popupMenu(getDriveFileMenu(file, folder.value), (ev.currentTarget ?? ev.target ?? undefined) as HTMLElement | undefined);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function chooseFolder(folderToChoose: Misskey.entities.DriveFolder) {
|
function chooseFolder(folderToChoose: Misskey.entities.DriveFolder) {
|
||||||
|
|
Loading…
Reference in New Issue