Skip to content

Commit b8268ba

Browse files
authored
Merge pull request #33 from DartCaller/develop
v1.2.0
2 parents 1dfc77d + a989cb9 commit b8268ba

38 files changed

+2525
-1582
lines changed

.storybook/customTheme.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// .storybook/YourTheme.js
2+
3+
import { create } from '@storybook/theming';
4+
5+
export default create({
6+
base: 'dark',
7+
appBg: 'rgba(16,15,19,1)',
8+
barBg: 'rgba(16,15,19,1)',
9+
});

.storybook/manager.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { addons } from '@storybook/addons';
2+
import customTheme from './customTheme';
3+
4+
addons.setConfig({
5+
theme: customTheme,
6+
sidebar: {
7+
showRoots: true,
8+
collapsedRoots: [],
9+
},
10+
});

.storybook/preview.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,28 @@ import Vuesax from 'vuesax'
55
import 'vuesax/dist/vuesax.css'
66
import ICountUp from 'vue-countup-v2'
77

8+
import Socket from '../plugins/socket'
9+
10+
Socket({ store: {}}, (name, plugin) => {
11+
Vue.use({ install: (VueInstance) => {
12+
VueInstance.prototype['$'+name] = plugin
13+
}})
14+
})
15+
16+
Vue.use({ install: (VueInstance) => {
17+
VueInstance.prototype.$store = { state: {}, commit: () => ({}) }
18+
}})
819

920
Vue.component('CountUp', ICountUp)
21+
Vue.component('NuxtLink', {
22+
props: {
23+
to: {
24+
type: String,
25+
required: true
26+
}
27+
},
28+
template: '<a :href="to"><slot /></a>'
29+
})
1030
Vue.use(Vuesax, {})
1131

