diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-09 18:01:12 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-09 18:01:12 +0900 |
| commit | 1c764139bf9dfa5575ea32cfa0a4eecf9690cd7d (patch) | |
| tree | 0f47672fdf6c0070faf5dde114fe41b408f72867 /src/client/components/ui | |
| parent | 連合インスタンス設定ダイアログ (diff) | |
| download | sharkey-1c764139bf9dfa5575ea32cfa0a4eecf9690cd7d.tar.gz sharkey-1c764139bf9dfa5575ea32cfa0a4eecf9690cd7d.tar.bz2 sharkey-1c764139bf9dfa5575ea32cfa0a4eecf9690cd7d.zip | |
:art:
Diffstat (limited to 'src/client/components/ui')
| -rw-r--r-- | src/client/components/ui/button.vue | 1 | ||||
| -rw-r--r-- | src/client/components/ui/menu.vue | 24 | ||||
| -rw-r--r-- | src/client/components/ui/popup-menu.vue | 4 | ||||
| -rw-r--r-- | src/client/components/ui/popup.vue | 5 | ||||
| -rw-r--r-- | src/client/components/ui/window.vue | 1 |
5 files changed, 30 insertions, 5 deletions
diff --git a/src/client/components/ui/button.vue b/src/client/components/ui/button.vue index 4c5d617d76..1e72660f33 100644 --- a/src/client/components/ui/button.vue +++ b/src/client/components/ui/button.vue @@ -127,6 +127,7 @@ export default defineComponent({ border-radius: 999px; overflow: hidden; box-sizing: border-box; + transition: background 0.1s ease; &:not(:disabled):hover { background: var(--buttonHoverBg); diff --git a/src/client/components/ui/menu.vue b/src/client/components/ui/menu.vue index 8a1871e256..d652d9b84f 100644 --- a/src/client/components/ui/menu.vue +++ b/src/client/components/ui/menu.vue @@ -1,5 +1,5 @@ <template> -<div class="rrevdjwt" :class="{ left: align === 'left' }" +<div class="rrevdjwt" :class="{ left: align === 'left', pointer: point === 'top' }" ref="items" @contextmenu.self="e => e.preventDefault()" v-hotkey="keymap" @@ -58,7 +58,11 @@ export default defineComponent({ align: { type: String, requried: false - } + }, + point: { + type: String, + requried: false + }, }, emits: ['close'], data() { @@ -137,6 +141,22 @@ export default defineComponent({ .rrevdjwt { padding: 8px 0; + &.pointer { + &:before { + --size: 8px; + content: ''; + display: block; + position: absolute; + top: calc(0px - (var(--size) * 2)); + left: 0; + right: 0; + width: 0; + margin: auto; + border: solid var(--size) transparent; + border-bottom-color: var(--popup); + } + } + &.left { > .item { text-align: left; diff --git a/src/client/components/ui/popup-menu.vue b/src/client/components/ui/popup-menu.vue index 23f7c89f3b..3590426172 100644 --- a/src/client/components/ui/popup-menu.vue +++ b/src/client/components/ui/popup-menu.vue @@ -1,6 +1,6 @@ <template> -<MkPopup ref="popup" :src="src" @closed="$emit('closed')"> - <MkMenu :items="items" :align="align" @close="$refs.popup.close()" class="_popup _shadow"/> +<MkPopup ref="popup" :src="src" @closed="$emit('closed')" #default="{point}"> + <MkMenu :items="items" :align="align" :point="point" @close="$refs.popup.close()" class="_popup _shadow"/> </MkPopup> </template> diff --git a/src/client/components/ui/popup.vue b/src/client/components/ui/popup.vue index c98e17fa25..9e360411c0 100644 --- a/src/client/components/ui/popup.vue +++ b/src/client/components/ui/popup.vue @@ -1,7 +1,7 @@ <template> <transition :name="$store.state.animation ? 'popup-menu' : ''" :duration="$store.state.animation ? 300 : 0" appear @after-leave="onClosed" @enter="$emit('opening')" @after-enter="childRendered"> <div v-show="manualShowing != null ? manualShowing : showing" class="ccczpooj" :class="{ front, fixed, top: position === 'top' }" ref="content" :style="{ pointerEvents: (manualShowing != null ? manualShowing : showing) ? 'auto' : 'none', '--transformOrigin': transformOrigin }"> - <slot></slot> + <slot :point="point"></slot> </div> </transition> </template> @@ -52,6 +52,7 @@ export default defineComponent({ fixed: false, transformOrigin: 'center', contentClicking: false, + point: null, }; }, @@ -135,8 +136,10 @@ export default defineComponent({ } if (top > rect.top + (this.fixed ? 0 : window.pageYOffset)) { + this.point = 'top'; this.transformOrigin = 'center top'; } else { + this.point = null; this.transformOrigin = 'center'; } diff --git a/src/client/components/ui/window.vue b/src/client/components/ui/window.vue index f8b7d82d4a..4fabab3d6d 100644 --- a/src/client/components/ui/window.vue +++ b/src/client/components/ui/window.vue @@ -416,6 +416,7 @@ export default defineComponent({ flex-shrink: 0; user-select: none; height: var(--height); + border-bottom: solid 1px var(--divider); > ::v-deep(button) { height: var(--height); |