feat: 尝试适配移动端,虽然目前尚未实现。

This commit is contained in:
539943419 committed 2024-10-01 02:41:42 +08:00
1 parent e876c117c6
commit 5a843bf24a
5 files changed
+57 -6

No files matched your search

+3
View File
@@ -23,18 +23,21 @@
"@codemirror/lang-vue": "^0.1.3", "@codemirror/lang-vue": "^0.1.3",
"@codemirror/lang-xml": "^6.1.0", "@codemirror/lang-xml": "^6.1.0",
"@codemirror/lang-yaml": "^6.1.1", "@codemirror/lang-yaml": "^6.1.1",
"@types/sortablejs": "^1.15.8",
"@vicons/ionicons5": "^0.12.0", "@vicons/ionicons5": "^0.12.0",
"aes-js": "^3.1.2", "aes-js": "^3.1.2",
"aplayer": "^1.10.1", "aplayer": "^1.10.1",
"axios": "^1.7.3", "axios": "^1.7.3",
"codemirror": "^6.0.1", "codemirror": "^6.0.1",
"copy-to-clipboard": "^3.3.3", "copy-to-clipboard": "^3.3.3",
"drag-drop-touch": "^1.3.1",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"naive-ui": "^2.39.0", "naive-ui": "^2.39.0",
"pdfjs-dist": "^4.5.136", "pdfjs-dist": "^4.5.136",
"sass": "^1.77.8", "sass": "^1.77.8",
"sortablejs": "^1.15.3",
"vue": "3.5.0", "vue": "3.5.0",
"vue-codemirror": "^6.1.1", "vue-codemirror": "^6.1.1",
"vue-draggable-plus": "^0.5.3", "vue-draggable-plus": "^0.5.3",
+19
View File
@@ -41,6 +41,9 @@ importers:
'@codemirror/lang-yaml': '@codemirror/lang-yaml':
specifier: ^6.1.1 specifier: ^6.1.1
version: 6.1.1(@codemirror/view@6.33.0) version: 6.1.1(@codemirror/view@6.33.0)
'@types/sortablejs':
specifier: ^1.15.8
version: 1.15.8
'@vicons/ionicons5': '@vicons/ionicons5':
specifier: ^0.12.0 specifier: ^0.12.0
version: 0.12.0 version: 0.12.0
@@ -59,6 +62,9 @@ importers:
copy-to-clipboard: copy-to-clipboard:
specifier: ^3.3.3 specifier: ^3.3.3
version: 3.3.3 version: 3.3.3
drag-drop-touch:
specifier: ^1.3.1
version: 1.3.1
localforage: localforage:
specifier: ^1.10.0 specifier: ^1.10.0
version: 1.10.0 version: 1.10.0
@@ -77,6 +83,9 @@ importers:
sass: sass:
specifier: ^1.77.8 specifier: ^1.77.8
version: 1.77.8 version: 1.77.8
sortablejs:
specifier: ^1.15.3
version: 1.15.3
vue: vue:
specifier: 3.5.0 specifier: 3.5.0
version: 3.5.0(typescript@5.5.4) version: 3.5.0(typescript@5.5.4)
@@ -782,6 +791,9 @@ packages:
downloadjs@1.4.7: downloadjs@1.4.7:
resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==} resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==}
drag-drop-touch@1.3.1:
resolution: {integrity: sha512-Q0/ZgsnW7VUjn+YqSnp1rvxjjPnZX5YLyVaw28einood+eTMcLzgOgHk8nyqIF9O18J68l+2htlEnbw5GsyTvQ==}
emoji-regex@8.0.0: emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -1169,6 +1181,9 @@ packages:
smoothscroll@0.4.0: smoothscroll@0.4.0:
resolution: {integrity: sha512-sggQ3U2Un38b3+q/j1P4Y4fCboCtoUIaBYoge+Lb6Xg1H8RTIif/hugVr+ErMtIDpvBbhQfTjtiTeYAfbw1ZGQ==} resolution: {integrity: sha512-sggQ3U2Un38b3+q/j1P4Y4fCboCtoUIaBYoge+Lb6Xg1H8RTIif/hugVr+ErMtIDpvBbhQfTjtiTeYAfbw1ZGQ==}
sortablejs@1.15.3:
resolution: {integrity: sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==}
source-map-js@1.2.0: source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -2090,6 +2105,8 @@ snapshots:
downloadjs@1.4.7: {} downloadjs@1.4.7: {}
drag-drop-touch@1.3.1: {}
emoji-regex@8.0.0: {} emoji-regex@8.0.0: {}
entities@4.5.0: {} entities@4.5.0: {}
@@ -2532,6 +2549,8 @@ snapshots:
smoothscroll@0.4.0: {} smoothscroll@0.4.0: {}
sortablejs@1.15.3: {}
source-map-js@1.2.0: {} source-map-js@1.2.0: {}
source-map@0.7.4: {} source-map@0.7.4: {}
+25
View File
@@ -0,0 +1,25 @@
<template>
<div ref="divRef" @dragstart="onDs" :draggable="true">
<slot></slot>
</div>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue';
// import Sortable from 'sortablejs'
const emit = defineEmits<{
onDragStart: [e: DragEvent]
}>()
const divRef = ref<HTMLDivElement>()
const onDs = (e: DragEvent) => {
emit('onDragStart', e)
}
onMounted(() => {
})
</script>
<style scoped></style>
+1
View File
@@ -1,4 +1,5 @@
import { createApp } from 'vue' import { createApp } from 'vue'
import App from './App.vue' import App from './App.vue'
// import 'drag-drop-touch'
createApp(App).mount('#app') createApp(App).mount('#app')
@@ -1,5 +1,5 @@
<template> <template>
<div class="miao-item" draggable="true" ref="itemRef" @dragstart="handleDragStart"> <miao-draggable-div class="miao-item" :isDraggable="draggable" ref="itemRef" @on-drag-start="handleDragStart">
<miaoContextMenu :options="dropDownOptions ?? []" :touch-time-out="500" @select="handleDropdownSelect"> <miaoContextMenu :options="dropDownOptions ?? []" :touch-time-out="500" @select="handleDropdownSelect">
<div class="item-main" :class="selected ? 'item-main-selected' : ''" ref="mainRef"> <div class="item-main" :class="selected ? 'item-main-selected' : ''" ref="mainRef">
<div class="item-main-front" :style="{ backgroundColor: props.color }"></div> <div class="item-main-front" :style="{ backgroundColor: props.color }"></div>
@@ -15,7 +15,7 @@
</div> </div>
</div> </div>
</miaoContextMenu> </miaoContextMenu>
</div> </miao-draggable-div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@@ -36,6 +36,7 @@ import { computed, onBeforeUnmount, onMounted, ref } from 'vue'
import dateFormatter from '@/hooks/dateFormatter' import dateFormatter from '@/hooks/dateFormatter'
import { NEllipsis } from 'naive-ui' import { NEllipsis } from 'naive-ui'
import { DropdownOption } from 'naive-ui/es/dropdown'; import { DropdownOption } from 'naive-ui/es/dropdown';
import miaoDraggableDiv from '@/components/miaoDraggableDiv.vue'
// import useMiaoFetchApi from '@/hooks/useMiaoFetchApi' // import useMiaoFetchApi from '@/hooks/useMiaoFetchApi'
// const miaoFetchApi = useMiaoFetchApi() // const miaoFetchApi = useMiaoFetchApi()
@@ -58,13 +59,15 @@ const emit = defineEmits<{
download: [] download: []
delete: [] delete: []
rename: [] rename: []
dragStart: [event: DragEvent] dragStart: [e: DragEvent]
onSelected: [] onSelected: []
plugin: [plugin: string] plugin: [plugin: string]
}>() }>()
const mainRef = ref<HTMLDivElement>() const mainRef = ref<HTMLDivElement>()
const draggable = ref(true)
// 使用ResizeObserver实现 // 使用ResizeObserver实现
const clientWidth = ref<number>(666) const clientWidth = ref<number>(666)
@@ -157,9 +160,8 @@ const Icon = computed(() => {
const itemRef = ref() const itemRef = ref()
const handleDragStart = (event: DragEvent) => { const handleDragStart = (e: DragEvent) => {
emit('dragStart', event) emit('dragStart', e)
// dataBus.set('dragData', [props.item])
} }
onMounted(() => { onMounted(() => {
@@ -198,6 +200,7 @@ onBeforeUnmount(() => {
align-items: center; align-items: center;
transition: background-color 0.3s ease; transition: background-color 0.3s ease;
overflow-x: hidden; overflow-x: hidden;
.item-main-front { .item-main-front {
height: 100%; height: 100%;
min-width: 10px; min-width: 10px;