|
1 | 1 | <template>
|
2 |
| - <v-bottom-sheet |
3 |
| - v-model="sheet" |
4 |
| - class="sheet" |
5 |
| - fullscreen |
6 |
| - hide-overlay |
7 |
| - persistent |
8 |
| - scrollable |
9 |
| - > |
10 |
| - <v-card class="card"> |
11 |
| - <v-card-title class="card-title" /> |
12 |
| - <v-card-text class="card-text"> |
13 |
| - <v-container class="container"> |
14 |
| - <v-layout align-center="true" column> |
15 |
| - <v-row> |
16 |
| - <h2 class="english-title"> |
17 |
| - LOGIN |
18 |
| - </h2> |
19 |
| - </v-row> |
20 |
| - <v-row> |
21 |
| - <h1 class="japanese-title"> |
22 |
| - ログインしてください |
23 |
| - </h1> |
24 |
| - </v-row> |
25 |
| - <div class="divider" /> |
26 |
| - <v-row class="row-input"> |
27 |
| - <h3 class="input-title"> |
28 |
| - メールアドレス |
29 |
| - </h3> |
30 |
| - <InputField |
31 |
| - v-model="email" |
32 |
| - class="input-field" |
33 |
| - label="メールアドレス" |
34 |
| - require |
35 |
| - type="email" |
36 |
| - /> |
37 |
| - </v-row> |
38 |
| - <v-row class="row-input"> |
39 |
| - <h3 class="input-title"> |
40 |
| - パスワード |
41 |
| - </h3> |
42 |
| - <InputField |
43 |
| - v-model="password" |
44 |
| - class="input-field" |
45 |
| - label="パスワード" |
46 |
| - require |
47 |
| - type="password" |
48 |
| - /> |
49 |
| - </v-row> |
50 |
| - |
51 |
| - <v-row class="row-input"> |
52 |
| - <v-btn |
53 |
| - :disabled="disableLogin" |
54 |
| - :loading="loading" |
55 |
| - block |
56 |
| - class="button" |
57 |
| - color="#FFDB6C" |
58 |
| - height="60px" |
59 |
| - rounded |
60 |
| - @click="doLogin" |
61 |
| - > |
62 |
| - ログインする |
63 |
| - </v-btn> |
64 |
| - </v-row> |
65 |
| - <v-row class="row"> |
66 |
| - <v-btn |
67 |
| - :disabled="loading" |
68 |
| - block |
69 |
| - class="button" |
70 |
| - color="#ffffff" |
71 |
| - height="60px" |
72 |
| - text |
73 |
| - to="/" |
74 |
| - > |
75 |
| - パスワードを忘れた方へ |
76 |
| - </v-btn> |
77 |
| - </v-row> |
78 |
| - </v-layout> |
79 |
| - </v-container> |
80 |
| - </v-card-text> |
81 |
| - </v-card> |
82 |
| - </v-bottom-sheet> |
| 2 | + <bottom-sheet-layer fullscreen title="ログインしてください" title-en="LOGIN"> |
| 3 | + <template v-slot:LayerContents> |
| 4 | + <dl> |
| 5 | + <dt class="SignIn-ItemTitle">メールアドレス</dt> |
| 6 | + <dd class="SignIn-Item"> |
| 7 | + <input-field |
| 8 | + v-model="email" |
| 9 | + |
| 10 | + require |
| 11 | + type="email" |
| 12 | + /> |
| 13 | + </dd> |
| 14 | + <dt class="SignIn-ItemTitle">パスワード</dt> |
| 15 | + <dd class="SignIn-Item"> |
| 16 | + <input-field |
| 17 | + v-model="password" |
| 18 | + label="パスワード" |
| 19 | + require |
| 20 | + type="password" |
| 21 | + /> |
| 22 | + </dd> |
| 23 | + </dl> |
| 24 | + </template> |
| 25 | + <template v-slot:LayerFooter> |
| 26 | + <div class="SignIn-ButtonOuter"> |
| 27 | + <action-button |
| 28 | + :is-disabled="disableLogin" |
| 29 | + :is-loading="loading" |
| 30 | + class="SignIn-Button" |
| 31 | + text="ログイン" |
| 32 | + theme="primary" |
| 33 | + @onClick="doLogin" |
| 34 | + /> |
| 35 | + <v-btn |
| 36 | + :disabled="loading" |
| 37 | + block |
| 38 | + class="button" |
| 39 | + color="#ffffff" |
| 40 | + height="60px" |
| 41 | + text |
| 42 | + to="/" |
| 43 | + > |
| 44 | + <span>パスワードを忘れた方へ</span> |
| 45 | + </v-btn> |
| 46 | + </div> |
| 47 | + </template> |
| 48 | + </bottom-sheet-layer> |
83 | 49 | </template>
|
84 | 50 |
|
85 | 51 | <script lang="ts">
|
86 | 52 | import Vue from 'vue'
|
87 |
| -import firebase from '~/plugins/firebase' |
88 |
| -import { vxm } from '~/store' |
| 53 | +import BottomSheetLayer from '@/components/BottomSheetLayer.vue' |
| 54 | +import ActionButton from '@/components/ActionButton.vue' |
89 | 55 | import InputField from '@/components/InputField.vue'
|
90 |
| -
|
91 |
| -export type DataType = { |
92 |
| - email: string |
93 |
| - password: string |
94 |
| - loading: boolean |
95 |
| - sheet: boolean |
96 |
| -} |
| 56 | +import firebase from '@/plugins/firebase' |
| 57 | +import { vxm } from '~/store' |
97 | 58 |
|
98 | 59 | export default Vue.extend({
|
99 |
| - components: { |
100 |
| - InputField |
101 |
| - }, |
102 |
| - data(): DataType { |
| 60 | + components: { BottomSheetLayer, ActionButton, InputField }, |
| 61 | + layout: 'background', |
| 62 | + data() { |
103 | 63 | return {
|
104 | 64 | email: '',
|
105 | 65 | password: '',
|
106 |
| - loading: false, |
107 |
| - sheet: true |
| 66 | + loading: false |
108 | 67 | }
|
109 | 68 | },
|
110 | 69 | computed: {
|
@@ -136,80 +95,20 @@ export default Vue.extend({
|
136 | 95 | </script>
|
137 | 96 |
|
138 | 97 | <style lang="scss" scoped>
|
139 |
| -.sheet { |
140 |
| - margin-top: 40px !important; |
141 |
| -} |
142 |
| -.card { |
143 |
| - background-color: $color-base-color-07; |
144 |
| - border-radius: 24px 24px 0 0 !important; |
145 |
| -} |
146 |
| -
|
147 |
| -.card-title { |
148 |
| - padding: 8px !important; |
149 |
| -} |
150 |
| -.card-text { |
151 |
| - padding: 0 !important; |
152 |
| -} |
153 |
| -
|
154 |
| -.container { |
155 |
| - padding: 0 16px 16px; |
156 |
| -} |
157 |
| -
|
158 |
| -.row { |
159 |
| - margin: 0; |
160 |
| - padding: 0; |
161 |
| -} |
162 |
| -
|
163 |
| -.row-input { |
164 |
| - padding: 0; |
165 |
| - width: 100%; |
166 |
| - max-width: 640px; |
167 |
| - margin: 10px 0 20px 0; |
168 |
| -} |
169 |
| -
|
170 |
| -.col { |
171 |
| - padding: 0; |
172 |
| -} |
173 |
| -
|
174 |
| -.message { |
175 |
| - align-self: center; |
176 |
| - color: $color-white !important; |
177 |
| -} |
178 |
| -
|
179 |
| -.add-button { |
180 |
| - align-self: start; |
181 |
| - float: right; |
182 |
| -} |
183 |
| -.english-title { |
184 |
| - color: $color-white; |
185 |
| - font-weight: bold; |
186 |
| - font-size: 15px; |
187 |
| - line-height: 20px; |
188 |
| - margin: 10px auto; |
189 |
| -} |
190 |
| -.japanese-title { |
191 |
| - color: $color-white; |
| 98 | +.SignIn-ItemTitle { |
| 99 | + font-size: 16px; |
192 | 100 | font-weight: bold;
|
193 |
| - font-size: 20px; |
194 |
| - line-height: 34px; |
195 |
| -} |
196 |
| -.input-title { |
197 | 101 | color: $color-white;
|
198 |
| - font-weight: bold; |
199 |
| - font-size: 15px; |
200 |
| - line-height: 34px; |
201 |
| - margin: 0 auto; |
| 102 | + text-align: center; |
| 103 | + margin: 4px 0; |
202 | 104 | }
|
203 |
| -.divider { |
204 |
| - width: 90vw; |
205 |
| - margin: 10px 0 20px 0; |
206 |
| - border: 0.5px solid $color-base-color-01; |
| 105 | +.SignIn-Item { |
| 106 | + margin: 20px 0; |
207 | 107 | }
|
208 |
| -.input-field { |
209 |
| - width: 100%; |
| 108 | +.SignIn-ButtonOuter { |
| 109 | + justify-content: space-between; |
210 | 110 | }
|
211 |
| -.button { |
212 |
| - font-size: 16px; |
213 |
| - font-weight: bold; |
| 111 | +.SignIn-Button { |
| 112 | + flex: 0 1 48%; |
214 | 113 | }
|
215 | 114 | </style>
|
0 commit comments