<template lang="pug">
#app
- Language
Settings
ContactForm
UpsertUser
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
// Menu (top of page):
// Left: hall, variants, problems, mygames
- // Right: usermenu, settings, flag
+ // Right: usermenu, settings
nav
label.drawer-toggle(for="drawerControl")
input#drawerControl.drawer(type="checkbox")
#leftMenu
router-link(to="/")
| {{ st.tr["Hall"] }}
+ router-link(to="/mygames")
+ | {{ st.tr["My games"] }}
router-link(to="/variants")
| {{ st.tr["Variants"] }}
router-link(to="/problems")
| {{ st.tr["Problems"] }}
- router-link(to="/mygames")
- | {{ st.tr["My games"] }}
#rightMenu
- .clickable(onClick="doClick('modalUser')")
- | {{ st.user.id > 0 ? (st.user.name || "@nonymous") : "Login" }}
- .clickable(onClick="doClick('modalSettings')")
- | {{ st.tr["Settings"] }}
- .clickable#flagContainer(onClick="doClick('modalLang')")
- img(v-if="!!st.lang" :src="flagImage")
+ .clickable(onClick="window.doClick('modalUser')") {{ userName }}
+ #divSettings.clickable(onClick="window.doClick('modalSettings')")
+ span {{ st.tr["Settings"] }}
+ img(src="/images/icons/settings.svg")
router-view
.row
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
footer
- router-link.menuitem(to="/about") {{ st.tr["About"] }}
- router-link.menuitem(to="/news") {{ st.tr["News"] }}
- p.clickable(onClick="doClick('modalContact')")
- | {{ st.tr["Contact"] }}
+ .left-part
+ router-link.menuitem(to="/about") {{ st.tr["About"] }}
+ router-link.menuitem(to="/faq") F.A.Q.
+ p.menuitem.clickable(onClick="window.doClick('modalContact')")
+ | {{ st.tr["Contact"] }}
+ .right-part
+ a.menuitem(href="https://discord.gg/a9ZFKBe")
+ span Discord
+ img.first(src="/images/icons/discord.svg")
+ a.menuitem(href="https://github.com/yagu0/vchess")
+ span {{ st.tr["Code"] }}
+ img(src="/images/icons/github.svg")
</template>
<script>
import ContactForm from "@/components/ContactForm.vue";
-import Language from "@/components/Language.vue";
import Settings from "@/components/Settings.vue";
import UpsertUser from "@/components/UpsertUser.vue";
-import { store } from "./store.js";
-import { processModalClick } from "./utils/modalClick.js";
+import { store } from "@/store.js";
+import { ajax } from "@/utils/ajax.js";
export default {
components: {
ContactForm,
- Language,
Settings,
- UpsertUser,
+ UpsertUser
},
data: function() {
- return {
- st: store.state,
- };
+ return { st: store.state };
},
computed: {
- flagImage: function() {
- return `/images/flags/${this.st.lang}.svg`;
- },
- },
- mounted: function() {
- let dialogs = document.querySelectorAll("div[role='dialog']");
- dialogs.forEach(d => {
- d.addEventListener("click", processModalClick);
- });
+ userName: function() {
+ return (
+ this.st.user.id > 0
+ ? (this.st.user.name || "@nonymous")
+ : "Login"
+ );
+ }
},
methods: {
hideDrawer: function(e) {
- if (e.target.innerText == "Forum")
- return; //external link
e.preventDefault(); //TODO: why is this needed?
document.getElementsByClassName("drawer")[0].checked = false;
- },
- },
+ }
+ }
};
</script>
<style lang="sass">
html, *
font-family: "Open Sans", Arial, sans-serif
- --a-link-color: black
- --a-visited-color: black
+ --a-link-color: darkred
+ --a-visited-color: darkred
+ --card-back-color: #f4f6f6
+ --button-back-color: #d1d5d5
+ --table-body-back-color: #f8f8f8
body
padding: 0
// 45px is footer height
min-height: calc(100vh - 45px)
overflow: hidden
- @media screen and (max-width: 767px)
- padding: 0
+ padding: 0
+ margin: 0
.row > div
padding: 0
+a
+ text-decoration: underline
+
header
width: 100%
display: flex
align-items: center
justify-content: center
margin: 0 auto
- & > img
- width: 30px
- height: 30px
.clickable
cursor: pointer
.text-center
text-align: center
+.bold
+ font-weight: bold
+
.clearer
clear: both
+.button-group
+ margin: 0
+
+input[type="checkbox"]:focus
+ outline: 0
+
+input[type=checkbox]:checked:before
+ top: -5px
+ height: 18px
+
+table
+ display: block
+ padding: 0
+ tr > td
+ cursor: pointer
+ th, td
+ padding: 5px
+
+#divSettings
+ padding: 0 10px 0 0
+ height: 100%
+ & > span
+ padding-top: 0
+ padding-bottom: 0
+ padding-right: 5px
+ vertical-align: middle
+ & > img
+ padding: 0
+ height: 1.2em
+ vertical-align: middle
+
+@media screen and (max-width: 767px)
+ table
+ tr > th, td
+ font-size: 14px
+
nav
width: 100%
margin: 0
justify-content: flex-start
& > a
display: inline-block
+ text-decoration: none
color: #2c3e50
&.router-link-exact-active
- color: #42b983
+ color: #388e3c
& > #rightMenu
padding: 0
width: 50%
justify-content: flex-end
& > div
display: inline-block
- &#flagContainer
- display: inline-flex
- & > img
- padding: 0
- width: 36px
- height: 27px
@media screen and (max-width: 767px)
& > #leftMenu
+ margin-top: 42px
padding-bottom: 5px
& > a
+ text-decoration: none
color: #2c3e50
&.router-link-exact-active
- color: #42b983
+ color: #388e3c
& > #rightMenu
padding-top: 5px
border-top: 1px solid darkgrey
- & > div
- &#flagContainer
- display: inline-flex
- & > img
- padding: 0
- width: 36px
- height: 27px
@media screen and (max-width: 767px)
nav
- height: 32px
+ height: 42px
border: none
& > label.drawer-toggle
- font-size: 1.2rem
+ cursor: pointer
position: absolute
- top: -12px
- //padding: -5px 0 0 10px
+ top: 0
+ left: 5px
+ line-height: 42px
+ height: 42px
+ padding: 0
+ & > label.drawer-toggle:before
+ font-size: 42px
+ & > #menuBar
+ z-index: 5000 //to hide currently selected piece if any
[type="checkbox"].drawer+*
right: -767px
+[type=checkbox].drawer+* .drawer-close
+ top: 0
+ left: 5px
+ padding: 0
+ height: 50px
+ width: 50px
+ line-height: 50px
+
+[type=checkbox].drawer+* .drawer-close:before
+ font-size: 50px
+
@media screen and (max-width: 767px)
.button-group
flex-direction: row
border-top: 0
footer
+ .left-part
+ display: inline-flex
+ justify-content: flex-end
+ width: 50%
+ & > p
+ display: inline-block
+ margin: 0 12px
+ @media screen and (max-width: 500px)
+ display: block
+ width: 100%
+ margin-bottom: 7px
+ text-align: center
+ .right-part
+ display: inline-flex
+ justify-content: flex-start
+ width: 50%
+ @media screen and (max-width: 500px)
+ display: block
+ width: 100%
+ text-align: center
height: 45px
border: 1px solid #ddd
box-sizing: border-box
padding: 0
display: inline-flex
align-items: center
- justify-content: center
- & > .router-link-exact-active
- color: #42b983 !important
+ & > .left-part > .router-link-exact-active
+ color: #388e3c !important
+ text-decoration: none
+footer .menuitem
+ margin: 0 12px
+ display: inline-flex
+ align-self: center
+ &:link
+ color: #2c3e50
+ text-decoration: none
+ &:visited, &:hover
+ color: #2c3e50
text-decoration: none
- & > .menuitem
- display: inline-block
- margin: 0 12px
- &:link
- color: #2c3e50
- &:visited, &:hover
- color: #2c3e50
- text-decoration: none
- & > p
- display: inline-block
- margin: 0 12px
+footer > .right-part > a.menuitem > img
+ display: inline-block
+ height: 1.3em
+ margin: 0 5px
+ //height: 1.5em
+ //margin: 0
+ //&.first
+ @media screen and (min-width: 501px)
+ margin-left: 5px
@media screen and (max-width: 767px)
footer
border: none
-// Styles for diagrams and board (partial).
-// TODO: where to put that ?
-
-.light-square-diag
- background-color: #e5e5ca
-
-.dark-square-diag
- background-color: #6f8f57
-
-div.board
- float: left
- height: 0
- display: inline-block
- position: relative
-
-div.board8
- width: 12.5%
- padding-bottom: 12.5%
-
-div.board10
- width: 10%
- padding-bottom: 10%
-
-div.board11
- width: 9.09%
- padding-bottom: 9.1%
-
-img.piece
- width: 100%
-
-img.piece, img.mark-square
- max-width: 100%
- height: auto
- display: block
-
-img.mark-square
- opacity: 0.6
- width: 76%
- position: absolute
- top: 12%
- left: 12%
- opacity: .7
-
-.in-shadow
- filter: brightness(50%)
+@media screen and (max-width: 500px)
+ .container
+ min-height: calc(100vh - 67px)
+ footer
+ height: 67px
+ display: block
+ padding: 5px 0
</style>