Added element grid order for mobile styling.

- Added styling for positioning and styling on mobile.
- New vippsPill component for smaller vipps button when on mobile.
This commit is contained in:
2021-01-02 13:28:57 +01:00
parent 326101f7d2
commit f115ee79e6

View File

@@ -2,22 +2,22 @@
<div> <div>
<header ref="header"> <header ref="header">
<div class="container"> <div class="container">
<div class="left"> <div class="instructions">
<h1 class="title">Virtuelt lotteri</h1> <h1 class="title">Virtuelt lotteri</h1>
<ol> <ol>
<li>Vurder om du ønsker å bruke vår <router-link to="/generate" class="vin-link">loddgenerator</router-link>, eller se <router-link to="/dagens" class="vin-link">dagens fangst.</router-link></li> <li>Vurder om du ønsker å bruke <router-link to="/generate" class="vin-link">loddgeneratoren</router-link>, eller sjekke ut <router-link to="/dagens" class="vin-link">dagens fangst.</router-link></li>
<li>Send vipps med melding "Vinlotteri" for å bli registrert til virtuelt lotteri.</li> <li>Send vipps med melding "Vinlotteri" for å bli registrert til lotteriet.</li>
<li>Send gjerne melding om fargeønske også.</li> <li>Send gjerne melding om fargeønske også.</li>
</ol> </ol>
</div>
<p> <Vipps :amount="1" class="vipps-qr desktop-only" />
<VippsPill class="vipps-pill mobile-only" />
<p class="call-to-action">
<span class="vin-link">Følg med utviklingen</span> og <span class="vin-link">chat om trekningen</span> <span class="vin-link">Følg med utviklingen</span> og <span class="vin-link">chat om trekningen</span>
<i class="icon icon--arrow-left" @click="scrollToContent"></i></p> <i class="icon icon--arrow-left" @click="scrollToContent"></i></p>
</div>
<div class="right">
<Vipps :amount="1" />
</div>
</div> </div>
</header> </header>
@@ -62,6 +62,7 @@
import { attendees, winners, prelottery } from "@/api"; import { attendees, winners, prelottery } from "@/api";
import Chat from "@/ui/Chat"; import Chat from "@/ui/Chat";
import Vipps from "@/ui/Vipps"; import Vipps from "@/ui/Vipps";
import VippsPill from "@/ui/VippsPill";
import Attendees from "@/ui/Attendees"; import Attendees from "@/ui/Attendees";
import Wine from "@/ui/Wine"; import Wine from "@/ui/Wine";
import Winners from "@/ui/Winners"; import Winners from "@/ui/Winners";
@@ -69,17 +70,16 @@ import WinnerDraw from "@/ui/WinnerDraw";
import io from "socket.io-client"; import io from "socket.io-client";
export default { export default {
components: { Chat, Attendees, Winners, WinnerDraw, Vipps, Wine }, components: { Chat, Attendees, Winners, WinnerDraw, Vipps, VippsPill, Wine },
data() { data() {
return { return {
attendees: [], attendees: [],
winners: [], winners: [],
wines: [], wines: [],
currentWinnerDrawn: false, currentWinnerDrawn: false,
currentWinner: {}, currentWinner: null,
socket: null, socket: null,
attendeesFetched: false, attendeesFetched: false,
winnersFetched: false,
wasDisconnected: false, wasDisconnected: false,
ticketsBought: {} ticketsBought: {}
}; };
@@ -98,14 +98,18 @@ export default {
this.socket.on("winner", async msg => { this.socket.on("winner", async msg => {
this.currentWinnerDrawn = true; this.currentWinnerDrawn = true;
this.currentWinner = { name: msg.name, color: msg.color }; this.currentWinner = {
name: msg.name,
color: msg.color,
winnerCount: msg.winner_count
};
setTimeout(() => { setTimeout(() => {
this.getWinners(); this.getWinners();
this.getAttendees(); this.getAttendees();
this.currentWinner = null; this.currentWinner = null;
this.currentWinnerDrawn = false; this.currentWinnerDrawn = false;
}, 12000); }, 19250);
}); });
this.socket.on("refresh_data", async msg => { this.socket.on("refresh_data", async msg => {
this.getAttendees(); this.getAttendees();
@@ -125,7 +129,6 @@ export default {
if (response) { if (response) {
this.winners = response; this.winners = response;
} }
this.winnersFetched = true;
}, },
getTodaysWines() { getTodaysWines() {
prelottery() prelottery()
@@ -177,7 +180,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../styles/global.scss";
@import "../styles/variables.scss"; @import "../styles/variables.scss";
@import "../styles/media-queries.scss"; @import "../styles/media-queries.scss";
@@ -185,8 +188,19 @@ export default {
width: 80vw; width: 80vw;
padding: 0 10vw; padding: 0 10vw;
@include mobile {
width: 90vw;
padding: 0 5vw;
}
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-template-columns: repeat(4, 1fr);
> div, > section {
@include mobile {
grid-column: span 5;
}
}
} }
h2 { h2 {
@@ -195,39 +209,52 @@ h2 {
} }
header { header {
h1 {
text-align: left;
font-weight: 500;
font-size: 3rem;
margin: 4rem 0 2rem;
@include mobile {
margin-top: 1rem;
font-size: 2.75rem;
}
}
background-color: $primary; background-color: $primary;
padding-bottom: 3rem; padding-bottom: 3rem;
margin-bottom: 3rem; margin-bottom: 3rem;
.left { .instructions {
grid-column: 1 / 4; grid-column: 1 / 4;
margin-right: 1rem;
@include mobile { @include mobile {
grid-column: 1 / 5; grid-column: span 5;
margin-right: 0;
} }
} }
.right { .vipps-qr {
grid-column: 4; grid-column: 4;
margin-left: 1rem;
@include mobile {
display: none;
}
} }
h1 { .vipps-pill {
text-align: left !important; margin: 0 auto 2rem;
font-weight: 500 !important; max-width: 80vw;
font-size: 3rem; }
margin: 4rem 0 2rem !important;
.call-to-action {
grid-column: span 5;
} }
ol { ol {
font-size: 1.4rem; font-size: 1.4rem;
line-height: 3rem; line-height: 3rem;
color: $matte-text-color; color: $matte-text-color;
@include mobile {
line-height: 2rem;
}
} }
p { p {
@@ -237,7 +264,7 @@ header {
position: relative; position: relative;
.vin-link { .vin-link {
cursor: default !important; cursor: default;
} }
.icon { .icon {
@@ -252,13 +279,17 @@ header {
} }
.vin-link { .vin-link {
font-weight: 400 !important; font-weight: 400;
border-width: 2px; border-width: 2px;
} }
} }
.todays-raffles { .todays-raffles {
grid-column: 1; grid-column: 1;
@include mobile {
order: 2;
}
} }
.raffle-container { .raffle-container {
@@ -269,6 +300,11 @@ header {
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
@include mobile {
width: 100%;
height: 100%;
}
.raffle-element { .raffle-element {
font-size: 1.6rem; font-size: 1.6rem;
color: $matte-text-color; color: $matte-text-color;
@@ -284,35 +320,50 @@ header {
.winners { .winners {
grid-column: 2 / 5; grid-column: 2 / 5;
@include mobile {
order: 1;
}
} }
.container-attendees { .container-attendees {
grid-column: 1 / 3; grid-column: 1 / 3;
margin-right: 1rem; margin-right: 1rem;
margin-top: 2rem; margin-top: 2rem;
}
.attendees { @include mobile {
padding: 2rem; margin-right: 0;
order: 4;
}
-webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15); > div {
-moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15); padding: 1rem;
box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
-webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
}
} }
.container-chat { .container-chat {
grid-column: 3 / 5; grid-column: 3 / 5;
margin-left: 1rem; margin-left: 1rem;
margin-top: 2rem; margin-top: 2rem;
@include mobile {
margin-left: 0;
order: 3;
}
> div {
padding: 1rem;
-webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
}
} }
.chat {
padding: 2rem;
-webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.15);
}
.wines-container { .wines-container {
margin-bottom: 4rem; margin-bottom: 4rem;