wip
This commit is contained in:
parent
4ff3cdde87
commit
9bf9b10ba4
|
@ -8,7 +8,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:class="[$style.root, { [$style.draghover]: draghover }]"
|
:class="[$style.root, { [$style.draghover]: draghover }]"
|
||||||
draggable="true"
|
draggable="true"
|
||||||
:title="title"
|
:title="title"
|
||||||
@click="onClick"
|
|
||||||
@contextmenu.stop="onContextmenu"
|
@contextmenu.stop="onContextmenu"
|
||||||
@mouseover="onMouseover"
|
@mouseover="onMouseover"
|
||||||
@mouseout="onMouseout"
|
@mouseout="onMouseout"
|
||||||
|
@ -57,7 +56,6 @@ const props = withDefaults(defineProps<{
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'chosen', v: Misskey.entities.DriveFolder): void;
|
(ev: 'chosen', v: Misskey.entities.DriveFolder): void;
|
||||||
(ev: 'unchose', v: Misskey.entities.DriveFolder): void;
|
(ev: 'unchose', v: Misskey.entities.DriveFolder): void;
|
||||||
(ev: 'move', v: Misskey.entities.DriveFolder): void;
|
|
||||||
(ev: 'upload', file: File, folder: Misskey.entities.DriveFolder);
|
(ev: 'upload', file: File, folder: Misskey.entities.DriveFolder);
|
||||||
(ev: 'dragstart'): void;
|
(ev: 'dragstart'): void;
|
||||||
(ev: 'dragend'): void;
|
(ev: 'dragend'): void;
|
||||||
|
@ -77,10 +75,6 @@ function checkboxClicked() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onClick() {
|
|
||||||
emit('move', props.folder);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onMouseover() {
|
function onMouseover() {
|
||||||
hover.value = true;
|
hover.value = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
:class="[$style.root, { [$style.draghover]: draghover }]"
|
:class="[$style.root, { [$style.draghover]: draghover }]"
|
||||||
@click="onClick"
|
|
||||||
@dragover.prevent.stop="onDragover"
|
@dragover.prevent.stop="onDragover"
|
||||||
@dragenter="onDragenter"
|
@dragenter="onDragenter"
|
||||||
@dragleave="onDragleave"
|
@dragleave="onDragleave"
|
||||||
|
@ -30,25 +29,11 @@ const props = defineProps<{
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'move', v?: Misskey.entities.DriveFolder): void;
|
|
||||||
(ev: 'upload', file: File, folder?: Misskey.entities.DriveFolder | null): void;
|
(ev: 'upload', file: File, folder?: Misskey.entities.DriveFolder | null): void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const hover = ref(false);
|
|
||||||
const draghover = ref(false);
|
const draghover = ref(false);
|
||||||
|
|
||||||
function onClick() {
|
|
||||||
emit('move', props.folder);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onMouseover() {
|
|
||||||
hover.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onMouseout() {
|
|
||||||
hover.value = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onDragover(ev: DragEvent) {
|
function onDragover(ev: DragEvent) {
|
||||||
if (!ev.dataTransfer) return;
|
if (!ev.dataTransfer) return;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<XNavFolder
|
<XNavFolder
|
||||||
:class="[$style.navPathItem, { [$style.navCurrent]: folder == null }]"
|
:class="[$style.navPathItem, { [$style.navCurrent]: folder == null }]"
|
||||||
:parentFolder="folder"
|
:parentFolder="folder"
|
||||||
@move="move"
|
@click="cd(null)"
|
||||||
@upload="upload"
|
@upload="upload"
|
||||||
/>
|
/>
|
||||||
<template v-for="f in hierarchyFolders">
|
<template v-for="f in hierarchyFolders">
|
||||||
|
@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:folder="f"
|
:folder="f"
|
||||||
:parentFolder="folder"
|
:parentFolder="folder"
|
||||||
:class="[$style.navPathItem]"
|
:class="[$style.navPathItem]"
|
||||||
@move="move"
|
@click="cd(f)"
|
||||||
@upload="upload"
|
@upload="upload"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -42,10 +42,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkButton>
|
</MkButton>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<MkButton v-if="!selectedFolders.some(f => f.id === folder.id)" @click="selectedFolders.push(folder)">
|
<MkButton v-if="!selectedFolders.some(f => f.id === folder!.id)" @click="selectedFolders.push(folder)">
|
||||||
<i class="ti ti-square"></i> {{ i18n.ts.selectThisFolder }}
|
<i class="ti ti-square"></i> {{ i18n.ts.selectThisFolder }}
|
||||||
</MkButton>
|
</MkButton>
|
||||||
<MkButton v-else @click="selectedFolders = selectedFolders.filter(f => f.id !== folder.id)">
|
<MkButton v-else @click="selectedFolders = selectedFolders.filter(f => f.id !== folder!.id)">
|
||||||
<i class="ti ti-checkbox"></i> {{ i18n.ts.unselectThisFolder }}
|
<i class="ti ti-checkbox"></i> {{ i18n.ts.unselectThisFolder }}
|
||||||
</MkButton>
|
</MkButton>
|
||||||
</template>
|
</template>
|
||||||
|
@ -73,7 +73,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:isSelected="selectedFolders.some(x => x.id === f.id)"
|
:isSelected="selectedFolders.some(x => x.id === f.id)"
|
||||||
@chosen="chooseFolder"
|
@chosen="chooseFolder"
|
||||||
@unchose="unchoseFolder"
|
@unchose="unchoseFolder"
|
||||||
@move="move"
|
@click="cd(f)"
|
||||||
@upload="upload"
|
@upload="upload"
|
||||||
@dragstart="isDragSource = true"
|
@dragstart="isDragSource = true"
|
||||||
@dragend="isDragSource = false"
|
@dragend="isDragSource = false"
|
||||||
|
@ -412,7 +412,7 @@ async function renameFolder(folderToRename: Misskey.entities.DriveFolder) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// FIXME: 画面を更新するために自分自身に移動
|
// FIXME: 画面を更新するために自分自身に移動
|
||||||
move(updatedFolder);
|
cd(updatedFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
|
function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
|
||||||
|
@ -420,7 +420,7 @@ function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
|
||||||
folderId: folderToDelete.id,
|
folderId: folderToDelete.id,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// 削除時に親フォルダに移動
|
// 削除時に親フォルダに移動
|
||||||
move(folderToDelete.parentId);
|
cd(folderToDelete.parentId);
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
switch (err.id) {
|
switch (err.id) {
|
||||||
case 'b0fc8a17-963c-405d-bfbc-859a487295e1':
|
case 'b0fc8a17-963c-405d-bfbc-859a487295e1':
|
||||||
|
@ -495,7 +495,7 @@ function unchoseFolder(folderToUnchose: Misskey.entities.DriveFolder) {
|
||||||
selectedFolders.value = selectedFolders.value.filter(f => f.id !== folderToUnchose.id);
|
selectedFolders.value = selectedFolders.value.filter(f => f.id !== folderToUnchose.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function move(target?: Misskey.entities.DriveFolder | Misskey.entities.DriveFolder['id' | 'parentId']) {
|
function cd(target?: Misskey.entities.DriveFolder | Misskey.entities.DriveFolder['id' | 'parentId']) {
|
||||||
if (!target) {
|
if (!target) {
|
||||||
goRoot();
|
goRoot();
|
||||||
return;
|
return;
|
||||||
|
@ -663,7 +663,7 @@ onMounted(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (props.initialFolder) {
|
if (props.initialFolder) {
|
||||||
move(props.initialFolder);
|
cd(props.initialFolder);
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue