Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
2abb6f2
Mkaing the studionavigationtab
Prashant-thakur77 Dec 21, 2025
332f96e
Updated
Prashant-thakur77 Dec 21, 2025
64fb494
Updated
Prashant-thakur77 Dec 21, 2025
3e21994
Updated
Prashant-thakur77 Dec 21, 2025
fe6b5a5
Updated
Prashant-thakur77 Dec 21, 2025
95e347c
Updated
Prashant-thakur77 Dec 21, 2025
039bafd
Update
Prashant-thakur77 Dec 23, 2025
c05b5d5
Update
Prashant-thakur77 Dec 23, 2025
33cbd12
Update styles
Prashant-thakur77 Dec 23, 2025
f96fe29
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
d015f98
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
e2fc8b7
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
39382af
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
74e36a1
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
6d970af
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
83c4e43
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
66901e4
Updated styles
Prashant-thakur77 Dec 26, 2025
0f3ad7d
Updated
Prashant-thakur77 Dec 27, 2025
9481e85
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
a089ca2
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
02e1533
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
45ad89c
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
0594368
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
1fb8da3
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
0487e5b
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
50a4c88
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
ea26a4a
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
1c725fe
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
b6f66d9
Added scrollable funcality to tabs
Prashant-thakur77 Jan 14, 2026
940616f
Updated the link design
Prashant-thakur77 Jan 14, 2026
83597ba
Updated the link design
Prashant-thakur77 Jan 14, 2026
ca2c542
Updated the link design
Prashant-thakur77 Jan 14, 2026
bdea792
Updated the link design
Prashant-thakur77 Jan 14, 2026
de37099
Updated the link design
Prashant-thakur77 Jan 14, 2026
78199de
Updated the link design
Prashant-thakur77 Jan 14, 2026
c14f13c
Updated the title styles
Prashant-thakur77 Jan 14, 2026
2e7f760
Updated the title styles
Prashant-thakur77 Jan 14, 2026
80c1d26
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
3a343f1
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
41864af
Updated class anmes
Prashant-thakur77 Jan 14, 2026
c400059
Updated the tabs container
Prashant-thakur77 Jan 15, 2026
20ed8e3
Sliding approach
Prashant-thakur77 Jan 15, 2026
0502efe
Sliding approach
Prashant-thakur77 Jan 15, 2026
1d9a554
old approach after review
Prashant-thakur77 Jan 15, 2026
3d241d0
updated code for tabs
Prashant-thakur77 Jan 15, 2026
f4881c9
Updated menu styles
Prashant-thakur77 Jan 16, 2026
ee542ac
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
a4d8b80
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
2553d76
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
49e59d3
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
195d8ff
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
9e1c1e8
Updated styles
Prashant-thakur77 Jan 16, 2026
1be5f92
Updated the skipnavigationlink functionality
Prashant-thakur77 Jan 16, 2026
9238a73
Removed the padding added to the sie panle modal and rather added tha…
Prashant-thakur77 Jan 16, 2026
57fa951
updatedstyles
Prashant-thakur77 Jan 16, 2026
985197b
updatedstyles
Prashant-thakur77 Jan 16, 2026
c1b90ce
Updated Catalogfiltercontent to handle padding wihout sidepanelmodal
Prashant-thakur77 Jan 16, 2026
2dcfbfd
Updated boolean
Prashant-thakur77 Jan 16, 2026
3fd9b26
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
7e3f19c
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
928bcd0
finalising
Prashant-thakur77 Jan 16, 2026
a6d06eb
Test file updated
Prashant-thakur77 Jan 16, 2026
fc0c00b
Test file created
Prashant-thakur77 Jan 17, 2026
dba9daf
Updated test files
Prashant-thakur77 Jan 17, 2026
2a18e34
Updated strings
Prashant-thakur77 Jan 17, 2026
646166a
Test files
Prashant-thakur77 Jan 17, 2026
210d42e
Final updates
Prashant-thakur77 Jan 17, 2026
10324f4
Final updates
Prashant-thakur77 Jan 17, 2026
075e74b
Final updates
Prashant-thakur77 Jan 17, 2026
4387da5
Updated class names
Prashant-thakur77 Jan 18, 2026
20e51cd
precommit
Prashant-thakur77 Jan 18, 2026
b64a0ec
Added aria-label to the nav
Prashant-thakur77 Jan 20, 2026
acf13d8
Updated
Prashant-thakur77 Jan 23, 2026
70fa8fb
updated
Prashant-thakur77 Jan 23, 2026
174b5a1
resolving review
Prashant-thakur77 Feb 2, 2026
d7b4bf0
used ktexttruncaotr
Prashant-thakur77 Feb 4, 2026
a0607c6
aligned the ktexttruncator with ktoolbar
Prashant-thakur77 Feb 4, 2026
b1e40b2
removed aria-live
Prashant-thakur77 Feb 4, 2026
e6dcc2b
updated
Prashant-thakur77 Feb 4, 2026
ba8ba95
don
Prashant-thakur77 Feb 9, 2026
6d22ebc
decresd offsst
Prashant-thakur77 Feb 9, 2026
2e5131d
updated
Prashant-thakur77 Feb 9, 2026
50ff191
vreated a diff file to sidepanel to manage codebas
Prashant-thakur77 Feb 9, 2026
416a5d6
UPdated with reviews
Prashant-thakur77 Feb 9, 2026
1c13025
Removed magic stirngs
Prashant-thakur77 Feb 9, 2026
1ea547a
done
Prashant-thakur77 Feb 9, 2026
bbae166
Made updates
Prashant-thakur77 Feb 9, 2026
9dac0b0
Made updates
Prashant-thakur77 Feb 9, 2026
62b9618
Made updates
Prashant-thakur77 Feb 9, 2026
a07b69a
Made updates
Prashant-thakur77 Feb 9, 2026
bdd6012
Made updates
Prashant-thakur77 Feb 9, 2026
583ba3c
corrected test suits
Prashant-thakur77 Feb 9, 2026
3c8c499
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Feb 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</template>

<template #default>
<div>
<div style="padding: 24px 32px 16px">
<KRadioButtonGroup>
<KRadioButton
:label="modeLive$()"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -632,6 +632,7 @@
display: flex;
flex-direction: column;
gap: 16px;
padding: 24px 32px 16px;
margin-top: -24px;
line-height: 140%;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
alignment="left"
@closePanel="closeSidePanel"
>
<CatalogFilterPanelContent />
<CatalogFilterPanelContent :style="{ padding: '24px 32px 16px' }" />
</SidePanelModal>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,47 +27,21 @@
{{ isFAQPage ? $tr('frequentlyAskedQuestions') : $tr('libraryTitle') }}
</VToolbarTitle>
</VToolbar>
<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>

<StudioNavigation
v-else
:tabs="navigationTabs"
/>

<VContent>
<StudioOfflineAlert
v-if="!isCatalogPage"
:offset="toolbarHeight"
/>
<VContainer
id="main"
role="main"
tabindex="-1"
fluid
class="main-container pa-0"
:style="`height: calc(100vh - ${contentOffset}px); margin-top: ${offline ? 48 : 0}px;`"
Expand Down Expand Up @@ -137,7 +111,7 @@
import { ChannelListTypes } from 'shared/constants';
import { constantsTranslationMixin, routerMixin } from 'shared/mixins';
import GlobalSnackbar from 'shared/views/GlobalSnackbar';
import AppBar from 'shared/views/AppBar';
import StudioNavigation from 'shared/views/StudioNavigation/StudioNavigation.vue';
import StudioOfflineAlert from 'shared/views/StudioOfflineAlert.vue';
import PolicyModals from 'shared/views/policies/PolicyModals';

Expand All @@ -159,7 +133,7 @@
export default {
name: 'ChannelListIndex',
components: {
AppBar,
StudioNavigation,
ChannelInvitation,
ChannelListAppError,
GlobalSnackbar,
Expand All @@ -174,6 +148,41 @@
}),
...mapGetters(['loggedIn']),
...mapGetters('channelList', ['invitations']),

navigationTabs() {
if (!this.loggedIn) return [];

const tabs = [];

this.lists.forEach(listType => {
tabs.push({
id: listType,
label: this.translateConstant(listType),
to: this.getChannelLink(listType),
badgeValue: this.invitationsByListCounts[listType] || 0,
analyticsLabel: ListTypeToAnalyticsLabel[listType],
});
});

tabs.push({
id: 'catalog',
label: this.$tr('catalog'),
to: this.catalogLink,
badgeValue: 0,
analyticsLabel: ChannelListTypes.PUBLIC,
});

tabs.push({
id: CHANNEL_SETS,
label: this.$tr('channelSets'),
to: this.channelSetLink,
badgeValue: 0,
analyticsLabel: CHANNEL_SETS,
});

return tabs;
},

