Skip to content

Commit 3debcd2

Browse files
committed
feat: implement auto-z-index directive and update z-index values across components
1 parent f1b8256 commit 3debcd2

File tree

16 files changed

+82
-60
lines changed

16 files changed

+82
-60
lines changed

src/renderer/Main.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export default defineComponent({
145145
146146
.presentation-exit {
147147
position: fixed;
148-
z-index: 99999;
148+
z-index: 210000000;
149149
bottom: 6px;
150150
left: 6px;
151151
padding: 10px;

src/renderer/components/ContextMenu.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<XMask transparent :show="items && items.length > 0" @close="hide" :style="{ zIndex: 2147483646 }">
2+
<XMask transparent :show="items && items.length > 0" @close="hide" layer="context-menu">
33
<ul :class="{menu: true, 'item-focus': itemFocus}" ref="refMenu" @contextmenu.prevent tabindex="-1" v-auto-focus>
44
<template v-for="(item, i) in items">
55
<li v-if="item.type === 'separator'" v-show="!item.hidden" :key="i" :class="item.type" />
@@ -175,7 +175,7 @@ export default defineComponent({
175175
border: 1px var(--g-color-84) solid;
176176
border-left: 0;
177177
border-top: 0;
178-
z-index: 2147483647;
178+
z-index: 1000;
179179
color: var(--g-foreground-color);
180180
min-width: 9em;
181181
cursor: default;

src/renderer/components/ControlCenter.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<teleport to="body">
3-
<div v-if="visible && schema" class="control-center" v-fixed-float="{ onClose: (byClickSelf: any) => !byClickSelf && toggle(false) }">
3+
<div v-if="visible && schema" class="control-center" v-fixed-float="{ onClose: (byClickSelf: any) => !byClickSelf && toggle(false) }" v-auto-z-index="{ layer: 'popup' }">
44
<div v-for="(row, category) in schema" :key="category" class="row">
55
<template v-for="(item, i) in row?.items" :key="i">
66
<div
@@ -82,7 +82,6 @@ onBeforeUnmount(() => {
8282
position: fixed;
8383
right: 14px;
8484
top: 36px;
85-
z-index: 1000;
8685
outline: none;
8786
background: var(--g-color-backdrop);
8887
backdrop-filter: var(--g-backdrop-filter);

src/renderer/components/FixedFloat.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
onBlur: (byClickSelf: any) => emits('blur', byClickSelf),
88
disableAutoFocus: props.disableAutoFocus
99
}"
10+
v-auto-z-index="{ layer: 'popup' }"
1011
@click.stop
1112
v-bind="$attrs"
1213
:style="{
@@ -56,6 +57,5 @@ const emits = defineEmits<{
5657
border-radius: var(--g-border-radius);
5758
overflow: hidden;
5859
backdrop-filter: var(--g-backdrop-filter);
59-
z-index: 9999999;
6060
}
6161
</style>

src/renderer/components/KeyboardShortcuts.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ table {
534534
height: 100%;
535535
top: 0;
536536
left: 0;
537-
z-index: 900000;
537+
z-index: 210000000;
538538
display: flex;
539539
flex-direction: column;
540540
align-items: center;

src/renderer/components/Mask.vue

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<teleport to="body">
33
<transition name="fade">
4-
<div v-if="show" :class="{'mask-wrapper': true, transparent}" :style="wrapperStyle">
4+
<div v-if="show" :class="{'mask-wrapper': true, transparent}" :style="style" v-auto-z-index="{ layer, onEsc }">
55
<div class="mask" @click="() => maskCloseable && $emit('close')" @contextmenu.prevent.stop="$emit('close')" />
66
<div class="content">
77
<slot></slot>
@@ -12,11 +12,7 @@
1212
</template>
1313

1414
<script lang="ts">
15-
import { computed, defineComponent, onBeforeUnmount, onMounted, ref, watch } from 'vue'
16-
import { registerHook, removeHook } from '@fe/core/hook'
17-
18-
let zIndex = 199998
19-
const maskStack: number[] = []
15+
import { defineComponent } from 'vue'
2016
2117
export default defineComponent({
2218
name: 'x-mask',
@@ -38,50 +34,20 @@ export default defineComponent({
3834
type: [Object, String],
3935
default: () => ({}),
4036
},
37+
layer: {
38+
type: String as () => 'popup' | 'context-menu' | 'max',
39+
default: 'popup'
40+
},
4141
},
4242
emits: ['close'],
4343
setup (props, { emit }) {
44-
const zIndexRef = ref(zIndex++)
45-
46-
function keydownHandler (e: KeyboardEvent) {
47-
if (e.key === 'Escape' && props.show) {
48-
// close top mask
49-
if (!maskStack.includes(zIndexRef.value) || Math.max(...maskStack) !== zIndexRef.value) {
50-
return
51-
}
52-
44+
function onEsc () {
45+
if (props.show) {
5346
props.escCloseable && emit('close')
54-
e.stopPropagation()
5547
}
5648
}
5749
58-
watch(() => props.show, (val) => {
59-
if (val) {
60-
maskStack.push(zIndexRef.value)
61-
} else {
62-
maskStack.splice(maskStack.indexOf(zIndexRef.value), 1)
63-
}
64-
}, { immediate: true, flush: 'post' })
65-
66-
watch(() => props.show, (val) => {
67-
if (val) {
68-
zIndex++
69-
zIndexRef.value = zIndex
70-
}
71-
})
72-
73-
const wrapperStyle = computed(() => (typeof props.style === 'string' ? props.style : { zIndex: zIndexRef.value, ...props.style }))
74-
75-
onMounted(() => {
76-
registerHook('GLOBAL_KEYDOWN', keydownHandler)
77-
})
78-
79-
onBeforeUnmount(() => {
80-
removeHook('GLOBAL_KEYDOWN', keydownHandler)
81-
maskStack.splice(maskStack.indexOf(zIndexRef.value), 1)
82-
})
83-
84-
return { wrapperStyle }
50+
return { onEsc }
8551
},
8652
})
8753
</script>
@@ -93,7 +59,6 @@ export default defineComponent({
9359
left: 0;
9460
width: 100%;
9561
height: 100%;
96-
z-index: 199998;
9762
padding-top: 6em;
9863
}
9964

src/renderer/components/Premium.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ export default defineComponent({
283283
particleCount: 150,
284284
spread: 100,
285285
origin: { y: 0.6 },
286-
zIndex: Number.MAX_SAFE_INTEGER,
286+
zIndex: 2.1e8,
287287
})
288288
}
289289
}

src/renderer/components/StatusBarMenu.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export default defineComponent({
103103
.status-bar-menu {
104104
cursor: pointer;
105105
user-select: none;
106-
z-index: 99999999;
106+
z-index: 300000;
107107
position: relative;
108108
overflow-x: hidden;
109109
font-variant-numeric: tabular-nums;

src/renderer/components/TitleBar.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ export default defineComponent({
252252
-webkit-user-select: none;
253253
-webkit-app-region: drag;
254254
position: relative;
255-
z-index: 199999;
255+
z-index: 8000000;
256256
}
257257
258258
.resizer {

src/renderer/components/Toast.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export default defineComponent({
6161
left: 0;
6262
top: 100px;
6363
padding: 10px 20px;
64-
z-index: 999999;
64+
z-index: 200000000;
6565
right: 0;
6666
margin: auto;
6767
border-radius: 50px;

0 commit comments

Comments
 (0)