Skip to content

[Remove Vuetify from Studio] Layout and input on the Collection > Select channels page#5812

Open
Swoyamjeetcodes wants to merge 2 commits intolearningequality:unstablefrom
Swoyamjeetcodes:feat/5774-remove-vuetify-select-channels-layout-input
Open

[Remove Vuetify from Studio] Layout and input on the Collection > Select channels page#5812
Swoyamjeetcodes wants to merge 2 commits intolearningequality:unstablefrom
Swoyamjeetcodes:feat/5774-remove-vuetify-select-channels-layout-input

Conversation

@Swoyamjeetcodes
Copy link
Copy Markdown
Contributor

Summary

This PR removes Vuetify usage from the layout and input in the Collection → Select channels selection list, per issue scope.

Changes made:

  • Replaced LoadingText with StudioLargeLoader and useKShow(..., 400) for minimum visible loader time.
  • Replaced Checkbox with KCheckbox.
  • Replaced VTextField with KTextbox.
  • Replaced local VContainer / VLayout usage in ChannelSelectionList with custom scoped styles and div layout.
  • Kept channel card refactor out of scope (no card changes).

Behavior preserved:

  • Search filtering works as before.
  • Selecting/deselecting works via checkbox click.
  • Selecting/deselecting works via channel item click.
  • Empty-search state still displays “No channels found”.

Tests/verification:

  • Updated channelSelectionList.spec.js to mock useKShow.
  • Added loader test for loading state behavior.
  • Ran:
    • pnpm exec eslint contentcuration/contentcuration/frontend/channelList/views/ChannelSet/ChannelSelectionList.vue contentcuration/contentcuration/frontend/channelList/views/ChannelSet/__tests__/channelSelectionList.spec.js
    • pnpm test -- contentcuration/contentcuration/frontend/channelList/views/ChannelSet/__tests__/channelSelectionList.spec.js contentcuration/contentcuration/frontend/channelList/views/ChannelSet/__tests__/channelSetModal.spec.js
    • pnpm run build

Manual verification:

  1. Login as user@a.com / a.
  2. Go to Channels → Collections.
  3. Click New collection.
  4. Click Select channels.
  5. Verify loader, search, selection via checkbox, selection via row click, and empty search state.

Screenshots:

Scenario Screenshot
Select channels — Initial load Screenshot_20260402_203540
Select channels — Default list Select channels default list
Select channels — Filtered / Empty result Select channels filtered empty result

References

Reviewer guidance

Please verify:

  • Loader uses minimum visible time behavior (useKShow(..., 400)).
  • Checkbox and row click selection interactions still match previous behavior.
  • Search and empty-state behavior are unchanged.
  • No channel card refactor was introduced.
  • No ::v-deep or /deep/ selectors were added.

AI usage

I used Codex (generative AI) to help implement and iterate this change, including component replacement and test updates.

DEEP disclosure:

  • Disclose: AI was used for implementation support and troubleshooting local setup/build issues.
  • Engage critically: I reviewed generated code for correctness and scope, ensuring no card refactor or unrelated changes were introduced.
  • Edit: I refined AI-generated output (including styles and test updates) and removed/avoided out-of-scope changes.
  • Process sharing: AI was used for drafting code and test scaffolding; final verification was done manually with local UI checks, linting, tests, and build.

@learning-equality-bot
Copy link
Copy Markdown

👋 Hi @Swoyamjeetcodes, thanks for contributing!

For the review process to begin, please verify that the following is satisfied:

  • Contribution is aligned with our contributing guidelines

  • Pull request description has correctly filled AI usage section & follows our AI guidance:

    AI guidance

    State explicitly whether you didn't use or used AI & how.

    If you used it, ensure that the PR is aligned with Using AI as well as our DEEP framework. DEEP asks you:

    • Disclose — Be open about when you've used AI for support.
    • Engage critically — Question what is generated. Review code for correctness and unnecessary complexity.
    • Edit — Review and refine AI output. Remove unnecessary code and verify it still works after your edits.
    • Process sharing — Explain how you used the AI so others can learn.

    Examples of good disclosures:

    "I used Claude Code to implement the component, prompting it to follow the pattern in ComponentX. I reviewed the generated code, removed unnecessary error handling, and verified the tests pass."

    "I brainstormed the approach with Gemini, then had it write failing tests for the feature. After reviewing the tests, I used Claude Code to generate the implementation. I refactored the output to reduce verbosity and ran the full test suite."

Also check that issue requirements are satisfied & you ran pre-commit locally.

Pull requests that don't follow the guidelines will be closed.

Reviewer assignment can take up to 2 weeks.

@learning-equality-bot
Copy link
Copy Markdown

📢✨ Before we assign a reviewer, we'll turn on @rtibblesbot to pre-review. Its comments are generated by an LLM, and should be evaluated accordingly.

@learning-equality-bot
Copy link
Copy Markdown

📢✨ Before we assign a reviewer, we'll invite community pre-review. See the community review guidance for both authors and reviewers.

@MisRob MisRob changed the title migrate Select channels list layout/input from Vuetify to KDS (#5774) [Remove Vuetify from Studio] Layout and input on the Collection > Select channels page Apr 2, 2026
Copy link
Copy Markdown
Contributor

@rtibblesbot rtibblesbot left a comment

Choose a reason for hiding this comment

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

Clean, well-scoped migration from Vuetify to KDS components. All replacements match the issue spec.

CI passing. Screenshots verified — loader, channel list, search, and empty state all render correctly.

  • suggestion: One Vuetify utility class (grey--text) remains — see inline comment
  • praise: Good RTL-aware styling and solid loader test coverage

@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly

How was this generated?

Reviewed the pull request diff checking for:

  • Correctness: bugs, edge cases, undocumented behavior, resource leaks, hardcoded values
  • Design: unnecessary complexity, naming, readability, comment accuracy, redundant state
  • Architecture: duplicated concerns, minimal interfaces, composition over inheritance
  • Testing: behavior-based assertions, mocks only at hard boundaries, accurate coverage
  • Completeness: missing dependencies, unupdated usages, i18n, accessibility, security
  • Principles: DRY (same reason to change), SRP, Rule of Three (no premature abstraction)
  • Checked CI status and linked issue acceptance criteria
  • For UI changes: inspected screenshots for layout, visual completeness, and consistency

<p
v-if="!listChannels.length"
class="grey--text mb-0 mt-4"
class="grey--text no-channels-found"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

suggestion: grey--text is a Vuetify utility class (defined in vuetify.scss). Since this PR is removing Vuetify from this component, consider replacing it with a scoped style — e.g., add color: #9e9e9e; to the .no-channels-found rule (which already targets this element) and drop the class.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The suggestion to remove Vuetify utility class is correct, however e.g., add color: #9e9e9e; is not ~ we don't use hardcoded colors. KDS colors need to follow this guidance https://design-system.learningequality.org/colors.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Remove Vuetify from Studio] Layout and input on the Collection > Select channels page

3 participants