From 540f9ba28f60f73dc44bcb09c26ff1a89ad407d9 Mon Sep 17 00:00:00 2001 From: Frankie Huang Date: Sat, 5 Apr 2025 19:57:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5=20view-ui-plus=20?= =?UTF-8?q?=E6=A1=86=E6=9E=B6,=20=E5=AE=8C=E6=88=90=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=92=8C=E6=96=87=E4=BB=B6=E6=A0=91=E7=9A=84?= =?UTF-8?q?=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 + package-lock.json | 124 ++++++++++++++++ package.json | 1 + src/App.vue | 248 ++++++++++++-------------------- src/components/FolderTree.vue | 120 ++++++++++++++++ src/components/SelectFolder.vue | 114 +++++++++------ src/main.js | 4 +- 7 files changed, 420 insertions(+), 198 deletions(-) create mode 100644 src/components/FolderTree.vue diff --git a/README.md b/README.md index 0e88e6a..be6de4c 100644 --- a/README.md +++ b/README.md @@ -49,3 +49,10 @@ This template should help get you started developing with Tauri + Vue 3 in Vite. 1. 新建 SelectFolder.vue 用于打开本地目录 2. 在 App.vue 使用组件 SelectFolder 和 MarkdownEditor.vue 3. 使用 plugin-fs 插件读写本地文件内容 + +## 引入 view-ui-plus 组件库,优化 UI 布局 + +1. `npm install view-ui-plus --save` +2. 使用 分割左右面板 +3. 使用 树形控件渲染文件树 +4. 联动 SelectFolder、FolderTree 和 MarkdownEditor 组件 diff --git a/package-lock.json b/package-lock.json index 696a58f..30daa00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@tauri-apps/plugin-fs": "^2.2.1", "@tauri-apps/plugin-opener": "^2", "scriptjs": "^2.5.9", + "view-ui-plus": "^1.3.19", "vue": "^3.5.13" }, "devDependencies": { @@ -1153,12 +1154,54 @@ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, + "node_modules/async-validator": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz", + "integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==", + "license": "MIT" + }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==", + "license": "MIT" + }, + "node_modules/countup.js": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-1.9.3.tgz", + "integrity": "sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A==", + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "license": "MIT", + "dependencies": { + "batch-processor": "1.0.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1233,6 +1276,24 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/js-calendar": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz", + "integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==", + "license": "ISC" + }, + "node_modules/lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -1260,12 +1321,32 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -1340,6 +1421,12 @@ "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==", "license": "MIT" }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -1349,6 +1436,43 @@ "node": ">=0.10.0" } }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/v-click-outside-x": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz", + "integrity": "sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg==", + "license": "MIT", + "engines": { + "node": ">=8.11.4", + "npm": "6.4.1" + } + }, + "node_modules/view-ui-plus": { + "version": "1.3.19", + "resolved": "https://registry.npmjs.org/view-ui-plus/-/view-ui-plus-1.3.19.tgz", + "integrity": "sha512-CBIuO/9+mbTTQnCWs2GOY+jyQiJLlc5EdxdvuyEGIiKV0YxQW/rLXUQabmm1w9n0iNTXV6adtqXYo2xzdr1NIA==", + "license": "MIT", + "dependencies": { + "async-validator": "^3.3.0", + "countup.js": "^1.9.3", + "dayjs": "^1.11.0", + "deepmerge": "^2.2.1", + "element-resize-detector": "^1.2.0", + "js-calendar": "^1.2.3", + "lodash.chunk": "^4.2.0", + "lodash.throttle": "^4.1.1", + "numeral": "^2.0.6", + "popper.js": "^1.14.6", + "select": "^1.1.2", + "tinycolor2": "^1.4.1", + "v-click-outside-x": "^3.7.1" + } + }, "node_modules/vite": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", diff --git a/package.json b/package.json index 0802ed1..af130d4 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@tauri-apps/plugin-fs": "^2.2.1", "@tauri-apps/plugin-opener": "^2", "scriptjs": "^2.5.9", + "view-ui-plus": "^1.3.19", "vue": "^3.5.13" }, "devDependencies": { diff --git a/src/App.vue b/src/App.vue index de9895f..338fbb3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,181 +1,123 @@ - + diff --git a/src/components/FolderTree.vue b/src/components/FolderTree.vue new file mode 100644 index 0000000..369a346 --- /dev/null +++ b/src/components/FolderTree.vue @@ -0,0 +1,120 @@ + + + + diff --git a/src/components/SelectFolder.vue b/src/components/SelectFolder.vue index 588046e..627cd2e 100644 --- a/src/components/SelectFolder.vue +++ b/src/components/SelectFolder.vue @@ -1,25 +1,22 @@ - - -