1232
export const parameters = {

components/TheNavBar.vue

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<template>
2+
<the-nav-bar-pure
3+
:logged-in="loggedIn"
4+
:items="navItems"
5+
:logged-in-items="loggedInNavItems"
6+
/>
7+
</template>
8+
9+
<script>
10+
import TheNavBarPure from '~/components/TheNavBarPure'
11+
12+
export default {
13+
name: 'TheNavBar',
14+
components: { TheNavBarPure },
15+
data() {
16+
return {
17+
navItems: [
18+
{ label: 'Game', href: 'create-game' },
19+
{ label: 'Profile', clickHandler: this.notImplemented },
20+
{ label: 'Settings', clickHandler: this.notImplemented },
21+
{ label: 'Logout', clickHandler: this.logout },
22+
],
23+
loggedInNavItems: [{ label: 'Login', clickHandler: this.login }],
24+
}
25+
},
26+
computed: {
27+
loggedIn() {
28+
return this.$store.state.accessToken !== null
29+
},
30+
},
31+
methods: {
32+
login() {
33+
this.$auth0.login()
34+
},
35+
logout() {
36+
this.$auth0.logout()
37+
},
38+
notImplemented() {
39+
this.$vs.notification({
40+
progress: 'auto',
41+
position: 'top-center',
42+
duration: 5000,
43+
title: 'Not yet implemented',
44+
text:
45+
'But Timon, Pumba and the whole Lion King family is busy as a bee working on it.',
46+
})
47+
},
48+
},
49+
}
50+
</script>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { action } from '@storybook/addon-actions'
2+
import TheNavBarPure from './TheNavBarPure'
3+
4+
export default {
5+
component: TheNavBarPure,
6+
excludeStories: /.*Data$/,
7+
title: 'Common/TheNavBarPure',
8+
decorators: [
9+
() => ({
10+
template:
11+
'<div style="position: relative; margin: 0.5rem; background-color: #303030"><story/></div>',
12+
}),
13+
],
14+
}
15+
16+
const Template = (args, { argTypes }) => ({
17+
components: { TheNavBarPure },
18+
props: Object.keys(argTypes),
19+
template: '<TheNavBarPure v-bind="$props" />',
20+
})
21+
export const Default = Template.bind({})
22+
Default.args = {
23+
loggedIn: false,
24+
itemsLoggedIn: [
25+
{ label: 'Game', href: 'create-game' },
26+
{ label: 'Profile', clickHandler: action('ProfileClicked') },
27+
{ label: 'Settings', clickHandler: action('SettingsClicked') },
28+
{ label: 'Logout', clickHandler: action('LogoutClicked') },
29+
],
30+
items: [{ label: 'Login', clickHandler: () => {} }],
31+
}
32+
33+
export const LoggedIn = Template.bind({})
34+
LoggedIn.args = {
35+
...Default.args,
36+
loggedIn: true,
37+
}

components/TheNavBarPure.vue

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<template>
2+
<vs-navbar color="#303030" text-white square>
3+
<template #left>
4+
<h2>DartCaller</h2>
5+
</template>
6+
<template #right>
7+
<template v-for="item in itemsToDisplay">
8+
<template v-if="item.href">
9+
<NuxtLink :key="item.label" :to="item.href">
10+
<styledButton>{{ item.label }}</styledButton>
11+
</NuxtLink>
12+
</template>
13+
<template v-else>
14+
<styledButton :key="item.label" @click="item.clickHandler">
15+
{{ item.label }}
16+
</styledButton>
17+
</template>
18+
</template>
19+
</template>
20+
</vs-navbar>
21+
</template>
22+
23+
<script>
24+
import styledButton from '~/components/common/StyledButton'
25+
26+
export default {
27+
name: 'TheNavBar',
28+
components: { styledButton },
29+
props: {
30+
loggedIn: {
31+
type: Boolean,
32+
default: false,
33+
},
34+
items: {
35+
type: Array,
36+
required: true,
37+
},
38+
itemsLoggedIn: {
39+
type: Array,
40+
required: true,
41+
},
42+
},
43+
computed: {
44+
itemsToDisplay() {
45+
return this.loggedIn ? this.itemsLoggedIn : this.items
46+
},
47+
},
48+
}
49+
</script>

components/common/StyledButton.stories.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import StyledButton from './StyledButton.vue'
44
export default {
55
component: StyledButton,
66
excludeStories: /.*Data$/,
7-
title: 'StyledButton',
7+
title: 'Common/StyledButton',
88
argTypes: {
99
icon: {
1010
control: {

components/common/modal/CorrectScore.stories.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
import PureCorrectScore from './PureCorrectScore.vue'
1+
import CorrectScorePure from './CorrectScorePure.vue'
22

33
export default {
4-
component: PureCorrectScore,
5-
title: 'PureCorrectScore',
4+
component: CorrectScorePure,
5+
title: 'InGame/CorrectScorePure',
66
exludeStories: /.*Data$/,
7+
decorators: [
8+
() => ({
9+
template: '<div style="max-width: 40rem; margin: 1em;"><story/></div>',
10+
}),
11+
],
712
}
813

914
const Template = (args, { argTypes }) => ({
10-
components: { PureCorrectScore },
15+
components: { CorrectScorePure },
1116
props: Object.keys(argTypes),
12-
template: '<pureCorrectScore v-bind="$props"/>',
17+
template: '<correctScorePure v-bind="$props"/>',
1318
})
1419
export const Default = Template.bind({})
1520
Default.args = {

components/common/modal/CorrectScore.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<PureCorrectScore
2+
<CorrectScorePure
33
:player-names="game.playerNames"
44
:player-order="game.playerOrder"
55
:current-player="game.currentPlayer"
@@ -9,11 +9,11 @@
99
</template>
1010

1111
<script>
12-
import PureCorrectScore from '~/components/common/modal/PureCorrectScore.vue'
12+
import CorrectScorePure from '~/components/common/modal/CorrectScorePure.vue'
1313
1414
export default {
1515
name: 'Modal',
16-
components: { PureCorrectScore },
16+
components: { CorrectScorePure },
1717
data: () => ({
1818
allPlayers: [],
1919
chosenPlayerID: '',

components/common/modal/PureCorrectScore.vue renamed to components/common/modal/CorrectScorePure.vue

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h2 class="colored mb text-center">Correct Score</h2>
44
<div class="row">
55
<div>
6-
<p>For Player:</p>
6+
<p class="label">For Player:</p>
77
<vs-select
88
v-model="chosenPlayerID"
99
color="#14A76C"
@@ -24,7 +24,7 @@
2424
</vs-select>
2525
</div>
2626
<div>
27-
<p>Last Score:</p>
27+
<p class="label">Last Score:</p>
2828
<vs-input v-model="newScoreValue" class="input" border success>
2929
<template v-if="!newScoreIsValid" #message-danger> Invalid </template>
3030
</vs-input>
@@ -280,8 +280,8 @@ export default {
280280
display: flex;
281281
align-items: center;
282282
283-
:not(:first-child) {
284-
margin-left: 10px;
283+
.label {
284+
margin-right: 10px;
285285
}
286286
}
287287
@@ -290,7 +290,19 @@ export default {
290290
}
291291
292292
.input {
293-
max-width: 50px;
293+
&::v-deep input {
294+
max-width: 60px;
295+
text-align: center;
296+
297+
&:focus {
298+
padding-left: 9.5px;
299+
}
300+
}
301+
302+
&::v-deep .vs-input__message {
303+
bottom: -2px;
304+
margin: auto;
305+
}
294306
}
295307
296308
* {

0 commit comments

Comments
 (0)