wip
This commit is contained in:
		
							parent
							
								
									e6e02ece89
								
							
						
					
					
						commit
						8814fc9c9c
					
				
					 5 changed files with 92 additions and 115 deletions
				
			
		| 
						 | 
					@ -30,6 +30,7 @@ import Switch from './switch.vue';
 | 
				
			||||||
import Othello from './othello.vue';
 | 
					import Othello from './othello.vue';
 | 
				
			||||||
import welcomeTimeline from './welcome-timeline.vue';
 | 
					import welcomeTimeline from './welcome-timeline.vue';
 | 
				
			||||||
import uiInput from './material/input.vue';
 | 
					import uiInput from './material/input.vue';
 | 
				
			||||||
 | 
					import uiButton from './material/button.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vue.component('mk-analog-clock', analogClock);
 | 
					Vue.component('mk-analog-clock', analogClock);
 | 
				
			||||||
Vue.component('mk-menu', menu);
 | 
					Vue.component('mk-menu', menu);
 | 
				
			||||||
| 
						 | 
					@ -61,3 +62,4 @@ Vue.component('mk-switch', Switch);
 | 
				
			||||||
Vue.component('mk-othello', Othello);
 | 
					Vue.component('mk-othello', Othello);
 | 
				
			||||||
Vue.component('mk-welcome-timeline', welcomeTimeline);
 | 
					Vue.component('mk-welcome-timeline', welcomeTimeline);
 | 
				
			||||||
