mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-26 19:14:12 +00:00 
			
		
		
		
	✌️
This commit is contained in:
		
							parent
							
								
									18595dd3bb
								
							
						
					
					
						commit
						157316088e
					
				
					 2 changed files with 139 additions and 17 deletions
				
			
		|  | @ -1,10 +1,11 @@ | ||||||
| <template> | <template> | ||||||
| <div class="header"> | <div class="header"> | ||||||
| 	<mk-special-message/> | 	<mk-special-message/> | ||||||
| 	<div class="main"> | 	<div class="main" ref="main"> | ||||||
| 		<div class="backdrop"></div> | 		<div class="backdrop"></div> | ||||||
| 		<div class="main"> | 		<div class="main"> | ||||||
| 			<div class="container"> | 			<p ref="welcomeback" v-if="os.isSignedIn">おかえりなさい、<b>{{ os.i.name }}</b>さん</p> | ||||||
|  | 			<div class="container" ref="mainContainer"> | ||||||
| 				<div class="left"> | 				<div class="left"> | ||||||
| 					<x-nav/> | 					<x-nav/> | ||||||
| 				</div> | 				</div> | ||||||
|  | @ -23,6 +24,7 @@ | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
|  | import * as anime from 'animejs'; | ||||||
| 
 | 
 | ||||||
| import XNav from './ui.header.nav.vue'; | import XNav from './ui.header.nav.vue'; | ||||||
| import XSearch from './ui.header.search.vue'; | import XSearch from './ui.header.search.vue'; | ||||||
|  | @ -39,6 +41,53 @@ export default Vue.extend({ | ||||||
| 		XNotifications, | 		XNotifications, | ||||||
| 		XPost, | 		XPost, | ||||||
| 		XClock, | 		XClock, | ||||||
|  | 	}, | ||||||
|  | 	mounted() { | ||||||
|  | 		if ((this as any).os.isSignedIn) { | ||||||
|  | 			const ago = (new Date().getTime() - new Date((this as any).os.i.last_used_at).getTime()) / 1000 | ||||||
|  | 			const isHisasiburi = ago >= 3600; | ||||||
|  | 			if (isHisasiburi) { | ||||||
|  | 				(this.$refs.main as any).style.overflow = 'hidden'; | ||||||
|  | 
 | ||||||
|  | 				anime({ | ||||||
|  | 					targets: this.$refs.welcomeback, | ||||||
|  | 					top: '0', | ||||||
|  | 					opacity: 1, | ||||||
|  | 					delay: 1000, | ||||||
|  | 					duration: 500, | ||||||
|  | 					easing: 'easeOutQuad' | ||||||
|  | 				}); | ||||||
|  | 
 | ||||||
|  | 				anime({ | ||||||
|  | 					targets: this.$refs.mainContainer, | ||||||
|  | 					opacity: 0, | ||||||
|  | 					delay: 1000, | ||||||
|  | 					duration: 500, | ||||||
|  | 					easing: 'easeOutQuad' | ||||||
|  | 				}); | ||||||
|  | 
 | ||||||
|  | 				setTimeout(() => { | ||||||
|  | 					anime({ | ||||||
|  | 						targets: this.$refs.welcomeback, | ||||||
|  | 						top: '-48px', | ||||||
|  | 						opacity: 0, | ||||||
|  | 						duration: 500, | ||||||
|  | 						complete: () => { | ||||||
|  | 							(this.$refs.welcomeback as any).style.display = 'none'; | ||||||
|  | 							(this.$refs.main as any).style.overflow = 'initial'; | ||||||
|  | 						}, | ||||||
|  | 						easing: 'easeInQuad' | ||||||
|  | 					}); | ||||||
|  | 
 | ||||||
|  | 					anime({ | ||||||
|  | 						targets: this.$refs.mainContainer, | ||||||
|  | 						opacity: 1, | ||||||
|  | 						duration: 500, | ||||||
|  | 						easing: 'easeInQuad' | ||||||
|  | 					}); | ||||||
|  | 				}, 2000); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
| </script> | </script> | ||||||
|  | @ -53,6 +102,7 @@ export default Vue.extend({ | ||||||
| 	box-shadow 0 1px 1px rgba(0, 0, 0, 0.075) | 	box-shadow 0 1px 1px rgba(0, 0, 0, 0.075) | ||||||
| 
 | 
 | ||||||
| 	> .main | 	> .main | ||||||
|  | 		height 48px | ||||||
| 
 | 
 | ||||||
| 		> .backdrop | 		> .backdrop | ||||||
| 			position absolute | 			position absolute | ||||||
|  | @ -63,17 +113,6 @@ export default Vue.extend({ | ||||||
| 			backdrop-filter blur(12px) | 			backdrop-filter blur(12px) | ||||||
| 			background #f7f7f7 | 			background #f7f7f7 | ||||||
| 
 | 
 | ||||||
| 			&:after |  | ||||||
| 				content "" |  | ||||||
| 				display block |  | ||||||
| 				width 100% |  | ||||||
| 				height 48px |  | ||||||
| 				background-image url(/assets/desktop/header-logo.svg) |  | ||||||
| 				background-size 46px |  | ||||||
| 				background-position center |  | ||||||
| 				background-repeat no-repeat |  | ||||||
| 				opacity 0.3 |  | ||||||
| 
 |  | ||||||
| 		> .main | 		> .main | ||||||
| 			z-index 1024 | 			z-index 1024 | ||||||
| 			margin 0 | 			margin 0 | ||||||
|  | @ -82,12 +121,37 @@ export default Vue.extend({ | ||||||
| 			font-size 0.9rem | 			font-size 0.9rem | ||||||
| 			user-select none | 			user-select none | ||||||
| 
 | 
 | ||||||
|  | 			> p | ||||||
|  | 				display block | ||||||
|  | 				position absolute | ||||||
|  | 				top 48px | ||||||
|  | 				width 100% | ||||||
|  | 				line-height 48px | ||||||
|  | 				margin 0 | ||||||
|  | 				text-align center | ||||||
|  | 				color #888 | ||||||
|  | 				opacity 0 | ||||||
|  | 
 | ||||||
| 			> .container | 			> .container | ||||||
| 				display flex | 				display flex | ||||||
| 				width 100% | 				width 100% | ||||||
| 				max-width 1300px | 				max-width 1300px | ||||||
| 				margin 0 auto | 				margin 0 auto | ||||||
| 
 | 
 | ||||||
|  | 				&:before | ||||||
|  | 					content "" | ||||||
|  | 					position absolute | ||||||
|  | 					top 0 | ||||||
|  | 					left 0 | ||||||
|  | 					display block | ||||||
|  | 					width 100% | ||||||
|  | 					height 48px | ||||||
|  | 					background-image url(/assets/desktop/header-logo.svg) | ||||||
|  | 					background-size 46px | ||||||
|  | 					background-position center | ||||||
|  | 					background-repeat no-repeat | ||||||
|  | 					opacity 0.3 | ||||||
|  | 
 | ||||||
| 				> .left | 				> .left | ||||||
| 					margin 0 auto 0 0 | 					margin 0 auto 0 0 | ||||||
| 					height 48px | 					height 48px | ||||||
|  |  | ||||||
|  | @ -1,9 +1,10 @@ | ||||||
| <template> | <template> | ||||||
| <div class="header"> | <div class="header"> | ||||||
| 	<mk-special-message/> | 	<mk-special-message/> | ||||||
| 	<div class="main"> | 	<div class="main" ref="main"> | ||||||
| 		<div class="backdrop"></div> | 		<div class="backdrop"></div> | ||||||
| 		<div class="content"> | 		<p ref="welcomeback" v-if="os.isSignedIn">おかえりなさい、<b>{{ os.i.name }}</b>さん</p> | ||||||
|  | 		<div class="content" ref="mainContainer"> | ||||||
| 			<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button> | 			<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button> | ||||||
| 			<template v-if="hasUnreadNotifications || hasUnreadMessagingMessages">%fa:circle%</template> | 			<template v-if="hasUnreadNotifications || hasUnreadMessagingMessages">%fa:circle%</template> | ||||||
| 			<h1> | 			<h1> | ||||||
|  | @ -17,6 +18,7 @@ | ||||||
| 
 | 
 | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import Vue from 'vue'; | import Vue from 'vue'; | ||||||
|  | import * as anime from 'animejs'; | ||||||
| 
 | 
 | ||||||
| export default Vue.extend({ | export default Vue.extend({ | ||||||
| 	props: ['func'], | 	props: ['func'], | ||||||
|  | @ -51,6 +53,50 @@ export default Vue.extend({ | ||||||
| 					this.hasUnreadMessagingMessages = true; | 					this.hasUnreadMessagingMessages = true; | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
|  | 
 | ||||||
|  | 			const ago = (new Date().getTime() - new Date((this as any).os.i.last_used_at).getTime()) / 1000 | ||||||
|  | 			const isHisasiburi = ago >= 3600; | ||||||
|  | 			if (isHisasiburi) { | ||||||
|  | 				(this.$refs.main as any).style.overflow = 'hidden'; | ||||||
|  | 
 | ||||||
|  | 				anime({ | ||||||
|  | 					targets: this.$refs.welcomeback, | ||||||
|  | 					top: '0', | ||||||
|  | 					opacity: 1, | ||||||
|  | 					delay: 1000, | ||||||
|  | 					duration: 500, | ||||||
|  | 					easing: 'easeOutQuad' | ||||||
|  | 				}); | ||||||
|  | 
 | ||||||
|  | 				anime({ | ||||||
|  | 					targets: this.$refs.mainContainer, | ||||||
|  | 					opacity: 0, | ||||||
|  | 					delay: 1000, | ||||||
|  | 					duration: 500, | ||||||
|  | 					easing: 'easeOutQuad' | ||||||
|  | 				}); | ||||||
|  | 
 | ||||||
|  | 				setTimeout(() => { | ||||||
|  | 					anime({ | ||||||
|  | 						targets: this.$refs.welcomeback, | ||||||
|  | 						top: '-48px', | ||||||
|  | 						opacity: 0, | ||||||
|  | 						duration: 500, | ||||||
|  | 						complete: () => { | ||||||
|  | 							(this.$refs.welcomeback as any).style.display = 'none'; | ||||||
|  | 							(this.$refs.main as any).style.overflow = 'initial'; | ||||||
|  | 						}, | ||||||
|  | 						easing: 'easeInQuad' | ||||||
|  | 					}); | ||||||
|  | 
 | ||||||
|  | 					anime({ | ||||||
|  | 						targets: this.$refs.mainContainer, | ||||||
|  | 						opacity: 1, | ||||||
|  | 						duration: 500, | ||||||
|  | 						easing: 'easeInQuad' | ||||||
|  | 					}); | ||||||
|  | 				}, 2000); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	}, | 	}, | ||||||
| 	beforeDestroy() { | 	beforeDestroy() { | ||||||
|  | @ -95,15 +141,27 @@ export default Vue.extend({ | ||||||
| 		> .backdrop | 		> .backdrop | ||||||
| 			position absolute | 			position absolute | ||||||
| 			top 0 | 			top 0 | ||||||
| 			z-index 1023 | 			z-index 1000 | ||||||
| 			width 100% | 			width 100% | ||||||
| 			height $height | 			height $height | ||||||
| 			-webkit-backdrop-filter blur(12px) | 			-webkit-backdrop-filter blur(12px) | ||||||
| 			backdrop-filter blur(12px) | 			backdrop-filter blur(12px) | ||||||
| 			background-color rgba(#1b2023, 0.75) | 			background-color rgba(#1b2023, 0.75) | ||||||
| 
 | 
 | ||||||
|  | 		> p | ||||||
|  | 			display block | ||||||
|  | 			position absolute | ||||||
|  | 			z-index 1002 | ||||||
|  | 			top $height | ||||||
|  | 			width 100% | ||||||
|  | 			line-height $height | ||||||
|  | 			margin 0 | ||||||
|  | 			text-align center | ||||||
|  | 			color #fff | ||||||
|  | 			opacity 0 | ||||||
|  | 
 | ||||||
| 		> .content | 		> .content | ||||||
| 			z-index 1024 | 			z-index 1001 | ||||||
| 
 | 
 | ||||||
| 			> h1 | 			> h1 | ||||||
| 				display block | 				display block | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue