merged master in

This commit is contained in:
Grzegorz Leoniec 2018-12-07 15:37:00 +01:00
commit ae96b95798
No known key found for this signature in database
GPG Key ID: 3AA43686D4EB1377
28 changed files with 339 additions and 184 deletions

View File

@ -1,5 +1,4 @@
node_modules node_modules
build build
.nuxt .nuxt
cypress/
styleguide/ styleguide/

View File

@ -19,6 +19,7 @@ module.exports = {
// add your custom rules here // add your custom rules here
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/component-name-in-template-casing': ['error', 'kebab-case']
} }
} }

View File

@ -28,3 +28,19 @@ after_failure:
- wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh - wget https://raw.githubusercontent.com/DiscordHooks/travis-ci-discord-webhook/master/send.sh
- chmod +x send.sh - chmod +x send.sh
- ./send.sh failure $WEBHOOK_URL - ./send.sh failure $WEBHOOK_URL
deploy:
- provider: script
script: scripts/deploy.sh nitro.human-connection.org
on:
branch: master
tags: true
- provider: script
script: scripts/deploy.sh nitro-staging.human-connection.org
on:
branch: master
- provider: script
script: scripts/deploy.sh "nitro-$(git rev-parse --short HEAD).human-connection.org"
on:
tags: true
all_branches: true

View File

