Skip to content

Conversation

@JanaKocakova
Copy link

@JanaKocakova JanaKocakova commented Dec 16, 2025

Fixes #5470

Summary

This PR migrates the two dialogs in SavedSearchesModal from Vuetify components to KDS:

  • Replaced MessageDialog with KModal for delete confirmation dialog
  • Replaced ActionLink with KRouterLink for saved search links
  • Replaced VList, VListTile* components with semantic HTML (<ul>, <li>, <div>) and custom SCSS
  • Replaced VDivider with CSS border-bottom styling
  • Added notranslate class to user-generated search names to prevent Chrome auto-translation
  • No logic changed - all methods, computed properties, and data remain unchanged.

Manual verification performed:

  • Verified saved searches list displays correctly with proper spacing and styling
  • Clicked saved search link - navigates to results and closes modal
  • Tested delete flow - delete works
  • Verified empty state message displays when no saved searches exist
  • Tested keyboard navigation on links and buttons
  • I provide screenshots before and after for Saved searches dialog, empty saved searches dialog and Delete search dialog. Firstly is "before screenshot" and later is "after screenshot":
BeforeSavedSearches AfterSavedSearches BeforeSavedSearchesEmpty AfterSavedSearchesEmpty BeforeDeleteSearch AfterDeleteSearch

References

Parent issue - #5060)

Reviewer guidance

  • I didnt add unit tests as this change is a UI-only migration with no logic changes, and this view previously had no test coverage. I considered adding unit tests but I think that manual testing while doing screenshots is the best way to capture possible user interactions.
  • I wasnt sure how should i define color for text, but I tried to follow existing examples using for example "color: var(--v-grey-base);"
  • You can see difference in before and after screenshot for Delete search dialog. Originally behind this dialog was no backdrop/scrim even though there was backdrop behind Saved searches dialog. I left backdrop there as it looks like default KModal behavior.

@learning-equality-bot
Copy link

👋 Thanks for contributing!

We will assign a reviewer within the next two weeks. In the meantime, please ensure that:

  • You ran pre-commit locally
  • All issue requirements are satisfied
  • The contribution is aligned with our Contributing guidelines. Pay extra attention to Using generative AI. Pull requests that don't follow the guidelines will be closed.

We'll be in touch! 😊

@learning-equality-bot
Copy link

Season’s greetings! 👋

We’d like to thank everyone for another year of fruitful collaborations, engaging discussions, and for the continued support of our work. Learning Equality will be on holidays from December 22 to January 5. We look forward to much more in the new year and wish you a very happy holiday season!

Are you preparing for Google Summer of Code? See our GSoC guidelines.

@MisRob MisRob self-requested a review December 16, 2025 16:05
@MisRob MisRob self-assigned this Dec 16, 2025
@MisRob MisRob changed the title Migrate SavedSearchesModal dialogs to KDS — fixes #<issue-5470> [Remove Vuetify from Studio] Saved searches dialogs Dec 17, 2025
Copy link
Member

@MisRob MisRob left a comment

Choose a reason for hiding this comment

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

Hi @JanaKocakova, this is very nice work, thanks a lot!

I confirm all works as expected. Code changes are meaningful in all areas - semantics, RTL, a11y. I see that you really paid attention to guidance and spend enough time getting to know the codebase - much appreciated. Excellent first contribution.

I really don't have much to add except the area you are asking about - colors. So, the way it works with KDS is described in detail here https://design-system.learningequality.org/colors. You'd want to remove colors from CSS section completely and instead use dynamic :style as described in this section https://design-system.learningequality.org/colors#usage. For each color, I will leave an additional comment about which token we'd want to use. Hopefully the documentation is clear, but you could also find many examples in the codebase if that'd help. Let me know if you had any questions.

</div>

<div class="search-actions">
<IconButton
Copy link
Member

Choose a reason for hiding this comment

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

Would you please replace by KIconButton? I think using the proxy component in this case doesn't have any additional impact (and later as part of migrating to KDS fully, we will remove IconButton anyway)

align-items: center;
justify-content: space-between;
padding: 16px 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
Copy link
Member

Choose a reason for hiding this comment

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

.empty-state {
padding: 8px;
color: var(--v-grey-base);
Copy link
Member

Choose a reason for hiding this comment

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

<style scoped lang="scss">
.empty-state {
padding: 8px;
Copy link
Member

Choose a reason for hiding this comment

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

Would you remove this padding? I realize that you used it to preserve the original experience as requested - thanks for paying attention to that :)

I just think that here it'd be more meaningful to rely on default KModal alignment (even though in some cases we make exceptions, generally one of the purposes of KDS components in consistency).

.metadata {
font-size: 14px;
color: var(--v-grey-darken2);
Copy link
Member

Choose a reason for hiding this comment

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

https://design-system.learningequality.org/colors#tokens-annotation

Same token will replace var(--v-grey-base); currently used for the separator dot (defined below on line 221).

@MisRob
Copy link
Member

MisRob commented Dec 18, 2025

@JanaKocakova In addition to our team-wide holiday time off (see comment above), I wanted to mention that I will have an additional week off and will be back on January 12. So take your time and I'll be in touch again after I'm back. Šťastné a veselé 🎄 and happy new year 😉

@MisRob
Copy link
Member

MisRob commented Dec 18, 2025

Oh also @JanaKocakova, lint check is failing. Can you run pre-commit locally and fix all errors?

@MisRob
Copy link
Member

MisRob commented Dec 18, 2025

You can see difference in before and after screenshot for Delete search dialog. Originally behind this dialog was no backdrop/scrim even though there was backdrop behind Saved searches dialog. I left backdrop there as it looks like default KModal behavior.

Yes, that makes total sense. Thank you for mentioning that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Remove Vuetify from Studio] Saved searches dialogs

2 participants