eb2453d46f
looks like v-click-outside doesn't work on mobile (tested with chrome and firefox on android) since the dropdown menu is closed also when clicking a menu entry.
165 lines
5.0 KiB
Vue
165 lines
5.0 KiB
Vue
<template>
|
|
<div>
|
|
<nav class="mb-4 bg-grey-light rounded font-sans w-full">
|
|
<ol class="list-reset flex text-grey-dark">
|
|
<li>
|
|
<a>org</a>
|
|
</li>
|
|
<li>
|
|
<span class="mx-2">/</span>
|
|
</li>
|
|
<li>
|
|
<router-link :to="ownerLink('org', orgname)">{{orgname}}</router-link>
|
|
</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<div class="mb-8 flex justify-between">
|
|
<span class="text-3xl">{{orgname}}</span>
|
|
<createprojectbutton v-on:click="goToCreate($event)" />
|
|
</div>
|
|
|
|
<div class="flex justify-between">
|
|
<ul class="flex-grow tab">
|
|
<li
|
|
class="tab-element"
|
|
:class="[{ 'tab-element-selected': $route.name === 'org projects' || $route.name === 'org' }]"
|
|
>
|
|
<router-link :to="ownerProjectsLink('org', orgname)">
|
|
<i class="mr-1 mdi mdi-home" />
|
|
<span>Projects</span>
|
|
</router-link>
|
|
</li>
|
|
<li
|
|
class="tab-element"
|
|
:class="[{ 'tab-element-selected': $route.name === 'org members' }]"
|
|
>
|
|
<router-link :to="orgMembersLink(orgname)">
|
|
<i class="mr-1 mdi mdi-account-group" />
|
|
<span>Members</span>
|
|
</router-link>
|
|
</li>
|
|
<li
|
|
v-if="$route.name.endsWith('org project group settings')"
|
|
class="tab-element"
|
|
:class="[{ 'tab-element-selected': $route.name.endsWith('org project group settings') }]"
|
|
>
|
|
<router-link :to="projectGroupSettingsLink('org', orgname, [])">
|
|
<i class="mr-1 mdi mdi-settings" />
|
|
<span>Root Project Group Settings</span>
|
|
</router-link>
|
|
</li>
|
|
<li
|
|
v-if="$route.name.endsWith('org settings')"
|
|
class="tab-element"
|
|
:class="[{ 'tab-element-selected': $route.name.endsWith('org settings') }]"
|
|
>
|
|
<router-link :to="ownerSettingsLink('org', orgname)">
|
|
<i class="mr-1 mdi mdi-settings" />
|
|
<span>Organization Settings</span>
|
|
</router-link>
|
|
</li>
|
|
</ul>
|
|
<ul class="flex tab">
|
|
<li>
|
|
<div class="relative">
|
|
<div
|
|
class="flex -mt-3"
|
|
v-click-outside="() => dropdownActive = false"
|
|
@click="dropdownActive = !dropdownActive"
|
|
>
|
|
<button
|
|
class="relative flex items-center focus:outline-none bg-transparent hover:bg-gray-300 text-dark font-semibold hover:text-dark py-1 px-4 border border-gray-500 rounded"
|
|
>
|
|
<i class="mr-4 mdi mdi-settings" />
|
|
<i class="mdi mdi-chevron-down"></i>
|
|
</button>
|
|
</div>
|
|
<div
|
|
v-if="dropdownActive"
|
|
class="z-10 origin-top-right absolute right-0 mt-2 w-64 bg-white rounded-lg border shadow-md py-2"
|
|
>
|
|
<ul>
|
|
<li>
|
|
<router-link
|
|
class="block px-4 py-2 hover:bg-blue-500 hover:text-white"
|
|
:to="projectGroupSettingsLink('org', orgname, [])"
|
|
>
|
|
<i class="mr-1 mdi mdi-settings" />
|
|
<span>Root Project Group Settings</span>
|
|
</router-link>
|
|
</li>
|
|
<li>
|
|
<router-link
|
|
class="block px-4 py-2 hover:bg-blue-500 hover:text-white"
|
|
:to="ownerSettingsLink('org', orgname)"
|
|
>
|
|
<i class="mr-1 mdi mdi-settings" />
|
|
<span>Organization Settings</span>
|
|
</router-link>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<router-view class="mt-8"></router-view>
|
|
</div>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
import * as vClickOutside from "v-click-outside-x";
|
|
|
|
import {
|
|
ownerLink,
|
|
ownerProjectsLink,
|
|
ownerSettingsLink,
|
|
orgMembersLink,
|
|
projectGroupCreateProjectGroupLink,
|
|
projectGroupCreateProjectLink,
|
|
projectGroupSettingsLink
|
|
} from "@/util/link.js";
|
|
|
|
import createprojectbutton from "@/components/createprojectbutton.vue";
|
|
|
|
export default {
|
|
name: "Org",
|
|
components: { createprojectbutton },
|
|
directives: {
|
|
clickOutside: vClickOutside.directive
|
|
},
|
|
props: {
|
|
orgname: String
|
|
},
|
|
data() {
|
|
return {
|
|
dropdownActive: false
|
|
};
|
|
},
|
|
methods: {
|
|
ownerLink: ownerLink,
|
|
ownerProjectsLink: ownerProjectsLink,
|
|
ownerSettingsLink: ownerSettingsLink,
|
|
orgMembersLink: orgMembersLink,
|
|
projectGroupCreateProjectGroupLink: projectGroupCreateProjectGroupLink,
|
|
projectGroupCreateProjectLink: projectGroupCreateProjectLink,
|
|
projectGroupSettingsLink: projectGroupSettingsLink,
|
|
goToCreate(type) {
|
|
if (type == "project") {
|
|
this.$router.push(
|
|
projectGroupCreateProjectLink("org", this.orgname, [])
|
|
);
|
|
return;
|
|
}
|
|
this.$router.push(
|
|
projectGroupCreateProjectGroupLink("org", this.orgname, [])
|
|
);
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
</style> |