@ -5,29 +5,36 @@
:open-group="Math.random().toString()" :open-group="Math.random().toString()"
placement="top-start" placement="top-start"
trigger="manual" trigger="manual"
offset="0"> offset="0"
>
<a <a
v-router-link v-router-link
:href="author.slug ? $router.resolve({ name: 'profile-slug', params: { slug: author.slug } }).href : null" :href="author.slug ? $router.resolve({ name: 'profile-slug', params: { slug: author.slug } }).href : null"
style="white-space: nowrap; display: flex; align-items: center;" style="white-space: nowrap; display: flex; align-items: center;"
@mouseover="popoverMouseEnter" @mouseover="popoverMouseEnter"
@mouseleave="popoveMouseLeave"> @mouseleave="popoveMouseLeave"
>
<div style="display: inline-block; float: left; margin-right: 4px; height: 100%; vertical-align: middle;"> <div style="display: inline-block; float: left; margin-right: 4px; height: 100%; vertical-align: middle;">
<ds-avatar <ds-avatar
:image="author.avatar" :image="author.avatar"
:name="author.name" :name="author.name"
style="display: inline-block; vertical-align: middle;" style="display: inline-block; vertical-align: middle;"
size="32px" /> size="32px"
/>
</div> </div>
<div style="display: inline-block; height: 100%; vertical-align: middle;"> <div style="display: inline-block; height: 100%; vertical-align: middle;">
<b <b
class="username" class="username"
style="vertical-align: middle;">{{ author.name | truncate(trunc, 18) }}</b> style="vertical-align: middle;"
>
{{ author.name | truncate(trunc, 18) }}
</b>
<template v-if="post.createdAt"> <template v-if="post.createdAt">
<br> <br>
<ds-text <ds-text
size="small" size="small"
color="soft"> color="soft"
>
{{ post.createdAt | dateTime('dd. MMMM yyyy HH:mm') }} {{ post.createdAt | dateTime('dd. MMMM yyyy HH:mm') }}
</ds-text> </ds-text>
</template> </template>
@ -37,7 +44,8 @@
slot="popover" slot="popover"
style="min-width: 250px;" style="min-width: 250px;"
@mouseover="popoverMouseEnter" @mouseover="popoverMouseEnter"
@mouseleave="popoveMouseLeave"> @mouseleave="popoveMouseLeave"
>
<!--<ds-avatar <!--<ds-avatar
:image="author.avatar" :image="author.avatar"
:name="author.name || 'Anonymus'" :name="author.name || 'Anonymus'"
@ -46,28 +54,32 @@
<hc-badges <hc-badges
v-if="author.badges && author.badges.length" v-if="author.badges && author.badges.length"
:badges="author.badges" :badges="author.badges"
style="margin-bottom: -10px" /> style="margin-bottom: -10px"
/>
<ds-flex> <ds-flex>
<ds-flex-item class="ds-tab-nav-item"> <ds-flex-item class="ds-tab-nav-item">
<ds-space margin="small"> <ds-space margin="small">
<ds-number <ds-number
:count="fanCount" :count="fanCount"
label="Folgen" label="Folgen"
size="x-large" /> size="x-large"
/>
</ds-space> </ds-space>
</ds-flex-item> </ds-flex-item>
<ds-flex-item class="ds-tab-nav-item ds-tab-nav-item-active"> <ds-flex-item class="ds-tab-nav-item ds-tab-nav-item-active">
<ds-space margin="small"> <ds-space margin="small">
<ds-number <ds-number
:count="author.contributionsCount" :count="author.contributionsCount"
label="Beiträge" /> label="Beiträge"
/>
</ds-space> </ds-space>
</ds-flex-item> </ds-flex-item>
<ds-flex-item class="ds-tab-nav-item"> <ds-flex-item class="ds-tab-nav-item">
<ds-space margin="small"> <ds-space margin="small">
<ds-number <ds-number
:count="author.commentsCount" :count="author.commentsCount"
label="Kommentare" /> label="Kommentare"
/>
</ds-space> </ds-space>
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
@ -79,11 +91,13 @@
<ds-flex <ds-flex
v-if="!itsMe" v-if="!itsMe"
gutter="x-small" gutter="x-small"
style="margin-bottom: 0;"> style="margin-bottom: 0;"
>
<ds-flex-item :width="{base: 3}"> <ds-flex-item :width="{base: 3}">
<hc-follow-button <hc-follow-button
:follow-id="author.id" :follow-id="author.id"
@update="voted = true" /> @update="voted = true"
/>
</ds-flex-item> </ds-flex-item>
<ds-flex-item :width="{base: 1}"> <ds-flex-item :width="{base: 1}">
<ds-button full-width> <ds-button full-width>
@ -98,7 +112,6 @@
<script> <script>
import HcFollowButton from '~/components/FollowButton.vue' import HcFollowButton from '~/components/FollowButton.vue'
import HcCountTo from '~/components/CountTo.vue'
import HcBadges from '~/components/Badges.vue' import HcBadges from '~/components/Badges.vue'
let mouseEnterTimer = null let mouseEnterTimer = null
@ -108,7 +121,6 @@ export default {
name: 'HcAuthor', name: 'HcAuthor',
components: { components: {
HcFollowButton, HcFollowButton,
HcCountTo,
HcBadges HcBadges
}, },
props: { props: {

View File

@ -3,15 +3,18 @@
:class="[ :class="[
(badges.length === 2) && 'hc-badges-dual' (badges.length === 2) && 'hc-badges-dual'
]" ]"
class="hc-badges"> class="hc-badges"
>
<div <div
v-for="badge in badges" v-for="badge in badges"
:key="badge.key" :key="badge.key"
class="hc-badge-container"> class="hc-badge-container"
>
<img <img
:title="badge.key" :title="badge.key"
:src="badge.icon" :src="badge.icon"
class="hc-badge" > class="hc-badge"
>
</div> </div>
</div> </div>
</template> </template>

View File

@ -2,7 +2,8 @@
<span> <span>
<no-ssr <no-ssr
placeholder="0" placeholder="0"
tag="span"> tag="span"
>
<count-to <count-to
:start-val="startVal" :start-val="startVal"
:end-val="endVal" :end-val="endVal"

View File

@ -5,7 +5,10 @@
icon="plus" icon="plus"
primary primary
full-width full-width
@click.prevent="follow">Folgen</ds-button> @click.prevent="follow"
>
Folgen
</ds-button>
</template> </template>
<script> <script>

View File

@ -1,12 +1,14 @@
<template> <template>
<ds-space <ds-space
margin-top="large" margin-top="large"
style="text-align: center"> style="text-align: center"
>
<ds-button <ds-button
:icon="loading ? 'spinner' : 'arrow-down'" :icon="loading ? 'spinner' : 'arrow-down'"
:disabled="loading" :disabled="loading"
ghost ghost
@click="$emit('click')"> @click="$emit('click')"
>
mehr laden mehr laden
</ds-button> </ds-button>
</ds-space> </ds-space>

View File

@ -6,21 +6,25 @@
<ds-card <ds-card
:header="post.title" :header="post.title"
:image="post.image" :image="post.image"
style="cursor: pointer; position: relative;"> style="cursor: pointer; position: relative;"
>
<ds-space margin-bottom="large"> <ds-space margin-bottom="large">
<div <div
class="hc-editor-content" class="hc-editor-content"
v-html="excerpt" /> v-html="excerpt"
/>
</ds-space> </ds-space>
<ds-space <ds-space
margin="small" margin="small"
style="position: absolute; bottom: 44px;"> style="position: absolute; bottom: 44px;"
>
<!-- TODO: find better solution for rendering errors --> <!-- TODO: find better solution for rendering errors -->
<no-ssr> <no-ssr>
<hc-author <hc-author
:post="post" :post="post"
:trunc="35" :trunc="35"
:show-author-popover="showAuthorPopover" /> :show-author-popover="showAuthorPopover"
/>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
<template slot="footer"> <template slot="footer">

View File

@ -1,18 +1,23 @@
<template> <template>
<ds-space <ds-space
margin="large" margin="large"
style="text-align: center"> style="text-align: center"
>
<ds-button <ds-button
:disabled="disabled || loading" :disabled="disabled || loading"
danger danger
size="x-large" size="x-large"
icon="bullhorn" icon="bullhorn"
@click="shout" /> @click="shout"
/>
<ds-space margin-bottom="xx-small" /> <ds-space margin-bottom="xx-small" />
<ds-text color="soft"> <ds-text color="soft">
<ds-heading <ds-heading
style="display: inline" style="display: inline"
tag="h3">{{ shoutedCount }}x</ds-heading> Empfohlen tag="h3"
>
{{ shoutedCount }}x
</ds-heading> Empfohlen
</ds-text> </ds-text>
</ds-space> </ds-space>
</template> </template>

View File

@ -4,7 +4,8 @@
<ds-container style="padding: .5rem 3rem .2rem;"> <ds-container style="padding: .5rem 3rem .2rem;">
<a <a
v-router-link v-router-link
href="/"> href="/"
>
<ds-logo /> <ds-logo />
</a> </a>
<template v-if="isLoggedIn"> <template v-if="isLoggedIn">
@ -15,27 +16,34 @@
placement="bottom-end" placement="bottom-end"
trigger="manual" trigger="manual"
offset="10" offset="10"
style="float: right"> style="float: right"
>
<a <a
:href="$router.resolve({name: 'profile-slug', params: {slug: user.slug}}).href" :href="$router.resolve({name: 'profile-slug', params: {slug: user.slug}}).href"
@click.prevent="toggleMenu()"> @click.prevent="toggleMenu()"
>
<ds-avatar <ds-avatar
:image="user.avatar" :image="user.avatar"
:name="user.name" :name="user.name"
size="42" /> size="42"
/>
</a> </a>
<div <div
slot="popover" slot="popover"
style="padding-top: .5rem; padding-bottom: .5rem;" style="padding-top: .5rem; padding-bottom: .5rem;"
@mouseover="popoverMouseEnter" @mouseover="popoverMouseEnter"
@mouseleave="popoveMouseLeave"> @mouseleave="popoveMouseLeave"
>
Hallo {{ user.name }} Hallo {{ user.name }}
<ds-menu <ds-menu
:routes="routes" :routes="routes"
style="margin-left: -15px; margin-right: -15px; padding-top: 1rem; padding-bottom: 1rem;" style="margin-left: -15px; margin-right: -15px; padding-top: 1rem; padding-bottom: 1rem;"
@click.native="toggleMenu"/> @click.native="toggleMenu"
/>
<ds-space margin="xx-small" /> <ds-space margin="xx-small" />
<nuxt-link :to="{ name: 'logout'}">Logout</nuxt-link> <nuxt-link :to="{ name: 'logout'}">
Logout
</nuxt-link>
</div> </div>
</v-popover> </v-popover>
</no-ssr> </no-ssr>

View File

@ -58,7 +58,7 @@
"eslint-config-prettier": "^3.1.0", "eslint-config-prettier": "^3.1.0",
"eslint-loader": "^2.0.0", "eslint-loader": "^2.0.0",
"eslint-plugin-prettier": "3.0.0", "eslint-plugin-prettier": "3.0.0",
"eslint-plugin-vue": "^4.0.0", "eslint-plugin-vue": "^5.0.0",
"jest": "^23.6.0", "jest": "^23.6.0",
"node-sass": "^4.9.3", "node-sass": "^4.9.3",
"nodemon": "^1.11.0", "nodemon": "^1.11.0",

View File

@ -10,7 +10,8 @@
<ds-flex-item> <ds-flex-item>
<transition <transition
name="slide-up" name="slide-up"
appear> appear
>
<nuxt-child /> <nuxt-child />
</transition> </transition>
</ds-flex-item> </ds-flex-item>

View File

@ -9,11 +9,13 @@
:count="0" :count="0"
label="Users" label="Users"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countUsers || 0" :start-val="statisticsBefore.countUsers || 0"
:end-val="statistics.countUsers || 0" /> :end-val="statistics.countUsers || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -24,11 +26,13 @@
:count="0" :count="0"
label="Posts" label="Posts"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countPosts || 0" :start-val="statisticsBefore.countPosts || 0"
:end-val="statistics.countPosts || 0" /> :end-val="statistics.countPosts || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -39,11 +43,13 @@
:count="0" :count="0"
label="Comments" label="Comments"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countComments || 0" :start-val="statisticsBefore.countComments || 0"
:end-val="statistics.countComments || 0" /> :end-val="statistics.countComments || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -54,11 +60,13 @@
:count="0" :count="0"
label="Notifications" label="Notifications"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countNotifications || 0" :start-val="statisticsBefore.countNotifications || 0"
:end-val="statistics.countNotifications || 0" /> :end-val="statistics.countNotifications || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -69,11 +77,13 @@
:count="0" :count="0"
label="Organization" label="Organization"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countOrganizations || 0" :start-val="statisticsBefore.countOrganizations || 0"
:end-val="statistics.countOrganizations || 0" /> :end-val="statistics.countOrganizations || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -84,11 +94,13 @@
:count="0" :count="0"
label="Projects" label="Projects"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countProjects || 0" :start-val="statisticsBefore.countProjects || 0"
:end-val="statistics.countProjects || 0" /> :end-val="statistics.countProjects || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -99,11 +111,13 @@
:count="0" :count="0"
label="Open Invites" label="Open Invites"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countInvites || 0" :start-val="statisticsBefore.countInvites || 0"
:end-val="statistics.countInvites || 0" /> :end-val="statistics.countInvites || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -114,11 +128,13 @@
:count="0" :count="0"
label="Follows" label="Follows"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countFollows || 0" :start-val="statisticsBefore.countFollows || 0"
:end-val="statistics.countFollows || 0" /> :end-val="statistics.countFollows || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>
@ -129,11 +145,13 @@
:count="0" :count="0"
label="Shouts" label="Shouts"
size="x-large" size="x-large"
uppercase> uppercase
>
<no-ssr slot="count"> <no-ssr slot="count">
<hc-count-to <hc-count-to
:start-val="statisticsBefore.countShouts || 0" :start-val="statisticsBefore.countShouts || 0"
:end-val="statistics.countShouts || 0" /> :end-val="statistics.countShouts || 0"
/>
</no-ssr> </no-ssr>
</ds-number> </ds-number>
</ds-space> </ds-space>

View File

@ -3,18 +3,21 @@
<ds-flex <ds-flex
v-if="Post && Post.length" v-if="Post && Post.length"
:width="{ base: '100%' }" :width="{ base: '100%' }"
gutter="base"> gutter="base"
>
<ds-flex-item <ds-flex-item
v-for="post in uniq(Post)" v-for="post in uniq(Post)"
:key="post.id"
:width="{ base: '100%', xs: '100%', md: '50%', xl: '33%' }" :width="{ base: '100%', xs: '100%', md: '50%', xl: '33%' }"
:key="post.id"> >
<hc-post-card :post="post" /> <hc-post-card :post="post" />
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
<hc-load-more <hc-load-more
v-if="true" v-if="true"
:loading="$apollo.loading" :loading="$apollo.loading"
@click="showMoreContributions" /> @click="showMoreContributions"
/>
</div> </div>
</template> </template>

View File

@ -12,50 +12,67 @@
<ds-flex gutter="small"> <ds-flex gutter="small">
<ds-flex-item <ds-flex-item
:width="{ base: '100%', sm: '50%' }" :width="{ base: '100%', sm: '50%' }"
center> center
>
<ds-space <ds-space
margin-top="small" margin-top="small"
margin-bottom="xxx-small" margin-bottom="xxx-small"
center> center
>
<img <img
class="login-image" class="login-image"
src="/img/sign-up/humanconnection.svg" src="/img/sign-up/humanconnection.svg"
alt="Human Connection"> alt="Human Connection"
>
</ds-space> </ds-space>
</ds-flex-item> </ds-flex-item>
<ds-flex-item <ds-flex-item
:width="{ base: '100%', sm: '50%' }" :width="{ base: '100%', sm: '50%' }"
center> center
>
<ds-space margin="small"> <ds-space margin="small">
<ds-text size="small">Wenn Du ein Konto bei Human Connection hast, melde Dich bitte hier an.</ds-text> <ds-text size="small">
Wenn Du ein Konto bei Human Connection hast, melde Dich bitte hier an.
</ds-text>
</ds-space> </ds-space>
<form <form
:disabled="pending" :disabled="pending"
@submit.prevent="onSubmit"> @submit.prevent="onSubmit"
>
<ds-input <ds-input
:disabled="pending"
v-model="form.email" v-model="form.email"
:disabled="pending"
placeholder="Deine E-Mail" placeholder="Deine E-Mail"
type="email" type="email"
icon="envelope"/> name="email"
icon="envelope"
/>
<ds-input <ds-input
:disabled="pending"
v-model="form.password" v-model="form.password"
:disabled="pending"
placeholder="Dein Password" placeholder="Dein Password"
icon="lock" icon="lock"
icon-right="question-circle" icon-right="question-circle"
type="password"/> name="password"
type="password"
/>
<ds-button <ds-button
:loading="pending" :loading="pending"
primary primary
full-width> full-width
name="submit"
type="submit"
>
Anmelden Anmelden
</ds-button> </ds-button>
<ds-space margin="x-small"> <ds-space margin="x-small">
<a <a
href="https://human-connection.org" href="https://human-connection.org"
title="zur Präsentationsseite" title="zur Präsentationsseite"
target="_blank">Was ist Human Connection?</a> target="_blank"
>
Was ist Human Connection?
</a>
</ds-space> </ds-space>
</form> </form>
</ds-flex-item> </ds-flex-item>

View File

@ -3,25 +3,32 @@
<ds-flex> <ds-flex>
<ds-flex-item <ds-flex-item
:width="{ base: '100%' }" :width="{ base: '100%' }"
center> center
>
<ds-space <ds-space
style="text-align: center;" style="text-align: center;"
margin-top="large" margin-top="large"
margin-bottom="xxx-small" margin-bottom="xxx-small"
center> center
>
<img <img
style="width: 200px;" style="width: 200px;"
src="/img/sign-up/onourjourney.png" src="/img/sign-up/onourjourney.png"
alt="Human Connection"> alt="Human Connection"
>
</ds-space> </ds-space>
<ds-space <ds-space
style="text-align: center;" style="text-align: center;"
margin-top="small" margin-top="small"
margin-bottom="xxx-small" margin-bottom="xxx-small"
center> center
>
<ds-heading <ds-heading
tag="h3" tag="h3"
soft>Logging out...</ds-heading> soft
>
Logging out...
</ds-heading>
</ds-space> </ds-space>
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>

View File

@ -4,7 +4,8 @@
<ds-flex-item> <ds-flex-item>
<transition <transition
name="slide-up" name="slide-up"
appear> appear
>
<nuxt-child /> <nuxt-child />
</transition> </transition>
</ds-flex-item> </ds-flex-item>

View File

@ -3,19 +3,22 @@
v-if="post" v-if="post"
:image="post.image" :image="post.image"
:header="post.title" :header="post.title"
class="post-card"> class="post-card"
>
<hc-author :post="post" /> <hc-author :post="post" />
<ds-space margin-bottom="small" /> <ds-space margin-bottom="small" />
<!-- Content --> <!-- Content -->
<div <div
class="content hc-editor-content" class="content hc-editor-content"
v-html="post.content" /> v-html="post.content"
/>
<!-- Shout Button --> <!-- Shout Button -->
<ds-space margin="xx-large" /> <ds-space margin="xx-large" />
<hc-shout-button <hc-shout-button
v-if="post.author" v-if="post.author"
:count="post.shoutedCount" :count="post.shoutedCount"
:post-id="post.id" /> :post-id="post.id"
/>
<!-- Categories --> <!-- Categories -->
<ds-icon <ds-icon
v-tooltip="{content: category.name, placement: 'top-start', delay: { show: 300 }}" v-tooltip="{content: category.name, placement: 'top-start', delay: { show: 300 }}"
@ -35,13 +38,17 @@
<div class="tags"> <div class="tags">
<ds-icon name="tags" /> <ds-tag <ds-icon name="tags" /> <ds-tag
v-for="tag in post.tags" v-for="tag in post.tags"
:key="tag.id"><ds-icon name="tag" /> {{ tag.name }}</ds-tag> :key="tag.id"
>
<ds-icon name="tag" /> {{ tag.name }}
</ds-tag>
</div> </div>
</template> </template>
<ds-space margin="small" /> <ds-space margin="small" />
<!-- Comments --> <!-- Comments -->
<ds-section <ds-section
slot="footer"> slot="footer"
>
<h3 style="margin-top: 0;"> <h3 style="margin-top: 0;">
<span> <span>
<ds-icon name="comments" /> <ds-icon name="comments" />
@ -49,7 +56,8 @@
v-if="post.commentsCount" v-if="post.commentsCount"
style="transform: scale(.8); margin-top: -4px; margin-left: -12px; position: absolute;" style="transform: scale(.8); margin-top: -4px; margin-left: -12px; position: absolute;"
color="primary" color="primary"
round> round
>
{{ post.commentsCount }} {{ post.commentsCount }}
</ds-tag> &nbsp; Comments </ds-tag> &nbsp; Comments
</span> </span>
@ -58,27 +66,35 @@
<div <div
v-if="post.commentsCount" v-if="post.commentsCount"
id="comments" id="comments"
class="comments"> class="comments"
>
<div <div
v-for="comment in post.comments" v-for="comment in post.comments"
:key="comment.id" :key="comment.id"
class="comment"> class="comment"
>
<ds-space margin-bottom="x-small"> <ds-space margin-bottom="x-small">
<hc-author :post="comment" /> <hc-author :post="comment" />
</ds-space> </ds-space>
<div <div
v-if="!comment.deleted" v-if="!comment.deleted"
style="padding-left: 40px;" style="padding-left: 40px;"
v-html="comment.contentExcerpt" /> v-html="comment.contentExcerpt"
/>
<ds-text <ds-text
v-else v-else
style="padding-left: 40px; font-weight: bold;" style="padding-left: 40px; font-weight: bold;"
color="soft"><ds-icon name="ban" /> Vom Benutzer gelöscht</ds-text> color="soft"
>
<ds-icon name="ban" /> Vom Benutzer gelöscht
</ds-text>
</div> </div>
<ds-space margin-bottom="small" /> <ds-space margin-bottom="small" />
</div> </div>
<div v-else> <div v-else>
<p style="text-align: center; opacity: .5;">NO COMMENTS</p> <p style="text-align: center; opacity: .5;">
NO COMMENTS
</p>
</div> </div>
</ds-section> </ds-section>
</ds-card> </ds-card>

View File

@ -1,6 +1,8 @@
<template> <template>
<ds-card> <ds-card>
<h2 style="margin-bottom: .2em;">Mehr Informationen</h2> <h2 style="margin-bottom: .2em;">
Mehr Informationen
</h2>
<p>Hier findest du weitere infos zum Thema.</p> <p>Hier findest du weitere infos zum Thema.</p>
<ds-space /> <ds-space />
<h3><ds-icon name="compass" /> Themenkategorien</h3> <h3><ds-icon name="compass" /> Themenkategorien</h3>
@ -20,24 +22,30 @@
<div class="tags"> <div class="tags">
<ds-tag <ds-tag
v-for="tag in post.tags" v-for="tag in post.tags"
:key="tag.id"><ds-icon name="tag" /> {{ tag.name }}</ds-tag> :key="tag.id"
>
<ds-icon name="tag" /> {{ tag.name }}
</ds-tag>
</div> </div>
</template> </template>
<h3>Verwandte Beiträge</h3> <h3>Verwandte Beiträge</h3>
<ds-section style="margin: 0 -1.5rem; padding: 1.5rem;"> <ds-section style="margin: 0 -1.5rem; padding: 1.5rem;">
<ds-flex <ds-flex
v-if="post.relatedContributions && post.relatedContributions.length" v-if="post.relatedContributions && post.relatedContributions.length"
gutter="small"> gutter="small"
>
<ds-flex-item <ds-flex-item
v-for="relatedPost in post.relatedContributions" v-for="relatedPost in post.relatedContributions"
:key="relatedPost.id" :key="relatedPost.id"
:width="{ base: '50%' }"> :width="{ base: '50%' }"
>
<hc-post-card :post="relatedPost" /> <hc-post-card :post="relatedPost" />
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
<ds-space <ds-space
v-else v-else
style="text-align: center; padding-top: 2em; opacity: .6;"> style="text-align: center; padding-top: 2em; opacity: .6;"
>
No related Posts No related Posts
</ds-space> </ds-space>
</ds-section> </ds-section>

View File

@ -7,19 +7,24 @@
<ds-flex <ds-flex
v-if="user" v-if="user"
:width="{ base: '100%' }" :width="{ base: '100%' }"
gutter="base"> gutter="base"
>
<ds-flex-item :width="{ base: '100%', sm: 2, md: 2, lg: 1 }"> <ds-flex-item :width="{ base: '100%', sm: 2, md: 2, lg: 1 }">
<ds-card style="position: relative; height: auto;"> <ds-card style="position: relative; height: auto;">
<ds-avatar <ds-avatar
:image="user.avatar" :image="user.avatar"
:name="user.name || 'Anonymus'" :name="user.name || 'Anonymus'"
class="profile-avatar" class="profile-avatar"
size="120px" /> size="120px"
/>
<ds-space margin="small"> <ds-space margin="small">
<ds-heading <ds-heading
tag="h3" tag="h3"
align="center" align="center"
no-margin>{{ user.name }}</ds-heading> no-margin
>
{{ user.name }}
</ds-heading>
<ds-text <ds-text
v-if="user.location && user.location.length" v-if="user.location && user.location.length"
align="center" align="center"
@ -36,9 +41,11 @@
</ds-space> </ds-space>
<ds-space <ds-space
v-if="user.badges && user.badges.length" v-if="user.badges && user.badges.length"
margin="x-small"> margin="x-small"
>
<hc-badges <hc-badges
:badges="user.badges" /> :badges="user.badges"
/>
</ds-space> </ds-space>
<ds-flex> <ds-flex>
<ds-flex-item> <ds-flex-item>
@ -46,7 +53,8 @@
<ds-number label="Folgen"> <ds-number label="Folgen">
<hc-count-to <hc-count-to
slot="count" slot="count"
:end-val="followedByCount" /> :end-val="followedByCount"
/>
</ds-number> </ds-number>
</no-ssr> </no-ssr>
</ds-flex-item> </ds-flex-item>
@ -55,17 +63,20 @@
<ds-number label="Folgt"> <ds-number label="Folgt">
<hc-count-to <hc-count-to
slot="count" slot="count"
:end-val="Number(user.followingCount) || 0" /> :end-val="Number(user.followingCount) || 0"
/>
</ds-number> </ds-number>
</no-ssr> </no-ssr>
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
<ds-space <ds-space
margin="small"> margin="small"
>
<hc-follow-button <hc-follow-button
v-if="!myProfile" v-if="!myProfile"
:follow-id="user.id" :follow-id="user.id"
@update="voted = true && fetchUser()" /> @update="voted = true && fetchUser()"
/>
</ds-space> </ds-space>
<template v-if="user.about"> <template v-if="user.about">
<hr> <hr>
@ -84,16 +95,19 @@
<ds-heading <ds-heading
tag="h3" tag="h3"
soft soft
style="text-align: center; margin-bottom: 10px;"> style="text-align: center; margin-bottom: 10px;"
>
Netzwerk Netzwerk
</ds-heading> </ds-heading>
<ds-card style="position: relative; height: auto;"> <ds-card style="position: relative; height: auto;">
<ds-space <ds-space
v-if="user.following && user.following.length" v-if="user.following && user.following.length"
margin="x-small"> margin="x-small"
>
<ds-text <ds-text
tag="h5" tag="h5"
color="soft"> color="soft"
>
Wem folgt {{ user.name | truncate(15) }}? Wem folgt {{ user.name | truncate(15) }}?
</ds-text> </ds-text>
</ds-space> </ds-space>
@ -101,34 +115,44 @@
<ds-space <ds-space
v-for="follow in uniq(user.following)" v-for="follow in uniq(user.following)"
:key="follow.id" :key="follow.id"
margin="x-small"> margin="x-small"
>
<!-- TODO: find better solution for rendering errors --> <!-- TODO: find better solution for rendering errors -->
<no-ssr> <no-ssr>
<hc-related-user <hc-related-user
:post="follow" :post="follow"
:trunc="15" /> :trunc="15"
/>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
<ds-space <ds-space
v-if="user.followingCount - user.following.length" v-if="user.followingCount - user.following.length"
margin="small"> margin="small"
>
<ds-text <ds-text
size="small" size="small"
color="softer">und {{ user.followingCount - user.following.length }} weitere</ds-text> color="softer"
>
und {{ user.followingCount - user.following.length }} weitere
</ds-text>
</ds-space> </ds-space>
</template> </template>
<template v-else> <template v-else>
<p style="text-align: center; opacity: .5;">{{ user.name }} folgt niemandem</p> <p style="text-align: center; opacity: .5;">
{{ user.name }} folgt niemandem
</p>
</template> </template>
</ds-card> </ds-card>
<ds-space /> <ds-space />
<ds-card style="position: relative; height: auto;"> <ds-card style="position: relative; height: auto;">
<ds-space <ds-space
v-if="user.followedBy && user.followedBy.length" v-if="user.followedBy && user.followedBy.length"
margin="x-small"> margin="x-small"
>
<ds-text <ds-text
tag="h5" tag="h5"
color="soft"> color="soft"
>
Wer folgt {{ user.name | truncate(15) }}? Wer folgt {{ user.name | truncate(15) }}?
</ds-text> </ds-text>
</ds-space> </ds-space>
@ -136,24 +160,32 @@
<ds-space <ds-space
v-for="follow in uniq(user.followedBy)" v-for="follow in uniq(user.followedBy)"
:key="follow.id" :key="follow.id"
margin="x-small"> margin="x-small"
>
<!-- TODO: find better solution for rendering errors --> <!-- TODO: find better solution for rendering errors -->
<no-ssr> <no-ssr>
<hc-related-user <hc-related-user
:post="follow" :post="follow"
:trunc="15" /> :trunc="15"
/>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
<ds-space <ds-space
v-if="user.followedByCount - user.followedBy.length" v-if="user.followedByCount - user.followedBy.length"
margin="small"> margin="small"
>
<ds-text <ds-text
size="small" size="small"
color="softer">und {{ user.followedByCount - user.followedBy.length }} weitere</ds-text> color="softer"
>
und {{ user.followedByCount - user.followedBy.length }} weitere
</ds-text>
</ds-space> </ds-space>
</template> </template>
<template v-else> <template v-else>
<p style="text-align: center; opacity: .5;">niemand folgt {{ user.name }}</p> <p style="text-align: center; opacity: .5;">
niemand folgt {{ user.name }}
</p>
</template> </template>
</ds-card> </ds-card>
</ds-flex-item> </ds-flex-item>
@ -171,7 +203,8 @@
<ds-number label="Beiträge"> <ds-number label="Beiträge">
<hc-count-to <hc-count-to
slot="count" slot="count"
:end-val="user.contributionsCount" /> :end-val="user.contributionsCount"
/>
</ds-number> </ds-number>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
@ -183,7 +216,8 @@
<ds-number label="Kommentiert"> <ds-number label="Kommentiert">
<hc-count-to <hc-count-to
slot="count" slot="count"
:end-val="user.commentsCount" /> :end-val="user.commentsCount"
/>
</ds-number> </ds-number>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
@ -195,7 +229,8 @@
<ds-number label="Empfohlen"> <ds-number label="Empfohlen">
<hc-count-to <hc-count-to
slot="count" slot="count"
:end-val="user.shoutedCount" /> :end-val="user.shoutedCount"
/>
</ds-number> </ds-number>
</no-ssr> </no-ssr>
</ds-space> </ds-space>
@ -205,17 +240,20 @@
</ds-flex-item> </ds-flex-item>
<ds-flex-item <ds-flex-item
v-for="post in uniq(user.contributions.filter(post => !post.deleted))" v-for="post in uniq(user.contributions.filter(post => !post.deleted))"
:key="post.id"
:width="{ base: '100%', md: '100%', xl: '50%' }" :width="{ base: '100%', md: '100%', xl: '50%' }"
:key="post.id"> >
<hc-post-card <hc-post-card
:post="post" :post="post"
:show-author-popover="false" /> :show-author-popover="false"
/>
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
<hc-load-more <hc-load-more
v-if="hasMore" v-if="hasMore"
:loading="$apollo.loading" :loading="$apollo.loading"
@click="showMoreContributions" /> @click="showMoreContributions"
/>
</ds-flex-item> </ds-flex-item>
</ds-flex> </ds-flex>
</div> </div>

View File

@ -10,7 +10,8 @@
<ds-flex-item> <ds-flex-item>
<transition <transition
name="slide-up" name="slide-up"
appear> appear
>
<nuxt-child /> <nuxt-child />
</transition> </transition>
</ds-flex-item> </ds-flex-item>

4
scripts/deploy.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "See me deployed at $1 :)"

View File

@ -64,6 +64,13 @@ export default {
type: String, type: String,
default: null default: null
}, },
/**
* The name of the field for better accessibility
*/
name: {
type: String,
default: null
},
/** /**
* Whether the input should be automatically focused * Whether the input should be automatically focused
*/ */

View File

@ -13,6 +13,7 @@
fullWidth && `ds-button-full-width`, fullWidth && `ds-button-full-width`,
loading && `ds-button-loading` loading && `ds-button-loading`
]" ]"
:name="name"
v-bind="bindings" v-bind="bindings"
:is="linkTag"> :is="linkTag">
<ds-icon <ds-icon
@ -74,6 +75,13 @@ export default {
return value.match(/(router-link|a|button)/) return value.match(/(router-link|a|button)/)
} }
}, },
/**
* Button name for accessibilty
*/
name: {
type: String,
default: null
},
/** /**
* Primary style * Primary style
* `true, false` * `true, false`

View File

@ -1359,13 +1359,6 @@ acorn-globals@^4.1.0:
acorn "^6.0.1" acorn "^6.0.1"
acorn-walk "^6.0.1" acorn-walk "^6.0.1"
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
dependencies:
acorn "^3.0.4"
acorn-jsx@^5.0.0: acorn-jsx@^5.0.0:
version "5.0.1" version "5.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
@ -1376,12 +1369,7 @@ acorn-walk@^6.0.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
acorn@^3.0.4: acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
acorn@^5.0.0, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3:
version "5.7.3" version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
@ -4213,12 +4201,12 @@ eslint-plugin-prettier@3.0.0, eslint-plugin-prettier@^3.0.0:
dependencies: dependencies:
prettier-linter-helpers "^1.0.0" prettier-linter-helpers "^1.0.0"
eslint-plugin-vue@^4.0.0: eslint-plugin-vue@^5.0.0:
version "4.7.1" version "5.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz#c829b9fc62582c1897b5a0b94afd44ecca511e63" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.0.0.tgz#4a2cc1c0e71ea45e1bd9c1a60f925bfe68bb5710"
integrity sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA== integrity sha512-mSv2Ebz3RaPP+XJO/mu7F+SdR9lrMyGISSExnarLFqqf3pF5wTmwWNrhHW1o9zKzKI811UVTIIkWJJvgO6SsUQ==
dependencies: dependencies:
vue-eslint-parser "^2.0.3" vue-eslint-parser "^4.0.2"
eslint-scope@3.7.1: eslint-scope@3.7.1:
version "3.7.1" version "3.7.1"
@ -4228,14 +4216,6 @@ eslint-scope@3.7.1:
esrecurse "^4.1.0" esrecurse "^4.1.0"
estraverse "^4.1.1" estraverse "^4.1.1"
eslint-scope@^3.7.1:
version "3.7.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-scope@^4.0.0: eslint-scope@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
@ -4303,15 +4283,7 @@ esm@^3.0.84:
resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63"
integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==
espree@^3.5.2: espree@^4.0.0, espree@^4.1.0:
version "3.5.4"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
dependencies:
acorn "^5.5.0"
acorn-jsx "^3.0.0"
espree@^4.0.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f"
integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==
@ -4330,7 +4302,7 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.0.0, esquery@^1.0.1: esquery@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
@ -10536,17 +10508,17 @@ vue-count-to@^1.0.13:
resolved "https://registry.yarnpkg.com/vue-count-to/-/vue-count-to-1.0.13.tgz#3e7573ea6e64c2b2972f64e0a2ab2e23c7590ff3" resolved "https://registry.yarnpkg.com/vue-count-to/-/vue-count-to-1.0.13.tgz#3e7573ea6e64c2b2972f64e0a2ab2e23c7590ff3"
integrity sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ== integrity sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==
vue-eslint-parser@^2.0.3: vue-eslint-parser@^4.0.2:
version "2.0.3" version "4.0.2"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-4.0.2.tgz#7d10ec5b67d9b2ef240cac0f0e8b2f03773d810e"
integrity sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw== integrity sha512-A+teFdsAVtVawd4rtLsv8q6uuj2MYt3Uw+GCodqEkjozB3g20G91hbukz60yWa9IUx/yFz+JzKBu/3Djkod36g==
dependencies: dependencies:
debug "^3.1.0" debug "^4.1.0"
eslint-scope "^3.7.1" eslint-scope "^4.0.0"
eslint-visitor-keys "^1.0.0" eslint-visitor-keys "^1.0.0"
espree "^3.5.2" espree "^4.1.0"
esquery "^1.0.0" esquery "^1.0.1"
lodash "^4.17.4" lodash "^4.17.11"
vue-hot-reload-api@^2.3.0: vue-hot-reload-api@^2.3.0:
version "2.3.1" version "2.3.1"