fullPageError() {
return this.$store.state.errors.fullPageError;
},
Expand Down Expand Up @@ -227,12 +236,6 @@
homeLink() {
return this.libraryMode ? window.Urls.base() : window.Urls.channels();
},
publicTabClick() {
return this.trackTabClick.bind(this, ChannelListTypes.PUBLIC);
},
channelSetsTabClick() {
return this.trackTabClick.bind(this, CHANNEL_SETS);
},
},
watch: {
$route(route) {
Expand Down Expand Up @@ -289,9 +292,6 @@
this.updateTabTitle(title);
}
},
trackTabClick(list) {
this.$analytics.trackClick('channel_list', ListTypeToAnalyticsLabel[list]);
},
},
$trs: {
channelSets: 'Collections',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<div
class="header-content"
:style="{
flexDirection: closeButtonIconType === 'close' ? 'row' : 'row-reverse',
flexDirection: headerFlexDirection,
}"
>
<div style="overflow: hidden">
Expand Down Expand Up @@ -104,6 +104,13 @@
return ['close', 'back'].includes(value);
},
},
closeButtonPosition: {
type: String,
required: false,
default: null,
validator: value => ['left', 'right'].includes(value),
},

/* Optionally override the default width of the side panel with valid CSS value */
sidePanelWidth: {
type: String,
Expand All @@ -118,6 +125,11 @@
return ['right', 'left'].includes(value);
},
},
fixedWidth: {
type: Boolean,
required: false,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MisRob This prop is added here to deal with the full width functionality of sidepanelmodel

default: false,
},
ariaLabel: {
type: String,
required: false,
Expand Down Expand Up @@ -151,7 +163,15 @@
[this.rtlAlignment]: 0,
};
},
headerFlexDirection() {
if (this.closeButtonPosition === 'left') return 'row-reverse';
if (this.closeButtonPosition === 'right') return 'row';
return this.closeButtonIconType === 'close' ? 'row' : 'row-reverse';
},
responsiveWidth() {
if (this.fixedWidth) {
return this.sidePanelWidth;
}
return this.isMobile ? '100vw' : this.sidePanelWidth;
},
/** Styling Properties */
Expand Down Expand Up @@ -253,7 +273,6 @@

.side-panel-content {
flex-grow: 1;
padding: 24px 32px 16px;
overflow-x: hidden;
overflow-y: auto;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<template>

<div class="skip-nav-link">
<KButton
ref="button"
:style="linkStyles"
appearance="basic-link"
:text="$tr('skipToMainContentAction')"
@click="handleClickSkipLink"
/>
</div>

</template>


<script>

export default {
name: 'SkipNavigationLink',
computed: {
linkStyles() {
return {
backgroundColor: this.$themeTokens.surface + ' !important',
};
},
},
methods: {
handleClickSkipLink() {
// Every page where this is supposed to work needs to have a top-level
// element with 'role' and 'id' attribute equal to 'main' and 'tabindex= -1'.
// If it doesn't have one, clicking this link is a noop, but will re-focus itself
// as a convenience (in case main div is still loading).
const mainEl = document.getElementById('main');
if (mainEl) {
// If it exists, actually target and focus on the main header
const header = mainEl.querySelector('h1');
if (header) {
// HACK: Need to set its tabindex attribute on the fly to get tab behavior
header.setAttribute('tabindex', -1);
header.focus();
} else {
mainEl.focus();
}
} else {
// NOTE: the button retains focus, but loses :focus styling after hitting "Enter"
// TODO: look into theme input modality to see if we can get consistent
// styling when in keyboard modality
this.$refs.button.$el.focus();
}
},
},
$trs: {
skipToMainContentAction: {
message: 'Skip to main content',
context:
'Button label for the hamburger menu in the top left corner. Accessible only to those who use screen readers and other assistive technology (AT).',
},
},
};

</script>


<style lang="scss" scoped>

@import '~kolibri-design-system/lib/styles/definitions';

.skip-nav-link {
position: relative;
z-index: 2;
}

.skip-nav-link a {
@extend %dropshadow-2dp;

position: absolute;
left: -1000px;
padding: 8px 16px;
font-size: 14px;
outline-offset: 0 !important;

&:focus {
top: 8px;
left: 8px;
z-index: 2;
}
}

</style>
Loading
Loading