Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down Expand Up @@ -45,4 +46,13 @@ export default [
},
},
},
{
files: ['**/*.js', '**/*.vue', '**/*.ts'],
plugins: {
path: eslintPluginPath,
},
rules: {
'path/only-absolute-imports': 'error',
},
},
]
29 changes: 29 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion src/appointments/main-booking.js
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/appointments/main-confirmation.js
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
2 changes: 1 addition & 1 deletion src/appointments/main-overview.js
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
8 changes: 4 additions & 4 deletions src/components/AppNavigation/AppNavigationHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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<{
Expand Down
2 changes: 1 addition & 1 deletion src/components/AppNavigation/AppointmentConfigList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
} 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'
Expand Down Expand Up @@ -55,18 +55,18 @@
return [...configs.value].sort((config1, config2) => config1.name.localeCompare(config2.name))
})

function closeModal(): void {

Check warning on line 58 in src/components/AppNavigation/AppointmentConfigList.vue

View workflow job for this annotation

GitHub Actions / NPM lint

Missing JSDoc comment
showModalForNewConfig.value = false
}

function calendarUrlToUri(url: string): string {

Check warning on line 62 in src/components/AppNavigation/AppointmentConfigList.vue

View workflow job for this annotation

GitHub Actions / NPM lint

Missing JSDoc comment
// Trim trailing slash and split into URL parts
const parts = url.replace(/\/$/, '').split('/')
// The last one is the URI
return parts[parts.length - 1]
}

async function deleteConfig(config: AppointmentConfig): Promise<void> {

Check warning on line 69 in src/components/AppNavigation/AppointmentConfigList.vue

View workflow job for this annotation

GitHub Actions / NPM lint

Missing JSDoc comment
logger.info('Deleting config', { config })

try {
Expand Down
8 changes: 4 additions & 4 deletions src/components/AppNavigation/CalendarList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
8 changes: 4 additions & 4 deletions src/components/AppNavigation/CalendarList/Trashbin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
22 changes: 11 additions & 11 deletions src/components/AppNavigation/EditCalendarModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<script>
import { NcButton } from '@nextcloud/vue'
import { mapStores } from 'pinia'
import useWidgetStore from '../../../store/widget.js'
import useWidgetStore from '@/store/widget.js'

export default {
name: 'EmbedHeaderViewButtons',
Expand Down
6 changes: 3 additions & 3 deletions src/components/AppNavigation/EmbedTopNavigation.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import {
} from '@nextcloud/vue'
import CalendarBlank from 'vue-material-design-icons/CalendarBlankOutline.vue'
import Download from 'vue-material-design-icons/TrayArrowDown.vue'
import AppNavigationHeaderDatePicker from './AppNavigationHeader/AppNavigationHeaderDatePicker.vue'
import AppNavigationHeaderTodayButton from './EmbedHeader/EmbedHeaderTodayButton.vue'
import AppNavigationHeaderViewButtons from './EmbedHeader/EmbedHeaderViewButtons.vue'
import AppNavigationHeaderDatePicker from '@/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue'
import AppNavigationHeaderTodayButton from '@/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue'
import AppNavigationHeaderViewButtons from '@/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue'
import useCalendarsStore from '@/store/calendars.js'
import logger from '@/utils/logger.js'

Expand Down
34 changes: 17 additions & 17 deletions src/components/AppNavigation/Settings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -169,30 +169,30 @@ import {
} from '@nextcloud/vue'
import { mapState, mapStores } from 'pinia'
import CogIcon from 'vue-material-design-icons/CogOutline.vue'
import CalendarPicker from '../Shared/CalendarPicker.vue'
import EventLegend from './Settings/EventLegend.vue'
import SettingsAttachmentsFolder from './Settings/SettingsAttachmentsFolder.vue'
import SettingsDelegationSection from './Settings/SettingsDelegationSection.vue'
import SettingsImportSection from './Settings/SettingsImportSection.vue'
import SettingsTimezoneSelect from './Settings/SettingsTimezoneSelect.vue'
import ShortcutOverview from './Settings/ShortcutOverview.vue'
import { getDefaultAlarms } from '../../defaults/defaultAlarmProvider.js'
import alarmFormat from '../../filters/alarmFormat.js'
import EventLegend from '@/components/AppNavigation/Settings/EventLegend.vue'
import SettingsAttachmentsFolder from '@/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue'
import SettingsDelegationSection from '@/components/AppNavigation/Settings/SettingsDelegationSection.vue'
import SettingsImportSection from '@/components/AppNavigation/Settings/SettingsImportSection.vue'
import SettingsTimezoneSelect from '@/components/AppNavigation/Settings/SettingsTimezoneSelect.vue'
import ShortcutOverview from '@/components/AppNavigation/Settings/ShortcutOverview.vue'
import CalendarPicker from '@/components/Shared/CalendarPicker.vue'
import { getDefaultAlarms } from '@/defaults/defaultAlarmProvider.js'
import alarmFormat from '@/filters/alarmFormat.js'
import {
IMPORT_STAGE_DEFAULT,
IMPORT_STAGE_IMPORTING,
IMPORT_STAGE_PROCESSING,
} from '../../models/consts.js'
import useCalendarsStore from '../../store/calendars.js'
import useImportFilesStore from '../../store/importFiles.js'
import usePrincipalsStore from '../../store/principals.js'
import useSettingsStore from '../../store/settings.js'
} from '@/models/consts.js'
import useCalendarsStore from '@/store/calendars.js'
import useImportFilesStore from '@/store/importFiles.js'
import usePrincipalsStore from '@/store/principals.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: 'Settings',
Expand Down
2 changes: 1 addition & 1 deletion src/components/AppNavigation/Settings/ImportScreen.vue
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

<script>
import { NcModal as Modal, NcButton } from '@nextcloud/vue'
import ImportScreenRow from './ImportScreenRow.vue'
import ImportScreenRow from '@/components/AppNavigation/Settings/ImportScreenRow.vue'

export default {
name: 'ImportScreen',
Expand Down
10 changes: 5 additions & 5 deletions src/components/AppNavigation/Settings/ImportScreenRow.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
<script>
import { getLanguage } from '@nextcloud/l10n'
import { mapStores } from 'pinia'
import CalendarPicker from '../../Shared/CalendarPicker.vue'
import useCalendarsStore from '../../../store/calendars.js'
import useImportFilesStore from '../../../store/importFiles.js'
import usePrincipalsStore from '../../../store/principals.js'
import { uidToHexColor } from '../../../utils/color.js'
import CalendarPicker from '@/components/Shared/CalendarPicker.vue'
import useCalendarsStore from '@/store/calendars.js'
import useImportFilesStore from '@/store/importFiles.js'
import usePrincipalsStore from '@/store/principals.js'
import { uidToHexColor } from '@/utils/color.js'

export default {
name: 'ImportScreenRow',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import { NcFormBoxButton } from '@nextcloud/vue'
import debounce from 'debounce'
import { mapState, mapStores } from 'pinia'
import IconFolderOpen from 'vue-material-design-icons/FolderOpenOutline.vue'
import useSettingsStore from '../../../store/settings.js'
import logger from '../../../utils/logger.js'
import useSettingsStore from '@/store/settings.js'
import logger from '@/utils/logger.js'

export default {
name: 'SettingsAttachmentsFolder',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,18 @@ import {
import { NcButton } from '@nextcloud/vue'
import { mapState, mapStores } from 'pinia'
import Upload from 'vue-material-design-icons/TrayArrowUp.vue'
import ImportScreen from './ImportScreen.vue'
import ImportScreen from '@/components/AppNavigation/Settings/ImportScreen.vue'
import {
IMPORT_STAGE_AWAITING_USER_SELECT,
IMPORT_STAGE_DEFAULT,
IMPORT_STAGE_IMPORTING,
IMPORT_STAGE_PROCESSING,
} from '../../../models/consts.js'
import { readFileAsText } from '../../../services/readFileAsTextService.js'
import useCalendarObjectsStore from '../../../store/calendarObjects.js'
import useCalendarsStore from '../../../store/calendars.js'
import useImportFilesStore from '../../../store/importFiles.js'
import useImportStateStore from '../../../store/importState.js'
} from '@/models/consts.js'
import { readFileAsText } from '@/services/readFileAsTextService.js'
import useCalendarObjectsStore from '@/store/calendarObjects.js'
import useCalendarsStore from '@/store/calendars.js'
import useImportFilesStore from '@/store/importFiles.js'
import useImportStateStore from '@/store/importState.js'
import logger from '@/utils/logger.js'

export default {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ import {
} from '@nextcloud/dialogs'
import { NcTimezonePicker as TimezonePicker } from '@nextcloud/vue'
import { mapState, mapStores } from 'pinia'
import useSettingsStore from '../../../store/settings.js'
import { randomId } from '../../../utils/randomId.js'
import useSettingsStore from '@/store/settings.js'
import logger from '@/utils/logger.js'
import { randomId } from '@/utils/randomId.js'

export default {
name: 'SettingsTimezoneSelect',
Expand Down
6 changes: 3 additions & 3 deletions src/components/AppNavigation/UnscheduledTasksList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@

<script>
import { mapStores } from 'pinia'
import UnscheduledTasksListItem from './UnscheduledTasksList/UnscheduledTasksListItem.vue'
import useCalendarsStore from '../../store/calendars.js'
import useTasksStore from '../../store/unscheduledTasks.js'
import UnscheduledTasksListItem from '@/components/AppNavigation/UnscheduledTasksList/UnscheduledTasksListItem.vue'
import useCalendarsStore from '@/store/calendars.js'
import useTasksStore from '@/store/unscheduledTasks.js'

export default {
name: 'UnscheduledTasksList',
Expand Down
Loading
Loading