summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkWidgets.vue
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2026-01-07 21:46:03 +0900
committerGitHub <noreply@github.com>2026-01-07 21:46:03 +0900
commit8c5572dd3ba11104493d8386fe56cb6ff96cfc56 (patch)
tree440ca5048723e10258ad84729f095b60b2d4fe70 /packages/frontend/src/components/MkWidgets.vue
parentUpdate README.md (diff)
downloadmisskey-8c5572dd3ba11104493d8386fe56cb6ff96cfc56.tar.gz
misskey-8c5572dd3ba11104493d8386fe56cb6ff96cfc56.tar.bz2
misskey-8c5572dd3ba11104493d8386fe56cb6ff96cfc56.zip
enhance(frontend): remove vuedraggable (#17073)
* wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update page-editor.blocks.vue * Update MkDraggable.vue * refactor * refactor * ✌️ * refactor * Update MkDraggable.vue * ios * 🎨 * 🎨
Diffstat (limited to 'packages/frontend/src/components/MkWidgets.vue')
-rw-r--r--packages/frontend/src/components/MkWidgets.vue38
1 files changed, 12 insertions, 26 deletions
diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue
index cf7c2cda80..e7712e8aae 100644
--- a/packages/frontend/src/components/MkWidgets.vue
+++ b/packages/frontend/src/components/MkWidgets.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div :class="$style.root">
+<div :class="$style.root" class="_gaps_s">
<template v-if="edit">
<header :class="$style.editHeader">
<MkSelect v-model="widgetAdderSelected" :items="widgetAdderSelectedDef" style="margin-bottom: var(--MI-margin)" data-cy-widget-select>
@@ -13,25 +13,21 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton inline primary data-cy-widget-add @click="addWidget"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
<MkButton inline @click="emit('exit')">{{ i18n.ts.close }}</MkButton>
</header>
- <Sortable
+ <MkDraggable
:modelValue="props.widgets"
- itemKey="id"
- handle=".handle"
- :animation="150"
- :group="{ name: 'SortableMkWidgets' }"
- :class="$style.editEditing"
+ direction="vertical"
+ withGaps
+ group="MkWidgets"
@update:modelValue="v => emit('updateWidgets', v)"
>
- <template #item="{element}">
+ <template #default="{ item }">
<div :class="[$style.widget, $style.customizeContainer]" data-cy-customize-container>
- <button :class="$style.customizeContainerConfig" class="_button" @click.prevent.stop="configWidget(element.id)"><i class="ti ti-settings"></i></button>
- <button :class="$style.customizeContainerRemove" data-cy-customize-container-remove class="_button" @click.prevent.stop="removeWidget(element)"><i class="ti ti-x"></i></button>
- <div class="handle">
- <component :is="`widget-${element.name}`" :ref="el => widgetRefs[element.id] = el" class="widget" :class="$style.customizeContainerHandleWidget" :widget="element" @updateProps="updateWidget(element.id, $event)"/>
- </div>
+ <button :class="$style.customizeContainerConfig" class="_button" @click.prevent.stop="configWidget(item.id)"><i class="ti ti-settings"></i></button>
+ <button :class="$style.customizeContainerRemove" data-cy-customize-container-remove class="_button" @click.prevent.stop="removeWidget(item)"><i class="ti ti-x"></i></button>
+ <component :is="`widget-${item.name}`" :ref="el => widgetRefs[item.id] = el" :class="$style.customizeContainerHandleWidget" :widget="item" @updateProps="updateWidget(item.id, $event)"/>
</div>
</template>
- </Sortable>
+ </MkDraggable>
</template>
<component :is="`widget-${widget.name}`" v-for="widget in _widgets" v-else :key="widget.id" :ref="el => widgetRefs[widget.id] = el" :class="$style.widget" :widget="widget" @updateProps="updateWidget(widget.id, $event)" @contextmenu.stop="onContextmenu(widget, $event)"/>
</div>
@@ -49,19 +45,18 @@ export type DefaultStoredWidget = {
</script>
<script lang="ts" setup>
-import { defineAsyncComponent, ref, computed } from 'vue';
+import { computed } from 'vue';
import { isLink } from '@@/js/is-link.js';
import { genId } from '@/utility/id.js';
import MkSelect from '@/components/MkSelect.vue';
import MkButton from '@/components/MkButton.vue';
+import MkDraggable from '@/components/MkDraggable.vue';
import { widgets as widgetDefs, federationWidgets } from '@/widgets/index.js';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { instance } from '@/instance.js';
import { useMkSelect } from '@/composables/use-mkselect.js';
-const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default));
-
const props = defineProps<{
widgets: Widget[];
edit: boolean;
@@ -142,11 +137,6 @@ function onContextmenu(widget: Widget, ev: MouseEvent) {
.widget {
contain: content;
- margin: var(--MI-margin) 0;
-
- &:first-of-type {
- margin-top: 0;
- }
}
.edit {
@@ -158,10 +148,6 @@ function onContextmenu(widget: Widget, ev: MouseEvent) {
padding: 4px;
}
}
-
- &Editing {
- min-height: 100px;
- }
}
.customizeContainer {