2021-02-26 14:37:35 +00:00
|
|
|
<!--
|
|
|
|
- @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>
|
|
|
|
-
|
|
|
|
- @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
|
|
-
|
|
|
|
- @license GNU AGPL version 3 or any later version
|
|
|
|
-
|
|
|
|
- This program is free software: you can redistribute it and/or modify
|
|
|
|
- it under the terms of the GNU Affero General Public License as
|
|
|
|
- published by the Free Software Foundation, either version 3 of the
|
|
|
|
- License, or (at your option) any later version.
|
|
|
|
-
|
|
|
|
- This program is distributed in the hope that it will be useful,
|
|
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
- GNU Affero General Public License for more details.
|
|
|
|
-
|
|
|
|
- You should have received a copy of the GNU Affero General Public License
|
|
|
|
- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
-
|
|
|
|
-->
|
|
|
|
|
2021-02-26 12:09:23 +00:00
|
|
|
<template>
|
2021-06-01 06:38:06 +00:00
|
|
|
<AppNavigation :class="{'icon-loading': loading}">
|
2021-02-26 12:09:23 +00:00
|
|
|
<slot />
|
|
|
|
|
|
|
|
<!-- groups list -->
|
2021-06-01 06:38:06 +00:00
|
|
|
<template #list>
|
2021-02-26 12:09:23 +00:00
|
|
|
<!-- All contacts group -->
|
|
|
|
<AppNavigationItem id="everyone"
|
|
|
|
:title="GROUP_ALL_CONTACTS"
|
|
|
|
:to="{
|
|
|
|
name: 'group',
|
|
|
|
params: { selectedGroup: GROUP_ALL_CONTACTS },
|
2022-06-28 13:05:13 +00:00
|
|
|
}">
|
|
|
|
<template #icon>
|
|
|
|
<IconContact
|
|
|
|
:size="20" />
|
|
|
|
</template>
|
2021-02-26 12:09:23 +00:00
|
|
|
<AppNavigationCounter v-if="sortedContacts.length" slot="counter">
|
|
|
|
{{ sortedContacts.length }}
|
|
|
|
</AppNavigationCounter>
|
|
|
|
</AppNavigationItem>
|
|
|
|
|
|
|
|
<!-- Not grouped group -->
|
|
|
|
<AppNavigationItem
|
|
|
|
v-if="ungroupedContacts.length > 0"
|
|
|
|
id="notgrouped"
|
|
|
|
:title="GROUP_NO_GROUP_CONTACTS"
|
|
|
|
:to="{
|
|
|
|
name: 'group',
|
|
|
|
params: { selectedGroup: GROUP_NO_GROUP_CONTACTS },
|
2022-06-28 13:05:13 +00:00
|
|
|
}">
|
|
|
|
<template #icon>
|
|
|
|
<IconUser
|
|
|
|
:size="20" />
|
|
|
|
</template>
|
2021-02-26 12:09:23 +00:00
|
|
|
<AppNavigationCounter v-if="ungroupedContacts.length" slot="counter">
|
|
|
|
{{ ungroupedContacts.length }}
|
|
|
|
</AppNavigationCounter>
|
|
|
|
</AppNavigationItem>
|
|
|
|
|
|
|
|
<!-- Recently contacted group -->
|
|
|
|
<AppNavigationItem
|
|
|
|
v-if="isContactsInteractionEnabled && recentlyContactedContacts && recentlyContactedContacts.contacts.length > 0"
|
|
|
|
id="recentlycontacted"
|
|
|
|
:title="GROUP_RECENTLY_CONTACTED"
|
|
|
|
:to="{
|
|
|
|
name: 'group',
|
|
|
|
params: { selectedGroup: GROUP_RECENTLY_CONTACTED },
|
2022-06-28 13:05:13 +00:00
|
|
|
}">
|
|
|
|
<template #icon>
|
|
|
|
<IconRecentlyContacted
|
|
|
|
:size="20" />
|
|
|
|
</template>
|
2021-02-26 12:09:23 +00:00
|
|
|
<AppNavigationCounter v-if="recentlyContactedContacts.contacts.length" slot="counter">
|
|
|
|
{{ recentlyContactedContacts.contacts.length }}
|
|
|
|
</AppNavigationCounter>
|
|
|
|
</AppNavigationItem>
|
|
|
|
|
2021-04-27 17:38:41 +00:00
|
|
|
<AppNavigationCaption
|
2021-02-26 12:09:23 +00:00
|
|
|
id="newgroup"
|
|
|
|
:force-menu="true"
|
|
|
|
:menu-open.sync="isNewGroupMenuOpen"
|
2021-02-26 14:37:35 +00:00
|
|
|
:title="t('contacts', 'Groups')"
|
2021-05-06 14:45:20 +00:00
|
|
|
default-icon="icon-add"
|
2021-02-26 12:09:23 +00:00
|
|
|
@click.prevent.stop="toggleNewGroupMenu">
|
|
|
|
<template slot="actions">
|
|
|
|
<ActionText :icon="createGroupError ? 'icon-error' : 'icon-contacts-dark'">
|
|
|
|
{{ createGroupError ? createGroupError : t('contacts', 'Create a new group') }}
|
|
|
|
</ActionText>
|
|
|
|
<ActionInput
|
|
|
|
icon=""
|
|
|
|
:placeholder="t('contacts','Group name')"
|
|
|
|
@submit.prevent.stop="createNewGroup" />
|
|
|
|
</template>
|
2021-04-27 17:38:41 +00:00
|
|
|
</AppNavigationCaption>
|
2021-02-26 14:37:35 +00:00
|
|
|
|
|
|
|
<!-- Custom groups -->
|
|
|
|
<GroupNavigationItem
|
|
|
|
v-for="group in ellipsisGroupsMenu"
|
|
|
|
:key="group.key"
|
|
|
|
:group="group" />
|
|
|
|
|
2021-06-01 06:38:06 +00:00
|
|
|
<template v-if="isCirclesEnabled">
|
|
|
|
<!-- Toggle groups ellipsis -->
|
|
|
|
<AppNavigationItem
|
|
|
|
v-if="groupsMenu.length > ELLIPSIS_COUNT"
|
|
|
|
:title="collapseGroupsTitle"
|
|
|
|
class="app-navigation__collapse"
|
|
|
|
icon=""
|
|
|
|
@click="onToggleGroups" />
|
|
|
|
|
|
|
|
<!-- New circle button caption and modal -->
|
|
|
|
<AppNavigationCaption
|
|
|
|
id="newcircle"
|
|
|
|
:title="t('contacts', 'Circles')"
|
|
|
|
@click.prevent.stop="toggleNewCircleModal">
|
|
|
|
<template slot="actions">
|
|
|
|
<ActionButton icon="icon-add" @click="toggleNewCircleModal">
|
|
|
|
{{ t('contacts', 'Create a new circle') }}
|
|
|
|
</ActionButton>
|
|
|
|
</template>
|
|
|
|
</AppNavigationCaption>
|
|
|
|
<NewCircleIntro v-if="isNewCircleModalOpen"
|
|
|
|
:loading="createCircleLoading"
|
|
|
|
@close="closeNewCircleIntro"
|
|
|
|
@submit="createNewCircle" />
|
|
|
|
|
2021-06-04 06:22:25 +00:00
|
|
|
<template v-if="circlesMenu.length > 0">
|
|
|
|
<!-- Circles -->
|
|
|
|
<CircleNavigationItem
|
|
|
|
v-for="circle in ellipsisCirclesMenu"
|
|
|
|
:key="circle.key"
|
|
|
|
:circle="circle" />
|
|
|
|
|
|
|
|
<!-- Toggle circles ellipsis -->
|
|
|
|
<AppNavigationItem
|
|
|
|
v-if="circlesMenu.length > ELLIPSIS_COUNT"
|
|
|
|
:title="collapseCirclesTitle"
|
|
|
|
class="app-navigation__collapse"
|
|
|
|
icon=""
|
|
|
|
@click="onToggleCircles" />
|
|
|
|
</template>
|
2021-06-01 06:38:06 +00:00
|
|
|
|
2021-06-04 06:22:25 +00:00
|
|
|
<p v-else-if="!loading"
|
|
|
|
class="app-navigation__circle-desc">
|
|
|
|
{{ CIRCLE_DESC }}
|
|
|
|
</p>
|
2021-06-01 06:38:06 +00:00
|
|
|
</template>
|
2021-02-26 12:09:23 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- settings -->
|
|
|
|
<template #footer>
|
2022-07-21 13:00:51 +00:00
|
|
|
<AppNavigationSettings v-if="!loading" :title="appNavigationSettingsTitle">
|
2021-02-26 12:09:23 +00:00
|
|
|
<SettingsSection />
|
|
|
|
</AppNavigationSettings>
|
|
|
|
</template>
|
|
|
|
</AppNavigation>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2021-06-04 06:22:25 +00:00
|
|
|
import { GROUP_ALL_CONTACTS, GROUP_NO_GROUP_CONTACTS, GROUP_RECENTLY_CONTACTED, ELLIPSIS_COUNT, CIRCLE_DESC } from '../../models/constants.ts'
|
2021-02-26 12:09:23 +00:00
|
|
|
|
2021-05-06 14:45:20 +00:00
|
|
|
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'
|
2021-02-26 12:09:23 +00:00
|
|
|
import ActionInput from '@nextcloud/vue/dist/Components/ActionInput'
|
|
|
|
import ActionText from '@nextcloud/vue/dist/Components/ActionText'
|
|
|
|
import AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation'
|
|
|
|
import AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter'
|
|
|
|
import AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem'
|
|
|
|
import AppNavigationSettings from '@nextcloud/vue/dist/Components/AppNavigationSettings'
|
2021-04-27 17:38:41 +00:00
|
|
|
import AppNavigationCaption from '@nextcloud/vue/dist/Components/AppNavigationCaption'
|
2021-02-26 12:09:23 +00:00
|
|
|
|
|
|
|
import naturalCompare from 'string-natural-compare'
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
import CircleNavigationItem from './CircleNavigationItem'
|
|
|
|
import GroupNavigationItem from './GroupNavigationItem'
|
2021-05-06 14:45:20 +00:00
|
|
|
import NewCircleIntro from '../EntityPicker/NewCircleIntro'
|
2021-02-26 12:09:23 +00:00
|
|
|
import SettingsSection from './SettingsSection'
|
2021-06-01 06:38:06 +00:00
|
|
|
|
|
|
|
import isCirclesEnabled from '../../services/isCirclesEnabled'
|
2021-02-26 12:09:23 +00:00
|
|
|
import isContactsInteractionEnabled from '../../services/isContactsInteractionEnabled'
|
2022-06-28 13:05:13 +00:00
|
|
|
import IconContact from 'vue-material-design-icons/AccountMultiple'
|
|
|
|
import IconUser from 'vue-material-design-icons/Account'
|
|
|
|
import IconRecentlyContacted from '../Icons/IconRecentlyContacted'
|
2021-06-01 06:38:06 +00:00
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
import RouterMixin from '../../mixins/RouterMixin'
|
2021-06-07 13:56:55 +00:00
|
|
|
import { showError } from '@nextcloud/dialogs'
|
2021-02-26 12:09:23 +00:00
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'RootNavigation',
|
|
|
|
|
|
|
|
components: {
|
2021-05-06 14:45:20 +00:00
|
|
|
ActionButton,
|
2021-02-26 12:09:23 +00:00
|
|
|
ActionInput,
|
|
|
|
ActionText,
|
|
|
|
AppNavigation,
|
|
|
|
AppNavigationCounter,
|
|
|
|
AppNavigationItem,
|
|
|
|
AppNavigationSettings,
|
2021-04-27 17:38:41 +00:00
|
|
|
AppNavigationCaption,
|
2021-02-26 14:37:35 +00:00
|
|
|
CircleNavigationItem,
|
|
|
|
GroupNavigationItem,
|
2022-06-28 13:05:13 +00:00
|
|
|
IconContact,
|
|
|
|
IconUser,
|
|
|
|
IconRecentlyContacted,
|
2021-05-06 14:45:20 +00:00
|
|
|
NewCircleIntro,
|
2021-02-26 12:09:23 +00:00
|
|
|
SettingsSection,
|
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
mixins: [RouterMixin],
|
|
|
|
|
2021-02-26 12:09:23 +00:00
|
|
|
props: {
|
|
|
|
loading: {
|
|
|
|
type: Boolean,
|
|
|
|
default: true,
|
|
|
|
},
|
|
|
|
|
|
|
|
contactsList: {
|
|
|
|
type: Array,
|
|
|
|
required: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
data() {
|
|
|
|
return {
|
2021-06-04 06:22:25 +00:00
|
|
|
CIRCLE_DESC,
|
2021-02-26 14:37:35 +00:00
|
|
|
ELLIPSIS_COUNT,
|
2021-02-26 12:09:23 +00:00
|
|
|
GROUP_ALL_CONTACTS,
|
|
|
|
GROUP_NO_GROUP_CONTACTS,
|
|
|
|
GROUP_RECENTLY_CONTACTED,
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// create group
|
2021-02-26 12:09:23 +00:00
|
|
|
isNewGroupMenuOpen: false,
|
|
|
|
createGroupError: null,
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// create circle
|
2021-05-06 14:45:20 +00:00
|
|
|
isNewCircleModalOpen: false,
|
|
|
|
createCircleLoading: false,
|
2021-02-26 14:37:35 +00:00
|
|
|
createCircleError: null,
|
|
|
|
|
2021-06-01 06:38:06 +00:00
|
|
|
isCirclesEnabled,
|
2021-02-26 12:09:23 +00:00
|
|
|
isContactsInteractionEnabled,
|
2021-02-26 14:37:35 +00:00
|
|
|
|
|
|
|
collapsedGroups: true,
|
|
|
|
collapsedCircles: true,
|
2021-02-26 12:09:23 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
computed: {
|
2022-07-21 13:00:51 +00:00
|
|
|
appNavigationSettingsTitle() {
|
|
|
|
return t('contacts', 'Contacts settings')
|
|
|
|
},
|
2021-02-26 14:37:35 +00:00
|
|
|
// store variables
|
|
|
|
circles() {
|
|
|
|
return this.$store.getters.getCircles
|
|
|
|
},
|
2021-02-26 12:09:23 +00:00
|
|
|
contacts() {
|
|
|
|
return this.$store.getters.getContacts
|
|
|
|
},
|
|
|
|
groups() {
|
|
|
|
return this.$store.getters.getGroups
|
|
|
|
},
|
|
|
|
sortedContacts() {
|
|
|
|
return this.$store.getters.getSortedContacts
|
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// list all the contacts that doesn't have a group
|
2021-02-26 12:09:23 +00:00
|
|
|
ungroupedContacts() {
|
|
|
|
return this.sortedContacts.filter(contact => this.contacts[contact.key].groups && this.contacts[contact.key].groups.length === 0)
|
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// generate groups menu from the groups store
|
2021-02-26 12:09:23 +00:00
|
|
|
groupsMenu() {
|
|
|
|
const menu = this.groups.map(group => {
|
2021-02-26 14:37:35 +00:00
|
|
|
return Object.assign({}, group, {
|
2021-02-26 12:09:23 +00:00
|
|
|
id: group.name.replace(' ', '_'),
|
|
|
|
key: group.name.replace(' ', '_'),
|
|
|
|
router: {
|
|
|
|
name: 'group',
|
|
|
|
params: { selectedGroup: group.name },
|
|
|
|
},
|
|
|
|
toString: () => group.name,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
menu.sort((a, b) => naturalCompare(a.toString(), b.toString(), { caseInsensitive: true }))
|
|
|
|
|
|
|
|
// Find the Recently Contacted group, delete it from array
|
|
|
|
const recentlyIndex = menu.findIndex(group => group.name === GROUP_RECENTLY_CONTACTED)
|
|
|
|
if (recentlyIndex >= 0) {
|
|
|
|
menu.splice(recentlyIndex, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
return menu
|
|
|
|
},
|
2021-02-26 14:37:35 +00:00
|
|
|
ellipsisGroupsMenu() {
|
2021-06-01 06:38:06 +00:00
|
|
|
// If circles is not enabled, we show everything
|
|
|
|
if (this.isCirclesEnabled && this.collapsedGroups) {
|
2021-02-26 14:37:35 +00:00
|
|
|
return this.groupsMenu.slice(0, ELLIPSIS_COUNT)
|
|
|
|
}
|
|
|
|
return this.groupsMenu
|
2021-02-26 12:09:23 +00:00
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// generate circles menu from the circles store
|
|
|
|
circlesMenu() {
|
2021-06-01 06:38:06 +00:00
|
|
|
const menu = this.circles || []
|
2021-02-26 14:37:35 +00:00
|
|
|
menu.sort((a, b) => naturalCompare(a.toString(), b.toString(), { caseInsensitive: true }))
|
2021-02-26 12:09:23 +00:00
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
return menu
|
|
|
|
},
|
|
|
|
ellipsisCirclesMenu() {
|
|
|
|
if (this.collapsedCircles) {
|
|
|
|
return this.circlesMenu.slice(0, ELLIPSIS_COUNT)
|
|
|
|
}
|
|
|
|
return this.circlesMenu
|
2021-02-26 12:09:23 +00:00
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// Recently contacted data
|
|
|
|
recentlyContactedContacts() {
|
|
|
|
return this.groups.find(group => group.name === GROUP_RECENTLY_CONTACTED)
|
2021-02-26 12:09:23 +00:00
|
|
|
},
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// Titles for the ellipsis toggle buttons
|
|
|
|
collapseGroupsTitle() {
|
|
|
|
return this.collapsedGroups
|
|
|
|
? t('contacts', 'Show all groups')
|
|
|
|
: t('contacts', 'Collapse groups')
|
|
|
|
},
|
|
|
|
collapseCirclesTitle() {
|
|
|
|
return this.collapsedCircles
|
|
|
|
? t('contacts', 'Show all circles')
|
|
|
|
: t('contacts', 'Collapse circles')
|
2021-02-26 12:09:23 +00:00
|
|
|
},
|
2021-02-26 14:37:35 +00:00
|
|
|
},
|
2021-02-26 12:09:23 +00:00
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
methods: {
|
2021-02-26 12:09:23 +00:00
|
|
|
toggleNewGroupMenu() {
|
|
|
|
this.isNewGroupMenuOpen = !this.isNewGroupMenuOpen
|
|
|
|
},
|
|
|
|
createNewGroup(e) {
|
|
|
|
const input = e.target.querySelector('input[type=text]')
|
|
|
|
const groupName = input.value.trim()
|
2021-06-04 10:19:55 +00:00
|
|
|
this.logger.debug('Creating new group', { groupName })
|
2021-02-26 12:09:23 +00:00
|
|
|
|
|
|
|
// Check if already exists
|
|
|
|
if (this.groups.find(group => group.name === groupName)) {
|
|
|
|
this.createGroupError = t('contacts', 'This group already exists')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
this.createGroupError = null
|
|
|
|
|
2021-06-04 10:19:55 +00:00
|
|
|
this.logger.debug('Created new local group', { groupName })
|
2021-02-26 12:09:23 +00:00
|
|
|
this.$store.dispatch('addGroup', groupName)
|
|
|
|
this.isNewGroupMenuOpen = false
|
|
|
|
|
|
|
|
// Select group
|
|
|
|
this.$router.push({
|
|
|
|
name: 'group',
|
|
|
|
params: {
|
|
|
|
selectedGroup: groupName,
|
|
|
|
},
|
|
|
|
})
|
|
|
|
},
|
2021-02-26 14:37:35 +00:00
|
|
|
|
|
|
|
// Ellipsis item toggles
|
|
|
|
onToggleGroups() {
|
|
|
|
this.collapsedGroups = !this.collapsedGroups
|
|
|
|
},
|
|
|
|
onToggleCircles() {
|
|
|
|
this.collapsedCircles = !this.collapsedCircles
|
|
|
|
},
|
|
|
|
|
2021-05-06 14:45:20 +00:00
|
|
|
toggleNewCircleModal() {
|
|
|
|
this.isNewCircleModalOpen = true
|
2021-02-26 14:37:35 +00:00
|
|
|
},
|
2021-05-06 14:45:20 +00:00
|
|
|
async createNewCircle(circleName, isPersonal, isLocal) {
|
2021-06-04 10:19:55 +00:00
|
|
|
this.logger.debug('Creating new circle', { circleName })
|
2021-02-26 14:37:35 +00:00
|
|
|
|
2021-05-06 14:45:20 +00:00
|
|
|
this.createCircleLoading = true
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
// Check if already exists
|
|
|
|
if (this.circles.find(circle => circle.name === circleName)) {
|
2021-06-07 13:56:55 +00:00
|
|
|
this.createCircleError = t('contacts', 'This circle already exists')
|
2021-02-26 14:37:35 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
this.createCircleError = null
|
|
|
|
|
2021-06-07 13:56:55 +00:00
|
|
|
try {
|
|
|
|
const circle = await this.$store.dispatch('createCircle', { circleName, isPersonal, isLocal })
|
|
|
|
this.closeNewCircleIntro()
|
2021-02-26 14:37:35 +00:00
|
|
|
|
2021-06-07 13:56:55 +00:00
|
|
|
// Select group
|
|
|
|
this.$router.push({
|
|
|
|
name: 'circle',
|
|
|
|
params: {
|
|
|
|
selectedCircle: circle.id,
|
|
|
|
},
|
|
|
|
})
|
|
|
|
} catch (error) {
|
|
|
|
showError(t('contacts', 'An error happened during the creation of the circle'))
|
|
|
|
} finally {
|
|
|
|
this.createCircleLoading = false
|
|
|
|
}
|
2021-02-26 14:37:35 +00:00
|
|
|
},
|
2021-05-06 14:45:20 +00:00
|
|
|
closeNewCircleIntro() {
|
|
|
|
this.isNewCircleModalOpen = false
|
|
|
|
},
|
2021-02-26 12:09:23 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
</script>
|
2021-02-26 14:37:35 +00:00
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
2021-06-04 06:22:25 +00:00
|
|
|
$caption-padding: 22px;
|
|
|
|
|
2021-02-26 14:37:35 +00:00
|
|
|
#newgroup,
|
|
|
|
#newcircle {
|
2021-06-04 06:22:25 +00:00
|
|
|
margin-top: $caption-padding;
|
2021-02-26 14:37:35 +00:00
|
|
|
|
2021-03-15 10:48:15 +00:00
|
|
|
::v-deep a {
|
2021-02-26 14:37:35 +00:00
|
|
|
color: var(--color-text-maxcontrast)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-04 06:22:25 +00:00
|
|
|
.app-navigation__circle-desc {
|
|
|
|
margin: 0 $caption-padding;
|
|
|
|
}
|
|
|
|
|
2021-03-15 10:48:15 +00:00
|
|
|
.app-navigation__collapse ::v-deep a {
|
2021-02-26 14:37:35 +00:00
|
|
|
color: var(--color-text-maxcontrast)
|
|
|
|
}
|
2021-05-06 14:45:20 +00:00
|
|
|
|
|
|
|
// Change icon opacity for a better soothing visual
|
|
|
|
.app-navigation-entry ::v-deep {
|
2022-06-28 13:05:13 +00:00
|
|
|
.app-navigation-entry-icon {
|
|
|
|
opacity: .6 !important;
|
2021-05-06 14:45:20 +00:00
|
|
|
}
|
|
|
|
}
|
2021-02-26 14:37:35 +00:00
|
|
|
</style>
|