
馃檪 Looking for an issue? Welcome! This issue is open for contribution. If this is the first time you鈥檙e requesting an issue, please:
- Read Contributing guidelines carefully. Pay extra attention to Using generative AI. Pull requests and comments that don鈥檛 follow the guidelines won鈥檛 be answered.
- Confirm that you鈥檝e read the guidelines in your comment.

Sub-issue of #5060.
Complexity: High
Summary
Remove Vuetify from the main navigation (top bar + user menu + side panel) in Channels:
Currently, AppBar that is built with several Vuetify components is used:
|
<AppBar v-else> |
|
<template |
|
v-if="loggedIn" |
|
#tabs |
|
> |
|
<VTab |
|
v-for="listType in lists" |
|
:key="listType.id" |
|
:to="getChannelLink(listType)" |
|
@click="trackTabClick(listType)" |
|
> |
|
<VBadge |
|
:value="invitationsByListCounts[listType]" |
|
color="black" |
|
> |
|
<template #badge> |
|
<span>{{ $formatNumber(invitationsByListCounts[listType]) }}</span> |
|
</template> |
|
<span>{{ translateConstant(listType) }}</span> |
|
</VBadge> |
|
</VTab> |
|
<VTab |
|
:to="catalogLink" |
|
@click="publicTabClick" |
|
> |
|
{{ $tr('catalog') }} |
|
</VTab> |
|
<VTab |
|
:to="channelSetLink" |
|
@click="channelSetsTabClick" |
|
> |
|
{{ $tr('channelSets') }} |
|
</VTab> |
|
</template> |
|
</AppBar> |
To remove these Vuetify dependencies:
- Build new components
frontend/shared/views/StudioNavigation.vue and frontend/shared/views/StudioNavigationTab.vue without Vuetify.
- For side panel, utilize existing
SidePanelModal
- Remove
VBadge in favor of a custom implementation.
There should be no changes in before / after user experience - examine AppBar and its sub-components for details of what features need to be re-implemented. (update Jan 15 by MisRob: there will be some changes - see Expected UI/UX changes)
Don't refactor AppBar, MainNavigationDrawer, other sub-components of AppBar, or any other areas of the codebase (StudioNavigation will be introduced to other plugins in the scope of upcoming issues).
How to get there
- Login as
a@a.com with password a
- Go to Channels
Guidance
- Read the project this issue is part of
- KDS components that will be handy:
KToolbar, KDropdownMenu, KButton, KRouterLink, KExternalLink, and possibly others
- Note that KDS
KTabs... components are not suitable for use as it's a different a11y pattern than the main navigation, e.g. keyboard navigation differs
- Use
shared/views/SidePanelModal for the side navigation - it contains backdrop as well as all important a11y patterns
- Kolibri has a very similar main navigation - there will likely be plenty of useful code, or can serve as reference
/kolibri/packages/kolibri/components/pages/AppBarPage/internal/AppBar.vue
- Also would be nice to have skip navigation-like functionality (
kolibri/packages/kolibri/components/SkipNavigationLink.vue)
Out of Scope
- Do not refactor
AppBar, MainNavigationDrawer, and other sub-components of AppBar
- Do not use the new
StudioNavigation in other plugins, such as Settings or Admin.
- Do not refactor any other areas of the codebase
Expected UI/UX changes
- Minor visual differences naturally stemming from the use of KDS
- Update Jan 15 by MisRob: we won't reproduce everything (e.g. animations, ripple effect, and more..) from the current implementation in favor of using the same experience as in Kolibri - consistency is preferred by designers, and also Kolibri's navigation pattern is agreed and robustly tested for ux, a11y, ...)
- Update Jan 15 by MisRob: Also experience on smaller screens will be different - we'll use dropdown as in Kolibri (where we intentionally moved away from scrolling):
Acceptance criteria
General
a11y and i18n
See the project's "Guidance" for useful references.
Unit tests
馃檪 Looking for an issue? Welcome! This issue is open for contribution. If this is the first time you鈥檙e requesting an issue, please:
Sub-issue of #5060.
Complexity: High
Summary
Remove Vuetify from the main navigation (top bar + user menu + side panel) in Channels:
Currently,
AppBarthat is built with several Vuetify components is used:studio/contentcuration/contentcuration/frontend/channelList/views/ChannelListIndex.vue
Lines 30 to 64 in 0b06a91
To remove these Vuetify dependencies:
frontend/shared/views/StudioNavigation.vueandfrontend/shared/views/StudioNavigationTab.vuewithout Vuetify.SidePanelModalVBadgein favor of a custom implementation.There should be no changes in before / after user experience - examine(update Jan 15 by MisRob: there will be some changes - see Expected UI/UX changes)AppBarand its sub-components for details of what features need to be re-implemented.Don't refactor
AppBar,MainNavigationDrawer, other sub-components ofAppBar, or any other areas of the codebase (StudioNavigationwill be introduced to other plugins in the scope of upcoming issues).How to get there
a@a.comwith passwordaGuidance
KToolbar,KDropdownMenu,KButton,KRouterLink,KExternalLink, and possibly othersKTabs...components are not suitable for use as it's a different a11y pattern than the main navigation, e.g. keyboard navigation differsshared/views/SidePanelModalfor the side navigation - it contains backdrop as well as all important a11y patterns/kolibri/packages/kolibri/components/pages/AppBarPage/internal/AppBar.vuekolibri/packages/kolibri/components/SkipNavigationLink.vue)Out of Scope
AppBar,MainNavigationDrawer, and other sub-components ofAppBarStudioNavigationin other plugins, such as Settings or Admin.Expected UI/UX changes
Acceptance criteria
General
a11y and i18n
See the project's "Guidance" for useful references.
pnpm run devserversince:hotdoesn't render RTL properly)notranslateclass been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. user-generated text)Unit tests
@vue/test-utilsapproach. Instead, use@testing-library/vue(Vue Testing Library).