mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
138 lines
3.3 KiB
Vue
138 lines
3.3 KiB
Vue
<template>
|
|
<div>
|
|
<ds-flex gutter="small">
|
|
<ds-flex-item :width="{ base: '100%', md: '200px' }">
|
|
<ds-menu class="post-type-menu" :routes="routes">
|
|
<ds-menu-item
|
|
@click.prevent="switchPostType($event, item)"
|
|
slot="menuitem"
|
|
slot-scope="item"
|
|
:route="item.route"
|
|
class="post-type-menu-item"
|
|
>
|
|
{{ item.route.name }}
|
|
</ds-menu-item>
|
|
</ds-menu>
|
|
</ds-flex-item>
|
|
<ds-flex-item :width="{ base: '100%', md: 1 }">
|
|
<transition name="slide-up" appear>
|
|
<div>
|
|
<div>
|
|
<h1 v-if="!createEvent" class="title">
|
|
{{ $t('post.createNewPost.title') }}
|
|
</h1>
|
|
<h1 v-else class="title">
|
|
{{ $t('post.createNewEvent.title') }}
|
|
</h1>
|
|
</div>
|
|
<contribution-form :group="group" :createEvent="createEvent" />
|
|
</div>
|
|
</transition>
|
|
</ds-flex-item>
|
|
</ds-flex>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { groupQuery } from '~/graphql/groups'
|
|
import ContributionForm from '~/components/ContributionForm/ContributionForm'
|
|
|
|
export default {
|
|
components: {
|
|
ContributionForm,
|
|
},
|
|
data() {
|
|
const { groupId = null } = this.$route.query
|
|
return {
|
|
groupId,
|
|
createEvent: false,
|
|
}
|
|
},
|
|
computed: {
|
|
group() {
|
|
return this.Group && this.Group[0] ? this.Group[0] : null
|
|
},
|
|
routes() {
|
|
return [
|
|
{
|
|
name: this.$t('post.name'),
|
|
path: `/post/create`,
|
|
type: 'post',
|
|
},
|
|
{
|
|
name: this.$t('post.event'),
|
|
path: `/`,
|
|
type: 'event',
|
|
},
|
|
]
|
|
},
|
|
},
|
|
apollo: {
|
|
Group: {
|
|
query() {
|
|
return groupQuery(this.$i18n)
|
|
},
|
|
variables() {
|
|
return {
|
|
id: this.groupId,
|
|
// followedByCount: this.followedByCount,
|
|
// followingCount: this.followingCount,
|
|
}
|
|
},
|
|
skip() {
|
|
return !this.groupId
|
|
},
|
|
error(error) {
|
|
this.$toast.error(error.message)
|
|
},
|
|
fetchPolicy: 'cache-and-network',
|
|
},
|
|
},
|
|
methods: {
|
|
switchPostType(event, route) {
|
|
if (route.route.type.toLowerCase() === 'event') {
|
|
this.createEvent = true
|
|
} else {
|
|
this.createEvent = false
|
|
}
|
|
// hacky way to set active element
|
|
const menuItems = document.querySelectorAll('.post-type-menu-item')
|
|
menuItems.forEach((menuItem) => {
|
|
menuItem.firstChild.classList.remove('router-link-exact-active', 'router-link-active')
|
|
})
|
|
event.target.classList.add('router-link-exact-active')
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
<style lang="scss">
|
|
.inactive-tab-button {
|
|
background-color: #ff000000 !important;
|
|
color: 'whitesmoke' !important;
|
|
}
|
|
.group-create-title {
|
|
font-size: 30px;
|
|
text-align: center;
|
|
}
|
|
|
|
// copy hover effect from ghost button to use for ds-card
|
|
.create-form-btn:not(.ds-card-primary):hover {
|
|
background-color: #faf9fa;
|
|
}
|
|
.create-form-btn .ds-button-ghost:hover {
|
|
background-color: transparent;
|
|
}
|
|
|
|
.menu-item-active {
|
|
color: $color-primary;
|
|
border-left: 2px solid $color-primary;
|
|
background-color: #faf9fa;
|
|
}
|
|
|
|
@media screen and (min-width: 768px) {
|
|
.post-type-menu {
|
|
margin-top: 39px;
|
|
}
|
|
}
|
|
</style>
|