Skip to content

[Remove Vuetify from Studio] Invitations in Channels聽#5217

Description

@MisRob

馃檪 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: Medium

Summary

Remove Vuetify from 'Invitations' box in Channels > My Channels.

Image

VCard together with channelList/views/Channel/ChannelInvitation.vue built with several Vuetify components is currently used for the invitations box.

Remove dependencies on Vuetify by:

  • (1) Create a new StudioRaisedBox to replace VCard
  • (2) Remove Vuetify components from ChannelInvitations and instead use the combination of custom Studio implementation and KDS components:
    • KIconButton for Accept / Decline buttons
    • KModal for Declining Invitation confirmation dialog

Then replace this part of code:

<VCard
v-if="invitationList.length"
v-show="isChannelList"
>
<VList subheader>
<VSubheader>
{{ $tr('invitations', { count: invitationList.length }) }}
</VSubheader>
<ChannelInvitation
v-for="invitation in invitationList"
:key="invitation.id"
:invitationID="invitation.id"
/>
</VList>
</VCard>

with:

<StudioRaisedBox ...>
  <h3>{{ $tr('invitations', { count: invitationList.length }) }}</h3>
  <ul>
    <ChannelInvitation
      v-for="invitation in invitationList"
      ...
    />
  </ul>
</StudioRaisedBox>

(^ just approximate example, more adjustment may be needed - e.g. making <ul> part of ChannelInvitation could make more sense in migrated implementation)

How to get there

  • Login as user@b.com with password b
  • Create a new channel
  • Share channel with user a@a.com
  • Logout
  • Login as a@a.com with password a
  • Go to Channels > My Channels

Guidance

Out of Scope

  • Do not refactor any other areas of the codebase

Expected UI/UX changes

  • Minor visual differences naturally stemming from the use of KDS

Acceptance criteria

General

  • The specification above is followed.
  • Except for "Expected UI/UX changes," there are no functional or visual differences in user experience.
  • All user interactions are manually tested with no regressions.
  • Pull request includes screenshots.

a11y and i18n

See the project's "Guidance" for useful references.

  • Implementation meets a11y standards
  • All components are LTR and RTL compliant (preview with pnpm run devserver since :hot doesn't render RTL properly)
  • All user-facing strings are translated properly
  • The notranslate class been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. user-generated text)
  • Mobile experience is reasonable

Unit tests

  • If there is a unit test suite already, it is meaningfully updated (even if tests don't fail)
  • If there is no unit test suite, a new one is created. Do not use obsolete @vue/test-utils approach. Instead, use @testing-library/vue (Vue Testing Library).

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions