diff --git a/assets/css/main.css b/assets/css/main.css index 4e3590d..2620432 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -27,17 +27,3 @@ body { box-sizing: border-box; padding: 3px 5px; } - -::-webkit-scrollbar { - width: 6px; -} - -::-webkit-scrollbar-thumb { - background-color: #0003; - border-radius: 10px; - transition: all 0.2s ease-in-out; -} - -::-webkit-scrollbar-track { - border-radius: 10px; -} diff --git a/composables/windows.ts b/composables/windows.ts new file mode 100644 index 0000000..507be60 --- /dev/null +++ b/composables/windows.ts @@ -0,0 +1,53 @@ +import { type UnlistenFn } from "@tauri-apps/api/event"; +import { getCurrentWindow, PhysicalPosition, type WindowOptions, Window } from "@tauri-apps/api/window"; +import { WebviewWindow } from "@tauri-apps/api/webviewWindow"; +import type { WebviewLabel, WebviewOptions, } from "@tauri-apps/api/webview"; +export default async ( + label: WebviewLabel, + options?: Omit & WindowOptions, + afterCreatedFunc?: (webviewWindow: WebviewWindow, appWindow: Window) => void | null, + beforeCloseFunc?: () => void | null +) => { + let defaultOpts = { + parent: undefined, + closable: true, + resizable: true, + decorations: true, + maximizable: false, + minimizable: false, + x: 0, + y: 0 + }; + const appWindow = getCurrentWindow(); + if (appWindow) { + const appSize = await appWindow.outerSize(); + const factor = await appWindow.scaleFactor(); + const appPosition = await appWindow.outerPosition(); + const logicalPosition = new PhysicalPosition(appPosition.x + appSize.width, appPosition.y).toLogical(factor); + defaultOpts.parent = appWindow as any; + defaultOpts.x = logicalPosition.x; + defaultOpts.y = logicalPosition.y; + } + let unListenlogClose: UnlistenFn | null = null; + let unlistenLogCreated: UnlistenFn | null = null; + let dialog = await WebviewWindow.getByLabel(label); + if (!dialog) { + dialog = new WebviewWindow(label, {...defaultOpts, ...options}); + unlistenLogCreated = await dialog.once("tauri://webview-created", async () => { + if (dialog) { + afterCreatedFunc && (await afterCreatedFunc(dialog, appWindow)); + await dialog.show(); + } + }); + unListenlogClose = await dialog.onCloseRequested(async () => { + beforeCloseFunc && (await beforeCloseFunc()); + unListenlogClose && (await unListenlogClose()); + }); + } else { + const visible = await dialog.isVisible(); + if (visible) { + await dialog.close(); + unlistenLogCreated && (await (unlistenLogCreated as Function)()); + } + } +}; diff --git a/layouts/default.vue b/layouts/default.vue index 69ddb17..a355f1e 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -5,6 +5,6 @@ diff --git a/package.json b/package.json index 583bb89..aac47f2 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "author": "leizi97", "description": "A simple network initiator based on Easytier", - "version": "1.0.6", + "version": "1.0.7", "scripts": { "dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0", "build": "nuxt generate --dotenv env/.env.prod" @@ -25,8 +25,7 @@ "@vitejs/plugin-vue-jsx": "^3.1.0", "dayjs": "^1.11.10", "defu": "^6.1.4", - "element-plus": "^2.7.1", - "javascript-obfuscator": "^4.1.0", + "element-plus": "^2.8.6", "less": "^4.2.0", "lodash-es": "^4.17.21", "nuxt": "^3.11.2", diff --git a/pages/advance.vue b/pages/advance.vue new file mode 100644 index 0000000..1a52c25 --- /dev/null +++ b/pages/advance.vue @@ -0,0 +1,28 @@ + + diff --git a/pages/cidr.vue b/pages/cidr.vue new file mode 100644 index 0000000..508c350 --- /dev/null +++ b/pages/cidr.vue @@ -0,0 +1,25 @@ + + diff --git a/pages/index.vue b/pages/index.vue index d7c9a0e..d52eb30 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -2,32 +2,27 @@ + :model="config"> + prop="serverUrl"> diff --git a/pages/log.vue b/pages/log.vue index 02b482d..cd39490 100644 --- a/pages/log.vue +++ b/pages/log.vue @@ -1,7 +1,7 @@