@nebulars/primary 0.3.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +0 -0
- package/.prettierrc.cjs +8 -0
- package/components/fqa/index.vue +128 -0
- package/components/fqa/markdown-notes.less +34 -0
- package/components/fqa-amixer/index.vue +105 -0
- package/components/fqa-aovery/index.vue +46 -0
- package/components/fqa-aovery/modify.less +3 -0
- package/components/fqa-arrow/index.vue +51 -0
- package/components/fqa-assist/index.vue +104 -0
- package/components/fqa-assist/menus-modify.less +38 -0
- package/components/fqa-assist/start-modify.less +3 -0
- package/components/fqa-attach/index.vue +51 -0
- package/components/fqa-attach/modify.less +3 -0
- package/components/fqa-boxer/index.vue +130 -0
- package/components/fqa-button/index.vue +105 -0
- package/components/fqa-control/index.vue +47 -0
- package/components/fqa-debug/index.vue +49 -0
- package/components/fqa-download/index.vue +65 -0
- package/components/fqa-footer/index.vue +25 -0
- package/components/fqa-fullscreen/index.vue +60 -0
- package/components/fqa-gap/index.vue +10 -0
- package/components/fqa-header/index.vue +105 -0
- package/components/fqa-header/poping-modify.less +48 -0
- package/components/fqa-icon/index.vue +36 -0
- package/components/fqa-input/index.vue +47 -0
- package/components/fqa-link/index.vue +184 -0
- package/components/fqa-lister/index.vue +61 -0
- package/components/fqa-logo/index.vue +34 -0
- package/components/fqa-markdown/index.vue +109 -0
- package/components/fqa-markdown/katex-modify.less +0 -0
- package/components/fqa-markdown/table-modify.less +5 -0
- package/components/fqa-markdown/table-ops.less +76 -0
- package/components/fqa-mask/index.vue +42 -0
- package/components/fqa-pagination/index.vue +44 -0
- package/components/fqa-pagination/modify.less +66 -0
- package/components/fqa-preloading/index.vue +70 -0
- package/components/fqa-profile/index.vue +141 -0
- package/components/fqa-reissue/index.vue +19 -0
- package/components/fqa-selection/index.vue +95 -0
- package/components/fqa-selection/modify.less +10 -0
- package/components/fqa-sider/index.vue +16 -0
- package/components/fqa-snapshot/index.vue +107 -0
- package/components/fqa-start/index.vue +321 -0
- package/components/fqa-start/modify.less +11 -0
- package/components/fqa-switcher/index.vue +94 -0
- package/components/fqa-table/index.vue +42 -0
- package/components/fqa-table/modify.less +56 -0
- package/components/fqa-text/index.vue +58 -0
- package/components/fqa-welcome/index.vue +29 -0
- package/components/fqa-worcha/index.vue +107 -0
- package/components/fqa-worry/index.vue +148 -0
- package/index.js +20 -0
- package/package.json +9 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-boxer {
|
|
3
|
+
& {
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
&-container {
|
|
8
|
+
width: 240px;
|
|
9
|
+
padding: @atom;
|
|
10
|
+
position: absolute;
|
|
11
|
+
bottom: 0;
|
|
12
|
+
left: 0;
|
|
13
|
+
right: 0;
|
|
14
|
+
z-index: -1;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transition: all @fast;
|
|
17
|
+
background-color: @color-app;
|
|
18
|
+
border-radius: @atom;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
|
|
21
|
+
&.keep {
|
|
22
|
+
bottom: calc(100% + @atom);
|
|
23
|
+
opacity: 1;
|
|
24
|
+
z-index: 1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&-button {
|
|
29
|
+
position: relative;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&-item {
|
|
34
|
+
display: flex;
|
|
35
|
+
gap: @atom;
|
|
36
|
+
line-height: @vast;
|
|
37
|
+
padding-inline: @gap;
|
|
38
|
+
transition: all @fast;
|
|
39
|
+
border-radius: @atom;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
background-color: transparent;
|
|
42
|
+
|
|
43
|
+
&:active,
|
|
44
|
+
&:hover {
|
|
45
|
+
background-color: darken(@color-app, 5%);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
50
|
+
|
|
51
|
+
<template>
|
|
52
|
+
<div class="fqa-boxer">
|
|
53
|
+
<!-- Container -->
|
|
54
|
+
<div :class="{ 'fqa-boxer-container': true, keep: visible }">
|
|
55
|
+
<div class="fqa-boxer-item" v-if="false">
|
|
56
|
+
<fqa-icon icon="UserOutlined" />
|
|
57
|
+
<span>{{ $t('account.profile') }}</span>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="fqa-boxer-item" @click.stop="logout">
|
|
60
|
+
<fqa-icon icon="PoweroffOutlined" />
|
|
61
|
+
<span>{{ $t('account.logout') }}</span>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<!-- Button -->
|
|
66
|
+
<!-- <fqa-button class="fqa-boxer-button" justify="flex-start" :keep="visible" :width="240" :height="40" :instance="4" hover="#2a2b2c" @click.stop="visible = !visible" @touchend.prevent="visible = !visible"> -->
|
|
67
|
+
<fqa-button class="fqa-boxer-button" justify="flex-start" :keep="visible" :width="240" :height="40" :instance="4" hover="#2a2b2c" @click.stop="visible = !visible">
|
|
68
|
+
<a-space>
|
|
69
|
+
<a-avatar :size="32" :src="app.user.avatar">{{ app.user.nickname?.charAt(0) }}</a-avatar>
|
|
70
|
+
<a-space>
|
|
71
|
+
<div>{{ app.user.nickname }}</div>
|
|
72
|
+
</a-space>
|
|
73
|
+
</a-space>
|
|
74
|
+
</fqa-button>
|
|
75
|
+
</div>
|
|
76
|
+
</template>
|
|
77
|
+
|
|
78
|
+
<script>
|
|
79
|
+
export default {
|
|
80
|
+
data() {
|
|
81
|
+
return {
|
|
82
|
+
visible: false,
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
methods: {
|
|
87
|
+
handler(e) {
|
|
88
|
+
if (!this.$el.contains(e.target)) {
|
|
89
|
+
this.visible = false;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
async logout() {
|
|
94
|
+
// Remove Token
|
|
95
|
+
await this.$store.dispatch('app/LOGOUT');
|
|
96
|
+
|
|
97
|
+
// Set Route
|
|
98
|
+
const route = { name: 'login' };
|
|
99
|
+
|
|
100
|
+
// For Web
|
|
101
|
+
this.$util.message.send({ route }, () => {
|
|
102
|
+
// For MNP
|
|
103
|
+
this.$router.push(route);
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
created() {
|
|
109
|
+
// Polling for Sync Info
|
|
110
|
+
this.$util.polling(async () => {
|
|
111
|
+
// Get Token
|
|
112
|
+
const token = localStorage.getItem('token');
|
|
113
|
+
|
|
114
|
+
// No Token No Check
|
|
115
|
+
if (token) {
|
|
116
|
+
// 1. Get User Info
|
|
117
|
+
await this.$store.dispatch('app/TOKEN_CHECK');
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
mounted() {
|
|
123
|
+
document.addEventListener('click', this.handler);
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
beforeUnmount() {
|
|
127
|
+
document.removeEventListener('click', this.handler);
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
</script>
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-button {
|
|
3
|
+
& {
|
|
4
|
+
display: flex;
|
|
5
|
+
justify-content: var(--fqa-button-justify);
|
|
6
|
+
align-items: var(--fqa-button-align);
|
|
7
|
+
padding-inline: var(--fqa-button-instance);
|
|
8
|
+
color: var(--fqa-button-color);
|
|
9
|
+
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
transition: all @fast;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&.keep {
|
|
15
|
+
color: var(--fqa-button-text);
|
|
16
|
+
background-color: var(--fqa-button-hover);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&:hover {
|
|
20
|
+
color: var(--fqa-button-text);
|
|
21
|
+
background-color: var(--fqa-button-hover);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
</style>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<div
|
|
28
|
+
:class="{ 'fqa-button': true, keep }"
|
|
29
|
+
:style="{
|
|
30
|
+
width: `${size || width}px`,
|
|
31
|
+
height: `${size || height}px`,
|
|
32
|
+
'--fqa-button-color': color,
|
|
33
|
+
'border-radius': `${radius}px`,
|
|
34
|
+
border: `1px solid ${border}`,
|
|
35
|
+
'--fqa-button-text': text,
|
|
36
|
+
'--fqa-button-hover': hover,
|
|
37
|
+
'--fqa-button-instance': `${instance}px`,
|
|
38
|
+
'--fqa-button-justify': justify,
|
|
39
|
+
'--fqa-button-align': align,
|
|
40
|
+
}"
|
|
41
|
+
>
|
|
42
|
+
<slot />
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<script>
|
|
47
|
+
export default {
|
|
48
|
+
props: {
|
|
49
|
+
keep: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
default: false,
|
|
52
|
+
},
|
|
53
|
+
size: {
|
|
54
|
+
type: [Number, String],
|
|
55
|
+
default: 0,
|
|
56
|
+
},
|
|
57
|
+
width: {
|
|
58
|
+
type: [Number, String],
|
|
59
|
+
default: 40,
|
|
60
|
+
},
|
|
61
|
+
height: {
|
|
62
|
+
type: [Number, String],
|
|
63
|
+
default: 40,
|
|
64
|
+
},
|
|
65
|
+
radius: {
|
|
66
|
+
type: [Number, String],
|
|
67
|
+
default: 6,
|
|
68
|
+
},
|
|
69
|
+
text: {
|
|
70
|
+
type: String,
|
|
71
|
+
default: '#484848',
|
|
72
|
+
},
|
|
73
|
+
color: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: '#484848',
|
|
76
|
+
},
|
|
77
|
+
hover: {
|
|
78
|
+
type: String,
|
|
79
|
+
default: 'transparent',
|
|
80
|
+
},
|
|
81
|
+
border: {
|
|
82
|
+
type: String,
|
|
83
|
+
default: 'transparent',
|
|
84
|
+
},
|
|
85
|
+
instance: {
|
|
86
|
+
type: Number,
|
|
87
|
+
default: 0,
|
|
88
|
+
},
|
|
89
|
+
justify: {
|
|
90
|
+
type: String,
|
|
91
|
+
default: 'center',
|
|
92
|
+
},
|
|
93
|
+
align: {
|
|
94
|
+
type: String,
|
|
95
|
+
default: 'center',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
methods: {
|
|
100
|
+
onClick() {
|
|
101
|
+
this.$emit('click');
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
</script>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
/**
|
|
3
|
+
* Assist Control
|
|
4
|
+
* ======== ======== ========
|
|
5
|
+
*/
|
|
6
|
+
.FinQA--Assist--Control {
|
|
7
|
+
@distance: calc(@size-menu / 2);
|
|
8
|
+
|
|
9
|
+
& {
|
|
10
|
+
position: fixed;
|
|
11
|
+
top: @distance;
|
|
12
|
+
left: @distance;
|
|
13
|
+
z-index: 9;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&.open {
|
|
17
|
+
left: calc(@size-assist - @size-header + @distance);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<fqa-button :class="{ open, 'FinQA--Assist--Control': true }" :width="40" :height="40" text="#ffffff" hover="#a8a8a8" @click="handler">
|
|
24
|
+
<fqa-icon :icon="icon" :size="20" cursor="pointer" />
|
|
25
|
+
</fqa-button>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script>
|
|
29
|
+
export default {
|
|
30
|
+
computed: {
|
|
31
|
+
open() {
|
|
32
|
+
return this.adapter.assist.type;
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
icon() {
|
|
36
|
+
return this.open ? 'MenuFoldOutlined' : 'MenuUnfoldOutlined';
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
methods: {
|
|
41
|
+
handler() {
|
|
42
|
+
const { type } = this.adapter.assist;
|
|
43
|
+
this.$store.dispatch('adapter/STATE_UPDATE', { assist: { type: !type } });
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
</script>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-modal v-model:open="visual" title="Debugging" :footer="null">
|
|
3
|
+
<a-form autocomplete="off">
|
|
4
|
+
<a-form-item v-for="(item, key) in parts" :label="key">
|
|
5
|
+
{{ item.type }}
|
|
6
|
+
<a-switch v-model:checked="item.type" />
|
|
7
|
+
</a-form-item>
|
|
8
|
+
</a-form>
|
|
9
|
+
</a-modal>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<script>
|
|
13
|
+
export default {
|
|
14
|
+
data() {
|
|
15
|
+
return {
|
|
16
|
+
visual: false,
|
|
17
|
+
|
|
18
|
+
parts: {},
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
watch: {
|
|
23
|
+
adapter: {
|
|
24
|
+
handler(parts) {
|
|
25
|
+
this.parts = parts;
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
deep: true,
|
|
29
|
+
immediate: true,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
methods: {
|
|
34
|
+
keyboardHandler(e) {
|
|
35
|
+
if (e.altKey && e.which === 68) {
|
|
36
|
+
this.visual = !this.visual;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
mounted() {
|
|
42
|
+
window.addEventListener('keydown', this.keyboardHandler);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
beforeUnmount() {
|
|
46
|
+
window.removeEventListener('keydown', this.keyboardHandler);
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
</script>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-download {
|
|
3
|
+
&-board {
|
|
4
|
+
position: fixed;
|
|
5
|
+
top: 0;
|
|
6
|
+
left: 0;
|
|
7
|
+
right: 0;
|
|
8
|
+
bottom: 0;
|
|
9
|
+
background-repeat: no-repeat;
|
|
10
|
+
background-position: top right;
|
|
11
|
+
background-size: 50% 50%;
|
|
12
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
13
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAsVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3mHKcAAAAOnRSTlMA+xTR94XeCxkd7yJD4/PrsQePVcGIcCe7tWdeeASbETrnrGssgltQSzHH1dnOyw+WYn6jp58/NXRI0UcK0wAAF4NJREFUeNrs1MFKQlEYReFjer1FRDVQCiScNJNIceL//g/mHoioeMGhstb3CnuxmyRJkiRJkiRJkiRJugP9cr2Ybea75yaefv01qYPV72sTyufmvU6NtiZAspzWpcmiiWI+qiu++yaErq77e2oC6GrI2AIAsr8FgGV/CwDL/hYAlv0tACz7WwBY9rcAsOxvAWDZ3wLAsr8FgGV/CwDL/hYAlv0tACz7WwBY9rcAsOxvAWDZ3wLAsr8FgGV/CwDL/hYAlv0tACz7WwBY9rcAsOxvAWDZ3wLAsr8FgGV/CwDL/hYAlv0tACz7WwBYV2EBWIf9LQDquL8FIJ3sbwFAZ/tbAM6szlgAzC37/49rwMebBTy2W/7/p61qQPcytYBHtmfnTrTSBqMgAE96wqLBsCayCwIugBZQW5n3f7Au9By63RJuNfon93uFmUxMfkOy/CGmPIM1wGUJ88eYgj6sAQ5Lmj+qFDzDGuCuJPmv8E1IQQxrgLOS5w+fgi6sAa5Kkn8DO5SsYQ1w1DH51ynpwRrgpmPyR4mSJqwBTjoqf3yg5BrWABcdlz/KlNzAGuCgiIdF2Aso2WIvsHMBRxSOzB/nlIwA2wDXRDysgJ9NKbkFbAMck/j63xtREgC2AW5R5I8tJWVYA9yiyR9NSkqwBjhFlT/WFHiANcAlSfLf4A8xBSGsAS6JdPljQ8EYO/Ys4IRYmT8aFCzxN0GRB83rMCmreDyoj78ZUnAHaDdgCJOuQVF5/QOXFLQA9QZ8gklVV50/OhR0oG9ACyZVCx7yDMGcgkcA6rvALUyKAh7S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);
|
|
14
|
+
|
|
15
|
+
transition: opacity @fast;
|
|
16
|
+
|
|
17
|
+
opacity: 0;
|
|
18
|
+
z-index: -10000;
|
|
19
|
+
|
|
20
|
+
&.visible {
|
|
21
|
+
opacity: 1;
|
|
22
|
+
z-index: 10000;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
</style>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<span class="fqa-download" @click="download">
|
|
30
|
+
<slot />
|
|
31
|
+
<div class="fqa-download-board" :class="{ visible }" ref="board" @click.stop="close"></div>
|
|
32
|
+
</span>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
export default {
|
|
37
|
+
props: {
|
|
38
|
+
src: {
|
|
39
|
+
type: [String],
|
|
40
|
+
default: '',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
data() {
|
|
45
|
+
return {
|
|
46
|
+
visible: false,
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
methods: {
|
|
51
|
+
async download() {
|
|
52
|
+
if (this.app) {
|
|
53
|
+
this.visible = true;
|
|
54
|
+
return await this.$util.copy(this.src);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.$util.download(this.src);
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
close() {
|
|
61
|
+
this.visible = false;
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
</script>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-footer {
|
|
3
|
+
& {
|
|
4
|
+
font-size: 12px;
|
|
5
|
+
flex: 1;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.notice {
|
|
9
|
+
color: @color-subtext;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
</style>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<a-flex class="fqa-footer" justify="center">
|
|
16
|
+
<a-space :size="4" class="notice">
|
|
17
|
+
<fqa-icon icon="ExclamationCircleOutlined" />
|
|
18
|
+
<span>{{ $t('replenish.tip') }}</span>
|
|
19
|
+
</a-space>
|
|
20
|
+
</a-flex>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script>
|
|
24
|
+
export default {};
|
|
25
|
+
</script>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<style lang="less">
|
|
2
|
+
.fqa-fullscreen {
|
|
3
|
+
.ant-modal {
|
|
4
|
+
max-width: 100%;
|
|
5
|
+
top: 0;
|
|
6
|
+
padding-bottom: 0;
|
|
7
|
+
margin: 0;
|
|
8
|
+
}
|
|
9
|
+
.ant-modal-content {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
height: calc(100vh);
|
|
13
|
+
background-color: transparent !important;
|
|
14
|
+
box-shadow: none !important;
|
|
15
|
+
overflow: auto;
|
|
16
|
+
}
|
|
17
|
+
.ant-modal-body {
|
|
18
|
+
flex: 1;
|
|
19
|
+
display: flex;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
align-items: center;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.ant-modal-close {
|
|
25
|
+
background-color: white;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<a-modal class="fqa-fullscreen" v-model:open="open" width="100%" :footer="null" :z-index="10" wrap-class-name="fqa-fullscreen">
|
|
32
|
+
<div class="markdown-body">
|
|
33
|
+
<slot />
|
|
34
|
+
</div>
|
|
35
|
+
</a-modal>
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
<script>
|
|
39
|
+
export default {
|
|
40
|
+
props: {
|
|
41
|
+
visible: {
|
|
42
|
+
type: Boolean,
|
|
43
|
+
default: false,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
emits: ['update:visible'],
|
|
48
|
+
|
|
49
|
+
computed: {
|
|
50
|
+
open: {
|
|
51
|
+
get() {
|
|
52
|
+
return this.visible;
|
|
53
|
+
},
|
|
54
|
+
set(value) {
|
|
55
|
+
this.$emit('update:visible', value);
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
</script>
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-header {
|
|
3
|
+
& {
|
|
4
|
+
flex: 1;
|
|
5
|
+
display: flex;
|
|
6
|
+
|
|
7
|
+
// transition: all @fast;
|
|
8
|
+
// background: url(@/assets/title.png) center / 36% no-repeat;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&.close {
|
|
12
|
+
margin-left: calc(@size-menu + 20px);
|
|
13
|
+
transition-delay: @fast;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
h1 {
|
|
17
|
+
line-height: 20px;
|
|
18
|
+
font-size: 1.75rem;
|
|
19
|
+
font-weight: normal;
|
|
20
|
+
margin-bottom: 0;
|
|
21
|
+
padding-left: 0;
|
|
22
|
+
transition: all @fast;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.fqa-popover-open {
|
|
26
|
+
transform: rotate(-90deg);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&-tools {
|
|
30
|
+
& {
|
|
31
|
+
width: 60px;
|
|
32
|
+
justify-content: flex-end;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&-icon {
|
|
36
|
+
cursor: pointer !important;
|
|
37
|
+
transition: all @flash;
|
|
38
|
+
|
|
39
|
+
&:hover {
|
|
40
|
+
color: @color-primary !important;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.fqa-setting {
|
|
47
|
+
&:hover {
|
|
48
|
+
color: @color-retext;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
</style>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<a-flex :class="{ 'fqa-header': true, close: !adapter.assist.type }" justify="space-between" align="center">
|
|
55
|
+
<!-- Title -->
|
|
56
|
+
<h1>{{ sseengine.info.title }}</h1>
|
|
57
|
+
|
|
58
|
+
<!-- Poping -->
|
|
59
|
+
<a-popover v-if="pop" class="fqa-setting" overlay-class-name="fqa-popover" dropdown-class-name="fqa-dropdown" v-model:open="visible" placement="bottomRight" trigger="click">
|
|
60
|
+
<!-- Options -->
|
|
61
|
+
<template #content>
|
|
62
|
+
<div class="fqa-popover-container">
|
|
63
|
+
<fqa-selection v-for="(param, index) in sseengine.presets" :key="index" v-bind="param" v-model="sseengine.options[param.field_name]" />
|
|
64
|
+
</div>
|
|
65
|
+
</template>
|
|
66
|
+
|
|
67
|
+
<!-- Setting -->
|
|
68
|
+
<fqa-button :size="40" :radius="40" hover="#a8a8a8" v-if="false">
|
|
69
|
+
<fqa-icon :class="{ 'fqa-popover-open': visible }" icon="SettingOutlined" :size="20" />
|
|
70
|
+
</fqa-button>
|
|
71
|
+
</a-popover>
|
|
72
|
+
|
|
73
|
+
<!-- Tools -->
|
|
74
|
+
<a-space class="fqa-header-tools" :class="{ notouch: sseengine.produce || sseengine.editable }" v-if="sseengine.info.title && !app.mobile && app.online">
|
|
75
|
+
<!-- Share -->
|
|
76
|
+
<fqa-icon class="fqa-header-tools-icon" icon="ShareAltOutlined" :size="20" @click="change" />
|
|
77
|
+
</a-space>
|
|
78
|
+
</a-flex>
|
|
79
|
+
</template>
|
|
80
|
+
|
|
81
|
+
<script>
|
|
82
|
+
export default {
|
|
83
|
+
data() {
|
|
84
|
+
return {
|
|
85
|
+
visible: false,
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
computed: {
|
|
90
|
+
pop() {
|
|
91
|
+
return this.app.admin && this.sseengine.presets?.length;
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
methods: {
|
|
96
|
+
async change() {
|
|
97
|
+
// Mode Change
|
|
98
|
+
await this.$store.dispatch('sseengine/SNAP_MODE');
|
|
99
|
+
|
|
100
|
+
// Choosen All
|
|
101
|
+
await this.$store.dispatch('sseengine/SNAP_ALL');
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
</script>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
.fqa-popover {
|
|
2
|
+
.ant-popover-arrow {
|
|
3
|
+
right: 12px;
|
|
4
|
+
// --antd-arrow-background-color: @color-assist;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ant-popover-inner {
|
|
8
|
+
// background-color: @color-assist;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.ant-select-selector {
|
|
12
|
+
// background-color: @color-input;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.ant-select-focused {
|
|
16
|
+
.ant-select-selector {
|
|
17
|
+
box-shadow: 0 0 0 2px rgba(167, 168, 169, 0.1) !important;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ant-form-item {
|
|
22
|
+
margin-bottom: @unit;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ant-form-item-row {
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
align-items: flex-start;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ant-form-item-control {
|
|
31
|
+
width: 100%;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ant-form-item-label label,
|
|
35
|
+
.ant-select-open .ant-select-selection-item {
|
|
36
|
+
// color: @color-text;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ant-select-selector {
|
|
40
|
+
// color: @color-text;
|
|
41
|
+
// border-color: darken(@color-input, 2%) !important;
|
|
42
|
+
// background-color: @color-input !important;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&-container {
|
|
46
|
+
width: 240px;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<style lang="less" scoped>
|
|
2
|
+
.fqa-icon {
|
|
3
|
+
transition: all @effect;
|
|
4
|
+
}
|
|
5
|
+
</style>
|
|
6
|
+
|
|
7
|
+
<template>
|
|
8
|
+
<component class="fqa-icon" :is="icon" :style="{ fontSize: `${size}px`, color, cursor, transitionDuration: `${duration}s` }" />
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
export default {
|
|
13
|
+
props: {
|
|
14
|
+
icon: {
|
|
15
|
+
type: String,
|
|
16
|
+
default: '',
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
type: [Number, String],
|
|
20
|
+
default: 14,
|
|
21
|
+
},
|
|
22
|
+
color: {
|
|
23
|
+
type: String,
|
|
24
|
+
default: 'inherit',
|
|
25
|
+
},
|
|
26
|
+
cursor: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: 'default',
|
|
29
|
+
},
|
|
30
|
+
duration: {
|
|
31
|
+
type: [Number, String],
|
|
32
|
+
default: 0.36,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
</script>
|