diff --git a/src/SettingPanel/Panel.vue b/src/SettingPanel/Panel.vue
index b7bb173..d4cbee5 100644
--- a/src/SettingPanel/Panel.vue
+++ b/src/SettingPanel/Panel.vue
@@ -1,5 +1,5 @@
- dsds {{ val }}
+ dsds {{ val }}
diff --git a/src/SettingPanel/index.ts b/src/SettingPanel/index.ts
index b4b7853..bd24b77 100644
--- a/src/SettingPanel/index.ts
+++ b/src/SettingPanel/index.ts
@@ -2,5 +2,16 @@ import { createApp } from 'vue';
import App from './Panel.vue';
export function render(el: any) {
- createApp(App).mount(el);
+ const vm = createApp(App);
+ const $root = vm.mount(el);
+
+ return {
+ $root,
+ open: () => {
+ ($root.$data as any).show = true;
+ },
+ close: () => {
+ ($root.$data as any).show = false;
+ },
+ };
}
diff --git a/src/global.less b/src/global.less
index 6c7c74a..a937987 100644
--- a/src/global.less
+++ b/src/global.less
@@ -7,4 +7,10 @@
z-index: 4000;
cursor: pointer;
background-color: #6cf;
+ transition: all 0.3s;
+
+ &.hidden {
+ opacity: 0;
+ pointer-events: none;
+ }
}
diff --git a/src/index.ts b/src/index.ts
index 13f834e..c7266fa 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -5,13 +5,26 @@ import './global.less';
import { render } from './SettingPanel';
// import(/* webpackChunkName: 'setting-panel' */ './SettingPanel');
+let handler: any;
+
window.addEventListener('DOMContentLoaded', () => {
const el = document.createElement('div');
el.innerText = '设置';
- el.className += 'response-proxy-page-root-fixed-button';
+ el.className = 'response-proxy-page-root-fixed-button';
+
el.addEventListener('click', async () => {
- //
- render(el);
+ if (!handler) {
+ handler = render(elForMount);
+ handler.$root.$watch('show', (newVal: boolean) => {
+ el.classList[newVal ? 'add' : 'remove']('hidden');
+ });
+ }
+
+ handler.open();
});
+
+ const elForMount = document.createElement('div');
+
document.body.appendChild(el);
+ document.body.appendChild(elForMount);
});