-
Notifications
You must be signed in to change notification settings - Fork 249
[Remove Vuetify from Studio] Send e-mail dialog #5487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: unstable
Are you sure you want to change the base?
[Remove Vuetify from Studio] Send e-mail dialog #5487
Conversation
LianaHarris360
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks so much for updating the EmailUsersDialog component. This is a good start so far. There’s still a couple of Vuetify components that can be removed. The VBtn and VCardText can be replaced with KButton and a div. There’s also a few user-facing strings that still need to be translated. The KModal title, the From and To labels within the form, “Subject line”, “Email body”, and the phrase “Add placeholder to message”, and all of the placeholder labels.
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
...ation/contentcuration/frontend/administration/pages/Users/__tests__/emailUsersDialog.spec.js
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/StudioChip.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/StudioChip.vue
Outdated
Show resolved
Hide resolved
I have a doubt related #5426 (comment) this.Here i was told that wrapped strings are not to be used in administraion.So please do tell what i need to do here in this context |
MisRob
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Chiming in with some additional notes.
Overall congratulations on your first more complex issue. Overall nice work. All main features seem to be preserved Thanks for examining the current experience carefully.
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
...ation/contentcuration/frontend/administration/pages/Users/__tests__/emailUsersDialog.spec.js
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/__tests__/StudioChip.spec.js
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/__tests__/StudioChip.spec.js
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/StudioChip.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/shared/views/StudioChip.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Outdated
Show resolved
Hide resolved
f701169 to
86e2c7f
Compare
|
Hey @MisRob, just a quick note — when triggering the email dialog from the UserActionDropdown for a specific user, their name doesn’t show up as a chip in the “To” field.
which actually should be
|
Oversight, I would say. |
|
Should i update it? |
|
@Prashant-thakur77 That'd be nice, thank you. |
|
Hi @Prashant-thakur77, just checking in on what's status or if you need re-review from @LianaHarris360. From brief skim, it seems you've resolved most of the feedback. I only don't see changes related to this comment - is it still work in progress, or some clarification is needed? |
YES @MisRob do i need to make whole area clickable chips for this as in StudioChip component because i have already implemented it using button as you mentioned and this has been updated(the button component is in EmailUsersdialog not in studiochip) and the chips with x button have been implemented with help of kicon button in StudioChip component.And those chips without clear button such as used in (in front of front text )or when just one recepient is present are also in Studiochip. The chips are working as expected.And you also mentioned to remove the extra computed effects such as(darken on clicking) and will further notify during review :) |
apart from it everything else if fine. |
|
Ah I see @Prashant-thakur77. It's good consideration. I think that having |
LianaHarris360
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for updating your PR and resolving the feedback, it's almost ready to be merged! There were some visual elements that are slightly different from the initial modal that I commented on.
| }, | ||
| placeholderButtonStyles() { | ||
| return { | ||
| backgroundColor: this.$themePalette.grey.v_300, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we make the background color of these placeholder buttons the same as the StudioChips?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good suggestion - it will be a minor deviation, but using a little lighter version like in StudioChip will also help contrast 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice suggestion .on it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed it
| &:hover { | ||
| opacity: 0.9; | ||
| transform: translateY(-1px); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We typically darken button backgrounds on hover, so I would suggest setting the background-color to #CCCCCC here instead. We should also remove the transform animation to keep the button behavior the same as before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When updating a color, is it okay to directly use #CCCCCC in the hover state? Shouldn’t we use a theme token instead? If so, could you provide an example of how to use a theme token for hover effects? I tried implementing it, but it didn’t work as expected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes to tokens. $computedClass to the rescue :) Scroll to Computed classes section on https://design-system.learningequality.org/colors We use those for hovers. First steps can be a bit tricky, but you can also search Studio and Kolibri codebases for plenty examples.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ON it :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed it
| min-height: 24px; | ||
| padding: 2px 8px; | ||
| margin: 2px; | ||
| font-size: 12px; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And dark gray background with white X for close button needs to be preserved as well, @Prashant-thakur77. Except tiny details, we really need to stay close to the current experience. If it helps, feel free to drop KIconButton use in favor of custom <button> for close button.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On it..:)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This done with the help of KIconbutton .
Screencast From 2025-11-08 02-59-12.webm
The :color prop of kbutton will be used with hex
The issue is that the icon cannot be more smaller than this.

KIconButton
v-if="close"
class="studio-chip__close"
:aria-label="removeLabel"
icon="delete"
color=#999999
appearance="flat-button"
data-test="remove-chip"
@click.stop="handleClose"
This is done with the help of Div and native button
Screencast From 2025-11-08 03-04-00.webm
The only major diff is that the kIconButton provides with the background show and rest it similar.The native button requires more styling.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do tell which we should prefer :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both versions look fine, but I believe the one that more clearly shows a visual difference when hovered is preferred, the KIconButton version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed it,Used kIconbutton
contentcuration/contentcuration/frontend/administration/pages/Users/EmailUsersDialog.vue
Show resolved
Hide resolved
a8aad03 to
1158ecb
Compare



Fixes #5425
Summary
This PR completes the removal of Vuetify from the Send Email dialog as part of the larger Vuetify migration effort (#5060). The dialog now uses Kolibri Design System components exclusively while maintaining all existing functionality.
Changes Made:
✅ Replaced VDialog and ConfirmationDialog with KModal
✅ Replaced VFlex and VLayout with custom CSS flex styles
✅ Replaced VForm with native form element
✅ Replaced VTextField and VTextarea with KTextbox
✅ Replaced VTooltip with KTooltip
✅ Implemented form validation using generateFormMixin
✅ Created new StudioChip component to replace VChip



References
Sub-issue of #5060.
Reviewer guidance
Login as [email protected] with password a
Go to Administration > Users
Select few users in the table
Click Email
Visual Changes:
Minor styling differences due to KDS vs Vuetify
Consistent with Kolibri Design System patterns
Maintains all existing functionality