Vue.component('ui-input', uiInput);
 | 
					Vue.component('ui-input', uiInput);
 | 
				
			||||||
 | 
					Vue.component('ui-button', uiButton);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										39
									
								
								src/client/app/common/views/components/material/button.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/client/app/common/views/components/material/button.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<div class="ui-button">
 | 
				
			||||||
 | 
						<button>
 | 
				
			||||||
 | 
							<slot></slot>
 | 
				
			||||||
 | 
						</button>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					export default Vue.extend({
 | 
				
			||||||
 | 
						props: {
 | 
				
			||||||
 | 
							type: {
 | 
				
			||||||
 | 
								type: String,
 | 
				
			||||||
 | 
								required: false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					@import '~const.styl'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ui-button
 | 
				
			||||||
 | 
						> button
 | 
				
			||||||
 | 
							display block
 | 
				
			||||||
 | 
							width 100%
 | 
				
			||||||
 | 
							padding 0
 | 
				
			||||||
 | 
							color $theme-color-foreground
 | 
				
			||||||
 | 
							font-weight bold
 | 
				
			||||||
 | 
							font-size 16px
 | 
				
			||||||
 | 
							line-height 44px
 | 
				
			||||||
 | 
							background $theme-color
 | 
				
			||||||
 | 
							border none
 | 
				
			||||||
 | 
							border-radius 6px
 | 
				
			||||||
 | 
							outline none
 | 
				
			||||||
 | 
							box-shadow none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ export default Vue.extend({
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	mounted() {
 | 
						mounted() {
 | 
				
			||||||
		this.$refs.label.style.left = this.$refs.prefix.offsetWidth + 'px';
 | 
							this.$refs.label.style.left = (this.$refs.prefix.offsetLeft + this.$refs.prefix.offsetWidth) + 'px';
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		focus() {
 | 
							focus() {
 | 
				
			||||||
| 
						 | 
					@ -38,39 +38,18 @@ export default Vue.extend({
 | 
				
			||||||
@import '~const.styl'
 | 
					@import '~const.styl'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.ui-input
 | 
					.ui-input
 | 
				
			||||||
	padding-bottom 16px
 | 
						margin-bottom 32px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> .input
 | 
						> .input
 | 
				
			||||||
		display flex
 | 
							display flex
 | 
				
			||||||
		margin-top 16px
 | 
							margin-top 16px
 | 
				
			||||||
 | 
							padding 6px 12px
 | 
				
			||||||
		&:before
 | 
							background #f5f5f5
 | 
				
			||||||
			content ''
 | 
							border-radius 6px
 | 
				
			||||||
			display block
 | 
					 | 
				
			||||||
			position absolute
 | 
					 | 
				
			||||||
			bottom 0
 | 
					 | 
				
			||||||
			left 0
 | 
					 | 
				
			||||||
			right 0
 | 
					 | 
				
			||||||
			height 1px
 | 
					 | 
				
			||||||
			background rgba(#000, 0.42)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		&:after
 | 
					 | 
				
			||||||
			content ''
 | 
					 | 
				
			||||||
			display block
 | 
					 | 
				
			||||||
			position absolute
 | 
					 | 
				
			||||||
			bottom 0
 | 
					 | 
				
			||||||
			left 0
 | 
					 | 
				
			||||||
			right 0
 | 
					 | 
				
			||||||
			height 2px
 | 
					 | 
				
			||||||
			background $theme-color
 | 
					 | 
				
			||||||
			opacity 0
 | 
					 | 
				
			||||||
			transform scaleX(0.12)
 | 
					 | 
				
			||||||
			transition border 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)
 | 
					 | 
				
			||||||
			will-change border opacity transform
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		> .label
 | 
							> .label
 | 
				
			||||||
			position absolute
 | 
								position absolute
 | 
				
			||||||
			top 0
 | 
								top 6px
 | 
				
			||||||
			left 0
 | 
								left 0
 | 
				
			||||||
			pointer-events none
 | 
								pointer-events none
 | 
				
			||||||
			transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
 | 
								transition 0.4s cubic-bezier(0.25, 0.8, 0.25, 1)
 | 
				
			||||||
| 
						 | 
					@ -85,6 +64,8 @@ export default Vue.extend({
 | 
				
			||||||
			flex 1
 | 
								flex 1
 | 
				
			||||||
			width 100%
 | 
								width 100%
 | 
				
			||||||
			padding 0
 | 
								padding 0
 | 
				
			||||||
 | 
								font inherit
 | 
				
			||||||
 | 
								font-weight bold
 | 
				
			||||||
			font-size 16px
 | 
								font-size 16px
 | 
				
			||||||
			line-height 32px
 | 
								line-height 32px
 | 
				
			||||||
			background transparent
 | 
								background transparent
 | 
				
			||||||
| 
						 | 
					@ -110,9 +91,7 @@ export default Vue.extend({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	&.focused
 | 
						&.focused
 | 
				
			||||||
		> .input
 | 
							> .input
 | 
				
			||||||
			&:after
 | 
								background #eee
 | 
				
			||||||
				opacity 1
 | 
					 | 
				
			||||||
				transform scaleX(1)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			> .label
 | 
								> .label
 | 
				
			||||||
				color $theme-color
 | 
									color $theme-color
 | 
				
			||||||
| 
						 | 
					@ -121,7 +100,7 @@ export default Vue.extend({
 | 
				
			||||||
	&.filled
 | 
						&.filled
 | 
				
			||||||
		> .input
 | 
							> .input
 | 
				
			||||||
			> .label
 | 
								> .label
 | 
				
			||||||
				top -16px
 | 
									top -20px
 | 
				
			||||||
				left 0 !important
 | 
									left 0 !important
 | 
				
			||||||
				font-size 12px
 | 
									font-size 12px
 | 
				
			||||||
				line-height 20px
 | 
									line-height 20px
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,13 +2,11 @@
 | 
				
			||||||
 * Mobile Client
 | 
					 * Mobile Client
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Vue from 'vue';
 | 
					 | 
				
			||||||
import VueRouter from 'vue-router';
 | 
					import VueRouter from 'vue-router';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Style
 | 
					// Style
 | 
				
			||||||
import './style.styl';
 | 
					import './style.styl';
 | 
				
			||||||
import '../../element.scss';
 | 
					import '../../element.scss';
 | 
				
			||||||
import '../../md.scss';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import init from '../init';
 | 
					import init from '../init';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,8 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="welcome">
 | 
					<div class="welcome">
 | 
				
			||||||
	<div>
 | 
						<div>
 | 
				
			||||||
		<h1><b>Misskey</b>へようこそ</h1>
 | 
							<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey">
 | 
				
			||||||
		<p>Twitter風ミニブログSNS、Misskeyへようこそ。共有したいことを投稿したり、タイムラインでみんなの投稿を読むこともできます。<br><a href="/signup">アカウントを作成する</a></p>
 | 
					 | 
				
			||||||
		<div class="form">
 | 
							<div class="form">
 | 
				
			||||||
			<p>%fa:lock% ログイン</p>
 | 
					 | 
				
			||||||
			<div>
 | 
					 | 
				
			||||||
			<form @submit.prevent="onSubmit">
 | 
								<form @submit.prevent="onSubmit">
 | 
				
			||||||
				<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" placeholder="ユーザー名" autofocus required @change="onUsernameChange">
 | 
									<ui-input v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" placeholder="ユーザー名" autofocus required @change="onUsernameChange">
 | 
				
			||||||
					<span>ユーザー名</span>
 | 
										<span>ユーザー名</span>
 | 
				
			||||||
| 
						 | 
					@ -17,13 +14,12 @@
 | 
				
			||||||
					<span slot="prefix">%fa:lock%</span>
 | 
										<span slot="prefix">%fa:lock%</span>
 | 
				
			||||||
				</ui-input>
 | 
									</ui-input>
 | 
				
			||||||
				<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" placeholder="トークン" required/>
 | 
									<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" placeholder="トークン" required/>
 | 
				
			||||||
					<button type="submit" :disabled="signing">{{ signing ? 'ログインしています' : 'ログイン' }}</button>
 | 
									<ui-button type="submit" :disabled="signing">{{ signing ? 'ログインしています' : 'ログイン' }}</ui-button>
 | 
				
			||||||
			</form>
 | 
								</form>
 | 
				
			||||||
			<div>
 | 
								<div>
 | 
				
			||||||
				<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a>
 | 
									<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
		</div>
 | 
					 | 
				
			||||||
		<div class="tl">
 | 
							<div class="tl">
 | 
				
			||||||
			<p>%fa:comments R% タイムラインを見てみる</p>
 | 
								<p>%fa:comments R% タイムラインを見てみる</p>
 | 
				
			||||||
			<mk-welcome-timeline/>
 | 
								<mk-welcome-timeline/>
 | 
				
			||||||
| 
						 | 
					@ -92,56 +88,23 @@ export default Vue.extend({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style lang="stylus" scoped>
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
.welcome
 | 
					.welcome
 | 
				
			||||||
	background linear-gradient(to bottom, #1e1d65, #bd6659)
 | 
						background #fff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> div
 | 
						> div
 | 
				
			||||||
		padding 16px
 | 
							padding 16px
 | 
				
			||||||
		margin 0 auto
 | 
							margin 0 auto
 | 
				
			||||||
		max-width 500px
 | 
							max-width 500px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		h1
 | 
							> img
 | 
				
			||||||
			margin 0
 | 
								display block
 | 
				
			||||||
			padding 8px
 | 
								max-width 200px
 | 
				
			||||||
			font-size 1.5em
 | 
								margin 0 auto
 | 
				
			||||||
			font-weight normal
 | 
					 | 
				
			||||||
			color #cacac3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			& + p
 | 
					 | 
				
			||||||
				margin 0 0 16px 0
 | 
					 | 
				
			||||||
				padding 0 8px 0 8px
 | 
					 | 
				
			||||||
				color #949fa9
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		.form
 | 
							.form
 | 
				
			||||||
			margin-bottom 16px
 | 
								margin-bottom 16px
 | 
				
			||||||
			background #fff
 | 
					 | 
				
			||||||
			border solid 1px rgba(#000, 0.2)
 | 
					 | 
				
			||||||
			border-radius 8px
 | 
					 | 
				
			||||||
			overflow hidden
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			> p
 | 
					 | 
				
			||||||
				margin 0
 | 
					 | 
				
			||||||
				padding 12px 20px
 | 
					 | 
				
			||||||
				color #555
 | 
					 | 
				
			||||||
				background #f5f5f5
 | 
					 | 
				
			||||||
				border-bottom solid 1px #ddd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			> div
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			> form
 | 
								> form
 | 
				
			||||||
				padding 16px
 | 
									padding 16px
 | 
				
			||||||
					border-bottom solid 1px #ddd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					input
 | 
					 | 
				
			||||||
						display block
 | 
					 | 
				
			||||||
						padding 12px
 | 
					 | 
				
			||||||
						margin 0 0 16px 0
 | 
					 | 
				
			||||||
						width 100%
 | 
					 | 
				
			||||||
						font-size 1em
 | 
					 | 
				
			||||||
						color rgba(#000, 0.7)
 | 
					 | 
				
			||||||
						background #fff
 | 
					 | 
				
			||||||
						outline none
 | 
					 | 
				
			||||||
						border solid 1px #ddd
 | 
					 | 
				
			||||||
						border-radius 4px
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				button
 | 
									button
 | 
				
			||||||
					display block
 | 
										display block
 | 
				
			||||||
| 
						 | 
					@ -164,10 +127,6 @@ export default Vue.extend({
 | 
				
			||||||
						border-color #444
 | 
											border-color #444
 | 
				
			||||||
						box-shadow 0 1px 3px rgba(#000, 0.075), inset 0 0 5px rgba(#000, 0.2)
 | 
											box-shadow 0 1px 3px rgba(#000, 0.075), inset 0 0 5px rgba(#000, 0.2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				> div
 | 
					 | 
				
			||||||
					padding 16px
 | 
					 | 
				
			||||||
					text-align center
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		> .tl
 | 
							> .tl
 | 
				
			||||||
			background #fff
 | 
								background #fff
 | 
				
			||||||
			border solid 1px rgba(#000, 0.2)
 | 
								border solid 1px rgba(#000, 0.2)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue