From 27711fab6e21564d33f01a34a46d1ea6751b066b Mon Sep 17 00:00:00 2001 From: Oleksandr Dzhychko Date: Sat, 15 Aug 2026 19:19:34 +0000 Subject: [PATCH] refactor(frontend): move to and enforce absolute imports Assisted-by: ClaudeCode:claude-opus-4.8 Signed-off-by: Oleksandr Dzhychko --- eslint.config.mjs | 10 ++++ package-lock.json | 29 +++++++++ package.json | 1 + src/appointments/main-booking.js | 2 +- src/appointments/main-confirmation.js | 2 +- src/appointments/main-overview.js | 2 +- .../AppNavigation/AppNavigationHeader.vue | 8 +-- .../AppNavigation/AppointmentConfigList.vue | 2 +- src/components/AppNavigation/CalendarList.vue | 8 +-- .../CalendarList/CalendarListNew.vue | 2 +- .../AppNavigation/CalendarList/Trashbin.vue | 8 +-- .../AppNavigation/EditCalendarModal.vue | 22 +++---- .../EditCalendarModal/PublishCalendar.vue | 2 +- .../EditCalendarModal/ShareItem.vue | 6 +- .../EditCalendarModal/SharingSearch.vue | 6 +- .../EmbedHeader/EmbedHeaderViewButtons.vue | 2 +- .../AppNavigation/EmbedTopNavigation.vue | 6 +- src/components/AppNavigation/Settings.vue | 34 +++++------ .../AppNavigation/Settings/ImportScreen.vue | 2 +- .../Settings/ImportScreenRow.vue | 10 ++-- .../Settings/SettingsAttachmentsFolder.vue | 4 +- .../Settings/SettingsImportSection.vue | 14 ++--- .../Settings/SettingsTimezoneSelect.vue | 4 +- .../AppNavigation/UnscheduledTasksList.vue | 6 +- src/components/AppointmentConfigModal.vue | 14 ++--- .../CheckedDurationSelect.vue | 2 +- .../Appointments/AppointmentDetails.vue | 4 +- .../Appointments/AppointmentSlot.vue | 2 +- src/components/CalendarGrid.vue | 48 +++++++-------- src/components/Editor/AddTalkModal.vue | 2 +- src/components/Editor/Alarm/AlarmList.vue | 8 +-- src/components/Editor/Alarm/AlarmListItem.vue | 12 ++-- src/components/Editor/Alarm/AlarmListNew.vue | 10 ++-- .../Editor/Attachments/AttachmentsList.vue | 10 ++-- .../Editor/AvatarParticipationStatus.vue | 2 +- .../Editor/CalendarPickerHeader.vue | 2 +- src/components/Editor/FreeBusy/FreeBusy.vue | 24 ++++---- .../Editor/FreeBusy/RoomAvailabilityList.vue | 6 +- .../Editor/FreeBusy/RoomAvailabilityModal.vue | 22 +++---- src/components/Editor/IllustrationHeader.vue | 2 +- .../Editor/InvitationResponseButtons.vue | 4 +- .../Editor/Invitees/InviteesList.vue | 20 +++---- .../Editor/Invitees/InviteesListItem.vue | 10 ++-- .../Editor/Invitees/InviteesListSearch.vue | 8 +-- .../Editor/Invitees/OrganizerListItem.vue | 6 +- .../Properties/PropertyCalendarPicker.vue | 4 +- .../Editor/Properties/PropertyColor.vue | 2 +- .../Editor/Properties/PropertySelect.vue | 2 +- .../Properties/PropertySelectMultiple.vue | 6 +- .../PropertySelectMultipleColoredOption.vue | 4 +- .../PropertySelectMultipleColoredTag.vue | 4 +- .../Editor/Properties/PropertyText.vue | 6 +- .../Editor/Properties/PropertyTitle.vue | 2 +- .../Properties/PropertyTitleTimePicker.vue | 6 +- src/components/Editor/Repeat/Repeat.vue | 18 +++--- .../Editor/Repeat/RepeatEndRepeat.vue | 4 +- .../Editor/Repeat/RepeatFirstLastSelect.vue | 2 +- .../Editor/Repeat/RepeatFreqInterval.vue | 2 +- .../Repeat/RepeatFreqMonthlyOptions.vue | 4 +- .../Editor/Repeat/RepeatFreqYearlyOptions.vue | 4 +- .../Editor/Repeat/RepeatSummary.vue | 4 +- .../Editor/Resources/ResourceList.vue | 18 +++--- .../Editor/Resources/ResourceListItem.vue | 18 +++--- .../Editor/Resources/ResourceListSearch.vue | 12 ++-- .../Editor/Resources/ResourceRoomType.vue | 2 +- src/components/Shared/CalendarPicker.vue | 6 +- .../Shared/CalendarPickerOption.vue | 2 +- src/components/Shared/DatePicker.vue | 2 +- src/components/Shared/TimezoneSelect.vue | 2 +- .../PublicCalendarSubscriptionPicker.vue | 8 +-- src/contactsMenu.js | 2 +- src/env.d.ts | 2 +- src/fullcalendar/eventSources/eventSource.js | 12 ++-- .../eventSources/eventSourceFunction.js | 12 ++-- .../freeBusyBlockedForAllEventSource.js | 6 +- .../eventSources/freeBusyEventSource.js | 2 +- .../freeBusyResourceEventSource.js | 2 +- src/fullcalendar/interaction/eventAllow.js | 2 +- src/fullcalendar/interaction/eventClick.js | 8 +-- src/fullcalendar/interaction/eventDrop.js | 18 +++--- src/fullcalendar/interaction/eventResize.js | 10 ++-- .../interaction/navLinkDayClick.js | 4 +- .../interaction/navLinkWeekClick.js | 4 +- src/fullcalendar/interaction/select.js | 4 +- src/fullcalendar/localization/momentPlugin.js | 2 +- src/fullcalendar/rendering/dayCellDidMount.js | 2 +- .../rendering/dayHeaderDidMount.js | 2 +- src/fullcalendar/rendering/eventDidMount.js | 4 +- .../rendering/noEventsDidMount.js | 2 +- .../timezones/vtimezoneNamedTimezoneImpl.js | 4 +- src/main.js | 12 ++-- src/mixins/EditorMixin.js | 28 ++++----- src/models/alarm.js | 4 +- src/models/calendar.js | 6 +- src/models/calendarObject.js | 2 +- src/models/calendarShare.js | 2 +- src/models/event.js | 12 ++-- src/models/principal.js | 2 +- src/models/recurrenceRule.js | 4 +- src/models/rfcProps.js | 2 +- src/models/schedulingObject.js | 4 +- src/proposal-public.ts | 2 +- src/reference.js | 2 +- src/router.js | 8 +-- src/services/appointmentConfigService.js | 4 +- src/services/attachmentService.js | 2 +- src/services/attendeeDetails.js | 2 +- src/services/caldavService.js | 2 +- src/services/circleService.js | 2 +- src/services/freeBusyService.js | 4 +- src/services/freeBusySlotService.js | 8 +-- src/services/notifyService.ts | 4 +- src/services/settings.js | 2 +- src/services/windowTitleService.js | 6 +- src/store/appointmentConfigs.js | 4 +- src/store/calendarObjectInstance.js | 26 ++++---- src/store/calendarObjects.js | 10 ++-- src/store/calendars.js | 30 +++++----- src/store/delegation.ts | 4 +- src/store/fetchedTimeRanges.js | 2 +- src/store/importState.js | 2 +- src/store/principals.js | 6 +- src/store/settings.js | 22 +++---- src/store/unscheduledTasks.js | 2 +- src/types/proposals/proposalInterfaces.ts | 2 +- src/utils/alarms.js | 8 +-- src/utils/color.js | 4 +- src/utils/date.js | 6 +- src/utils/freebusy.js | 2 +- src/utils/router.js | 2 +- src/views/Appointments/Booking.vue | 8 +-- src/views/Appointments/Confirmation.vue | 4 +- src/views/Calendar.vue | 60 +++++++++---------- src/views/ContactsMenuAvailability.vue | 14 ++--- src/views/EditFull.vue | 46 +++++++------- src/views/EditSimple.vue | 28 ++++----- src/views/Proposal/ProposalEditor.vue | 2 +- .../defaults/defaultAlarmProvider.test.js | 2 +- .../unit/defaults/defaultCategories.test.js | 2 +- .../unit/filters/alarmFormat.test.js | 2 +- .../unit/filters/dateFormat.test.js | 2 +- .../unit/filters/dateRangeFormat.test.js | 2 +- .../unit/filters/recurrenceRuleFormat.test.js | 2 +- .../unit/fullcalendar/duration.test.js | 2 +- .../eventSources/eventSource.test.js | 24 ++++---- ...reeBusyResourceEventSourceFunction.test.js | 12 ++-- .../interaction/eventAllow.test.js | 2 +- .../interaction/eventClick.test.js | 10 ++-- .../interaction/eventDrop.test.js | 28 ++++----- .../interaction/eventResize.test.js | 20 +++---- .../interaction/navLinkDayClick.test.js | 6 +- .../interaction/navLinkWeekClick.test.js | 6 +- .../fullcalendar/interaction/select.test.js | 4 +- .../rendering/eventDidMount.test.js | 6 +- .../rendering/eventLimitText.test.js | 2 +- .../fullcalendar/rendering/eventOrder.test.js | 2 +- .../fullcalendar/rendering/windowResize.js | 2 +- tests/javascript/unit/models/alarm.test.js | 12 ++-- .../unit/models/appointmentConfig.test.js | 2 +- tests/javascript/unit/models/attendee.test.js | 2 +- tests/javascript/unit/models/calendar.test.js | 6 +- .../unit/models/calendarObject.test.js | 4 +- .../unit/models/calendarShare.test.js | 2 +- tests/javascript/unit/models/contact.test.js | 2 +- tests/javascript/unit/models/event.test.js | 24 ++++---- .../javascript/unit/models/principal.test.js | 2 +- .../unit/models/recurrenceRule.test.js | 8 +-- tests/javascript/unit/models/rfcProps.test.js | 6 +- .../unit/models/schedulingObject.test.js | 4 +- .../unit/services/freeBusyService.test.js | 6 +- .../unit/services/freeBusySlotService.test.js | 2 +- .../javascript/unit/services/settings.test.js | 6 +- .../unit/services/talkService.test.js | 2 +- .../unit/services/windowTitleService.test.js | 12 ++-- .../unit/store/calendarObjects.test.js | 2 +- tests/javascript/unit/store/calendars.test.js | 2 +- tests/javascript/unit/store/contacts.test.js | 2 +- .../unit/store/davRestrictions.test.js | 2 +- .../javascript/unit/store/importFiles.test.js | 2 +- .../javascript/unit/store/importState.test.js | 4 +- tests/javascript/unit/store/settings.test.js | 28 ++++----- tests/javascript/unit/store/tasks.test.js | 2 +- tests/javascript/unit/utils/alarms.test.js | 2 +- tests/javascript/unit/utils/attendee.test.js | 2 +- .../unit/utils/closestColor.test.js | 2 +- tests/javascript/unit/utils/color.test.js | 2 +- tests/javascript/unit/utils/date.test.js | 6 +- tests/javascript/unit/utils/freebusy.test.js | 6 +- tests/javascript/unit/utils/randomId.test.js | 2 +- .../javascript/unit/utils/recurrence.test.js | 2 +- tests/javascript/unit/utils/router.test.js | 2 +- tests/javascript/unit/utils/settings.test.js | 2 +- 192 files changed, 715 insertions(+), 675 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index f405c07405..200abc3997 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -4,6 +4,7 @@ */ import { recommended } from '@nextcloud/eslint-config' +import eslintPluginPath from 'eslint-plugin-path' import pluginVue from 'eslint-plugin-vue' import tseslint from 'typescript-eslint' import vitest from '@vitest/eslint-plugin' @@ -45,4 +46,13 @@ export default [ }, }, }, + { + files: ['**/*.js', '**/*.vue', '**/*.ts'], + plugins: { + path: eslintPluginPath, + }, + rules: { + 'path/only-absolute-imports': 'error', + }, + }, ] diff --git a/package-lock.json b/package-lock.json index 411d6d7ccf..04455d75b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,6 +69,7 @@ "@vue/compiler-sfc": "^3.5.41", "@vue/test-utils": "^2.4.11", "css-loader": "^7.1.4", + "eslint-plugin-path": "^2.1.0", "jsdom": "^30.0.1", "sass": "^1.102.0", "sass-loader": "^17.0.0", @@ -6618,6 +6619,24 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-path/-/eslint-plugin-path-2.1.0.tgz", + "integrity": "sha512-J5l6qTi+eZyHJWPlpfK8iL/+mYgz62dHVmOtwnSzuBfH+DrcLadolCh6Bpe33/kwyx1M8agwENz4/94192czBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "^8.29.0", + "@typescript-eslint/utils": "^8.29.0", + "load-tsconfig": "^0.2.5" + }, + "engines": { + "node": ">= 12.22.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0" + } + }, "node_modules/eslint-plugin-perfectionist": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-5.10.0.tgz", @@ -9270,6 +9289,16 @@ "integrity": "sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==", "license": "MIT" }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", diff --git a/package.json b/package.json index fec1a04180..593f77e8f7 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "@vue/compiler-sfc": "^3.5.41", "@vue/test-utils": "^2.4.11", "css-loader": "^7.1.4", + "eslint-plugin-path": "^2.1.0", "jsdom": "^30.0.1", "sass": "^1.102.0", "sass-loader": "^17.0.0", diff --git a/src/appointments/main-booking.js b/src/appointments/main-booking.js index a205e8b710..851718b6d8 100644 --- a/src/appointments/main-booking.js +++ b/src/appointments/main-booking.js @@ -8,7 +8,7 @@ import { loadState } from '@nextcloud/initial-state' import { translate, translatePlural } from '@nextcloud/l10n' import { linkTo } from '@nextcloud/router' import { createApp } from 'vue' -import Booking from '../views/Appointments/Booking.vue' +import Booking from '@/views/Appointments/Booking.vue' // CSP config for webpack dynamic chunk loading diff --git a/src/appointments/main-confirmation.js b/src/appointments/main-confirmation.js index 14a142e44b..445710504a 100644 --- a/src/appointments/main-confirmation.js +++ b/src/appointments/main-confirmation.js @@ -8,7 +8,7 @@ import { loadState } from '@nextcloud/initial-state' import { translate, translatePlural } from '@nextcloud/l10n' import { linkTo } from '@nextcloud/router' import { createApp } from 'vue' -import Confirmation from '../views/Appointments/Confirmation.vue' +import Confirmation from '@/views/Appointments/Confirmation.vue' // CSP config for webpack dynamic chunk loading __webpack_nonce__ = btoa(getRequestToken()) diff --git a/src/appointments/main-overview.js b/src/appointments/main-overview.js index 4a01216fd9..1fdbcae94a 100644 --- a/src/appointments/main-overview.js +++ b/src/appointments/main-overview.js @@ -8,7 +8,7 @@ import { loadState } from '@nextcloud/initial-state' import { translate, translatePlural } from '@nextcloud/l10n' import { linkTo } from '@nextcloud/router' import { createApp } from 'vue' -import Overview from '../views/Appointments/Overview.vue' +import Overview from '@/views/Appointments/Overview.vue' // CSP config for webpack dynamic chunk loading diff --git a/src/components/AppNavigation/AppNavigationHeader.vue b/src/components/AppNavigation/AppNavigationHeader.vue index 8a5bd8821c..f0917145fa 100644 --- a/src/components/AppNavigation/AppNavigationHeader.vue +++ b/src/components/AppNavigation/AppNavigationHeader.vue @@ -7,10 +7,10 @@ import { t } from '@nextcloud/l10n' import { computed } from 'vue' import NcAppNavigationSearch from '@nextcloud/vue/components/NcAppNavigationSearch' -import AppNavigationHeaderDatePicker from './AppNavigationHeader/AppNavigationHeaderDatePicker.vue' -import AppNavigationHeaderNewEvent from './AppNavigationHeader/AppNavigationHeaderNewEvent.vue' -import AppNavigationHeaderTodayButton from './AppNavigationHeader/AppNavigationHeaderTodayButton.vue' -import AppNavigationHeaderViewMenu from './AppNavigationHeader/AppNavigationHeaderViewMenu.vue' +import AppNavigationHeaderDatePicker from '@/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue' +import AppNavigationHeaderNewEvent from '@/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue' +import AppNavigationHeaderTodayButton from '@/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue' +import AppNavigationHeaderViewMenu from '@/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue' import useSettingsStore from '@/store/settings.js' defineProps<{ diff --git a/src/components/AppNavigation/AppointmentConfigList.vue b/src/components/AppNavigation/AppointmentConfigList.vue index 229334dfdf..09384c0c6f 100644 --- a/src/components/AppNavigation/AppointmentConfigList.vue +++ b/src/components/AppNavigation/AppointmentConfigList.vue @@ -11,7 +11,7 @@ import { } from '@nextcloud/vue' import { computed, ref } from 'vue' import PlusIcon from 'vue-material-design-icons/Plus.vue' -import AppointmentConfigListItem from './AppointmentConfigList/AppointmentConfigListItem.vue' +import AppointmentConfigListItem from '@/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue' import AppointmentConfigModal from '@/components/AppointmentConfigModal.vue' import NoEmailAddressWarning from '@/components/AppointmentConfigModal/NoEmailAddressWarning.vue' import AppointmentConfig from '@/models/appointmentConfig.js' diff --git a/src/components/AppNavigation/CalendarList.vue b/src/components/AppNavigation/CalendarList.vue index 9ba779bb6c..7d28adcb4d 100644 --- a/src/components/AppNavigation/CalendarList.vue +++ b/src/components/AppNavigation/CalendarList.vue @@ -13,10 +13,10 @@ import debounce from 'debounce' import pLimit from 'p-limit' import { computed, onMounted, reactive, ref, watch } from 'vue' import Draggable from 'vuedraggable' -import CalendarListItem from './CalendarList/CalendarListItem.vue' -import CalendarListItemLoadingPlaceholder from './CalendarList/CalendarListItemLoadingPlaceholder.vue' -import CalendarListNew from './CalendarList/CalendarListNew.vue' -import PublicCalendarListItem from './CalendarList/PublicCalendarListItem.vue' +import CalendarListItem from '@/components/AppNavigation/CalendarList/CalendarListItem.vue' +import CalendarListItemLoadingPlaceholder from '@/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue' +import CalendarListNew from '@/components/AppNavigation/CalendarList/CalendarListNew.vue' +import PublicCalendarListItem from '@/components/AppNavigation/CalendarList/PublicCalendarListItem.vue' import useCalendarsStore from '@/store/calendars.js' import usePrincipalsStore from '@/store/principals.js' import logger from '@/utils/logger.js' diff --git a/src/components/AppNavigation/CalendarList/CalendarListNew.vue b/src/components/AppNavigation/CalendarList/CalendarListNew.vue index 6b3fef39da..13bf1d4f06 100644 --- a/src/components/AppNavigation/CalendarList/CalendarListNew.vue +++ b/src/components/AppNavigation/CalendarList/CalendarListNew.vue @@ -30,7 +30,7 @@ import useSettingsStore from '@/store/settings.js' import { uidToHexColor } from '@/utils/color.js' import logger from '@/utils/logger.js' -const PublicCalendarSubscriptionPicker = defineAsyncComponent(() => import(/* webpackChunkName: "public-calendar-subscription-picker" */ '../../Subscription/PublicCalendarSubscriptionPicker.vue')) +const PublicCalendarSubscriptionPicker = defineAsyncComponent(() => import(/* webpackChunkName: "public-calendar-subscription-picker" */ '@/components/Subscription/PublicCalendarSubscriptionPicker.vue')) const calendarsStore = useCalendarsStore() const settingsStore = useSettingsStore() diff --git a/src/components/AppNavigation/CalendarList/Trashbin.vue b/src/components/AppNavigation/CalendarList/Trashbin.vue index 57599996b8..533ae0c310 100644 --- a/src/components/AppNavigation/CalendarList/Trashbin.vue +++ b/src/components/AppNavigation/CalendarList/Trashbin.vue @@ -116,10 +116,10 @@ import { } from '@nextcloud/vue' import { mapState, mapStores } from 'pinia' import IconDelete from 'vue-material-design-icons/TrashCanOutline.vue' -import useCalendarsStore from '../../../store/calendars.js' -import useSettingsStore from '../../../store/settings.js' -import { uidToHexColor } from '../../../utils/color.js' -import logger from '../../../utils/logger.js' +import useCalendarsStore from '@/store/calendars.js' +import useSettingsStore from '@/store/settings.js' +import { uidToHexColor } from '@/utils/color.js' +import logger from '@/utils/logger.js' export default { name: 'Trashbin', diff --git a/src/components/AppNavigation/EditCalendarModal.vue b/src/components/AppNavigation/EditCalendarModal.vue index 94dbff2ee8..06ed11e6c9 100644 --- a/src/components/AppNavigation/EditCalendarModal.vue +++ b/src/components/AppNavigation/EditCalendarModal.vue @@ -130,20 +130,20 @@ import CheckIcon from 'vue-material-design-icons/Check.vue' import CloseIcon from 'vue-material-design-icons/Close.vue' import DeleteIcon from 'vue-material-design-icons/TrashCanOutline.vue' import DownloadIcon from 'vue-material-design-icons/TrayArrowDown.vue' -import InternalLink from './EditCalendarModal/InternalLink.vue' -import PublishCalendar from './EditCalendarModal/PublishCalendar.vue' -import ShareItem from './EditCalendarModal/ShareItem.vue' -import SharingSearch from './EditCalendarModal/SharingSearch.vue' -import { getDefaultAlarms } from '../../defaults/defaultAlarmProvider.js' -import alarmFormat from '../../filters/alarmFormat.js' -import useCalendarsStore from '../../store/calendars.js' -import useSettingsStore from '../../store/settings.js' +import InternalLink from '@/components/AppNavigation/EditCalendarModal/InternalLink.vue' +import PublishCalendar from '@/components/AppNavigation/EditCalendarModal/PublishCalendar.vue' +import ShareItem from '@/components/AppNavigation/EditCalendarModal/ShareItem.vue' +import SharingSearch from '@/components/AppNavigation/EditCalendarModal/SharingSearch.vue' +import { getDefaultAlarms } from '@/defaults/defaultAlarmProvider.js' +import alarmFormat from '@/filters/alarmFormat.js' +import useCalendarsStore from '@/store/calendars.js' +import useSettingsStore from '@/store/settings.js' import { getAmountAndUnitForTimedEvents, getAmountHoursMinutesAndUnitForAllDayEvents, -} from '../../utils/alarms.js' -import logger from '../../utils/logger.js' -import { isAfterVersion } from '../../utils/nextcloudVersion.ts' +} from '@/utils/alarms.js' +import logger from '@/utils/logger.js' +import { isAfterVersion } from '@/utils/nextcloudVersion.ts' export default { name: 'EditCalendarModal', diff --git a/src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue b/src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue index d569380c73..21de5d728f 100644 --- a/src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue +++ b/src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue @@ -150,7 +150,7 @@ import Email from 'vue-material-design-icons/EmailOutline.vue' import LinkIcon from 'vue-material-design-icons/Link.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue' import Delete from 'vue-material-design-icons/TrashCanOutline.vue' -import useCalendarsStore from '../../../store/calendars.js' +import useCalendarsStore from '@/store/calendars.js' import logger from '@/utils/logger.js' export default { diff --git a/src/components/AppNavigation/EditCalendarModal/ShareItem.vue b/src/components/AppNavigation/EditCalendarModal/ShareItem.vue index 6e1d013100..481bc715d4 100644 --- a/src/components/AppNavigation/EditCalendarModal/ShareItem.vue +++ b/src/components/AppNavigation/EditCalendarModal/ShareItem.vue @@ -46,10 +46,10 @@ import { mapStores } from 'pinia' import AccountGroupIcon from 'vue-material-design-icons/AccountGroupOutline.vue' import AccountMultiple from 'vue-material-design-icons/AccountMultipleOutline.vue' import Delete from 'vue-material-design-icons/TrashCanOutline.vue' -import useCalendarsStore from '../../../store/calendars.js' -import usePrincipalsStore from '../../../store/principals.js' -import { randomId } from '../../../utils/randomId.js' +import useCalendarsStore from '@/store/calendars.js' +import usePrincipalsStore from '@/store/principals.js' import logger from '@/utils/logger.js' +import { randomId } from '@/utils/randomId.js' export default { name: 'ShareItem', diff --git a/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue b/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue index e5b52e9d2a..63ddf30642 100644 --- a/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue +++ b/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue @@ -55,9 +55,9 @@ import debounce from 'debounce' import { mapStores } from 'pinia' import AccountGroupIcon from 'vue-material-design-icons/AccountGroup.vue' import AccountMultiple from 'vue-material-design-icons/AccountMultiple.vue' -import { principalPropertySearchByDisplaynameOrEmail } from '../../../services/caldavService.js' -import useCalendarsStore from '../../../store/calendars.js' -import usePrincipalsStore from '../../../store/principals.js' +import { principalPropertySearchByDisplaynameOrEmail } from '@/services/caldavService.js' +import useCalendarsStore from '@/store/calendars.js' +import usePrincipalsStore from '@/store/principals.js' import { urldecode } from '@/utils/url.ts' export default { diff --git a/src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue b/src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue index 604ee8f2cc..8ad8b697e8 100644 --- a/src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue +++ b/src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue @@ -41,7 +41,7 @@