Skip to content

Conversation

@odzhychko
Copy link

@odzhychko odzhychko commented Jan 18, 2026

Implements the suggestion to show supported component type from #2572 (comment)

Refs: #2572

Before

Screenshot 2026-01-18 at 22-20-09 Jan 18 2026 - Calendar - Nextcloud

After (current)

Screenshot 2026-01-21 at 16-26-47 Jan 21 2026 - Calendar - Nextcloud

After (previous iterations)

First iteration Screenshot 2026-01-18 at 22-18-16 Jan 18 2026 - Calendar - Nextcloud

@odzhychko odzhychko force-pushed the show-supported-component-types-in-calendar-settings branch from 92a1d93 to ee612ba Compare January 18, 2026 21:48
@SebastianKrupinski
Copy link
Contributor

SebastianKrupinski commented Jan 18, 2026

Hi @odzhychko

Thank you for the PR...

These kind of changes do require designer approval...

@nimishavijay @kra-mo

@nimishavijay
Copy link
Member

nimishavijay commented Jan 19, 2026

This is a rather technical detail so I'm not sure if this just wouldn't be crowding the UI in many cases. At most we can show a simplified version of this in a tooltip next to the name, since it cannot be edited anyway. So next to the name there can be an i icon which shows "Supports events, tasks and journal entries" on hover. We can solve the issue of people trying to add unsupported types through smarter error prevention and better error messages, what do you think?

@odzhychko
Copy link
Author

This is a rather technical detail so I'm not sure if this just wouldn't be crowding the UI in many cases.

Oh, I see now how this is an issue 😅

We can solve the issue of people trying to add unsupported types through smarter error prevention and better error messages, what do you think?

This is already being done. For example, when importing, creating, or editing events, only calendars that support events can be selected. Same for tasks. But being able to check supported types directly might still be useful and was suggested in #2572 (comment)

So next to the tooltip there can be an i icon which shows "Supports events, tasks and journal entries" on hover.

I'm not sure about this regarding discoverability and touch-friendliness.
Users have to guess that they might find this information behind the info icon.
I assume hovering interactions on touchscreen devices are inconvenient in general.

@nimishavijay What are your thoughts on providing this information more compactly in one line (e.g. "Supports events, tasks and journal entries") but still always visible?
Maybe as a hint (with a light gray color/var(--color-text-maxcontrast)) below the title "Edit calendar" or below the name input.


I initially went with the unmodifiable checkboxes to be consistent with the rest of the editing elements of this edit modal and also have some visual structuring. Perhaps eventually this modal could become a properties modal where you can edit some properties (e.g., name, color, sharability) and inspect other properties (e.g., supported entries, creating time, source (e.g., owned, shared, built-in, read-only, subscribed from URL)).

@ChristophWurst
Copy link
Member

I would also like to see this as a simple one-liner like This calendar supports events and tasks. This doesn't take a lot of space, is not too technical.

@ChristophWurst ChristophWurst self-requested a review January 21, 2026 14:10
@ChristophWurst ChristophWurst added 3. to review Waiting for reviews enhancement New feature request labels Jan 21, 2026
@codecov
Copy link

codecov bot commented Jan 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ChristophWurst
Copy link
Member

@nimishavijay What are your thoughts on providing this information more compactly in one line (e.g. "Supports events, tasks and journal entries") but still always visible?
Maybe as a hint (with a light gray color/var(--color-text-maxcontrast)) below the title "Edit calendar" or below the name input.

Let's go for this :)

@odzhychko odzhychko force-pushed the show-supported-component-types-in-calendar-settings branch 2 times, most recently from 470f91f to 6023521 Compare January 21, 2026 15:35
@odzhychko
Copy link
Author

This is ready for review again :D

The screenshot in the description was updated appropriately.

@SebastianKrupinski
Copy link
Contributor

Tested. Works as expected.

image

@SebastianKrupinski
Copy link
Contributor

@ChristophWurst any things else to add?

Implements suggestion from nextcloud#2572 (comment)

Refs: nextcloud#2572
Signed-off-by: Oleksandr Dzhychko <hey@oleks.dev>
@SebastianKrupinski SebastianKrupinski force-pushed the show-supported-component-types-in-calendar-settings branch from 6023521 to b0471c6 Compare January 21, 2026 15:51
@SebastianKrupinski
Copy link
Contributor

Rebased to head prep to merge

Comment on lines +180 to +201
if (this.calendar.supportsEvents && this.calendar.supportsTasks && this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports events, tasks and journal entries.')
}
if (this.calendar.supportsEvents && this.calendar.supportsTasks && !this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports events and tasks.')
}
if (this.calendar.supportsEvents && !this.calendar.supportsTasks && this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports events and journal entries.')
}
if (this.calendar.supportsEvents && !this.calendar.supportsTasks && !this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports only events.')
}
if (!this.calendar.supportsEvents && this.calendar.supportsTasks && this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports tasks and journal entries.')
}
if (!this.calendar.supportsEvents && this.calendar.supportsTasks && !this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports only tasks.')
}
if (!this.calendar.supportsEvents && !this.calendar.supportsTasks && this.calendar.supportsJournals) {
return this.$t('calendar', 'This calendar supports only journal entries.')
}
return this.$t('calendar', 'This calendar supports neither events, tasks nor journal entries.')
Copy link
Member

@ChristophWurst ChristophWurst Jan 21, 2026

Choose a reason for hiding this comment

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

You can use Intl for the list. Here's an example: https://github.com/nextcloud/mail/blob/f699d91eae959b9045c9bb4cabbf5f35f0fdd62f/src/components/OutboxMessageListItem.vue#L113-L114

Build an array with the supported types as translated strings and run it through the conjunction formatter.

$ const formatter = new Intl.ListFormat('de', { type: 'conjunction' })
$ formatter.format(['events', 'tasks'])
"events und tasks" 

Then use $n and singular/plural string like This calendar supports only {types} entries./This calendar supports {types}

Keep a separate handler for when none of the three components are supported

Copy link
Author

Choose a reason for hiding this comment

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

I noticed that some languages that are well supported in Nextcloud are not yet supported by Intl.ListFormat even by the recent Chrome version 144 (tested on Fedora 43). This includes, for example, Irish ga and Galician gl.

I'm not sure how relevant this is. Let me know if I still can use can Intl.ListFormat here.

@nimishavijay
Copy link
Member

Looks much better! :) thank you @odzhychko !

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

Labels

3. to review Waiting for reviews enhancement New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants