✌️
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
		Add a link
		
	
		Reference in a new issue