diff options
Diffstat (limited to 'apps/dav/src/views')
-rw-r--r-- | apps/dav/src/views/Availability.vue | 40 | ||||
-rw-r--r-- | apps/dav/src/views/CalDavSettings.spec.js | 130 | ||||
-rw-r--r-- | apps/dav/src/views/CalDavSettings.vue | 165 | ||||
-rw-r--r-- | apps/dav/src/views/ExampleContentSettingsSection.vue | 38 | ||||
-rw-r--r-- | apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap | 434 | ||||
-rw-r--r-- | apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license | 2 |
6 files changed, 809 insertions, 0 deletions
diff --git a/apps/dav/src/views/Availability.vue b/apps/dav/src/views/Availability.vue new file mode 100644 index 00000000000..1922f5b706e --- /dev/null +++ b/apps/dav/src/views/Availability.vue @@ -0,0 +1,40 @@ +<!-- + - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> +<template> + <div> + <NcSettingsSection id="availability" + :name="$t('dav', 'Availability')" + :description="$t('dav', 'If you configure your working hours, other people will see when you are out of office when they book a meeting.')"> + <AvailabilityForm /> + </NcSettingsSection> + <NcSettingsSection v-if="!hideAbsenceSettings" + id="absence" + :name="$t('dav', 'Absence')" + :description="$t('dav', 'Configure your next absence period.')"> + <AbsenceForm /> + </NcSettingsSection> + </div> +</template> + +<script> +import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection' +import AbsenceForm from '../components/AbsenceForm.vue' +import AvailabilityForm from '../components/AvailabilityForm.vue' +import { loadState } from '@nextcloud/initial-state' + +export default { + name: 'Availability', + components: { + NcSettingsSection, + AbsenceForm, + AvailabilityForm, + }, + data() { + return { + hideAbsenceSettings: loadState('dav', 'hide_absence_settings', true), + } + }, +} +</script> diff --git a/apps/dav/src/views/CalDavSettings.spec.js b/apps/dav/src/views/CalDavSettings.spec.js new file mode 100644 index 00000000000..7a4345b3ddf --- /dev/null +++ b/apps/dav/src/views/CalDavSettings.spec.js @@ -0,0 +1,130 @@ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { render } from '@testing-library/vue' +import { beforeEach, describe, expect, test, vi } from 'vitest' + +import CalDavSettings from './CalDavSettings.vue' + +vi.mock('@nextcloud/axios') +vi.mock('@nextcloud/router', () => { + return { + generateUrl(url) { + return url + }, + } +}) +vi.mock('@nextcloud/initial-state', () => { + return { + loadState: vi.fn(() => 'https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars'), + } +}) + +describe('CalDavSettings', () => { + beforeEach(() => { + window.OC = { requestToken: 'secret' } + window.OCP = { + AppConfig: { + setValue: vi.fn(), + }, + } + }) + + test('interactions', async () => { + const TLUtils = render( + CalDavSettings, + { + data() { + return { + sendInvitations: true, + generateBirthdayCalendar: true, + sendEventReminders: true, + sendEventRemindersToSharedUsers: true, + sendEventRemindersPush: true, + } + }, + }, + Vue => { + Vue.prototype.$t = vi.fn((app, text) => text) + }, + ) + expect(TLUtils.container).toMatchSnapshot() + const sendInvitations = TLUtils.getByLabelText( + 'Send invitations to attendees', + ) + expect(sendInvitations).toBeChecked() + const generateBirthdayCalendar = TLUtils.getByLabelText( + 'Automatically generate a birthday calendar', + ) + expect(generateBirthdayCalendar).toBeChecked() + const sendEventReminders = TLUtils.getByLabelText( + 'Send notifications for events', + ) + expect(sendEventReminders).toBeChecked() + const sendEventRemindersToSharedUsers = TLUtils.getByLabelText( + 'Send reminder notifications to calendar sharees as well', + ) + expect(sendEventRemindersToSharedUsers).toBeChecked() + const sendEventRemindersPush = TLUtils.getByLabelText( + 'Enable notifications for events via push', + ) + expect(sendEventRemindersPush).toBeChecked() + + /* + FIXME userEvent.click is broken with nextcloud-vue/Button + + await userEvent.click(sendInvitations) + expect(sendInvitations).not.toBeChecked() + expect(OCP.AppConfig.setValue).toHaveBeenCalledWith( + 'dav', + 'sendInvitations', + 'no' + ) + OCP.AppConfig.setValue.mockClear() + await userEvent.click(sendInvitations) + expect(sendInvitations).toBeChecked() + expect(OCP.AppConfig.setValue).toHaveBeenCalledWith( + 'dav', + 'sendInvitations', + 'yes' + ) + + axios.post.mockImplementationOnce((uri) => { + expect(uri).toBe('/apps/dav/disableBirthdayCalendar') + return Promise.resolve() + }) + await userEvent.click(generateBirthdayCalendar) + axios.post.mockImplementationOnce((uri) => { + expect(uri).toBe('/apps/dav/enableBirthdayCalendar') + return Promise.resolve() + }) + await userEvent.click(generateBirthdayCalendar) + expect(generateBirthdayCalendar).toBeEnabled() + + OCP.AppConfig.setValue.mockClear() + await userEvent.click(sendEventReminders) + expect(sendEventReminders).not.toBeChecked() + expect(OCP.AppConfig.setValue).toHaveBeenCalledWith( + 'dav', + 'sendEventReminders', + 'no' + ) + + expect(sendEventRemindersToSharedUsers).toBeDisabled() + expect(sendEventRemindersPush).toBeDisabled() + + OCP.AppConfig.setValue.mockClear() + await userEvent.click(sendEventReminders) + expect(sendEventReminders).toBeChecked() + expect(OCP.AppConfig.setValue).toHaveBeenCalledWith( + 'dav', + 'sendEventReminders', + 'yes' + ) + + expect(sendEventRemindersToSharedUsers).toBeEnabled() + expect(sendEventRemindersPush).toBeEnabled() + */ + }) +}) diff --git a/apps/dav/src/views/CalDavSettings.vue b/apps/dav/src/views/CalDavSettings.vue new file mode 100644 index 00000000000..6be67cf93ff --- /dev/null +++ b/apps/dav/src/views/CalDavSettings.vue @@ -0,0 +1,165 @@ +<!-- + - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> +<template> + <NcSettingsSection :name="$t('dav', 'Calendar server')" + :doc-url="userSyncCalendarsDocUrl"> + <!-- Can use v-html as: + - $t passes the translated string through DOMPurify.sanitize, + - replacement strings are not user-controlled. --> + <!-- eslint-disable-next-line vue/no-v-html --> + <p class="settings-hint" v-html="hint" /> + <p> + <NcCheckboxRadioSwitch id="caldavSendInvitations" + :checked.sync="sendInvitations" + type="switch"> + {{ $t('dav', 'Send invitations to attendees') }} + </NcCheckboxRadioSwitch> + <!-- Can use v-html as: + - $t passes the translated string through DOMPurify.sanitize, + - replacement strings are not user-controlled. --> + <!-- eslint-disable-next-line vue/no-v-html --> + <em v-html="sendInvitationsHelpText" /> + </p> + <p> + <NcCheckboxRadioSwitch id="caldavGenerateBirthdayCalendar" + :checked.sync="generateBirthdayCalendar" + type="switch" + class="checkbox"> + {{ $t('dav', 'Automatically generate a birthday calendar') }} + </NcCheckboxRadioSwitch> + <em> + {{ $t('dav', 'Birthday calendars will be generated by a background job.') }} + </em> + <br> + <em> + {{ $t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.') }} + </em> + </p> + <p> + <NcCheckboxRadioSwitch id="caldavSendEventReminders" + :checked.sync="sendEventReminders" + type="switch"> + {{ $t('dav', 'Send notifications for events') }} + </NcCheckboxRadioSwitch> + <!-- Can use v-html as: + - $t passes the translated string through DOMPurify.sanitize, + - replacement strings are not user-controlled. --> + <!-- eslint-disable-next-line vue/no-v-html --> + <em v-html="sendEventRemindersHelpText" /> + <br> + <em> + {{ $t('dav', 'Notifications are sent via background jobs, so these must occur often enough.') }} + </em> + </p> + <p class="indented"> + <NcCheckboxRadioSwitch id="caldavSendEventRemindersToSharedGroupMembers" + :checked.sync="sendEventRemindersToSharedUsers" + type="switch" + :disabled="!sendEventReminders"> + {{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }} + </NcCheckboxRadioSwitch> + <em> + {{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }} + </em> + </p> + <p class="indented"> + <NcCheckboxRadioSwitch id="caldavSendEventRemindersPush" + :checked.sync="sendEventRemindersPush" + type="switch" + :disabled="!sendEventReminders"> + {{ $t('dav', 'Enable notifications for events via push') }} + </NcCheckboxRadioSwitch> + </p> + </NcSettingsSection> +</template> + +<script> +import axios from '@nextcloud/axios' +import { generateUrl } from '@nextcloud/router' +import { loadState } from '@nextcloud/initial-state' +import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch' + +const userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#') + +export default { + name: 'CalDavSettings', + components: { + NcCheckboxRadioSwitch, + NcSettingsSection, + }, + data() { + return { + userSyncCalendarsDocUrl, + } + }, + computed: { + hint() { + const translated = this.$t( + 'dav', + 'Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.', + ) + return translated + .replace('{calendarappstoreopen}', '<a target="_blank" href="../apps/office/calendar">') + .replace('{calendardocopen}', `<a target="_blank" href="${userSyncCalendarsDocUrl}" rel="noreferrer noopener">`) + .replace(/\{linkclose\}/g, '</a>') + }, + sendInvitationsHelpText() { + const translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.') + return translated + .replace('{emailopen}', '<a href="../admin#mail_general_settings">') + .replace('{linkclose}', '</a>') + }, + sendEventRemindersHelpText() { + const translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.') + return translated + .replace('{emailopen}', '<a href="../admin#mail_general_settings">') + .replace('{linkclose}', '</a>') + }, + }, + watch: { + generateBirthdayCalendar(value) { + const baseUrl = value ? '/apps/dav/enableBirthdayCalendar' : '/apps/dav/disableBirthdayCalendar' + axios.post(generateUrl(baseUrl)) + }, + sendInvitations(value) { + OCP.AppConfig.setValue( + 'dav', + 'sendInvitations', + value ? 'yes' : 'no', + ) + }, + sendEventReminders(value) { + OCP.AppConfig.setValue('dav', 'sendEventReminders', value ? 'yes' : 'no') + }, + sendEventRemindersToSharedUsers(value) { + OCP.AppConfig.setValue( + 'dav', + 'sendEventRemindersToSharedUsers', + value ? 'yes' : 'no', + ) + }, + sendEventRemindersPush(value) { + OCP.AppConfig.setValue('dav', 'sendEventRemindersPush', value ? 'yes' : 'no') + }, + }, +} +</script> + +<style scoped> + .indented { + padding-inline-start: 28px; + } + /** Use deep selector to affect v-html */ + * :deep(a) { + text-decoration: underline; + } + + .settings-hint { + margin-top: -.2em; + margin-bottom: 1em; + opacity: .7; + } +</style> diff --git a/apps/dav/src/views/ExampleContentSettingsSection.vue b/apps/dav/src/views/ExampleContentSettingsSection.vue new file mode 100644 index 00000000000..3ee2d9e8648 --- /dev/null +++ b/apps/dav/src/views/ExampleContentSettingsSection.vue @@ -0,0 +1,38 @@ +<!-- + - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <NcSettingsSection id="example-content" + :name="$t('dav', 'Example content')" + class="example-content-setting" + :description="$t('dav', 'Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.')"> + <ExampleContactSettings v-if="hasContactsApp" /> + <ExampleEventSettings v-if="hasCalendarApp" /> + </NcSettingsSection> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' +import { NcSettingsSection } from '@nextcloud/vue' +import ExampleEventSettings from '../components/ExampleEventSettings.vue' +import ExampleContactSettings from '../components/ExampleContactSettings.vue' + +export default { + name: 'ExampleContentSettingsSection', + components: { + NcSettingsSection, + ExampleContactSettings, + ExampleEventSettings, + }, + computed: { + hasContactsApp() { + return loadState('dav', 'contactsEnabled') + }, + hasCalendarApp() { + return loadState('dav', 'calendarEnabled') + }, + }, +} +</script> diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap new file mode 100644 index 00000000000..fdbe09f5b5e --- /dev/null +++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap @@ -0,0 +1,434 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`CalDavSettings > interactions 1`] = ` +<div> + <div + class="settings-section settings-section--limit-width" + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <h2 + class="settings-section__name" + data-v-6f6953b5="" + > + Calendar server + <a + aria-label="External documentation for Calendar server" + class="settings-section__info" + data-v-6f6953b5="" + href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars" + rel="noreferrer nofollow" + target="_blank" + title="External documentation for Calendar server" + > + <span + aria-hidden="true" + class="material-design-icon help-circle-icon" + data-v-6f6953b5="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="20" + viewBox="0 0 24 24" + width="20" + > + <path + d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" + > + <!----> + </path> + </svg> + </span> + </a> + </h2> + <!----> + <p + class="settings-hint" + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Also install the + <a + href="../apps/office/calendar" + target="_blank" + > + Calendar app + </a> + , or + <a + href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars" + rel="noreferrer noopener" + target="_blank" + > + connect your desktop & mobile for syncing ↗ + </a> + . + </p> + <p + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <span + class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" + data-v-6b8d4c30="" + data-v-6f6953b5="" + data-v-f275cf53="" + style="--icon-size: 36px; --icon-height: 16px;" + > + <input + aria-labelledby="caldavSendInvitations-label" + class="checkbox-radio-switch__input" + data-v-f275cf53="" + id="caldavSendInvitations" + type="checkbox" + value="" + /> + <span + class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text" + data-v-3714b019="" + data-v-f275cf53="" + id="caldavSendInvitations-label" + > + <span + aria-hidden="true" + class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon" + data-v-3714b019="" + inert="inert" + > + <span + aria-hidden="true" + class="material-design-icon toggle-switch-icon" + data-v-3714b019="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="36" + viewBox="0 0 24 24" + width="36" + > + <path + d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z" + > + <!----> + </path> + </svg> + </span> + </span> + <span + class="checkbox-content__text checkbox-radio-switch__text" + data-v-3714b019="" + > + Send invitations to attendees + </span> + </span> + </span> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Please make sure to properly set up + <a + href="../admin#mail_general_settings" + > + the email server + </a> + . + </em> + </p> + <p + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <span + class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked" + data-v-6b8d4c30="" + data-v-6f6953b5="" + data-v-f275cf53="" + style="--icon-size: 36px; --icon-height: 16px;" + > + <input + aria-labelledby="caldavGenerateBirthdayCalendar-label" + class="checkbox-radio-switch__input" + data-v-f275cf53="" + id="caldavGenerateBirthdayCalendar" + type="checkbox" + value="" + /> + <span + class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text" + data-v-3714b019="" + data-v-f275cf53="" + id="caldavGenerateBirthdayCalendar-label" + > + <span + aria-hidden="true" + class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon" + data-v-3714b019="" + inert="inert" + > + <span + aria-hidden="true" + class="material-design-icon toggle-switch-icon" + data-v-3714b019="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="36" + viewBox="0 0 24 24" + width="36" + > + <path + d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z" + > + <!----> + </path> + </svg> + </span> + </span> + <span + class="checkbox-content__text checkbox-radio-switch__text" + data-v-3714b019="" + > + Automatically generate a birthday calendar + </span> + </span> + </span> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Birthday calendars will be generated by a background job. + </em> + <br + data-v-6b8d4c30="" + data-v-6f6953b5="" + /> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Hence they will not be available immediately after enabling but will show up after some time. + </em> + </p> + <p + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <span + class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" + data-v-6b8d4c30="" + data-v-6f6953b5="" + data-v-f275cf53="" + style="--icon-size: 36px; --icon-height: 16px;" + > + <input + aria-labelledby="caldavSendEventReminders-label" + class="checkbox-radio-switch__input" + data-v-f275cf53="" + id="caldavSendEventReminders" + type="checkbox" + value="" + /> + <span + class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text" + data-v-3714b019="" + data-v-f275cf53="" + id="caldavSendEventReminders-label" + > + <span + aria-hidden="true" + class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon" + data-v-3714b019="" + inert="inert" + > + <span + aria-hidden="true" + class="material-design-icon toggle-switch-icon" + data-v-3714b019="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="36" + viewBox="0 0 24 24" + width="36" + > + <path + d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z" + > + <!----> + </path> + </svg> + </span> + </span> + <span + class="checkbox-content__text checkbox-radio-switch__text" + data-v-3714b019="" + > + Send notifications for events + </span> + </span> + </span> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Please make sure to properly set up + <a + href="../admin#mail_general_settings" + > + the email server + </a> + . + </em> + <br + data-v-6b8d4c30="" + data-v-6f6953b5="" + /> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Notifications are sent via background jobs, so these must occur often enough. + </em> + </p> + <p + class="indented" + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <span + class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" + data-v-6b8d4c30="" + data-v-6f6953b5="" + data-v-f275cf53="" + style="--icon-size: 36px; --icon-height: 16px;" + > + <input + aria-labelledby="caldavSendEventRemindersToSharedGroupMembers-label" + class="checkbox-radio-switch__input" + data-v-f275cf53="" + id="caldavSendEventRemindersToSharedGroupMembers" + type="checkbox" + value="" + /> + <span + class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text" + data-v-3714b019="" + data-v-f275cf53="" + id="caldavSendEventRemindersToSharedGroupMembers-label" + > + <span + aria-hidden="true" + class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon" + data-v-3714b019="" + inert="inert" + > + <span + aria-hidden="true" + class="material-design-icon toggle-switch-icon" + data-v-3714b019="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="36" + viewBox="0 0 24 24" + width="36" + > + <path + d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z" + > + <!----> + </path> + </svg> + </span> + </span> + <span + class="checkbox-content__text checkbox-radio-switch__text" + data-v-3714b019="" + > + Send reminder notifications to calendar sharees as well + </span> + </span> + </span> + <em + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + Reminders are always sent to organizers and attendees. + </em> + </p> + <p + class="indented" + data-v-6b8d4c30="" + data-v-6f6953b5="" + > + <span + class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" + data-v-6b8d4c30="" + data-v-6f6953b5="" + data-v-f275cf53="" + style="--icon-size: 36px; --icon-height: 16px;" + > + <input + aria-labelledby="caldavSendEventRemindersPush-label" + class="checkbox-radio-switch__input" + data-v-f275cf53="" + id="caldavSendEventRemindersPush" + type="checkbox" + value="" + /> + <span + class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text" + data-v-3714b019="" + data-v-f275cf53="" + id="caldavSendEventRemindersPush-label" + > + <span + aria-hidden="true" + class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon" + data-v-3714b019="" + inert="inert" + > + <span + aria-hidden="true" + class="material-design-icon toggle-switch-icon" + data-v-3714b019="" + role="img" + > + <svg + class="material-design-icon__svg" + fill="currentColor" + height="36" + viewBox="0 0 24 24" + width="36" + > + <path + d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z" + > + <!----> + </path> + </svg> + </span> + </span> + <span + class="checkbox-content__text checkbox-radio-switch__text" + data-v-3714b019="" + > + Enable notifications for events via push + </span> + </span> + </span> + </p> + </div> +</div> +`; diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license new file mode 100644 index 00000000000..b8f52265f1f --- /dev/null +++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors +SPDX-License-Identifier: AGPL-3.0-or-later
\ No newline at end of file |