[Remove Vuetify from Studio] Buttons, dropdowns, and dialog in channel editor root page #5668
[Remove Vuetify from Studio] Buttons, dropdowns, and dialog in channel editor root page #5668vtushar06 wants to merge 3 commits intolearningequality:unstablefrom
Conversation
|
👋 Thanks for contributing! We will assign a reviewer within the next two weeks. In the meantime, please ensure that:
We'll be in touch! 😊 |
|
hi @MisRob, On small screens, the Edit channel option goes into the three-dots menu. The original code showed a red error icon when the channel has no language set. Since KDropdownMenu only accepts strings for option labels, I am thinking to use an emoji instead: let label = this.$tr('editChannel');
if (!this.currentChannel.language) {
label = `${label} ⚠️`;
}Is this okay, or would you prefer something like "Edit channel (incomplete)"? |
|
one more thing I wanted to ask about original code had some duplication where users could access the same thing from both the Share dropdown and three-dots menu:
|
There was a problem hiding this comment.
Pull request overview
This PR migrates the channel editor toolbar from Vuetify to KDS (Kolibri Design System) components as part of the larger effort to remove Vuetify from Studio. The changes replace VTooltip, VBtn, VList, and BaseMenu with their KDS equivalents (KTooltip, KButton, KIconButton, and KDropdownMenu).
Changes:
- Replaced Vuetify tooltips, buttons, and dropdown menus with KDS components
- Refactored menu logic into computed properties (
shareMenuOptions,channelMenuOptions) and handler methods (handleShareMenuSelect,handleChannelMenuSelect) - Updated tests to verify computed properties instead of DOM manipulation
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| contentcuration/contentcuration/frontend/channelEdit/views/TreeView/TreeViewBase.vue | Migrated toolbar buttons, dropdowns, and tooltips from Vuetify to KDS components; added computed properties for menu options and handler methods for menu selections |
| contentcuration/contentcuration/frontend/channelEdit/views/TreeView/tests/TreeViewBase.spec.js | Updated tests to check computed properties directly instead of testing DOM elements; removed obsolete component stubs for BaseMenu and MessageDialog |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
contentcuration/contentcuration/frontend/channelEdit/views/TreeView/TreeViewBase.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelEdit/views/TreeView/TreeViewBase.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/channelEdit/views/TreeView/TreeViewBase.vue
Show resolved
Hide resolved
|
Hi @vtushar06,
Emoji sounds creative ;)!
Yes, as you mentioned, let's keep the options exactly the same now. I am not sure what was the original decision, it may be intentional - and not exactly in scope of this project. |
...tcuration/contentcuration/frontend/channelEdit/views/TreeView/__tests__/TreeViewBase.spec.js
Show resolved
Hide resolved
|
Before we assign a maintainer, I will first try inviting the community review ;) 📢 ✨ Community Review guidance for both authors and reviewers. |
|
Hii @MisRob! Thank you,
...
I suggest keeping the emoji approach because the warning appears after the text, which is more natural for an indicator |
|
Hey @vtushar06 ! I am still learning testing , I see the tests now check the computed properties directly |
|
hey @abhiraj75, In our codebase, we're still migrating from old test patterns. The TreeViewBase tests use wrapper.vm computed properties, which is what was approved as not in this PR scope. But best practice going forward is to test user-observable behavior (what appears on screen) rather than internal handler calls. |
|
Thanks @vtushar06 ! |
|
Hi @vtushar06
Thanks for following-up, appreciated! And meanwhile similar issues showed up in other places. I'm now coordinating a decision on how to proceed. Will let you know soon. |
|
@vtushar06 we will update KDS to allow for easier dropdown item customization. Tracking here learningequality/kolibri-design-system#1200. As soon as it's done I will install the new KDS version in Studio, and then you can use it :) In any case, thanks for raising that and also thinking through options. I prefer KDS update because it will be useful in more places and in general, and will allow us to use KDS icons as usual. |
|
sure @MisRob, please let me know If I can help there too, I would like to work on that issue in KDS.. |
Gauravchy09
left a comment
There was a problem hiding this comment.
Hey @vtushar06 , thanks for the ping! I took a pass through the changes — overall this looks like a solid cleanup.
A couple of small things I noticed:
Trash link: In handleChannelMenuSelect, we’re toggling showBinModal. The earlier version was routing to the trash page (trashLink). Just checking — was the move to a modal intentional?
Vuetify remnants: I still see in the template and a $vuetify.breakpoint check in the script. Might be worth swapping those out so the page is fully off Vuetify.
Menu duplication: The sharing items (submit to library, etc.) appear in both shareMenuOptions and channelMenuOptions. Maybe we can extract those into a shared helper to avoid duplication.
The KDS dropdown integration itself looks clean. Happy to dig deeper if needed.
|
Hey @Gauravchy09, thanks for taking the time to review really appreciate it |
|
Thanks both. As for Vuetify breakpoints ~ for now no problem to keep |


Summary
Migrated channel editor toolbar from Vuetify to KDS components, replacing
VTooltip,VBtn,VList, andBaseMenuwith KDS equivalents.Changes:
VTooltipwithKTooltip(error count + publish button tooltips)VBtnwithKButtonfor Publish buttonBaseMenu + VListwithKButton + KDropdownMenufor Share dropdownVBtn + BaseMenu + VListwithKIconButton + KDropdownMenufor three-dots menushareMenuOptionsandchannelMenuOptionscomputed propertieshandleShareMenuSelectandhandleChannelMenuSelectmethodsScreenshots:









…
…
…
…
…
…
…
…
…
References
Closes #5597
…
Reviewer guidance
a@a.com/a…