1
0
mirror of https://github.com/kihashi/stardew_community_checklist.git synced 2025-10-19 08:03:17 +00:00

Update to Vue3 and add prettier

This commit is contained in:
lachie-underhill 2023-06-02 08:42:20 +10:00
parent edeb486a8d
commit b791c536b8
No known key found for this signature in database
GPG Key ID: 48057E0D2C37AC20
35 changed files with 719 additions and 566 deletions

8
.prettierrc.json Normal file
View File

@ -0,0 +1,8 @@
{
"$schema": "https://json.schemastore.org/prettierrc",
"semi": false,
"tabWidth": 2,
"singleQuote": true,
"printWidth": 100,
"trailingComma": "none"
}

View File

@ -1,13 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="shortcut icon" type="image/png" href="/static/favicon.png"/>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="shortcut icon" type="image/png" href="/static/favicon.png" />
<title>Stardew Community Checklist</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
<script type="module" src="/src/main.js"></script>
</body>
</html>

View File

@ -10,18 +10,18 @@
"lint": "eslint . --ext .js,.vue"
},
"dependencies": {
"@fortawesome/fontawesome": "^1.1.4",
"@fortawesome/fontawesome-free-brands": "^5.0.7",
"@fortawesome/fontawesome-free-regular": "^5.0.7",
"@fortawesome/fontawesome-free-solid": "^5.0.7",
"@fortawesome/vue-fontawesome": "^0.0.22",
"bulma": "^0.6.2",
"@fortawesome/fontawesome-free-brands": "^5.0.13",
"@fortawesome/fontawesome-free-regular": "^5.0.13",
"@fortawesome/fontawesome-free-solid": "^5.0.13",
"@fortawesome/fontawesome-svg-core": "^6.4.0",
"@fortawesome/vue-fontawesome": "^3.0.3",
"bulma": "^0.9.4",
"lodash": "^4.17.19",
"mdi-vue": "^0.2.11",
"sass": "^1.62.1",
"vue": "^2.5.2",
"vue": "^3.3.4",
"vue-clipboard2": "^0.3.0",
"vue-router": "^3.0.1",
"vue-router": "^4.2.2",
"vuex": "^3.0.1",
"vuex-persistedstate": "^2.5.4"
},
@ -29,7 +29,6 @@
"@vitejs/plugin-vue": "^4.2.3",
"@vitejs/plugin-vue-jsx": "^3.0.1",
"autoprefixer": "^7.1.2",
"chalk": "^2.0.1",
"eslint": "^4.18.2",
"eslint-config-standard": "^10.2.1",
"eslint-friendly-formatter": "^3.0.0",
@ -44,8 +43,7 @@
"rimraf": "^2.6.0",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"vite": "^4.3.5",
"vue-template-compiler": "^2.5.2"
"vite": "^4.3.5"
},
"engines": {
"node": ">= 6.0.0",

View File

@ -1,24 +1,14 @@
<template>
<div id="app">
<header-bar/>
<transition name="fade"
mode="out-in">
<router-view/>
</transition>
<app-footer/>
</div>
</template>
<script>
import HeaderBar from '@/components/HeaderBar'
import AppFooter from '@/components/AppFooter'
import HeaderBar from './components/HeaderBar.vue'
import AppFooter from './components/AppFooter.vue'
export default {
name: 'App',
components: {
HeaderBar,
AppFooter
},
created () {
created() {
this.$store.commit('initState')
var v1data = localStorage.getItem('user_data')
if (v1data !== null && v1data !== '') {
@ -30,14 +20,24 @@ export default {
}
</script>
<style lang="scss" scoped>
<template>
<div id="app">
<header-bar />
<transition name="fade" mode="out-in">
<router-view />
</transition>
<app-footer />
</div>
</template>
.fade-enter-active, .fade-leave-active {
<style lang="scss" scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}
.fade-enter, .fade-leave-active {
.fade-enter,
.fade-leave-active {
opacity: 0;
}
</style>

1
src/assets/main.css Normal file
View File

@ -0,0 +1 @@
@import "~bulma/bulma";

View File

@ -1 +0,0 @@
@import '~bulma/bulma';

View File

@ -1,33 +1,37 @@
<template>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
<strong>Stardew Community Checklist</strong> by <a href="http://johncleaver.com">John Cleaver</a>. The source code is licensed
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>.
</p>
<p>
<router-link to="/changelog">Changelog</router-link>
</p>
<p>
Bundle and Item information is from the <a href="http://stardewvalleywiki.com/Stardew_Valley_Wiki">Stardew Valley Wiki</a>
and is used under the <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0 License</a>.
</p>
<p>
<a href="http://stardewvalley.net/">Stardew Valley</a> &copy; <a href="https://chucklefish.org/">Chucklefish LTD</a>.
Developed by <a href="https://twitter.com/ConcernedApe">ConcernedApe</a>.
</p>
<p>
<a :href="gh_address"><font-awesome-icon :icon="gh_icon"/></a>
<a :href="reddit_address"><font-awesome-icon :icon="reddit_icon"/></a>
</p>
<div class="container">
<div class="content has-text-centered">
<p>
<strong>Stardew Community Checklist</strong> by
<a href="http://johncleaver.com">John Cleaver</a>. The source code is licensed
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>.
</p>
<p>
<router-link to="/changelog">Changelog</router-link>
</p>
<p>
Bundle and Item information is from the
<a href="http://stardewvalleywiki.com/Stardew_Valley_Wiki">Stardew Valley Wiki</a> and is
used under the
<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0 License</a>.
</p>
<p>
<a href="http://stardewvalley.net/">Stardew Valley</a> &copy;
<a href="https://chucklefish.org/">Chucklefish LTD</a>. Developed by
<a href="https://twitter.com/ConcernedApe">ConcernedApe</a>.
</p>
<p>
<a :href="gh_address"><font-awesome-icon :icon="gh_icon" /></a>
<a :href="reddit_address"><font-awesome-icon :icon="reddit_icon" /></a>
</p>
</div>
</div>
</div>
</footer>
</footer>
</template>
<script>
import FontAwesomeIcon from '@fortawesome/vue-fontawesome'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import faGithub from '@fortawesome/fontawesome-free-brands/faGithub'
import faReddit from '@fortawesome/fontawesome-free-brands/faReddit'
export default {
@ -36,10 +40,10 @@ export default {
'font-awesome-icon': FontAwesomeIcon
},
computed: {
gh_icon () {
gh_icon() {
return faGithub
},
reddit_icon () {
reddit_icon() {
return faReddit
}
},
@ -52,5 +56,4 @@ export default {
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -1,9 +1,10 @@
<template>
<button class="button is-rounded"
<button
class="button is-rounded"
:class="shouldBeChecked ? checked_class : unchecked_class"
v-on:click="updateInput"
>
<slot></slot>
>
<slot></slot>
</button>
</template>
@ -33,7 +34,7 @@ export default {
}
},
computed: {
shouldBeChecked () {
shouldBeChecked() {
if (this.checked instanceof Array) {
return this.checked.includes(this.value)
}
@ -42,7 +43,7 @@ export default {
}
},
methods: {
updateInput () {
updateInput() {
if (this.checked instanceof Array) {
let newValue = [...this.checked]
@ -61,6 +62,4 @@ export default {
}
</script>
<style>
</style>
<style></style>

View File

@ -1,36 +1,39 @@
<template>
<section class="hero is-info is-bold">
<nav class="navbar">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<h1 class="is-size-3 has-text-weight-semibold is-hidden-mobile">Stardew Community Checklist</h1>
<h1 class="is-size-3 has-text-weight-semibold is-hidden-tablet">SCC</h1>
</a>
<div class="navbar-burger"
v-bind:class="{ 'is-active': menu_active }"
@click="menu_active = !menu_active"
>
<span></span>
<span></span>
<span></span>
</div>
<nav class="navbar">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<h1 class="is-size-3 has-text-weight-semibold is-hidden-mobile">
Stardew Community Checklist
</h1>
<h1 class="is-size-3 has-text-weight-semibold is-hidden-tablet">SCC</h1>
</a>
<div
class="navbar-burger"
v-bind:class="{ 'is-active': menu_active }"
@click="menu_active = !menu_active"
>
<span></span>
<span></span>
<span></span>
</div>
<div class="navbar-menu"
v-bind:class="{ 'is-active': menu_active }">
<div class="navbar-end">
<router-link v-for="route in named_routes"
:key="route.order"
class="navbar-item"
@click.native="menu_active = false"
:to="route">
{{route.name}}
</router-link>
</div>
</div>
</div>
</nav>
<div class="navbar-menu" v-bind:class="{ 'is-active': menu_active }">
<div class="navbar-end">
<router-link
v-for="route in named_routes"
:key="route.order"
class="navbar-item"
@click.native="menu_active = false"
:to="route"
>
{{ route.name }}
</router-link>
</div>
</div>
</div>
</nav>
</section>
</template>
@ -44,11 +47,10 @@ export default {
},
computed: {
named_routes: function () {
return this.$router.options.routes.filter(route => route.hasOwnProperty('name'))
return this.$router.options.routes.filter((route) => route.hasOwnProperty('name'))
}
}
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -1,56 +1,64 @@
<template>
<div class="modal">
<div class="modal-background" @click="dismiss"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">What's New</p>
<button class="delete" aria-label="close" @click="dismiss"></button>
</header>
<section class="modal-card-body">
<h1 class="title">2.0 - The Big Mobile Update</h1>
<div class="content">
<p>Hey All!</p>
<div class="modal">
<div class="modal-background" @click="dismiss"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">What's New</p>
<button class="delete" aria-label="close" @click="dismiss"></button>
</header>
<section class="modal-card-body">
<h1 class="title">2.0 - The Big Mobile Update</h1>
<div class="content">
<p>Hey All!</p>
<p>
You'll probably notice a lot of changes around here. I've added a fresh coat of paint,
a complete redesign to work on mobile, as well as a complete re-write of the backend to
support some features I have on the <a href="https://www.reddit.com/r/stardewchecklist/comments/6s5x0a/current_development_roadmap_v20/">roadmap</a>.
I've detailed some of the most exciting features below, but for the full list, check out the
<router-link to="/changelog">changelog</router-link>.
</p>
<p>
You'll probably notice a lot of changes around here. I've added a fresh coat of paint, a
complete redesign to work on mobile, as well as a complete re-write of the backend to
support some features I have on the
<a
href="https://www.reddit.com/r/stardewchecklist/comments/6s5x0a/current_development_roadmap_v20/"
>roadmap</a
>. I've detailed some of the most exciting features below, but for the full list, check
out the <router-link to="/changelog">changelog</router-link>.
</p>
<p>I've tried to keep your saved data from V1 intact, but there may still be some conversion issues.</p>
<p>
I've tried to keep your saved data from V1 intact, but there may still be some
conversion issues.
</p>
<p>If you notice any problems, please report them on the subreddit or open a Github issue.</p>
<p>
If you notice any problems, please report them on the subreddit or open a Github issue.
</p>
<p>
Hope you enjoy, <br />
Kihashi
</p>
<h3 class="title">Highlights</h3>
<ul>
<li>Mobile Support!</li>
<p>
Hope you enjoy, <br />
Kihashi
</p>
<h3 class="title">Highlights</h3>
<ul>
<li>Use the checklist on your phone while you play on from the couch!</li>
<li>Mobile Support!</li>
<ul>
<li>Use the checklist on your phone while you play on from the couch!</li>
</ul>
<li>More clear room completion- a checkmark will show next to completed rooms.</li>
<li>Combined search screens and replaced with filters</li>
<ul>
<li>This lets you do stuff like "Show me items that are only in winter".</li>
</ul>
<li>Data Reset</li>
<ul>
<li>Start a new game with the data reset button on the settings page.</li>
</ul>
</ul>
<li>More clear room completion- a checkmark will show next to completed rooms.</li>
<li>Combined search screens and replaced with filters</li>
<ul>
<li>This lets you do stuff like "Show me items that are only in winter".</li>
</ul>
<li>Data Reset</li>
<ul>
<li>Start a new game with the data reset button on the settings page.</li>
</ul>
</ul>
</div>
</section>
<footer class="modal-card-foot">
<a href="https://www.reddit.com/r/stardewchecklist/" class="button is-info">Subreddit</a>
<a href="https://github.com/kihashi/stardew_community_checklist" class="button">Github</a>
</footer>
</div>
</section>
<footer class="modal-card-foot">
<a href="https://www.reddit.com/r/stardewchecklist/" class="button is-info">Subreddit</a>
<a href="https://github.com/kihashi/stardew_community_checklist" class="button">Github</a>
</footer>
</div>
</div>
</div>
</template>
<script>

View File

@ -1,9 +1,9 @@
<template>
<span class="icon" v-bind:data-season="season.id">
<spring-icon v-if="season.id === 'spring'"/>
<summer-icon v-if="season.id === 'summer'"/>
<fall-icon v-if="season.id === 'fall'"/>
<winter-icon v-if="season.id === 'winter'"/>
<spring-icon v-if="season.id === 'spring'" />
<summer-icon v-if="season.id === 'summer'" />
<fall-icon v-if="season.id === 'fall'" />
<winter-icon v-if="season.id === 'winter'" />
</span>
</template>
@ -36,22 +36,22 @@ export default {
</script>
<style scoped>
.icon {
position: relative;
}
.icon {
position: relative;
}
.icon:hover::after {
content: attr(data-season);
display: block;
position: absolute;
bottom: -1.85rem;
border-radius: 3px;
font-size: .75rem;
background-color: #00d1b2;
padding: .1rem .3rem;
text-transform: capitalize;
color: #000;
z-index: 100;
font-weight: bold;
}
.icon:hover::after {
content: attr(data-season);
display: block;
position: absolute;
bottom: -1.85rem;
border-radius: 3px;
font-size: 0.75rem;
background-color: #00d1b2;
padding: 0.1rem 0.3rem;
text-transform: capitalize;
color: #000;
z-index: 100;
font-weight: bold;
}
</style>

View File

@ -2,53 +2,43 @@
<div>
<section class="section">
<div class="container">
<h1 class="title">
Settings
</h1>
<h1 class="title">Settings</h1>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="subtitle">
Spoilers and Displayed Items
</h2>
<h2 class="subtitle">Spoilers and Displayed Items</h2>
<div class="field">
<button-checkbox v-model="HideCompleted">
Hide Completed
</button-checkbox>
<button-checkbox v-model="HideCompleted"> Hide Completed </button-checkbox>
<p class="help">Hides items that have been turned in to the community center.</p>
</div>
<div class="field">
<button-checkbox v-model="HideSpoilers">
Hide Spoilers
</button-checkbox>
<button-checkbox v-model="HideSpoilers"> Hide Spoilers </button-checkbox>
<p class="help">Hides things that are considered spoilers, as defined below.</p>
</div>
<label class="label">
Spoilers
</label>
<label class="label"> Spoilers </label>
<div class="field is-grouped is-grouped-multiline">
<div class="control">
<label class="checkbox">
<input type="checkbox" v-model="BundleRewardsSpoilers"/>
Bundle Rewards
<input type="checkbox" v-model="BundleRewardsSpoilers" />
Bundle Rewards
</label>
</div>
<div class="control">
<label class="checkbox">
<input type="checkbox" v-model="ItemInfoSpoilers"/>
<input type="checkbox" v-model="ItemInfoSpoilers" />
Item Source Information
</label>
</div>
<div class="control">
<label class="checkbox">
<input type="checkbox" v-model="SeasonsSpoilers"/>
<input type="checkbox" v-model="SeasonsSpoilers" />
Item Seasons
</label>
</div>
<div class="control">
<label class="checkbox">
<input type="checkbox" v-model="SkillsSpoilers"/>
<input type="checkbox" v-model="SkillsSpoilers" />
Item Skills
</label>
</div>
@ -57,36 +47,29 @@
</section>
<section class="section">
<div class="container">
<h2 class="subtitle">
Compact View
</h2>
<h2 class="subtitle">Compact View</h2>
<p class="content">
Enable a more compact table view instead of the card view.
Note that this may result in horizontal scrolling on smaller (phone-sized) devices.
The card view is recommended for those.
Enable a more compact table view instead of the card view. Note that this may result in
horizontal scrolling on smaller (phone-sized) devices. The card view is recommended for
those.
</p>
<div class="field">
<button-checkbox v-model="CompactView">
Use Compact View
</button-checkbox>
<button-checkbox v-model="CompactView"> Use Compact View </button-checkbox>
<p class="help">Enables a compact tabular view for item information.</p>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="subtitle">
Import and Export Saved Data
</h2>
<h2 class="subtitle">Import and Export Saved Data</h2>
<p class="content">
Use these controls to port data to another device.
Copy the data string from the Export field on the source device and paste it into the Import field
on the target device.
Use these controls to port data to another device. Copy the data string from the Export
field on the source device and paste it into the Import field on the target device.
</p>
<label class="label">Export</label>
<div class="field has-addons">
<div class="control">
<input class="input" type="text" placeholder="Saved Data" :value=SavedData readonly />
<input class="input" type="text" placeholder="Saved Data" :value="SavedData" readonly />
</div>
<div class="control">
<button class="button is-info" v-clipboard:copy="SavedData">
@ -99,7 +82,12 @@
<label class="label">Import</label>
<div class="field has-addons">
<div class="control">
<input class="input" type="text" placeholder="Enter Saved Data here" v-model="DataToLoad" />
<input
class="input"
type="text"
placeholder="Enter Saved Data here"
v-model="DataToLoad"
/>
</div>
<div class="control">
<button class="button is-info" @click="LoadData">
@ -117,16 +105,16 @@
<p class="content">Use this button to reset your data and start a new game.</p>
<div class="field">
<div class="control">
<button class="button is-large is-rounded" :class="DeleteConfirm ? 'is-warning' : 'is-danger'" @click="ConfirmDelete">
<button
class="button is-large is-rounded"
:class="DeleteConfirm ? 'is-warning' : 'is-danger'"
@click="ConfirmDelete"
>
<span class="icon">
<font-awesome-icon icon="trash"></font-awesome-icon>
</span>
<span v-if="DeleteConfirm">
Are You Sure?
</span>
<span v-else>
Reset Data
</span>
<span v-if="DeleteConfirm"> Are You Sure? </span>
<span v-else> Reset Data </span>
</button>
</div>
</div>
@ -136,7 +124,7 @@
</template>
<script>
import FontAwesomeIcon from '@fortawesome/vue-fontawesome'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import ButtonCheckbox from '@/components/ButtonCheckbox.vue'
import { faCopy, faTrash, faCloudUploadAlt } from '@fortawesome/fontawesome-free-solid'
import 'mdi-vue/ContentCopyIcon'
@ -159,58 +147,58 @@ export default {
},
computed: {
HideCompleted: {
get () {
get() {
return this.$store.state.HideCompleted
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleCompleted')
}
},
HideSpoilers: {
get () {
get() {
return this.$store.state.HideSpoilers
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleSpoilers')
}
},
BundleRewardsSpoilers: {
get () {
get() {
return this.$store.state.BundleRewardsSpoilers
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleBundleRewards')
}
},
ItemInfoSpoilers: {
get () {
get() {
return this.$store.state.ItemInfoSpoilers
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleItemInfo')
}
},
SeasonsSpoilers: {
get () {
get() {
return this.$store.state.SeasonsSpoilers
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleSeasons')
}
},
SkillsSpoilers: {
get () {
get() {
return this.$store.state.SkillsSpoilers
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleSkills')
}
},
CompactView: {
get () {
get() {
return this.$store.state.CompactView
},
set (newValue) {
set(newValue) {
this.$store.commit('toggleCompactView')
}
},
@ -238,6 +226,4 @@ export default {
}
</script>
<style>
</style>
<style></style>

View File

@ -1,10 +1,10 @@
<template>
<span class="icon" v-bind:data-skill="skill.id">
<farming-icon v-if="skill.id === 'farming'"/>
<mining-icon v-if="skill.id === 'mining'"/>
<foraging-icon v-if="skill.id === 'foraging'"/>
<fishing-icon v-if="skill.id === 'fishing'"/>
<combat-icon v-if="skill.id === 'combat'"/>
<farming-icon v-if="skill.id === 'farming'" />
<mining-icon v-if="skill.id === 'mining'" />
<foraging-icon v-if="skill.id === 'foraging'" />
<fishing-icon v-if="skill.id === 'fishing'" />
<combat-icon v-if="skill.id === 'combat'" />
</span>
</template>
@ -39,22 +39,22 @@ export default {
</script>
<style scoped>
.icon {
position: relative;
}
.icon {
position: relative;
}
.icon:hover::after {
content: attr(data-skill);
display: block;
position: absolute;
bottom: -1.85rem;
border-radius: 3px;
font-size: .75rem;
background-color: #209cee;
padding: .1rem .3rem;
text-transform: capitalize;
color: #FFF;
z-index: 100;
font-weight: bold;
}
.icon:hover::after {
content: attr(data-skill);
display: block;
position: absolute;
bottom: -1.85rem;
border-radius: 3px;
font-size: 0.75rem;
background-color: #209cee;
padding: 0.1rem 0.3rem;
text-transform: capitalize;
color: #fff;
z-index: 100;
font-weight: bold;
}
</style>

View File

@ -2,12 +2,8 @@
<section class="container">
<div class="hero is-medium is-bold">
<div class="hero-body">
<h1 class="title">
Stardew Community Checklist
</h1>
<h2 class="subtitle">
Track Your Progress on the Community Center!
</h2>
<h1 class="title">Stardew Community Checklist</h1>
<h2 class="subtitle">Track Your Progress on the Community Center!</h2>
</div>
</div>
<New :class="ShowModal ? 'is-active' : ''" v-on:dismiss-modal="ShowModal = false"></New>
@ -15,17 +11,17 @@
</template>
<script>
import ItemCard from '@/components/item_card/ItemCard'
import New from '@/components/New'
import ItemCard from '@/components/item_card/ItemCard.vue'
import New from '@/components/New.vue'
export default {
components: {ItemCard, New},
components: { ItemCard, New },
name: 'welcome',
data: function () {
return {
ShowModal: false
}
},
created () {
created() {
if (localStorage.getItem('new_visit') === null) {
this.ShowModal = true
localStorage.setItem('new_visit', 1)
@ -34,5 +30,4 @@ export default {
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -1,40 +1,57 @@
<template>
<div id="bundle-items">
<div id="bundle-items">
<section class="container">
<div class="columns">
<div class="column">
<h3 class="title is-4">
{{bundle.name}}
<span class="is-pulled-right">{{ GetBundleItemsRedeemed(bundle) }} / {{bundle.items_required}}</span>
{{ bundle.name }}
<span class="is-pulled-right"
>{{ GetBundleItemsRedeemed(bundle) }} / {{ bundle.items_required }}</span
>
</h3>
<h5 class="subtitle bundle-reward" v-if="!hideBundleItems">
{{bundle.reward}}
{{ bundle.reward }}
</h5>
<progress class="progress is-info" :value="GetBundleItemsRedeemed(bundle)" :max="bundle.items_required" />
<progress
class="progress is-info"
:value="GetBundleItemsRedeemed(bundle)"
:max="bundle.items_required"
/>
</div>
<div class="column">
<h3 class="title is-4">
{{bundle.room.name}}
<span class="is-pulled-right">{{ GetRoomItemsRedeemed(bundle.room)}} / {{bundle.room.items_required}}</span>
{{ bundle.room.name }}
<span class="is-pulled-right"
>{{ GetRoomItemsRedeemed(bundle.room) }} / {{ bundle.room.items_required }}</span
>
</h3>
<h5 class="subtitle" v-if="!hideBundleItems">
{{bundle.room.reward}}
{{ bundle.room.reward }}
</h5>
<progress class="progress is-info" :value="GetRoomItemsRedeemed(bundle.room)" :max="bundle.room.items_required" />
<progress
class="progress is-info"
:value="GetRoomItemsRedeemed(bundle.room)"
:max="bundle.room.items_required"
/>
</div>
</div>
<div class="columns is-multiline">
<item-table v-if="CompactView" :items="bundleItems.map(i => i.item)" />
<div v-else class="column is-3-widescreen is-4-desktop is-12-mobile is-6-tablet is-flex" v-for="bundleitem in bundleItems" :key="bundleitem.id">
<item-card :item="bundleitem.item"></item-card>
</div>
<div class="columns is-multiline">
<item-table v-if="CompactView" :items="bundleItems.map((i) => i.item)" />
<div
v-else
class="column is-3-widescreen is-4-desktop is-12-mobile is-6-tablet is-flex"
v-for="bundleitem in bundleItems"
:key="bundleitem.id"
>
<item-card :item="bundleitem.item"></item-card>
</div>
</div>
</section>
</div>
</div>
</template>
<script>
import ItemCard from '@/components/item_card/ItemCard'
import ItemCard from '@/components/item_card/ItemCard.vue'
import ItemTable from '@/components/item_table/ItemTable.vue'
export default {
name: 'bundle-items',
@ -46,9 +63,11 @@ export default {
return this.$store.state.HideSpoilers && this.$store.state.BundleRewardsSpoilers
},
bundleItems: function () {
return this.bundle.items.filter(item => !(this.$store.state.HideCompleted && this.isItemComplete(item)))
return this.bundle.items.filter(
(item) => !(this.$store.state.HideCompleted && this.isItemComplete(item))
)
},
CompactView () {
CompactView() {
return this.$store.state.CompactView
}
},
@ -56,8 +75,12 @@ export default {
isItemComplete: function (item) {
return item.item.bundles.every(this.$store.getters.IsBundleItemRedeemed)
},
GetBundleItemsRedeemed: function (bundle) { return this.$store.getters.GetBundleItemsRedeemed(bundle) },
GetRoomItemsRedeemed: function (room) { return this.$store.getters.GetRoomItemsRedeemed(room) }
GetBundleItemsRedeemed: function (bundle) {
return this.$store.getters.GetBundleItemsRedeemed(bundle)
},
GetRoomItemsRedeemed: function (room) {
return this.$store.getters.GetRoomItemsRedeemed(room)
}
},
components: {
ItemCard,

View File

@ -5,9 +5,10 @@
<div class="navbar-item">
<h1 class="subtitle">Bundles</h1>
</div>
<div class="navbar-burger burger"
v-bind:class="{ 'is-active': menu_active }"
@click="menu_active = !menu_active"
<div
class="navbar-burger burger"
v-bind:class="{ 'is-active': menu_active }"
@click="menu_active = !menu_active"
>
<span></span>
<span></span>
@ -19,8 +20,10 @@
<div class="navbar-start">
<div class="navbar-item has-dropdown is-hoverable" v-for="room in rooms" :key="room.id">
<a class="navbar-link">
<span class="icon has-text-success" v-if="IsRoomComplete(room)"><font-awesome-icon icon="check-circle"/></span>
<span>{{room.name}}</span>
<span class="icon has-text-success" v-if="IsRoomComplete(room)"
><font-awesome-icon icon="check-circle"
/></span>
<span>{{ room.name }}</span>
</a>
<div class="navbar-dropdown">
<router-link
@ -28,10 +31,12 @@
v-for="bundle in room.bundles"
:key="bundle.id"
@click.native="menu_active = false"
:to="{ name: 'bundle-items', params: { id: bundle.id }}">
<span class="icon has-text-success" v-if="IsBundleComplete(bundle)"><font-awesome-icon icon="check-circle"/></span>
<span>{{bundle.name}}</span>
:to="{ name: 'bundle-items', params: { id: bundle.id } }"
>
<span class="icon has-text-success" v-if="IsBundleComplete(bundle)"
><font-awesome-icon icon="check-circle"
/></span>
<span>{{ bundle.name }}</span>
</router-link>
</div>
</div>
@ -39,12 +44,11 @@
</div>
</nav>
</section>
</template>
<script>
import { mapState } from 'vuex'
import FontAwesomeIcon from '@fortawesome/vue-fontawesome'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { faCheckCircle } from '@fortawesome/fontawesome-free-solid'
export default {
name: 'bundle_nav',
@ -61,8 +65,12 @@ export default {
...mapState(['rooms'])
},
methods: {
IsBundleComplete: function (bundle) { return this.$store.getters.IsBundleComplete(bundle) },
IsRoomComplete: function (room) { return this.$store.getters.IsRoomComplete(room) }
IsBundleComplete: function (bundle) {
return this.$store.getters.IsBundleComplete(bundle)
},
IsRoomComplete: function (room) {
return this.$store.getters.IsRoomComplete(room)
}
}
}
</script>

View File

@ -2,10 +2,7 @@
<div>
<BundleNav />
<section class="section">
<transition
name="fade"
mode="out-in"
>
<transition name="fade" mode="out-in">
<router-view :key="bundle"></router-view>
</transition>
</section>
@ -15,7 +12,7 @@
<script>
import BundleNav from '@/components/bundles/BundleNav.vue'
export default {
components: {BundleNav},
components: { BundleNav },
name: 'bundles',
computed: {
bundle: function () {
@ -26,13 +23,13 @@ export default {
</script>
<style lang="scss" scoped>
.fade-enter-active, .fade-leave-active {
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}
.fade-enter, .fade-leave-active {
.fade-enter,
.fade-leave-active {
opacity: 0;
}
</style>

View File

@ -1,10 +1,8 @@
<template>
<section class="section">
<section class="container">
<h1 class="title">
Changelog
</h1>
<version v-for="version in changelog.versions" :key="version.date" :version="version"/>
<h1 class="title">Changelog</h1>
<version v-for="version in changelog.versions" :key="version.date" :version="version" />
</section>
</section>
</template>
@ -17,7 +15,7 @@ export default {
components: {
Version
},
data () {
data() {
return {
changelog: ChangeLogJson
}
@ -25,6 +23,4 @@ export default {
}
</script>
<style>
</style>
<style></style>

View File

@ -2,26 +2,24 @@
<div class="card">
<header class="card-header">
<p class="card-header-title">
{{version.id}}
{{ version.id }}
</p>
</header>
<div class="card-content">
<div class="content">
<ul>
<li v-for="change in version.changes" :key="change.date">
{{change}}
{{ change }}
</li>
</ul>
</div>
</div>
<div class="card-footer">
<p class="card-footer-item has-text-centered-mobile">
Release Date: {{version.date}}
</p>
<p class="card-footer-item has-text-centered-mobile">Release Date: {{ version.date }}</p>
<p class="card-footer-item">
<a :href="release_url" class="button">
<span class="icon">
<github-box/>
<github-box />
</span>
<span>Release</span>
</a>
@ -40,27 +38,24 @@ export default {
props: {
version: {
type: Object,
default () {
default() {
return {
id: 'Version 1.0',
date: '2016-04-13',
link: 'Version-1.0',
changes: [
'Initial Version'
]
changes: ['Initial Version']
}
}
}
},
computed: {
release_url () {
return 'https://github.com/kihashi/stardew_community_checklist/releases/tag/' + this.version.link
release_url() {
return (
'https://github.com/kihashi/stardew_community_checklist/releases/tag/' + this.version.link
)
}
}
}
</script>
<style>
</style>
<style></style>

View File

@ -1,16 +1,20 @@
<template>
<div class="field has-addons">
<div class="control is-expanded">
<a class="button is-rounded is-fullwidth" :class="ButtonClass"
@click="ToggleItemInBundle">
<a class="button is-rounded is-fullwidth" :class="ButtonClass" @click="ToggleItemInBundle">
<span class="icon">
<font-awesome-icon :icon="ItemInBundle ? InBundleIcon : NotInBundleIcon"></font-awesome-icon>
<font-awesome-icon
:icon="ItemInBundle ? InBundleIcon : NotInBundleIcon"
></font-awesome-icon>
</span>
<span class="is-size-7">{{bundleItem.bundle.name}}{{numberInBundle}}</span>
<span class="is-size-7">{{ bundleItem.bundle.name }}{{ numberInBundle }}</span>
</a>
</div>
<div class="control">
<router-link class="button is-rounded is-light" :to="{ name: 'bundle-items', params: { id: bundleItem.bundle.id } }">
<router-link
class="button is-rounded is-light"
:to="{ name: 'bundle-items', params: { id: bundleItem.bundle.id } }"
>
<span class="icon is-small">
<font-awesome-icon icon="link"></font-awesome-icon>
</span>
@ -20,7 +24,7 @@
</template>
<script>
import FontAwesomeIcon from '@fortawesome/vue-fontawesome'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { faCheckSquare, faSquare } from '@fortawesome/fontawesome-free-regular'
import { faLink } from '@fortawesome/fontawesome-free-solid'
export default {
@ -39,13 +43,13 @@ export default {
ItemInBundle: function () {
return this.$store.getters.IsBundleItemRedeemed(this.bundleItem)
},
InBundleIcon () {
InBundleIcon() {
return faCheckSquare
},
NotInBundleIcon () {
NotInBundleIcon() {
return faSquare
},
ButtonClass () {
ButtonClass() {
if (this.ItemInBundle) {
return 'is-success'
} else if (this.IsBundleComplete(this.bundleItem.bundle)) {
@ -54,25 +58,23 @@ export default {
return 'is-danger'
}
},
numberInBundle () {
numberInBundle() {
return this.bundleItem.count > 1 ? ` (${this.bundleItem.count})` : ''
}
},
methods: {
ToggleItemInBundle () {
ToggleItemInBundle() {
if (!this.ItemInBundle) {
this.$store.commit('RedeemItem', this.bundleItem)
} else {
this.$store.commit('UndoRedeemItem', this.bundleItem)
}
},
IsBundleComplete (bundle) {
IsBundleComplete(bundle) {
return this.$store.getters.IsBundleComplete(bundle)
}
}
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -2,32 +2,37 @@
<div class="card">
<header class="card-header">
<p class="card-header-title">
{{item.name}}
{{ item.name }}
</p>
</header>
<div class="card-content">
<div class="content item-source" v-if="showItemDesc">
{{item.source}}
{{ item.source }}
</div>
<div class="content">
<bundle-button v-for="bundleItem in item.bundles" :key="bundleItem.id" :bundle-item="bundleItem" :item="item"/>
<bundle-button
v-for="bundleItem in item.bundles"
:key="bundleItem.id"
:bundle-item="bundleItem"
:item="item"
/>
</div>
</div>
<footer class="card-footer">
<div class="card-footer-item item-seasons" v-if="showSeasonList">
<season-list :seasons="item.seasons"/>
<season-list :seasons="item.seasons" />
</div>
<div class="card-footer-item item-skills" v-if="showSkillList">
<skill-list :skills="item.skills"/>
<skill-list :skills="item.skills" />
</div>
</footer>
</div>
</template>
<script>
import SeasonList from './SeasonList'
import SkillList from './SkillList'
import BundleButton from './BundleButton'
import SeasonList from './SeasonList.vue'
import SkillList from './SkillList.vue'
import BundleButton from './BundleButton.vue'
export default {
components: {
@ -54,7 +59,8 @@ export default {
return {
id: 22,
name: 'Purple Mushroom',
source: 'Can be found in the mines or in the farm cave if you selected the mushroom perk.',
source:
'Can be found in the mines or in the farm cave if you selected the mushroom perk.',
seasons: [
{
id: 'spring',
@ -89,26 +95,26 @@ export default {
name: 'Foraging'
}
],
'bundles': [
bundles: [
{
'count': 1,
'bundle': {
count: 1,
bundle: {
id: 5,
name: 'Exotic Foraging Bundle',
room: 0,
reward: 'Autumn\'s Bounty (5)'
reward: "Autumn's Bounty (5)"
},
'id': 24
id: 24
},
{
'count': 1,
'bundle': {
count: 1,
bundle: {
id: 23,
name: 'Field Research Bundle',
room: 4,
reward: 'Recycling Machine'
},
'id': 25
id: 25
}
]
}

View File

@ -1,14 +1,14 @@
<template>
<span class='tags has-addons'>
<season-tag v-for='season in seasons' :key='season.order' :season='season'/>
<span class="tags has-addons">
<season-tag v-for="season in seasons" :key="season.order" :season="season" />
</span>
</template>
<script>
import SeasonTag from './SeasonTag'
import SeasonTag from './SeasonTag.vue'
export default {
components: {SeasonTag},
components: { SeasonTag },
name: 'season-list',
props: {
seasons: {

View File

@ -1,11 +1,11 @@
<template>
<span class="tag is-primary">
<season-icon :season="season" class="is-small"></season-icon>
<season-icon :season="season" class="is-small"></season-icon>
</span>
</template>
<script>
import SeasonIcon from '@/components/SeasonIcon'
import SeasonIcon from '@/components/SeasonIcon.vue'
export default {
name: 'season-tag',
props: {
@ -26,6 +26,4 @@ export default {
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -1,14 +1,14 @@
<template>
<span class="tags has-addons">
<skill-tag v-for="skill in skills" :key="skill.order" :skill="skill"/>
<skill-tag v-for="skill in skills" :key="skill.order" :skill="skill" />
</span>
</template>
<script>
import SkillTag from './SkillTag'
import SkillTag from './SkillTag.vue'
export default {
components: {SkillTag},
components: { SkillTag },
name: 'skill-list',
props: {
skills: {
@ -24,5 +24,4 @@ export default {
justify-content: center;
flex-wrap: nowrap;
}
</style>

View File

@ -1,11 +1,11 @@
<template>
<span class="tag is-info">
<skill-icon :skill="skill" class="is-small"/>
<skill-icon :skill="skill" class="is-small" />
</span>
</template>
<script>
import SkillIcon from '@/components/SkillIcon'
import SkillIcon from '@/components/SkillIcon.vue'
export default {
name: 'skill-tag',
props: {
@ -26,6 +26,4 @@ export default {
}
</script>
<style scoped>
</style>
<style scoped></style>

View File

@ -2,21 +2,11 @@
<table class="table is-bordered is-striped is-narrow is-fullwidth">
<thead>
<tr>
<th>
Item
</th>
<th>
Source
</th>
<th v-if="showSeasonList">
Seasons
</th>
<th v-if="showSkillList">
Skills
</th>
<th>
Bundles
</th>
<th>Item</th>
<th>Source</th>
<th v-if="showSeasonList">Seasons</th>
<th v-if="showSkillList">Skills</th>
<th>Bundles</th>
</tr>
</thead>
<tbody>
@ -33,10 +23,8 @@ export default {
components: {
ItemTableRow
},
data () {
return {
}
data() {
return {}
},
props: {
items: {
@ -56,6 +44,6 @@ export default {
<style lang="scss" scoped>
table {
table-layout: fixed
table-layout: fixed;
}
</style>

View File

@ -1,27 +1,32 @@
<template>
<tr>
<td>
{{item.name}}
{{ item.name }}
</td>
<td>
{{item.source}}
{{ item.source }}
</td>
<td v-if="showSeasonList">
<season-list :seasons="item.seasons"/>
<season-list :seasons="item.seasons" />
</td>
<td v-if="showSkillList">
<skill-list :skills="item.skills"/>
<skill-list :skills="item.skills" />
</td>
<td>
<bundle-button v-for="bundleItem in item.bundles" :key="bundleItem.id" :bundle-item="bundleItem" :item="item"/>
<bundle-button
v-for="bundleItem in item.bundles"
:key="bundleItem.id"
:bundle-item="bundleItem"
:item="item"
/>
</td>
</tr>
</template>
<script>
import SeasonList from '../item_card/SeasonList'
import SkillList from '../item_card/SkillList'
import BundleButton from '../item_card/BundleButton'
import SeasonList from '../item_card/SeasonList.vue'
import SkillList from '../item_card/SkillList.vue'
import BundleButton from '../item_card/BundleButton.vue'
export default {
name: 'ItemTable',
components: {
@ -29,10 +34,8 @@ export default {
SkillList,
SeasonList
},
data () {
return {
}
data() {
return {}
},
computed: {
showItemDesc: function () {
@ -52,7 +55,8 @@ export default {
return {
id: 22,
name: 'Purple Mushroom',
source: 'Can be found in the mines or in the farm cave if you selected the mushroom perk.',
source:
'Can be found in the mines or in the farm cave if you selected the mushroom perk.',
seasons: [
{
id: 'spring',
@ -87,32 +91,31 @@ export default {
name: 'Foraging'
}
],
'bundles': [
bundles: [
{
'count': 1,
'bundle': {
count: 1,
bundle: {
id: 5,
name: 'Exotic Foraging Bundle',
room: 0,
reward: 'Autumn\'s Bounty (5)'
reward: "Autumn's Bounty (5)"
},
'id': 24
id: 24
},
{
'count': 1,
'bundle': {
count: 1,
bundle: {
id: 23,
name: 'Field Research Bundle',
room: 4,
reward: 'Recycling Machine'
},
'id': 25
id: 25
}
]
}
}
}
}
}
</script>

View File

@ -6,7 +6,12 @@
<div class="field-body">
<div class="field">
<div class="control">
<input class="input" placeholder="Item Name" v-bind:value="value" v-on:input="$emit('input', $event.target.value)"/>
<input
class="input"
placeholder="Item Name"
v-bind:value="value"
v-on:input="$emit('input', $event.target.value)"
/>
</div>
</div>
</div>
@ -18,15 +23,12 @@ export default {
name: 'item-search',
props: {
value: {
default () {
default() {
return ''
}
}
}
}
</script>
<style>
</style>
<style></style>

View File

@ -1,21 +1,25 @@
<template>
<section class="section">
<search-form v-model="search"></search-form>
<section class="container">
<div class="columns is-multiline">
<item-table v-if="CompactView" :items="filtered_items" />
<div v-else class="column is-3-widescreen is-4-desktop is-12-mobile is-6-tablet is-flex" v-for="item in filtered_items" :key="item.id">
<item-card :item="item"></item-card>
<section class="section">
<search-form v-model="search"></search-form>
<section class="container">
<div class="columns is-multiline">
<item-table v-if="CompactView" :items="filtered_items" />
<div
v-else
class="column is-3-widescreen is-4-desktop is-12-mobile is-6-tablet is-flex"
v-for="item in filtered_items"
:key="item.id"
>
<item-card :item="item"></item-card>
</div>
</div>
</div>
</section>
</section>
</section>
</template>
<script>
import SearchForm from '@/components/search/SearchForm'
import ItemCard from '@/components/item_card/ItemCard'
import SearchForm from '@/components/search/SearchForm.vue'
import ItemCard from '@/components/item_card/ItemCard.vue'
import ItemTable from '@/components/item_table/ItemTable.vue'
import _ from 'lodash'
export default {
@ -25,7 +29,7 @@ export default {
ItemCard,
ItemTable
},
data () {
data() {
return {
search: {
name_filter: '',
@ -41,24 +45,35 @@ export default {
}
},
computed: {
filtered_items () {
filtered_items() {
var self = this
return _.orderBy(
self.$store.state.items
.filter(item => !(this.$store.state.HideCompleted && this.isItemComplete(item)))
.filter(item => item.name.toLowerCase().indexOf(self.search.name_filter.toLowerCase()) !== -1)
.filter(item => this.FilterSeasons(item.seasons.map(ssn => ssn.id), this.search.season_filter))
.filter(item => this.FilterSkills(item.skills.map(skl => skl.id), this.search.skill_filter))
,
.filter((item) => !(this.$store.state.HideCompleted && this.isItemComplete(item)))
.filter(
(item) => item.name.toLowerCase().indexOf(self.search.name_filter.toLowerCase()) !== -1
)
.filter((item) =>
this.FilterSeasons(
item.seasons.map((ssn) => ssn.id),
this.search.season_filter
)
)
.filter((item) =>
this.FilterSkills(
item.skills.map((skl) => skl.id),
this.search.skill_filter
)
),
'name'
)
},
CompactView () {
CompactView() {
return this.$store.state.CompactView
}
},
methods: {
FilterSeasons (itemSeasons, seasonFilter) {
FilterSeasons(itemSeasons, seasonFilter) {
if (seasonFilter.season_exclusive) {
if (itemSeasons.length !== seasonFilter.selected_seasons.length) {
return false
@ -68,7 +83,9 @@ export default {
a.sort()
b.sort()
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) { return false }
if (a[i] !== b[i]) {
return false
}
}
return true
}
@ -81,7 +98,7 @@ export default {
return false
}
},
FilterSkills (itemSkills, skillFilter) {
FilterSkills(itemSkills, skillFilter) {
if (skillFilter.skill_exclusive) {
if (itemSkills.length !== skillFilter.selected_skills.length) {
return false
@ -91,7 +108,9 @@ export default {
a.sort()
b.sort()
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) { return false }
if (a[i] !== b[i]) {
return false
}
}
return true
}
@ -108,10 +127,7 @@ export default {
return item.bundles.every(this.$store.getters.IsBundleItemRedeemed)
}
}
}
</script>
<style>
</style>
<style></style>

View File

@ -1,10 +1,13 @@
<template>
<div class="columns">
<div class="column">
<item-search v-model.lazy="value.name_filter" v-on:input="$emit('input', $event.target.value)" />
<item-search
v-model.lazy="value.name_filter"
v-on:input="$emit('input', $event.target.value)"
/>
</div>
<div class="column">
<season-filter :value="value.season_filter" v-on:input="UpdateSeasons"/>
<season-filter :value="value.season_filter" v-on:input="UpdateSeasons" />
</div>
<div class="column">
<skill-filter :value="value.skill_filter" v-on:input="UpdateSkills" />
@ -20,7 +23,7 @@ export default {
name: 'search-form',
props: {
value: {
default () {
default() {
return {
name_filter: '',
season_filter: {
@ -36,11 +39,11 @@ export default {
}
},
methods: {
UpdateSeasons (val) {
UpdateSeasons(val) {
this.value.season_filter = val
this.$emit('input', this.value)
},
UpdateSkills (val) {
UpdateSkills(val) {
this.value.skill_filter = val
this.$emit('input', this.value)
}
@ -50,10 +53,7 @@ export default {
SeasonFilter,
SkillFilter
}
}
</script>
<style>
</style>
<style></style>

View File

@ -6,7 +6,11 @@
<div class="field-body">
<div class="field has-addons has-addons-centered">
<div class="control" v-for="season in seasons" :key="season.order">
<button-check :value="season.id" :checked="value.selected_seasons" v-on:change="UpdateSeasons">
<button-check
:value="season.id"
:checked="value.selected_seasons"
v-on:change="UpdateSeasons"
>
<span class="icon is-small">
<season-icon :season="season"></season-icon>
</span>
@ -15,7 +19,11 @@
</div>
<div class="field">
<div class="control is-expanded">
<button-check class="is-fullwidth" :checked="value.season_exclusive" v-on:change="UpdateExclusive">
<button-check
class="is-fullwidth"
:checked="value.season_exclusive"
v-on:change="UpdateExclusive"
>
Exclusive
</button-check>
</div>
@ -25,8 +33,8 @@
</template>
<script>
import SeasonIcon from '@/components/SeasonIcon'
import ButtonCheck from '@/components/ButtonCheckbox'
import SeasonIcon from '@/components/SeasonIcon.vue'
import ButtonCheck from '@/components/ButtonCheckbox.vue'
export default {
name: 'season-filter',
components: {
@ -35,7 +43,7 @@ export default {
},
props: {
value: {
default () {
default() {
return {
selected_seasons: [],
season_exclusive: false
@ -44,24 +52,21 @@ export default {
}
},
computed: {
seasons () {
seasons() {
return this.$store.state.seasons
}
},
methods: {
UpdateSeasons (val) {
UpdateSeasons(val) {
this.value.selected_seasons = val
this.$emit('input', this.value)
},
UpdateExclusive (val) {
UpdateExclusive(val) {
this.value.season_exclusive = val
this.$emit('input', this.value)
}
}
}
</script>
<style>
</style>
<style></style>

View File

@ -6,7 +6,11 @@
<div class="field-body">
<div class="field has-addons has-addons-centered">
<div class="control" v-for="skill in skills" :key="skill.id">
<button-check :value="skill.id" :checked="value.selected_skills" v-on:change="UpdateSkills">
<button-check
:value="skill.id"
:checked="value.selected_skills"
v-on:change="UpdateSkills"
>
<span class="icon is-small">
<skill-icon :skill="skill" />
</span>
@ -15,19 +19,22 @@
</div>
<div class="field">
<div class="control is-expanded">
<button-check class="is-fullwidth" :checked="value.skill_exclusive" v-on:change="UpdateExclusive">
<button-check
class="is-fullwidth"
:checked="value.skill_exclusive"
v-on:change="UpdateExclusive"
>
Exclusive
</button-check>
</div>
</div>
</div>
</div>
</template>
<script>
import SkillIcon from '@/components/SkillIcon'
import ButtonCheck from '@/components/ButtonCheckbox'
import SkillIcon from '@/components/SkillIcon.vue'
import ButtonCheck from '@/components/ButtonCheckbox.vue'
export default {
name: 'skill-filter',
components: {
@ -36,7 +43,7 @@ export default {
},
props: {
value: {
default () {
default() {
return {
selected_skills: [],
skill_exclusive: false
@ -45,16 +52,16 @@ export default {
}
},
computed: {
skills () {
skills() {
return this.$store.state.skills
}
},
methods: {
UpdateSkills (val) {
UpdateSkills(val) {
this.value.selected_skills = val
this.$emit('input', this.value)
},
UpdateExclusive (val) {
UpdateExclusive(val) {
this.value.skill_exclusive = val
this.$emit('input', this.value)
}
@ -62,6 +69,4 @@ export default {
}
</script>
<style>
</style>
<style></style>

View File

@ -1,21 +1,16 @@
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import VueClipboard from 'vue-clipboard2'
import App from './App'
import '../node_modules/bulma/bulma.sass'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// import store from './store'
import VueClipboard from 'vue-clipboard2'
require('./assets/sass/main.scss')
const app = createApp(App)
Vue.config.productionTip = false
Vue.use(VueClipboard)
app.use(router)
app.use(VueClipboard)
// app.use(store)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
app.mount('#app')

View File

@ -1,15 +1,12 @@
import Vue from 'vue'
import Router from 'vue-router'
import Welcome from '@/components/Welcome'
import Bundles from '@/components/bundles/Bundles'
import BundleItems from '@/components/bundles/BundleItems'
import Search from '@/components/search/Search'
import Settings from '@/components/Settings'
import Changelog from '@/components/changelog/Changelog'
import Welcome from '@/components/Welcome.vue'
import Bundles from '@/components/bundles/Bundles.vue'
import BundleItems from '@/components/bundles/BundleItems.vue'
import Search from '@/components/search/Search.vue'
import Settings from '@/components/Settings.vue'
import Changelog from '@/components/changelog/Changelog.vue'
import { createRouter } from 'vue-router'
Vue.use(Router)
export default new Router({
const router = createRouter({
routes: [
{
path: '/welcome',
@ -55,3 +52,5 @@ export default new Router({
],
linkActiveClass: 'is-active'
})
export default router

217
yarn.lock
View File

@ -212,7 +212,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4":
"@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4":
version "7.22.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32"
integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==
@ -385,37 +385,48 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
"@fortawesome/fontawesome-common-types@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.3.tgz#8475e0f2d1ad1f858c4ec2e76ed9a2456a09ad83"
"@fortawesome/fontawesome-common-types@6.4.0":
version "6.4.0"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz#88da2b70d6ca18aaa6ed3687832e11f39e80624b"
integrity sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==
"@fortawesome/fontawesome-free-brands@^5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-brands/-/fontawesome-free-brands-5.0.7.tgz#0fe131da1bfb7f5f49b7b800b9e198e530fab418"
"@fortawesome/fontawesome-common-types@^0.1.7":
version "0.1.7"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.7.tgz#4336c4b06d0b5608ff1215464b66fcf9f4795284"
integrity sha512-ego8jRVSHfq/iq4KRZJKQeUAdi3ZjGNrqw4oPN3fNdvTBnLCSntwVCnc37bsAJP9UB8MhrTfPnZYxkv2vpS4pg==
"@fortawesome/fontawesome-free-brands@^5.0.13":
version "5.0.13"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-brands/-/fontawesome-free-brands-5.0.13.tgz#4d15ff4e1e862d5e4a4df3654f8e8acbd47e9c09"
integrity sha512-xC/sEPpfcJPvUbud2GyscLCLQlE2DVBYaTHVwuyVGliYBdYejSEYMINU8FN5A0xhO68yCbpCfMlBv6Gqby+jww==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.1.3"
"@fortawesome/fontawesome-common-types" "^0.1.7"
"@fortawesome/fontawesome-free-regular@^5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-regular/-/fontawesome-free-regular-5.0.7.tgz#3a347278e34c58db8c1c7891e9e567d57d1d7db9"
"@fortawesome/fontawesome-free-regular@^5.0.13":
version "5.0.13"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-regular/-/fontawesome-free-regular-5.0.13.tgz#eb78c30184e3f456a423a1dcfa0f682f7b50de4a"
integrity sha512-36lz9Idww1L4QaaTcv7GZiOeIP9emJFDUsedvRovI10kmwyd6rN0PKkIjnq0FB4foLhX4Rou8vnbCCmjtqiLug==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.1.3"
"@fortawesome/fontawesome-common-types" "^0.1.7"
"@fortawesome/fontawesome-free-solid@^5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-solid/-/fontawesome-free-solid-5.0.7.tgz#b7e68876a24b3a0a34c09ee68bd57fe63925a578"
"@fortawesome/fontawesome-free-solid@^5.0.13":
version "5.0.13"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-solid/-/fontawesome-free-solid-5.0.13.tgz#24b61aaf471a9d34a5364b052d64a516285ba894"
integrity sha512-b+krVnqkdDt52Yfev0x0ZZgtxBQsLw00Zfa3uaVWIDzpNZVtrEXuxldUSUaN/ihgGhSNi8VpvDAdNPVgCKOSxw==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.1.3"
"@fortawesome/fontawesome-common-types" "^0.1.7"
"@fortawesome/fontawesome@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome/-/fontawesome-1.1.4.tgz#03065638046206c2226e103b550196934c75be9b"
"@fortawesome/fontawesome-svg-core@^6.4.0":
version "6.4.0"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz#3727552eff9179506e9203d72feb5b1063c11a21"
integrity sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.1.3"
"@fortawesome/fontawesome-common-types" "6.4.0"
"@fortawesome/vue-fontawesome@^0.0.22":
version "0.0.22"
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.0.22.tgz#720457bda0e5866265e5e0f8fe4fbd857fa5653f"
"@fortawesome/vue-fontawesome@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz#633e2998d11f7d4ed41f0d5ea461a22ec9b9d034"
integrity sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
version "0.3.3"
@ -441,7 +452,7 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
"@jridgewell/sourcemap-codec@^1.4.10":
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
@ -488,6 +499,101 @@
html-tags "^3.1.0"
svg-tags "^1.0.0"
"@vue/compiler-core@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128"
integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==
dependencies:
"@babel/parser" "^7.21.3"
"@vue/shared" "3.3.4"
estree-walker "^2.0.2"
source-map-js "^1.0.2"
"@vue/compiler-dom@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==
dependencies:
"@vue/compiler-core" "3.3.4"
"@vue/shared" "3.3.4"
"@vue/compiler-sfc@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
dependencies:
"@babel/parser" "^7.20.15"
"@vue/compiler-core" "3.3.4"
"@vue/compiler-dom" "3.3.4"
"@vue/compiler-ssr" "3.3.4"
"@vue/reactivity-transform" "3.3.4"
"@vue/shared" "3.3.4"
estree-walker "^2.0.2"
magic-string "^0.30.0"
postcss "^8.1.10"
source-map-js "^1.0.2"
"@vue/compiler-ssr@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
dependencies:
"@vue/compiler-dom" "3.3.4"
"@vue/shared" "3.3.4"
"@vue/devtools-api@^6.5.0":
version "6.5.0"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
"@vue/reactivity-transform@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929"
integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==
dependencies:
"@babel/parser" "^7.20.15"
"@vue/compiler-core" "3.3.4"
"@vue/shared" "3.3.4"
estree-walker "^2.0.2"
magic-string "^0.30.0"
"@vue/reactivity@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
dependencies:
"@vue/shared" "3.3.4"
"@vue/runtime-core@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
dependencies:
"@vue/reactivity" "3.3.4"
"@vue/shared" "3.3.4"
"@vue/runtime-dom@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
dependencies:
"@vue/runtime-core" "3.3.4"
"@vue/shared" "3.3.4"
csstype "^3.1.1"
"@vue/server-renderer@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
dependencies:
"@vue/compiler-ssr" "3.3.4"
"@vue/shared" "3.3.4"
"@vue/shared@3.3.4":
version "3.3.4"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@ -632,9 +738,10 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
bulma@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.6.2.tgz#f4b1d11d5acc51a79644eb0a2b0b10649d3d71f5"
bulma@^0.9.4:
version "0.9.4"
resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.9.4.tgz#0ca8aeb1847a34264768dba26a064c8be72674a1"
integrity sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==
caller-path@^0.1.0:
version "0.1.0"
@ -670,7 +777,7 @@ chalk@^1.0.0, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1:
chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
dependencies:
@ -774,14 +881,15 @@ cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
csstype@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
cuint@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
de-indent@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@ -1050,6 +1158,11 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@ -1214,10 +1327,6 @@ has@^1.0.1:
dependencies:
function-bind "^1.0.2"
he@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
hosted-git-info@^2.1.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@ -1442,6 +1551,13 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
magic-string@^0.30.0:
version "0.30.0"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"
integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
mdi-vue@^0.2.11:
version "0.2.11"
resolved "https://registry.yarnpkg.com/mdi-vue/-/mdi-vue-0.2.11.tgz#98452e9e554fed1c20d36d3033010d91e4535129"
@ -1677,7 +1793,7 @@ postcss@^6.0.1, postcss@^6.0.17:
source-map "^0.6.1"
supports-color "^5.2.0"
postcss@^8.4.23:
postcss@^8.1.10, postcss@^8.4.23:
version "8.4.24"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df"
integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==
@ -2055,20 +2171,23 @@ vue-eslint-parser@^2.0.3:
esquery "^1.0.0"
lodash "^4.17.4"
vue-router@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.1.tgz#d9b05ad9c7420ba0f626d6500d693e60092cc1e9"
vue-template-compiler@^2.5.2:
version "2.5.13"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz#12a2aa0ecd6158ac5e5f14d294b0993f399c3d38"
vue-router@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.2.tgz#b0097b66d89ca81c0986be03da244c7b32a4fd81"
integrity sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
"@vue/devtools-api" "^6.5.0"
vue@^2.5.2:
version "2.5.13"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.13.tgz#95bd31e20efcf7a7f39239c9aa6787ce8cf578e1"
vue@^3.3.4:
version "3.3.4"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
dependencies:
"@vue/compiler-dom" "3.3.4"
"@vue/compiler-sfc" "3.3.4"
"@vue/runtime-dom" "3.3.4"
"@vue/server-renderer" "3.3.4"
"@vue/shared" "3.3.4"
vuex-persistedstate@^2.5.4:
version "2.5.4"