80
80
<div >
81
81
<button
82
82
class =" text-md font-medium bg-indigo-500 hover:bg-indigo-600 text-white shadow-sm rounded-lg px-5 py-2.5"
83
+ @click =" showModal()"
83
84
>
84
85
Hire Me
85
86
</button >
94
95
</div >
95
96
</div >
96
97
</div >
98
+
99
+ <!-- Hire me modal start -->
100
+ <transition name =" fade" >
101
+ <div v-show =" modal" class =" fixed inset-0 z-30" >
102
+ <!-- background -->
103
+ <div
104
+ v-show =" modal"
105
+ @click =" showModal()"
106
+ class =" bg-filter bg-black bg-opacity-50 fixed inset-0 w-full h-full z-20"
107
+ ></div >
108
+ <!-- -->
109
+ <main
110
+ class =" flex flex-col items-center justify-center h-full w-full"
111
+ >
112
+ <transition name =" fade-up-down" >
113
+ <div
114
+ v-show =" modal"
115
+ class =" modal-wrapper flex items-center z-30"
116
+ >
117
+ <div
118
+ class =" modal max-w-md mx-5 xl:max-w-xl lg:max-w-xl md:max-w-xl bg-secondary-light dark:bg-primary-dark max-h-screen shadow-lg flex-row rounded-xl relative"
119
+ >
120
+ <div
121
+ class =" modal-header flex justify-between gap-10 p-5 border-b border-ternary-light dark:border-ternary-dark"
122
+ >
123
+ <h5
124
+ class =" text-primary-dark dark:text-primary-light text-2xl"
125
+ >
126
+ What project are you looking for?
127
+ </h5 >
128
+ <button
129
+ class =" px-4 font-bold text-primary-dark dark:text-primary-light"
130
+ @click =" showModal()"
131
+ >
132
+ X
133
+ </button >
134
+ </div >
135
+ <div
136
+ class =" modal-body p-5 w-full h-full overflow-y-auto "
137
+ >
138
+ <form class =" max-w-xl m-4 text-left" >
139
+ <div class =" " >
140
+ <input
141
+ class =" w-full px-5 py-2 border-1 border-gray-200 dark:border-secondary-dark rounded-lg text-md dark:font-medium bg-secondary-light dark:bg-ternary-dark text-primary-dark dark:text-ternary-light"
142
+ id =" name"
143
+ name =" name"
144
+ type =" text"
145
+ required =" "
146
+ placeholder =" Name"
147
+ aria-label =" Name"
148
+ />
149
+ </div >
150
+ <div class =" mt-6" >
151
+ <input
152
+ class =" w-full px-5 py-2 border-1 border-gray-200 dark:border-secondary-dark rounded-lg text-md dark:font-medium bg-secondary-light dark:bg-ternary-dark text-primary-dark dark:text-ternary-light"
153
+ id =" email"
154
+ name =" email"
155
+ type =" text"
156
+ required =" "
157
+ placeholder =" Email"
158
+ aria-label =" Email"
159
+ />
160
+ </div >
161
+ <div class =" mt-6" >
162
+ <select
163
+ class =" w-full px-5 py-2 border-1 border-gray-200 dark:border-secondary-dark rounded-lg text-md dark:font-medium bg-secondary-light dark:bg-ternary-dark text-primary-dark dark:text-ternary-light"
164
+ id =" subject"
165
+ name =" subject"
166
+ type =" text"
167
+ required =" "
168
+ aria-label =" Subject"
169
+ >
170
+ <option selected disabled
171
+ >Select Project Type</option
172
+ >
173
+ <option value =" web"
174
+ >Web Application</option
175
+ >
176
+ <option value =" mobile"
177
+ >Mobile Applicaiton</option
178
+ >
179
+ <option value =" design"
180
+ >UI/UX Design</option
181
+ >
182
+ <option value =" graphic"
183
+ >Branding</option
184
+ >
185
+ </select >
186
+ </div >
187
+
188
+ <div class =" mt-6" >
189
+ <textarea
190
+ class =" w-full px-5 py-2 border-1 border-gray-200 dark:border-secondary-dark rounded-lg text-md dark:font-medium bg-secondary-light dark:bg-ternary-dark text-primary-dark dark:text-ternary-light"
191
+ id =" message"
192
+ name =" message"
193
+ cols =" 14"
194
+ rows =" 6"
195
+ placeholder =" Project description"
196
+ ></textarea >
197
+ </div >
198
+
199
+ <div class =" mt-6" >
200
+ <button
201
+ class =" px-6 py-2.5 text-white font-medium tracking-wider bg-indigo-500 hover:bg-indigo-600 rounded-lg"
202
+ type =" submit"
203
+ >
204
+ Send Request
205
+ </button >
206
+ </div >
207
+ </form >
208
+ </div >
209
+ <div
210
+ class =" modal-footer py-3 px-5 border0-t text-right"
211
+ >
212
+ <button
213
+ class =" px-6 py-2 bg-indigo-400 rounded-lg font-bold text-primary-light"
214
+ @click =" showModal()"
215
+ >
216
+ Close
217
+ </button >
218
+ </div >
219
+ </div >
220
+ </div >
221
+ </transition >
222
+ </main >
223
+ </div >
224
+ </transition >
225
+ <!-- Hire me modal end -->
97
226
</nav >
98
227
</template >
99
228
@@ -109,6 +238,7 @@ export default {
109
238
return {
110
239
isOpen: false ,
111
240
theme: ' ' ,
241
+ modal: false ,
112
242
};
113
243
},
114
244
@@ -123,6 +253,20 @@ export default {
123
253
updateTheme (theme ) {
124
254
this .theme = theme;
125
255
},
256
+ showModal () {
257
+ if (this .modal ) {
258
+ // stop screen scrolling
259
+ document
260
+ .getElementsByTagName (' html' )[0 ]
261
+ .classList .remove (' overflow-y-hidden' );
262
+ this .modal = false ;
263
+ } else {
264
+ document
265
+ .getElementsByTagName (' html' )[0 ]
266
+ .classList .add (' overflow-y-hidden' );
267
+ this .modal = true ;
268
+ }
269
+ },
126
270
},
127
271
updated () {
128
272
feather .replace ();
@@ -136,4 +280,43 @@ export default {
136
280
@apply dark :text-indigo-400;
137
281
@apply font-medium ;
138
282
}
283
+
284
+ .modal-body {
285
+ max-height : 500px ;
286
+ }
287
+ .bg-gray-800-opacity {
288
+ background-color : #2d374850 ;
289
+ }
290
+ @media screen and (max-width : 768px ) {
291
+ .modal-body {
292
+ max-height : 400px ;
293
+ }
294
+ }
295
+ .fade-up-down-enter-active {
296
+ transition : all 0.3s ease ;
297
+ }
298
+ .fade-up-down-leave-active {
299
+ transition : all 0.3s ease ;
300
+ }
301
+ .fade-up-down-enter {
302
+ transform : translateY (10% );
303
+ opacity : 0 ;
304
+ }
305
+ .fade-up-down-leave-to {
306
+ transform : translateY (10% );
307
+ opacity : 0 ;
308
+ }
309
+
310
+ .fade-enter-active {
311
+ -webkit-transition : opacity 2s ;
312
+ transition : opacity 0.3s ;
313
+ }
314
+ .fade-leave-active {
315
+ transition : opacity 0.3s ;
316
+ }
317
+
318
+ .fade-enter ,
319
+ .fade-leave-to {
320
+ opacity : 0 ;
321
+ }
139
322
</style >
0 commit comments