wip
This commit is contained in:
parent
4d185b49cd
commit
db09744ce8
|
@ -10,9 +10,6 @@ declare const _VERSION_: string;
|
||||||
declare const _ENV_: string;
|
declare const _ENV_: string;
|
||||||
declare const _DEV_: boolean;
|
declare const _DEV_: boolean;
|
||||||
declare const _PERF_PREFIX_: string;
|
declare const _PERF_PREFIX_: string;
|
||||||
declare const _DATA_TRANSFER_DRIVE_FILE_: string;
|
|
||||||
declare const _DATA_TRANSFER_DRIVE_FOLDER_: string;
|
|
||||||
declare const _DATA_TRANSFER_DECK_COLUMN_: string;
|
|
||||||
|
|
||||||
// for dev-mode
|
// for dev-mode
|
||||||
declare const _LANGS_FULL_: string[][];
|
declare const _LANGS_FULL_: string[][];
|
||||||
|
|
|
@ -30,9 +30,6 @@ export default [
|
||||||
_VERSION_: false,
|
_VERSION_: false,
|
||||||
_ENV_: false,
|
_ENV_: false,
|
||||||
_PERF_PREFIX_: false,
|
_PERF_PREFIX_: false,
|
||||||
_DATA_TRANSFER_DRIVE_FILE_: false,
|
|
||||||
_DATA_TRANSFER_DRIVE_FOLDER_: false,
|
|
||||||
_DATA_TRANSFER_DECK_COLUMN_: false,
|
|
||||||
},
|
},
|
||||||
parser,
|
parser,
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
|
|
|
@ -11,9 +11,6 @@ declare const _VERSION_: string;
|
||||||
declare const _ENV_: string;
|
declare const _ENV_: string;
|
||||||
declare const _DEV_: boolean;
|
declare const _DEV_: boolean;
|
||||||
declare const _PERF_PREFIX_: string;
|
declare const _PERF_PREFIX_: string;
|
||||||
declare const _DATA_TRANSFER_DRIVE_FILE_: string;
|
|
||||||
declare const _DATA_TRANSFER_DRIVE_FOLDER_: string;
|
|
||||||
declare const _DATA_TRANSFER_DECK_COLUMN_: string;
|
|
||||||
|
|
||||||
// for dev-mode
|
// for dev-mode
|
||||||
declare const _LANGS_FULL_: string[][];
|
declare const _LANGS_FULL_: string[][];
|
||||||
|
|
|
@ -35,9 +35,6 @@ export default [
|
||||||
_VERSION_: false,
|
_VERSION_: false,
|
||||||
_ENV_: false,
|
_ENV_: false,
|
||||||
_PERF_PREFIX_: false,
|
_PERF_PREFIX_: false,
|
||||||
_DATA_TRANSFER_DRIVE_FILE_: false,
|
|
||||||
_DATA_TRANSFER_DRIVE_FOLDER_: false,
|
|
||||||
_DATA_TRANSFER_DECK_COLUMN_: false,
|
|
||||||
},
|
},
|
||||||
parser,
|
parser,
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
|
|
|
@ -10,9 +10,6 @@ declare const _VERSION_: string;
|
||||||
declare const _ENV_: string;
|
declare const _ENV_: string;
|
||||||
declare const _DEV_: boolean;
|
declare const _DEV_: boolean;
|
||||||
declare const _PERF_PREFIX_: string;
|
declare const _PERF_PREFIX_: string;
|
||||||
declare const _DATA_TRANSFER_DRIVE_FILE_: string;
|
|
||||||
declare const _DATA_TRANSFER_DRIVE_FOLDER_: string;
|
|
||||||
declare const _DATA_TRANSFER_DECK_COLUMN_: string;
|
|
||||||
|
|
||||||
// for dev-mode
|
// for dev-mode
|
||||||
declare const _LANGS_FULL_: string[][];
|
declare const _LANGS_FULL_: string[][];
|
||||||
|
|
|
@ -30,9 +30,6 @@ export default [
|
||||||
_VERSION_: false,
|
_VERSION_: false,
|
||||||
_ENV_: false,
|
_ENV_: false,
|
||||||
_PERF_PREFIX_: false,
|
_PERF_PREFIX_: false,
|
||||||
_DATA_TRANSFER_DRIVE_FILE_: false,
|
|
||||||
_DATA_TRANSFER_DRIVE_FOLDER_: false,
|
|
||||||
_DATA_TRANSFER_DECK_COLUMN_: false,
|
|
||||||
},
|
},
|
||||||
parser,
|
parser,
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
|
|
|
@ -48,6 +48,7 @@ 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 { deviceKind } from '@/utility/device-kind.js';
|
||||||
import { useRouter } from '@/router.js';
|
import { useRouter } from '@/router.js';
|
||||||
|
import { DATA_TRANSFER_DRIVE_FILE } from '@/consts.js';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
@ -63,7 +64,7 @@ const props = withDefaults(defineProps<{
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'chosen', r: Misskey.entities.DriveFile): void;
|
(ev: 'chosen', r: Misskey.entities.DriveFile): void;
|
||||||
(ev: 'dragstart'): void;
|
(ev: 'dragstart', dragEvent: DragEvent): void;
|
||||||
(ev: 'dragend'): void;
|
(ev: 'dragend'): void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
|
@ -90,11 +91,11 @@ function onContextmenu(ev: MouseEvent) {
|
||||||
function onDragstart(ev: DragEvent) {
|
function onDragstart(ev: DragEvent) {
|
||||||
if (ev.dataTransfer) {
|
if (ev.dataTransfer) {
|
||||||
ev.dataTransfer.effectAllowed = 'move';
|
ev.dataTransfer.effectAllowed = 'move';
|
||||||
ev.dataTransfer.setData(_DATA_TRANSFER_DRIVE_FILE_, JSON.stringify(props.file));
|
ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FILE, JSON.stringify(props.file));
|
||||||
}
|
}
|
||||||
isDragging.value = true;
|
isDragging.value = true;
|
||||||
|
|
||||||
emit('dragstart');
|
emit('dragstart', ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDragend() {
|
function onDragend() {
|
||||||
|
|
|
@ -43,6 +43,7 @@ import { i18n } from '@/i18n.js';
|
||||||
import { claimAchievement } from '@/utility/achievements.js';
|
import { claimAchievement } from '@/utility/achievements.js';
|
||||||
import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
|
import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
|
||||||
import { prefer } from '@/preferences.js';
|
import { prefer } from '@/preferences.js';
|
||||||
|
import { DATA_TRANSFER_DRIVE_FILE, DATA_TRANSFER_DRIVE_FOLDER } from '@/consts.js';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
folder: Misskey.entities.DriveFolder;
|
folder: Misskey.entities.DriveFolder;
|
||||||
|
@ -101,8 +102,8 @@ function onDragover(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
||||||
const isDriveFile = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FILE_;
|
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
|
||||||
const isDriveFolder = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FOLDER_;
|
const isDriveFolder = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDER;
|
||||||
|
|
||||||
if (isFile || isDriveFile || isDriveFolder) {
|
if (isFile || isDriveFile || isDriveFolder) {
|
||||||
switch (ev.dataTransfer.effectAllowed) {
|
switch (ev.dataTransfer.effectAllowed) {
|
||||||
|
@ -148,7 +149,7 @@ function onDrop(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region ドライブのファイル
|
//#region ドライブのファイル
|
||||||
const driveFile = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FILE_);
|
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
|
||||||
if (driveFile != null && driveFile !== '') {
|
if (driveFile != null && driveFile !== '') {
|
||||||
const file = JSON.parse(driveFile);
|
const file = JSON.parse(driveFile);
|
||||||
emit('removeFile', file.id);
|
emit('removeFile', file.id);
|
||||||
|
@ -160,7 +161,7 @@ function onDrop(ev: DragEvent) {
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region ドライブのフォルダ
|
//#region ドライブのフォルダ
|
||||||
const driveFolder = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FOLDER_);
|
const driveFolder = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FOLDER);
|
||||||
if (driveFolder != null && driveFolder !== '') {
|
if (driveFolder != null && driveFolder !== '') {
|
||||||
const folder = JSON.parse(driveFolder);
|
const folder = JSON.parse(driveFolder);
|
||||||
|
|
||||||
|
@ -198,7 +199,7 @@ function onDragstart(ev: DragEvent) {
|
||||||
if (!ev.dataTransfer) return;
|
if (!ev.dataTransfer) return;
|
||||||
|
|
||||||
ev.dataTransfer.effectAllowed = 'move';
|
ev.dataTransfer.effectAllowed = 'move';
|
||||||
ev.dataTransfer.setData(_DATA_TRANSFER_DRIVE_FOLDER_, JSON.stringify(props.folder));
|
ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FOLDER, JSON.stringify(props.folder));
|
||||||
isDragging.value = true;
|
isDragging.value = true;
|
||||||
|
|
||||||
// 親ブラウザに対して、ドラッグが開始されたフラグを立てる
|
// 親ブラウザに対して、ドラッグが開始されたフラグを立てる
|
||||||
|
|
|
@ -22,6 +22,7 @@ import { ref } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import { misskeyApi } from '@/utility/misskey-api.js';
|
import { misskeyApi } from '@/utility/misskey-api.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
|
import { DATA_TRANSFER_DRIVE_FILE, DATA_TRANSFER_DRIVE_FOLDER } from '@/consts.js';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
folder?: Misskey.entities.DriveFolder;
|
folder?: Misskey.entities.DriveFolder;
|
||||||
|
@ -59,8 +60,8 @@ function onDragover(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
||||||
const isDriveFile = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FILE_;
|
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
|
||||||
const isDriveFolder = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FOLDER_;
|
const isDriveFolder = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDER;
|
||||||
|
|
||||||
if (isFile || isDriveFile || isDriveFolder) {
|
if (isFile || isDriveFile || isDriveFolder) {
|
||||||
switch (ev.dataTransfer.effectAllowed) {
|
switch (ev.dataTransfer.effectAllowed) {
|
||||||
|
@ -108,7 +109,7 @@ function onDrop(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region ドライブのファイル
|
//#region ドライブのファイル
|
||||||
const driveFile = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FILE_);
|
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
|
||||||
if (driveFile != null && driveFile !== '') {
|
if (driveFile != null && driveFile !== '') {
|
||||||
const file = JSON.parse(driveFile);
|
const file = JSON.parse(driveFile);
|
||||||
emit('removeFile', file.id);
|
emit('removeFile', file.id);
|
||||||
|
@ -120,7 +121,7 @@ function onDrop(ev: DragEvent) {
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region ドライブのフォルダ
|
//#region ドライブのフォルダ
|
||||||
const driveFolder = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FOLDER_);
|
const driveFolder = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FOLDER);
|
||||||
if (driveFolder != null && driveFolder !== '') {
|
if (driveFolder != null && driveFolder !== '') {
|
||||||
const folder = JSON.parse(driveFolder);
|
const folder = JSON.parse(driveFolder);
|
||||||
// 移動先が自分自身ならreject
|
// 移動先が自分自身ならreject
|
||||||
|
|
|
@ -105,7 +105,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
:selectMode="select === 'file' || isEditMode"
|
:selectMode="select === 'file' || isEditMode"
|
||||||
:isSelected="selectedFiles.some(x => x.id === file.id)"
|
:isSelected="selectedFiles.some(x => x.id === file.id)"
|
||||||
@chosen="onChooseFile"
|
@chosen="onChooseFile"
|
||||||
@dragstart="isDragSource = true"
|
@dragstart="onFileDragstart(file, $event)"
|
||||||
@dragend="isDragSource = false"
|
@dragend="isDragSource = false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -152,6 +152,7 @@ import { store } from '@/store.js';
|
||||||
import { isSeparatorNeeded, getSeparatorInfo, makeDateGroupedTimelineComputedRef } from '@/utility/timeline-date-separate.js';
|
import { isSeparatorNeeded, getSeparatorInfo, makeDateGroupedTimelineComputedRef } from '@/utility/timeline-date-separate.js';
|
||||||
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 { DATA_TRANSFER_DRIVE_FILE, DATA_TRANSFER_DRIVE_FILES, DATA_TRANSFER_DRIVE_FOLDER } from '@/consts.js';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{
|
const props = withDefaults(defineProps<{
|
||||||
initialFolder?: Misskey.entities.DriveFolder['id'] | null;
|
initialFolder?: Misskey.entities.DriveFolder['id'] | null;
|
||||||
|
@ -250,6 +251,19 @@ function onStreamDriveFileCreated(file: Misskey.entities.DriveFile) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onFileDragstart(file: Misskey.entities.DriveFile, ev: DragEvent) {
|
||||||
|
if (isEditMode.value) {
|
||||||
|
if (!selectedFiles.value.some(f => f.id === file.id)) {
|
||||||
|
selectedFiles.value.push(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
ev.dataTransfer.effectAllowed = 'move';
|
||||||
|
ev.dataTransfer.setData(DATA_TRANSFER_DRIVE_FILES, JSON.stringify(selectedFiles.value));
|
||||||
|
}
|
||||||
|
|
||||||
|
isDragSource.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
function onDragover(ev: DragEvent) {
|
function onDragover(ev: DragEvent) {
|
||||||
if (!ev.dataTransfer) return;
|
if (!ev.dataTransfer) return;
|
||||||
|
|
||||||
|
@ -261,8 +275,8 @@ function onDragover(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
||||||
const isDriveFile = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FILE_;
|
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
|
||||||
const isDriveFolder = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FOLDER_;
|
const isDriveFolder = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FOLDER;
|
||||||
if (isFile || isDriveFile || isDriveFolder) {
|
if (isFile || isDriveFile || isDriveFolder) {
|
||||||
switch (ev.dataTransfer.effectAllowed) {
|
switch (ev.dataTransfer.effectAllowed) {
|
||||||
case 'all':
|
case 'all':
|
||||||
|
@ -309,7 +323,7 @@ function onDrop(ev: DragEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region ドライブのファイル
|
//#region ドライブのファイル
|
||||||
const driveFile = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FILE_);
|
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
|
||||||
if (driveFile != null && driveFile !== '') {
|
if (driveFile != null && driveFile !== '') {
|
||||||
const file = JSON.parse(driveFile);
|
const file = JSON.parse(driveFile);
|
||||||
if (filesPaginator.items.value.some(f => f.id === file.id)) return;
|
if (filesPaginator.items.value.some(f => f.id === file.id)) return;
|
||||||
|
@ -322,7 +336,7 @@ function onDrop(ev: DragEvent) {
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region ドライブのフォルダ
|
//#region ドライブのフォルダ
|
||||||
const driveFolder = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FOLDER_);
|
const driveFolder = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FOLDER);
|
||||||
if (driveFolder != null && driveFolder !== '') {
|
if (driveFolder != null && driveFolder !== '') {
|
||||||
const droppedFolder = JSON.parse(driveFolder);
|
const droppedFolder = JSON.parse(driveFolder);
|
||||||
|
|
||||||
|
@ -651,7 +665,9 @@ function closeTip() {
|
||||||
}
|
}
|
||||||
|
|
||||||
useGlobalEvent('driveFilesMoved', (files, to) => {
|
useGlobalEvent('driveFilesMoved', (files, to) => {
|
||||||
// TODO
|
if ((to?.id ?? null) === (folder.value?.id ?? null)) {
|
||||||
|
filesPaginator.unshiftItems(files);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let connection: Misskey.ChannelConnection<Misskey.Channels['drive']> | null = null;
|
let connection: Misskey.ChannelConnection<Misskey.Channels['drive']> | null = null;
|
||||||
|
|
|
@ -138,6 +138,7 @@ import { prefer } from '@/preferences.js';
|
||||||
import { getPluginHandlers } from '@/plugin.js';
|
import { getPluginHandlers } from '@/plugin.js';
|
||||||
import { DI } from '@/di.js';
|
import { DI } from '@/di.js';
|
||||||
import { globalEvents } from '@/events.js';
|
import { globalEvents } from '@/events.js';
|
||||||
|
import { DATA_TRANSFER_DRIVE_FILE } from '@/consts.js';
|
||||||
|
|
||||||
const $i = ensureSignin();
|
const $i = ensureSignin();
|
||||||
|
|
||||||
|
@ -701,7 +702,7 @@ async function onPaste(ev: ClipboardEvent) {
|
||||||
function onDragover(ev) {
|
function onDragover(ev) {
|
||||||
if (!ev.dataTransfer.items[0]) return;
|
if (!ev.dataTransfer.items[0]) return;
|
||||||
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
||||||
const isDriveFile = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FILE_;
|
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
|
||||||
if (isFile || isDriveFile) {
|
if (isFile || isDriveFile) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
draghover.value = true;
|
draghover.value = true;
|
||||||
|
@ -743,7 +744,7 @@ function onDrop(ev: DragEvent): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region ドライブのファイル
|
//#region ドライブのファイル
|
||||||
const driveFile = ev.dataTransfer?.getData(_DATA_TRANSFER_DRIVE_FILE_);
|
const driveFile = ev.dataTransfer?.getData(DATA_TRANSFER_DRIVE_FILE);
|
||||||
if (driveFile != null && driveFile !== '') {
|
if (driveFile != null && driveFile !== '') {
|
||||||
const file = JSON.parse(driveFile);
|
const file = JSON.parse(driveFile);
|
||||||
files.value.push(file);
|
files.value.push(file);
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const DATA_TRANSFER_DRIVE_FILE = 'misskey-drive-file';
|
||||||
|
export const DATA_TRANSFER_DRIVE_FILES = 'misskey-drive-files';
|
||||||
|
export const DATA_TRANSFER_DRIVE_FOLDER = 'misskey-drive-folder';
|
||||||
|
export const DATA_TRANSFER_DRIVE_FOLDERS = 'misskey-drive-folders';
|
||||||
|
export const DATA_TRANSFER_DECK_COLUMN = 'misskey-deck-column';
|
|
@ -47,6 +47,7 @@ import { misskeyApi } from '@/utility/misskey-api.js';
|
||||||
import { prefer } from '@/preferences.js';
|
import { prefer } from '@/preferences.js';
|
||||||
import { Autocomplete } from '@/utility/autocomplete.js';
|
import { Autocomplete } from '@/utility/autocomplete.js';
|
||||||
import { emojiPicker } from '@/utility/emoji-picker.js';
|
import { emojiPicker } from '@/utility/emoji-picker.js';
|
||||||
|
import { DATA_TRANSFER_DRIVE_FILE } from '@/consts.js';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
user?: Misskey.entities.UserDetailed | null;
|
user?: Misskey.entities.UserDetailed | null;
|
||||||
|
@ -101,7 +102,7 @@ function onDragover(ev: DragEvent) {
|
||||||
if (!ev.dataTransfer) return;
|
if (!ev.dataTransfer) return;
|
||||||
|
|
||||||
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
const isFile = ev.dataTransfer.items[0].kind === 'file';
|
||||||
const isDriveFile = ev.dataTransfer.types[0] === _DATA_TRANSFER_DRIVE_FILE_;
|
const isDriveFile = ev.dataTransfer.types[0] === DATA_TRANSFER_DRIVE_FILE;
|
||||||
if (isFile || isDriveFile) {
|
if (isFile || isDriveFile) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
switch (ev.dataTransfer.effectAllowed) {
|
switch (ev.dataTransfer.effectAllowed) {
|
||||||
|
@ -141,7 +142,7 @@ function onDrop(ev: DragEvent): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
//#region ドライブのファイル
|
//#region ドライブのファイル
|
||||||
const driveFile = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FILE_);
|
const driveFile = ev.dataTransfer.getData(DATA_TRANSFER_DRIVE_FILE);
|
||||||
if (driveFile != null && driveFile !== '') {
|
if (driveFile != null && driveFile !== '') {
|
||||||
file.value = JSON.parse(driveFile);
|
file.value = JSON.parse(driveFile);
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
|
@ -51,6 +51,7 @@ import * as os from '@/os.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { prefer } from '@/preferences.js';
|
import { prefer } from '@/preferences.js';
|
||||||
import { DI } from '@/di.js';
|
import { DI } from '@/di.js';
|
||||||
|
import { DATA_TRANSFER_DECK_COLUMN } from '@/consts.js';
|
||||||
|
|
||||||
provide('shouldHeaderThin', true);
|
provide('shouldHeaderThin', true);
|
||||||
provide('shouldOmitHeaderTitle', true);
|
provide('shouldOmitHeaderTitle', true);
|
||||||
|
@ -262,7 +263,7 @@ function goTop() {
|
||||||
|
|
||||||
function onDragstart(ev) {
|
function onDragstart(ev) {
|
||||||
ev.dataTransfer.effectAllowed = 'move';
|
ev.dataTransfer.effectAllowed = 'move';
|
||||||
ev.dataTransfer.setData(_DATA_TRANSFER_DECK_COLUMN_, props.column.id);
|
ev.dataTransfer.setData(DATA_TRANSFER_DECK_COLUMN, props.column.id);
|
||||||
|
|
||||||
// Chromeのバグで、Dragstartハンドラ内ですぐにDOMを変更する(=リアクティブなプロパティを変更する)とDragが終了してしまう
|
// Chromeのバグで、Dragstartハンドラ内ですぐにDOMを変更する(=リアクティブなプロパティを変更する)とDragが終了してしまう
|
||||||
// SEE: https://stackoverflow.com/questions/19639969/html5-dragend-event-firing-immediately
|
// SEE: https://stackoverflow.com/questions/19639969/html5-dragend-event-firing-immediately
|
||||||
|
@ -281,7 +282,7 @@ function onDragover(ev) {
|
||||||
// 自分自身にはドロップさせない
|
// 自分自身にはドロップさせない
|
||||||
ev.dataTransfer.dropEffect = 'none';
|
ev.dataTransfer.dropEffect = 'none';
|
||||||
} else {
|
} else {
|
||||||
const isDeckColumn = ev.dataTransfer.types[0] === _DATA_TRANSFER_DECK_COLUMN_;
|
const isDeckColumn = ev.dataTransfer.types[0] === DATA_TRANSFER_DECK_COLUMN;
|
||||||
|
|
||||||
ev.dataTransfer.dropEffect = isDeckColumn ? 'move' : 'none';
|
ev.dataTransfer.dropEffect = isDeckColumn ? 'move' : 'none';
|
||||||
|
|
||||||
|
@ -297,7 +298,7 @@ function onDrop(ev) {
|
||||||
draghover.value = false;
|
draghover.value = false;
|
||||||
os.deckGlobalEvents.emit('column.dragEnd');
|
os.deckGlobalEvents.emit('column.dragEnd');
|
||||||
|
|
||||||
const id = ev.dataTransfer.getData(_DATA_TRANSFER_DECK_COLUMN_);
|
const id = ev.dataTransfer.getData(DATA_TRANSFER_DECK_COLUMN);
|
||||||
if (id != null && id !== '') {
|
if (id != null && id !== '') {
|
||||||
swapColumn(props.column.id, id);
|
swapColumn(props.column.id, id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,9 +148,6 @@ export function getConfig(): UserConfig {
|
||||||
_ENV_: JSON.stringify(process.env.NODE_ENV),
|
_ENV_: JSON.stringify(process.env.NODE_ENV),
|
||||||
_DEV_: process.env.NODE_ENV !== 'production',
|
_DEV_: process.env.NODE_ENV !== 'production',
|
||||||
_PERF_PREFIX_: JSON.stringify('Misskey:'),
|
_PERF_PREFIX_: JSON.stringify('Misskey:'),
|
||||||
_DATA_TRANSFER_DRIVE_FILE_: JSON.stringify('mk_drive_file'),
|
|
||||||
_DATA_TRANSFER_DRIVE_FOLDER_: JSON.stringify('mk_drive_folder'),
|
|
||||||
_DATA_TRANSFER_DECK_COLUMN_: JSON.stringify('mk_deck_column'),
|
|
||||||
__VUE_OPTIONS_API__: true,
|
__VUE_OPTIONS_API__: true,
|
||||||
__VUE_PROD_DEVTOOLS__: false,
|
__VUE_PROD_DEVTOOLS__: false,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue