Bump @nextcloud/eslint-config from 6.1.2 to 8.1.2

Fix all file extension related to new rules from eslint-config-8.1.2

Bumps [@nextcloud/eslint-config](https://github.com/nextcloud/eslint-config) from 6.1.2 to 8.1.2.
- [Release notes](https://github.com/nextcloud/eslint-config/releases)
- [Changelog](https://github.com/nextcloud/eslint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/eslint-config/compare/v6.1.2...v8.1.2)

---
updated-dependencies:
- dependency-name: "@nextcloud/eslint-config"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
dependabot[bot] 2022-11-05 07:40:20 +00:00 committed by julia.kirschenheuter
parent ec0dd03c67
commit 85ffd7158b
69 changed files with 1315 additions and 947 deletions

View File

@ -18,4 +18,8 @@ module.exports = {
},
},
},
rules: {
'vue/no-reserved-component-names': 'off', // @nextcloud/vue has Button, Content components restricted by rule
},
}

1365
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@
"@babel/preset-env": "^7.20.2",
"@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/eslint-config": "^6.1.2",
"@nextcloud/eslint-config": "^8.1.2",
"@nextcloud/stylelint-config": "^2.3.0",
"@nextcloud/typings": "^1.5.0",
"@nextcloud/webpack-vue-config": "~5.1.0",

View File

@ -21,7 +21,7 @@
*/
import Vue from 'vue'
import AdminSettings from './components/AdminSettings'
import AdminSettings from './components/AdminSettings.vue'
document.addEventListener('DOMContentLoaded', main)

View File

@ -29,9 +29,9 @@
</ActionButton>
</template>
<script>
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionsMixin from '../../mixins/ActionsMixin'
import IconCopy from 'vue-material-design-icons/ContentCopy'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionsMixin from '../../mixins/ActionsMixin.js'
import IconCopy from 'vue-material-design-icons/ContentCopy.vue'
export default {
name: 'ActionCopyNtoFN',

View File

@ -28,8 +28,8 @@
</ActionCheckbox>
</template>
<script>
import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'
import ActionsMixin from '../../mixins/ActionsMixin'
import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'
import ActionsMixin from '../../mixins/ActionsMixin.js'
export default {
name: 'ActionToggleYear',

View File

@ -24,8 +24,7 @@
<div id="contacts" class="section">
<h2>{{ t('contacts', 'Contacts') }}</h2>
<p>
<input
id="allow-social-sync"
<input id="allow-social-sync"
v-model="allowSocialSync"
type="checkbox"
class="checkbox"

View File

@ -5,10 +5,10 @@
</template>
<script>
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent'
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'
import OrgChart from '../OrgChart.vue'
import { getChart, transformNode } from '../../utils/chartUtils'
import { getChart, transformNode } from '../../utils/chartUtils.js'
export default {
name: 'ChartContent',

View File

@ -24,8 +24,7 @@
<AppContent v-if="!circle">
<EmptyContent :title="t('contacts', 'Please select a circle')">
<template #icon>
<IconCircles
:size="20" />
<IconCircles :size="20" />
</template>
</EmptyContent>
</AppContent>
@ -41,8 +40,7 @@
<AppContent v-else :show-details.sync="showDetails">
<!-- member list -->
<template #list>
<MemberList
:list="members"
<MemberList :list="members"
:loading="loadingList"
:show-details.sync="showDetails" />
</template>
@ -60,8 +58,7 @@
<EmptyContent v-else :title="t('contacts', 'You are not a member of {circle}', { circle: circle.displayName})">
<template #icon>
<IconCircles
:size="20" />
<IconCircles :size="20" />
</template>
</EmptyContent>
</template>
@ -70,14 +67,14 @@
</template>
<script>
import { showError } from '@nextcloud/dialogs'
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile'
import IconCircles from '../Icons/IconCircles'
import CircleDetails from '../CircleDetails'
import MemberList from '../MemberList'
import RouterMixin from '../../mixins/RouterMixin'
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'
import IconCircles from '../Icons/IconCircles.vue'
import CircleDetails from '../CircleDetails.vue'
import MemberList from '../MemberList.vue'
import RouterMixin from '../../mixins/RouterMixin.js'
export default {
name: 'CircleContent',

View File

@ -32,8 +32,7 @@
<AppContent v-else-if="isEmptyGroup && !isRealGroup">
<EmptyContent :title="t('contacts', 'There are no contacts yet')">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
<template #desc>
<Button type="primary" @click="newContact">
@ -46,8 +45,7 @@
<AppContent v-else-if="isEmptyGroup && isRealGroup">
<EmptyContent :title=" t('contacts', 'There are no contacts in this group')">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
<template #desc>
<Button v-if="contacts.length === 0" type="primary" @click="addContactsToGroup(selectedGroup)">
@ -63,8 +61,7 @@
<AppContent v-else :show-details="showDetails" @update:showDetails="hideDetails">
<!-- contacts list -->
<template #list>
<ContactsList
:list="contactsList"
<ContactsList :list="contactsList"
:contacts="contacts"
:search-query="searchQuery" />
</template>
@ -75,15 +72,15 @@
</template>
<script>
import { emit } from '@nextcloud/event-bus'
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import ContactDetails from '../ContactDetails'
import ContactsList from '../ContactsList'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import RouterMixin from '../../mixins/RouterMixin'
import ContactDetails from '../ContactDetails.vue'
import ContactsList from '../ContactsList.vue'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import RouterMixin from '../../mixins/RouterMixin.js'
export default {
name: 'ContactsContent',

View File

@ -20,13 +20,11 @@
-
-->
<template>
<AppNavigationItem
:key="circle.key"
<AppNavigationItem :key="circle.key"
:title="circle.displayName"
:to="circle.router">
<template #icon>
<IconCircles
:size="20" />
<IconCircles :size="20" />
</template>
<template v-if="loadingAction" slot="actions">
<ActionText>
@ -38,28 +36,24 @@
</template>
<template v-else slot="actions">
<ActionButton
v-if="circle.canManageMembers"
<ActionButton v-if="circle.canManageMembers"
:close-after-click="true"
@click="addMemberToCircle">
<template #icon>
<IconAdd
:size="20" />
<IconAdd :size="20" />
</template>
{{ t('contacts', 'Add member') }}
</ActionButton>
<!-- copy circle link -->
<ActionLink
:href="circleUrl"
<ActionLink :href="circleUrl"
:icon="copyLinkIcon"
@click.stop.prevent="copyToClipboard(circleUrl)">
{{ copyButtonText }}
</ActionLink>
<!-- leave circle -->
<ActionButton
v-if="circle.canLeave"
<ActionButton v-if="circle.canLeave"
@click="confirmLeaveCircle">
{{ t('contacts', 'Leave circle') }}
<ExitToApp slot="icon"
@ -68,8 +62,7 @@
</ActionButton>
<!-- join circle -->
<ActionButton
v-else-if="!circle.isMember && circle.canJoin"
<ActionButton v-else-if="!circle.isMember && circle.canJoin"
:disabled="loadingJoin"
@click="joinCircle">
{{ joinButtonTitle }}
@ -79,12 +72,10 @@
</ActionButton>
<!-- delete circle -->
<ActionButton
v-if="circle.canDelete"
<ActionButton v-if="circle.canDelete"
@click="confirmDeleteCircle">
<template #icon>
<IconDelete
:size="20" />
<IconDelete :size="20" />
</template>
{{ t('contacts', 'Delete circle') }}
</ActionButton>
@ -99,19 +90,19 @@
</template>
<script>
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import ExitToApp from 'vue-material-design-icons/ExitToApp'
import IconAdd from 'vue-material-design-icons/Plus'
import IconDelete from 'vue-material-design-icons/Delete'
import LocationEnter from 'vue-material-design-icons/LocationEnter'
import IconCircles from '../Icons/IconCircles'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import ExitToApp from 'vue-material-design-icons/ExitToApp.vue'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import LocationEnter from 'vue-material-design-icons/LocationEnter.vue'
import IconCircles from '../Icons/IconCircles.vue'
import Circle from '../../models/circle.ts'
import CircleActionsMixin from '../../mixins/CircleActionsMixin'
import CircleActionsMixin from '../../mixins/CircleActionsMixin.js'
export default {
name: 'CircleNavigationItem',

View File

@ -62,11 +62,11 @@
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
import { loadState } from '@nextcloud/initial-state'
import SettingsAddressbook from './Settings/SettingsAddressbook'
import SettingsNewAddressbook from './Settings/SettingsNewAddressbook'
import SettingsImportContacts from './Settings/SettingsImportContacts'
import SettingsSortContacts from './Settings/SettingsSortContacts'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'
import SettingsAddressbook from './Settings/SettingsAddressbook.vue'
import SettingsNewAddressbook from './Settings/SettingsNewAddressbook.vue'
import SettingsImportContacts from './Settings/SettingsImportContacts.vue'
import SettingsSortContacts from './Settings/SettingsSortContacts.vue'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
import { CONTACTS_SETTINGS } from '../../models/constants.ts'
import { NcAppSettingsDialog as AppSettingsDialog, NcAppSettingsSection as AppSettingsSection } from '@nextcloud/vue'

View File

@ -20,38 +20,30 @@
-
-->
<template>
<AppNavigationItem
:key="group.key"
<AppNavigationItem :key="group.key"
:to="group.router"
:title="group.name">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
<template slot="actions">
<ActionButton
:close-after-click="true"
<ActionButton :close-after-click="true"
@click="addContactsToGroup(group)">
<template #icon>
<IconAdd
:size="20" />
<IconAdd :size="20" />
</template>
{{ t('contacts', 'Add contacts') }}
</ActionButton>
<ActionButton
:close-after-click="true"
<ActionButton :close-after-click="true"
@click="downloadGroup(group)">
<template #icon>
<IconDownload
:size="20" />
<IconDownload :size="20" />
</template>
{{ t('contacts', 'Download') }}
</ActionButton>
<ActionButton
@click="emailGroup(group)">
<ActionButton @click="emailGroup(group)">
<template #icon>
<IconEmail
:size="20" />
<IconEmail :size="20" />
</template>
{{ t('contacts', 'Send email') }}
</ActionButton>
@ -70,13 +62,13 @@ import { emit } from '@nextcloud/event-bus'
import download from 'downloadjs'
import moment from 'moment'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import IconAdd from 'vue-material-design-icons/Plus'
import IconDownload from 'vue-material-design-icons/Download'
import IconEmail from 'vue-material-design-icons/Email'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import IconDownload from 'vue-material-design-icons/Download.vue'
import IconEmail from 'vue-material-design-icons/Email.vue'
export default {
name: 'GroupNavigationItem',

View File

@ -40,8 +40,7 @@
params: { selectedGroup: GROUP_ALL_CONTACTS },
}">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
<template #counter>
<NcCounterBubble v-if="sortedContacts.length">
@ -61,8 +60,7 @@
icon="icon-category-monitoring" />
<!-- Not grouped group -->
<AppNavigationItem
v-if="ungroupedContacts.length > 0"
<AppNavigationItem v-if="ungroupedContacts.length > 0"
id="notgrouped"
:title="GROUP_NO_GROUP_CONTACTS"
:to="{
@ -70,8 +68,7 @@
params: { selectedGroup: GROUP_NO_GROUP_CONTACTS },
}">
<template #icon>
<IconUser
:size="20" />
<IconUser :size="20" />
</template>
<template #counter>
<NcCounterBubble v-if="ungroupedContacts.length">
@ -81,8 +78,7 @@
</AppNavigationItem>
<!-- Recently contacted group -->
<AppNavigationItem
v-if="isContactsInteractionEnabled && recentlyContactedContacts && recentlyContactedContacts.contacts.length > 0"
<AppNavigationItem v-if="isContactsInteractionEnabled && recentlyContactedContacts && recentlyContactedContacts.contacts.length > 0"
id="recentlycontacted"
:title="GROUP_RECENTLY_CONTACTED"
:to="{
@ -90,8 +86,7 @@
params: { selectedGroup: GROUP_RECENTLY_CONTACTED },
}">
<template #icon>
<IconRecentlyContacted
:size="20" />
<IconRecentlyContacted :size="20" />
</template>
<template #counter>
<NcCounterBubble v-if="recentlyContactedContacts.contacts.length">
@ -100,8 +95,7 @@
</template>
</AppNavigationItem>
<AppNavigationCaption
id="newgroup"
<AppNavigationCaption id="newgroup"
:force-menu="true"
:menu-open.sync="isNewGroupMenuOpen"
:title="t('contacts', 'Groups')"
@ -117,31 +111,27 @@
</template>
{{ createGroupError ? createGroupError : t('contacts', 'Create a new group') }}
</ActionText>
<ActionInput
icon=""
<ActionInput icon=""
:placeholder="t('contacts','Group name')"
@submit.prevent.stop="createNewGroup" />
</template>
</AppNavigationCaption>
<!-- Custom groups -->
<GroupNavigationItem
v-for="group in ellipsisGroupsMenu"
<GroupNavigationItem v-for="group in ellipsisGroupsMenu"
:key="group.key"
:group="group" />
<template v-if="isCirclesEnabled">
<!-- Toggle groups ellipsis -->
<AppNavigationItem
v-if="groupsMenu.length > ELLIPSIS_COUNT"
<AppNavigationItem v-if="groupsMenu.length > ELLIPSIS_COUNT"
:title="collapseGroupsTitle"
class="app-navigation__collapse"
icon=""
@click="onToggleGroups" />
<!-- New circle button caption and modal -->
<AppNavigationCaption
id="newcircle"
<AppNavigationCaption id="newcircle"
:title="t('contacts', 'Circles')">
<template #actions>
<NcActionButton @click="toggleNewCircleModal">
@ -159,14 +149,12 @@
<template v-if="circlesMenu.length > 0">
<!-- Circles -->
<CircleNavigationItem
v-for="circle in ellipsisCirclesMenu"
<CircleNavigationItem v-for="circle in ellipsisCirclesMenu"
:key="circle.key"
:circle="circle" />
<!-- Toggle circles ellipsis -->
<AppNavigationItem
v-if="circlesMenu.length > ELLIPSIS_COUNT"
<AppNavigationItem v-if="circlesMenu.length > ELLIPSIS_COUNT"
:title="collapseCirclesTitle"
class="app-navigation__collapse"
icon=""
@ -203,33 +191,33 @@
<script>
import { GROUP_ALL_CONTACTS, CHART_ALL_CONTACTS, GROUP_NO_GROUP_CONTACTS, GROUP_RECENTLY_CONTACTED, ELLIPSIS_COUNT, CIRCLE_DESC, CONTACTS_SETTINGS } from '../../models/constants.ts'
import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText'
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import AppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem'
import AppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js'
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import AppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'
import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'
import AppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import naturalCompare from 'string-natural-compare'
import CircleNavigationItem from './CircleNavigationItem'
import CircleNavigationItem from './CircleNavigationItem.vue'
import Cog from 'vue-material-design-icons/Cog.vue'
import ContactsSettings from './ContactsSettings'
import GroupNavigationItem from './GroupNavigationItem'
import NewCircleIntro from '../EntityPicker/NewCircleIntro'
import ContactsSettings from './ContactsSettings.vue'
import GroupNavigationItem from './GroupNavigationItem.vue'
import NewCircleIntro from '../EntityPicker/NewCircleIntro.vue'
import isCirclesEnabled from '../../services/isCirclesEnabled'
import isContactsInteractionEnabled from '../../services/isContactsInteractionEnabled'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import IconUser from 'vue-material-design-icons/Account'
import IconRecentlyContacted from '../Icons/IconRecentlyContacted'
import IconAdd from 'vue-material-design-icons/Plus'
import IconError from 'vue-material-design-icons/AlertCircle'
import isCirclesEnabled from '../../services/isCirclesEnabled.js'
import isContactsInteractionEnabled from '../../services/isContactsInteractionEnabled.js'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import IconUser from 'vue-material-design-icons/Account.vue'
import IconRecentlyContacted from '../Icons/IconRecentlyContacted.vue'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import IconError from 'vue-material-design-icons/AlertCircle.vue'
import RouterMixin from '../../mixins/RouterMixin'
import RouterMixin from '../../mixins/RouterMixin.js'
import { showError } from '@nextcloud/dialogs'
export default {

View File

@ -45,16 +45,14 @@
<!-- popovermenu -->
<Actions class="addressbook__menu" menu-align="right">
<!-- copy addressbook link -->
<ActionLink
:href="addressbook.url"
<ActionLink :href="addressbook.url"
:icon="copyLinkIcon"
@click.stop.prevent="copyToClipboard(addressbookUrl)">
{{ copyButtonText }}
</ActionLink>
<!-- download addressbook -->
<ActionLink
:href="addressbook.url + '?export'">
<ActionLink :href="addressbook.url + '?export'">
<template #icon>
<IconDownload :size="20" />
</template>
@ -113,22 +111,22 @@
</template>
<script>
import Actions from '@nextcloud/vue/dist/Components/NcActions'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput'
import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import IconDownload from 'vue-material-design-icons/Download'
import IconRename from 'vue-material-design-icons/Pencil'
import IconDelete from 'vue-material-design-icons/Delete'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import IconShare from 'vue-material-design-icons/ShareVariant'
import ShareAddressBook from './SettingsAddressbookShare'
import Actions from '@nextcloud/vue/dist/Components/NcActions.js'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'
import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import IconDownload from 'vue-material-design-icons/Download.vue'
import IconRename from 'vue-material-design-icons/Pencil.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import IconShare from 'vue-material-design-icons/ShareVariant.vue'
import ShareAddressBook from './SettingsAddressbookShare.vue'
import { showError } from '@nextcloud/dialogs'
import CopyToClipboardMixin from '../../../mixins/CopyToClipboardMixin'
import CopyToClipboardMixin from '../../../mixins/CopyToClipboardMixin.js'
export default {
name: 'SettingsAddressbook',

View File

@ -22,8 +22,7 @@
<template>
<div class="addressbook-shares">
<Multiselect
id="users-groups-search"
<Multiselect id="users-groups-search"
:options="usersOrGroups"
:searchable="true"
:internal-search="false"
@ -48,10 +47,10 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import client from '../../../services/cdav'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import client from '../../../services/cdav.js'
import addressBookSharee from './SettingsAddressbookSharee'
import addressBookSharee from './SettingsAddressbookSharee.vue'
import debounce from 'debounce'
import { urldecode } from '../../../utils/url.js'

View File

@ -30,8 +30,7 @@
{{ sharee.displayName }}
</span>
<span class="addressbook-sharee__utils">
<input
:id="uid"
<input :id="uid"
:checked="writeable"
:disabled="loading"
class="checkbox"
@ -56,11 +55,11 @@
<script>
import { showError } from '@nextcloud/dialogs'
import IconDelete from 'vue-material-design-icons/Delete'
import IconGroup from 'vue-material-design-icons/AccountMultiple'
import IconUser from 'vue-material-design-icons/Account'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconGroup from 'vue-material-design-icons/AccountMultiple.vue'
import IconUser from 'vue-material-design-icons/Account.vue'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
export default {
name: 'SettingsAddressbookSharee',

View File

@ -36,8 +36,7 @@
@close="toggleModal">
<section class="import-contact__modal-addressbook">
<h3>{{ t('contacts', 'Import contacts') }}</h3>
<Multiselect
v-if="!isSingleAddressbook"
<Multiselect v-if="!isSingleAddressbook"
id="select-addressbook"
v-model="selectedAddressbook"
:allow-empty="false"
@ -58,8 +57,7 @@
type="file"
class="hidden-visually"
@change="processFile">
<Button
:disabled="loading"
<Button :disabled="loading"
class="import-contact__button import-contact__button--local"
@click="clickImportInput">
<template #icon>
@ -67,8 +65,7 @@
</template>
{{ t('contacts', 'Select local file') }}
</Button>
<Button
type="primary"
<Button type="primary"
:disabled="loading"
class="import-contact__button import-contact__button--files"
@click="openPicker">
@ -95,18 +92,18 @@
</template>
<script>
import Button from '@nextcloud/vue/dist/Components/NcButton'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import { encodePath } from '@nextcloud/paths'
import { getCurrentUser } from '@nextcloud/auth'
import { generateRemoteUrl } from '@nextcloud/router'
import { getFilePickerBuilder } from '@nextcloud/dialogs'
import axios from '@nextcloud/axios'
import IconUpload from 'vue-material-design-icons/Upload'
import IconError from 'vue-material-design-icons/AlertCircle'
import IconFolder from 'vue-material-design-icons/Folder'
import IconUpload from 'vue-material-design-icons/Upload.vue'
import IconError from 'vue-material-design-icons/AlertCircle.vue'
import IconFolder from 'vue-material-design-icons/Folder.vue'
const CancelToken = axios.CancelToken

View File

@ -49,7 +49,7 @@
<script>
import { showError } from '@nextcloud/dialogs'
import IconAdd from 'vue-material-design-icons/Plus'
import IconAdd from 'vue-material-design-icons/Plus.vue'
export default {
name: 'SettingsNewAddressbook',

View File

@ -23,8 +23,7 @@
<template>
<div class="sort-contacts">
<IconList class="settings-line__icon" />
<Multiselect
id="sort-by"
<Multiselect id="sort-by"
:value="orderKeyOption"
:searchable="false"
:allow-empty="false"
@ -37,8 +36,8 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import IconList from 'vue-material-design-icons/FormatListBulletedSquare'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import IconList from 'vue-material-design-icons/FormatListBulletedSquare.vue'
export default {
name: 'SettingsSortContacts',

View File

@ -8,8 +8,7 @@
selectedContact: data.key,
},
}">
<Avatar
:disable-tooltip="true"
<Avatar :disable-tooltip="true"
:display-name="data.fullName"
:is-no-user="true"
:size="60"
@ -38,7 +37,7 @@
</template>
<script>
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar'
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js'
export default {
name: 'ChartTemplate',

View File

@ -26,8 +26,7 @@
<DetailsHeader>
<!-- avatar and upload photo -->
<template #avatar="{avatarSize}">
<Avatar
:disable-tooltip="true"
<Avatar :disable-tooltip="true"
:display-name="circle.displayName"
:is-no-user="true"
:size="avatarSize" />
@ -35,8 +34,7 @@
<!-- display name -->
<template #title>
<input
v-model="circle.displayName"
<input v-model="circle.displayName"
:readonly="!circle.isOwner"
:placeholder="t('contacts', 'Circle name')"
type="text"
@ -80,8 +78,7 @@
{{ t('contacts', 'Description') }}
</ContentHeading>
<RichContenteditable
:value.sync="circle.description"
<RichContenteditable :value.sync="circle.description"
:auto-complete="onAutocomplete"
:maxlength="1024"
:multiline="true"
@ -129,21 +126,21 @@
import { showError } from '@nextcloud/dialogs'
import debounce from 'debounce'
import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails'
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import RichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable'
import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails.js'
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import RichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable.js'
import Login from 'vue-material-design-icons/Login'
import Logout from 'vue-material-design-icons/Logout'
import IconDelete from 'vue-material-design-icons/Delete'
import Login from 'vue-material-design-icons/Login.vue'
import Logout from 'vue-material-design-icons/Logout.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import { CircleEdit, editCircle } from '../services/circles.ts'
import CircleActionsMixin from '../mixins/CircleActionsMixin'
import DetailsHeader from './DetailsHeader'
import CircleConfigs from './CircleDetails/CircleConfigs'
import ContentHeading from './CircleDetails/ContentHeading'
import CirclePasswordSettings from './CircleDetails/CirclePasswordSettings'
import CircleActionsMixin from '../mixins/CircleActionsMixin.js'
import DetailsHeader from './DetailsHeader.vue'
import CircleConfigs from './CircleDetails/CircleConfigs.vue'
import ContentHeading from './CircleDetails/ContentHeading.vue'
import CirclePasswordSettings from './CircleDetails/CirclePasswordSettings.vue'
export default {
name: 'CircleDetails',
@ -200,7 +197,7 @@ export default {
*/
onAutocomplete(search, callback) {
// TODO: implement autocompletion. Disabled for now
// eslint-disable-next-line node/no-callback-literal
// eslint-disable-next-line n/no-callback-literal
callback([])
},

View File

@ -43,8 +43,8 @@
</template>
<script>
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'
import ContentHeading from './ContentHeading'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
import ContentHeading from './ContentHeading.vue'
import { PUBLIC_CIRCLE_CONFIG } from '../../models/constants.ts'
import Circle from '../../models/circle.ts'

View File

@ -47,21 +47,18 @@
<li class="unique-password">
<template v-if="showUniquePasswordInput">
<input
v-model="uniquePassword"
<input v-model="uniquePassword"
:disabled="loading.length > 0"
:placeholder="t('contacts', 'Unique password …')"
type="text"
@keyup.enter="saveUniquePassword">
<Button
type="tertiary-no-background"
<Button type="tertiary-no-background"
:disabled="loading.length > 0 || uniquePassword.length === 0"
@click="saveUniquePassword">
{{ t('contacts', 'Save') }}
</Button>
</template>
<Button
v-else-if="useUniquePassword"
<Button v-else-if="useUniquePassword"
class="change-unique-password"
@click="onClickChangePassword">
{{ t('contacts', 'Change unique password') }}
@ -77,9 +74,9 @@
</template>
<script>
import ContentHeading from './ContentHeading'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import ContentHeading from './ContentHeading.vue'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
// Circle setting keys
const ENFORCE_PASSWORD_PROTECTION = 'enforce_password'

View File

@ -27,8 +27,7 @@
:title="t('contacts', 'No contact selected')"
:description="t('contacts', 'Select a contact on the list to begin')">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
</EmptyContent>
@ -36,8 +35,7 @@
<!-- contact header -->
<DetailsHeader>
<!-- avatar and upload photo -->
<ContactAvatar
slot="avatar"
<ContactAvatar slot="avatar"
:contact="contact"
@update-local-contact="updateLocalContact" />
@ -258,36 +256,36 @@
import { showError } from '@nextcloud/dialogs'
import { stringify } from 'ical.js'
import debounce from 'debounce'
// eslint-disable-next-line import/no-unresolved, node/no-missing-import
// eslint-disable-next-line import/no-unresolved, n/no-missing-import
import PQueue from 'p-queue'
import qr from 'qr-image'
import Vue from 'vue'
import { VueMasonryPlugin } from 'vue-masonry'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink'
import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import IconDownload from 'vue-material-design-icons/Download'
import IconDelete from 'vue-material-design-icons/Delete'
import IconQr from 'vue-material-design-icons/Qrcode'
import CakeIcon from 'vue-material-design-icons/Cake'
import IconCopy from 'vue-material-design-icons/ContentCopy'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails.js'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import IconDownload from 'vue-material-design-icons/Download.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconQr from 'vue-material-design-icons/Qrcode.vue'
import CakeIcon from 'vue-material-design-icons/Cake.vue'
import IconCopy from 'vue-material-design-icons/ContentCopy.vue'
import rfcProps from '../models/rfcProps'
import validate from '../services/validate'
import rfcProps from '../models/rfcProps.js'
import validate from '../services/validate.js'
import AddNewProp from './ContactDetails/ContactDetailsAddNewProp'
import ContactAvatar from './ContactDetails/ContactDetailsAvatar'
import ContactProperty from './ContactDetails/ContactDetailsProperty'
import DetailsHeader from './DetailsHeader'
import PropertyGroups from './Properties/PropertyGroups'
import PropertyRev from './Properties/PropertyRev'
import PropertySelect from './Properties/PropertySelect'
import AddNewProp from './ContactDetails/ContactDetailsAddNewProp.vue'
import ContactAvatar from './ContactDetails/ContactDetailsAvatar.vue'
import ContactProperty from './ContactDetails/ContactDetailsProperty.vue'
import DetailsHeader from './DetailsHeader.vue'
import PropertyGroups from './Properties/PropertyGroups.vue'
import PropertyRev from './Properties/PropertyRev.vue'
import PropertySelect from './Properties/PropertySelect.vue'
Vue.use(VueMasonryPlugin)
const updateQueue = new PQueue({ concurrency: 1 })

View File

@ -40,11 +40,11 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import rfcProps from '../../models/rfcProps'
import Contact from '../../models/contact'
import OrgChartsMixin from '../../mixins/OrgChartsMixin'
import PropertyTitle from '../Properties/PropertyTitle'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import rfcProps from '../../models/rfcProps.js'
import Contact from '../../models/contact.js'
import OrgChartsMixin from '../../mixins/OrgChartsMixin.js'
import PropertyTitle from '../Properties/PropertyTitle.vue'
import ICAL from 'ical.js'
export default {

View File

@ -32,16 +32,14 @@
@change="processFile">
<!-- Avatar display -->
<Avatar
:disable-tooltip="true"
<Avatar :disable-tooltip="true"
:display-name="contact.displayName"
:is-no-user="true"
:size="75"
:url="photoUrl"
class="contact-header-avatar__photo" />
<Actions
v-if="!isReadOnly || contact.photo"
<Actions v-if="!isReadOnly || contact.photo"
:force-menu="true"
:open.sync="opened"
class="contact-header-avatar__menu">
@ -49,22 +47,19 @@
<IconImage :size="20" fill-color="#fff" />
</template>
<template v-if="!isReadOnly">
<ActionButton
@click.stop.prevent="selectFileInput">
<ActionButton @click.stop.prevent="selectFileInput">
<template #icon>
<IconUpload :size="20" />
</template>
{{ t('contacts', 'Upload a new picture') }}
</ActionButton>
<ActionButton
@click="selectFilePicker">
<ActionButton @click="selectFilePicker">
<template #icon>
<IconFolder :size="20" />
</template>
{{ t('contacts', 'Choose from Files') }}
</ActionButton>
<ActionButton
v-for="network in supportedSocial"
<ActionButton v-for="network in supportedSocial"
:key="network"
@click="getSocialAvatar(network)">
<template #icon>
@ -76,16 +71,14 @@
<template v-if="contact.photo">
<!-- FIXME: the link seems to have a bigger font size than the button caption -->
<ActionLink
:href="`${contact.url}?photo`"
<ActionLink :href="`${contact.url}?photo`"
target="_blank">
<template #icon>
<IconDownload :size="20" />
</template>
{{ t('contacts', 'Download picture') }}
</ActionLink>
<ActionButton
v-if="!isReadOnly"
<ActionButton v-if="!isReadOnly"
@click="removePhoto">
<template #icon>
<IconDelete :size="20" />
@ -98,16 +91,16 @@
</template>
<script>
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar'
import Actions from '@nextcloud/vue/dist/Components/NcActions'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink'
import IconDownload from 'vue-material-design-icons/Download'
import IconCloudDownload from 'vue-material-design-icons/CloudDownload'
import IconDelete from 'vue-material-design-icons/Delete'
import IconUpload from 'vue-material-design-icons/Upload'
import IconFolder from 'vue-material-design-icons/Folder'
import IconImage from 'vue-material-design-icons/Image'
import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js'
import Actions from '@nextcloud/vue/dist/Components/NcActions.js'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
import IconDownload from 'vue-material-design-icons/Download.vue'
import IconCloudDownload from 'vue-material-design-icons/CloudDownload.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconUpload from 'vue-material-design-icons/Upload.vue'
import IconFolder from 'vue-material-design-icons/Folder.vue'
import IconImage from 'vue-material-design-icons/Image.vue'
import { showError, showInfo, getFilePickerBuilder, showSuccess } from '@nextcloud/dialogs'
import { generateUrl, generateRemoteUrl } from '@nextcloud/router'

View File

@ -46,14 +46,14 @@
<script>
import { Property } from 'ical.js'
import rfcProps from '../../models/rfcProps'
import Contact from '../../models/contact'
import rfcProps from '../../models/rfcProps.js'
import Contact from '../../models/contact.js'
import OrgChartsMixin from '../../mixins/OrgChartsMixin'
import PropertyText from '../Properties/PropertyText'
import PropertyMultipleText from '../Properties/PropertyMultipleText'
import PropertyDateTime from '../Properties/PropertyDateTime'
import PropertySelect from '../Properties/PropertySelect'
import OrgChartsMixin from '../../mixins/OrgChartsMixin.js'
import PropertyText from '../Properties/PropertyText.vue'
import PropertyMultipleText from '../Properties/PropertyMultipleText.vue'
import PropertyDateTime from '../Properties/PropertyDateTime.vue'
import PropertySelect from '../Properties/PropertySelect.vue'
export default {
name: 'ContactDetailsProperty',

View File

@ -37,8 +37,8 @@
</template>
<script>
import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList'
import ContactsListItem from './ContactsList/ContactsListItem'
import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList.js'
import ContactsListItem from './ContactsList/ContactsListItem.vue'
import VirtualList from 'vue-virtual-scroll-list'
export default {

View File

@ -1,6 +1,5 @@
<template>
<ListItem
:id="id"
<ListItem :id="id"
:key="source.key"
class="list-item-style envelope"
:title="source.displayName"
@ -24,7 +23,7 @@
<script>
import { NcListItem as ListItem } from '@nextcloud/vue'
import BaseAvatar from '@nextcloud/vue/dist/Components/NcAvatar'
import BaseAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'
export default {
name: 'ContactsListItem',

View File

@ -53,7 +53,7 @@
</template>
<script>
import Actions from '@nextcloud/vue/dist/Components/NcActions'
import Actions from '@nextcloud/vue/dist/Components/NcActions.js'
export default {
name: 'DetailsHeader',

View File

@ -20,11 +20,11 @@
import { subscribe } from '@nextcloud/event-bus'
import pLimit from 'p-limit'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import AddToGroupView from '../../views/Processing/AddToGroupView'
import appendContactToGroup from '../../services/appendContactToGroup'
import EntityPicker from './EntityPicker'
import AddToGroupView from '../../views/Processing/AddToGroupView.vue'
import appendContactToGroup from '../../services/appendContactToGroup.js'
import EntityPicker from './EntityPicker.vue'
export default {
name: 'ContactsPicker',

View File

@ -21,8 +21,7 @@
-
-->
<template>
<UserBubble
class="entity-picker__bubble"
<UserBubble class="entity-picker__bubble"
:margin="0"
:size="22"
:display-name="label">
@ -36,7 +35,7 @@
</template>
<script>
import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble'
import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble.js'
export default {
name: 'EntityBubble',

View File

@ -20,16 +20,14 @@
-->
<template>
<Modal
size="normal"
<Modal size="normal"
@close="onCancel">
<!-- Wrapper for content & navigation -->
<div class="entity-picker">
<!-- Search -->
<div class="entity-picker__search">
<div class="entity-picker__search-icon icon-search" />
<input
ref="input"
<input ref="input"
v-model="searchQuery"
:placeholder="t('contacts', 'Search {types}', {types: searchPlaceholderTypes})"
class="entity-picker__search-input"
@ -46,13 +44,11 @@
<template v-else>
<!-- Picked entities -->
<transition-group
v-if="Object.keys(selectionSet).length > 0"
<transition-group v-if="Object.keys(selectionSet).length > 0"
name="zoom"
tag="ul"
class="entity-picker__selection">
<EntityBubble
v-for="entity in selectionSet"
<EntityBubble v-for="entity in selectionSet"
:key="entity.key || `entity-${entity.type}-${entity.id}`"
v-bind="entity"
@delete="onDelete(entity)" />
@ -81,14 +77,12 @@
</EmptyContent>
<div class="entity-picker__navigation">
<button
:disabled="loading"
<button :disabled="loading"
class="navigation__button-left"
@click="onCancel">
{{ t('contacts', 'Cancel') }}
</button>
<button
:disabled="isEmptySelection || loading"
<button :disabled="isEmptySelection || loading"
class="navigation__button-right primary"
@click="onSubmit">
{{ confirmLabel }}
@ -102,13 +96,13 @@
<script>
import debounce from 'debounce'
import VirtualList from 'vue-virtual-scroll-list'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import IconSearch from 'vue-material-design-icons/Magnify'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import IconSearch from 'vue-material-design-icons/Magnify.vue'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import EntityBubble from './EntityBubble'
import EntitySearchResult from './EntitySearchResult'
import EntityBubble from './EntityBubble.vue'
import EntitySearchResult from './EntitySearchResult.vue'
export default {
name: 'EntityPicker',

View File

@ -24,8 +24,7 @@
{{ t('contacts', 'Add {type}', {type: source.label.toLowerCase()}) }}
</h4>
<UserBubble
v-else
<UserBubble v-else
class="entity-picker__bubble"
:class="{'entity-picker__bubble--selected': isSelected}"
:display-name="source.label"
@ -41,7 +40,7 @@
</template>
<script>
import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble'
import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble.js'
export default {
name: 'EntitySearchResult',

View File

@ -20,15 +20,13 @@
-->
<template>
<Modal
size="normal"
<Modal size="normal"
@close="onCancel">
<!-- Wrapper for content & navigation -->
<div class="entity-picker">
<!-- Search -->
<div class="entity-picker__new">
<input
ref="input"
<input ref="input"
v-model="circleName"
:placeholder="t('contacts', 'New circle name')"
class="entity-picker__new-input"
@ -42,8 +40,7 @@
<!-- Personal circle, TODO: IMPLEMENT -->
<template v-if="false">
<CheckboxRadioSwitch
:checked.sync="isPersonal"
<CheckboxRadioSwitch :checked.sync="isPersonal"
:disabled="loading !== false">
{{ t('contacts', 'Personal circle') }}
</CheckboxRadioSwitch>
@ -54,8 +51,7 @@
<!-- Local circle -->
<template v-if="isGlobalScale">
<CheckboxRadioSwitch
:checked.sync="isLocal"
<CheckboxRadioSwitch :checked.sync="isLocal"
:disabled="loading !== false">
{{ t('contacts', 'Local circle') }}
</CheckboxRadioSwitch>
@ -66,14 +62,12 @@
</div>
<div class="entity-picker__navigation">
<button
:disabled="loading"
<button :disabled="loading"
class="navigation__button-left"
@click="onCancel">
{{ t('contacts', 'Cancel') }}
</button>
<button
:disabled="isEmptyName || loading"
<button :disabled="isEmptyName || loading"
class="navigation__button-right primary"
@click="onSubmit">
{{ t('contacts', 'Create circle') }}
@ -85,8 +79,8 @@
<script>
import { getCapabilities } from '@nextcloud/capabilities'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import { CIRCLE_DESC } from '../../models/constants.ts'

View File

@ -32,16 +32,14 @@
<template v-else-if="!circle.isMember">
<EmptyContent :title="t('contacts', 'The list of members is only visible to members of this circle')">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
</EmptyContent>
</template>
<template v-else>
<EmptyContent :title="t('contacts', 'There is no member in this circle')">
<template #icon>
<IconContact
:size="20" />
<IconContact :size="20" />
</template>
</EmptyContent>
</template>
@ -53,16 +51,14 @@
@click="onShowPicker(circle.id)">
<template #icon>
<IconLoading v-if="loading" />
<IconAdd
:size="20" />
<IconAdd :size="20" />
</template>
{{ t('contacts', 'Add members') }}
</Button>
<Button v-if="isMobile"
@click="showCircleDetails">
<template #icon>
<IconInfo
:size="20" />
<IconInfo :size="20" />
</template>
{{ t('contacts', 'Show circle details') }}
</Button>
@ -89,21 +85,21 @@
</template>
<script>
import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile'
import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList.js'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'
import VirtualList from 'vue-virtual-scroll-list'
import MembersListItem from './MembersList/MembersListItem'
import EntityPicker from './EntityPicker/EntityPicker'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import IconAdd from 'vue-material-design-icons/Plus'
import IconInfo from 'vue-material-design-icons/InformationOutline'
import RouterMixin from '../mixins/RouterMixin'
import MembersListItem from './MembersList/MembersListItem.vue'
import EntityPicker from './EntityPicker/EntityPicker.vue'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import IconInfo from 'vue-material-design-icons/InformationOutline.vue'
import RouterMixin from '../mixins/RouterMixin.js'
import { getRecommendations, getSuggestions } from '../services/collaborationAutocompletion'
import { getRecommendations, getSuggestions } from '../services/collaborationAutocompletion.js'
import { showError, showWarning } from '@nextcloud/dialogs'
import { subscribe } from '@nextcloud/event-bus'
import { SHARES_TYPES_MEMBER_MAP, CIRCLES_MEMBER_GROUPING } from '../models/constants.ts'

View File

@ -37,8 +37,7 @@
<!-- Accept invite -->
<template v-if="!loading && isPendingApproval && circle.canManageMembers">
<Actions>
<ActionButton
@click="acceptMember">
<ActionButton @click="acceptMember">
<template #icon>
<IconCheck :size="20" />
</template>
@ -46,8 +45,7 @@
</ActionButton>
</Actions>
<Actions>
<ActionButton
@click="deleteMember">
<ActionButton @click="deleteMember">
<template #icon>
<IconClose :size="20" />
</template>
@ -71,8 +69,7 @@
:size="16"
decorative />
</ActionText>
<ActionButton
v-for="level in availableLevelsChange"
<ActionButton v-for="level in availableLevelsChange"
:key="level"
icon=""
@click="changeLevel(level)">
@ -103,21 +100,21 @@
<script>
import { CIRCLES_MEMBER_LEVELS, MemberLevels, MemberStatus } from '../../models/constants.ts'
import Actions from '@nextcloud/vue/dist/Components/NcActions'
import ListItemIcon from '@nextcloud/vue/dist/Components/NcListItemIcon'
import ActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText'
import IconDelete from 'vue-material-design-icons/Delete'
import IconCheck from 'vue-material-design-icons/Check'
import IconClose from 'vue-material-design-icons/Close'
import Actions from '@nextcloud/vue/dist/Components/NcActions.js'
import ListItemIcon from '@nextcloud/vue/dist/Components/NcListItemIcon.js'
import ActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconCheck from 'vue-material-design-icons/Check.vue'
import IconClose from 'vue-material-design-icons/Close.vue'
import ExitToApp from 'vue-material-design-icons/ExitToApp'
import ShieldCheck from 'vue-material-design-icons/ShieldCheck'
import ExitToApp from 'vue-material-design-icons/ExitToApp.vue'
import ShieldCheck from 'vue-material-design-icons/ShieldCheck.vue'
import { changeMemberLevel } from '../../services/circles.ts'
import { showError } from '@nextcloud/dialogs'
import RouterMixin from '../../mixins/RouterMixin'
import RouterMixin from '../../mixins/RouterMixin.js'
export default {
name: 'MembersListItem',

View File

@ -4,8 +4,7 @@
<h3>
{{ t('contacts', 'Chart') }}:
</h3>
<Multiselect
v-model="chart"
<Multiselect v-model="chart"
class="chart-selection"
:disabled="data.length === 1"
:options="charts"
@ -24,9 +23,9 @@
import * as d3 from 'd3'
import ChartTemplate from './ChartTemplate.vue'
import { getLocale } from '@nextcloud/l10n'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import { OrgChart } from 'd3-org-chart'
import router from './../router'
import router from './../router/index.js'
import Vue from 'vue'
export default {

View File

@ -14,8 +14,8 @@
</template>
<script>
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import IconContact from 'vue-material-design-icons/AccountMultiple'
import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import IconContact from 'vue-material-design-icons/AccountMultiple.vue'
export default {
name: 'ProcessingScreen',

View File

@ -36,9 +36,9 @@
</template>
<script>
import Actions from '@nextcloud/vue/dist/Components/NcActions'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton'
import IconDelete from 'vue-material-design-icons/Delete'
import Actions from '@nextcloud/vue/dist/Components/NcActions.js'
import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import IconDelete from 'vue-material-design-icons/Delete.vue'
export default {
name: 'PropertyActions',

View File

@ -51,8 +51,7 @@
</div>
<!-- Real input where the picker shows -->
<DatetimePicker
v-if="!isReadOnly"
<DatetimePicker v-if="!isReadOnly"
:value="vcardTimeLocalValue.toJSDate()"
:minute-step="10"
:lang="lang"
@ -70,8 +69,7 @@
class="property__value">
<!-- props actions -->
<PropertyActions
v-if="!isReadOnly"
<PropertyActions v-if="!isReadOnly"
:actions="actions"
:property-component="this"
@delete="deleteProperty" />
@ -82,14 +80,14 @@
<script>
import debounce from 'debounce'
import moment from 'moment'
import DatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import DatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker.js'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import { getLocale } from '@nextcloud/l10n'
import { VCardTime } from 'ical.js'
import PropertyMixin from '../../mixins/PropertyMixin'
import PropertyTitle from './PropertyTitle'
import PropertyActions from './PropertyActions'
import PropertyMixin from '../../mixins/PropertyMixin.js'
import PropertyTitle from './PropertyTitle.vue'
import PropertyActions from './PropertyActions.vue'
export default {
name: 'PropertyDateTime',

View File

@ -22,8 +22,7 @@
<template>
<div v-if="propModel" class="property property--without-actions">
<PropertyTitle
icon="icon-contacts-dark"
<PropertyTitle icon="icon-contacts-dark"
:readable-name="t('contacts', 'Groups')" />
<div class="property__row">
@ -60,9 +59,9 @@
<script>
import debounce from 'debounce'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import Contact from '../../models/contact'
import PropertyTitle from './PropertyTitle'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import Contact from '../../models/contact.js'
import PropertyTitle from './PropertyTitle.vue'
import naturalCompare from 'string-natural-compare'
export default {

View File

@ -101,10 +101,10 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import PropertyMixin from '../../mixins/PropertyMixin'
import PropertyTitle from './PropertyTitle'
import PropertyActions from './PropertyActions'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import PropertyMixin from '../../mixins/PropertyMixin.js'
import PropertyTitle from './PropertyTitle.vue'
import PropertyActions from './PropertyActions.vue'
export default {
name: 'PropertyMultipleText',

View File

@ -48,8 +48,7 @@
@input="updateValue" />
<!-- props actions -->
<PropertyActions
v-if="!isReadOnly"
<PropertyActions v-if="!isReadOnly"
:actions="actions"
:property-component="this"
@delete="deleteProperty" />
@ -58,10 +57,10 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import PropertyMixin from '../../mixins/PropertyMixin'
import PropertyTitle from './PropertyTitle'
import PropertyActions from './PropertyActions'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import PropertyMixin from '../../mixins/PropertyMixin.js'
import PropertyTitle from './PropertyTitle.vue'
import PropertyActions from './PropertyActions.vue'
export default {
name: 'PropertySelect',

View File

@ -82,8 +82,7 @@
target="_blank" />
<!-- props actions -->
<PropertyActions
v-if="!isReadOnly"
<PropertyActions v-if="!isReadOnly"
:actions="actions"
:property-component="this"
@delete="deleteProperty" />
@ -92,11 +91,11 @@
</template>
<script>
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect'
import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
import debounce from 'debounce'
import PropertyMixin from '../../mixins/PropertyMixin'
import PropertyTitle from './PropertyTitle'
import PropertyActions from './PropertyActions'
import PropertyMixin from '../../mixins/PropertyMixin.js'
import PropertyTitle from './PropertyTitle.vue'
import PropertyActions from './PropertyActions.vue'
export default {
name: 'PropertyText',

View File

@ -31,7 +31,7 @@
</template>
<script>
import PropertyTitleIcon from './PropertyTitleIcon'
import PropertyTitleIcon from './PropertyTitleIcon.vue'
export default {
name: 'PropertyTitle',
components: {

View File

@ -40,22 +40,22 @@
</template>
<script>
import IconAdd from 'vue-material-design-icons/Plus'
import IconAddressBook from '../Icons/IconAddressBook'
import IconEmail from 'vue-material-design-icons/Email'
import IconPhone from 'vue-material-design-icons/Cellphone'
import IconDelete from 'vue-material-design-icons/Delete'
import IconUser from 'vue-material-design-icons/Account'
import IconNotes from 'vue-material-design-icons/Pencil'
import IconGeo from 'vue-material-design-icons/MapMarker'
import IconGroup from 'vue-material-design-icons/AccountMultiple'
import IconUrl from 'vue-material-design-icons/Link'
import IconBday from 'vue-material-design-icons/CalendarBlankOutline'
import IconImpp from 'vue-material-design-icons/MessageReplyText'
import IconSocialMedia from 'vue-material-design-icons/Heart'
import IconRelationship from 'vue-material-design-icons/AccountSupervisor'
import IconTz from 'vue-material-design-icons/Web'
import IconLang from 'vue-material-design-icons/AccountVoice'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import IconAddressBook from '../Icons/IconAddressBook.vue'
import IconEmail from 'vue-material-design-icons/Email.vue'
import IconPhone from 'vue-material-design-icons/Cellphone.vue'
import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconUser from 'vue-material-design-icons/Account.vue'
import IconNotes from 'vue-material-design-icons/Pencil.vue'
import IconGeo from 'vue-material-design-icons/MapMarker.vue'
import IconGroup from 'vue-material-design-icons/AccountMultiple.vue'
import IconUrl from 'vue-material-design-icons/Link.vue'
import IconBday from 'vue-material-design-icons/CalendarBlankOutline.vue'
import IconImpp from 'vue-material-design-icons/MessageReplyText.vue'
import IconSocialMedia from 'vue-material-design-icons/Heart.vue'
import IconRelationship from 'vue-material-design-icons/AccountSupervisor.vue'
import IconTz from 'vue-material-design-icons/Web.vue'
import IconLang from 'vue-material-design-icons/AccountVoice.vue'
export default {
name: 'PropertyTitleIcon',
components: {

View File

@ -25,14 +25,14 @@ import { getRequestToken } from '@nextcloud/auth'
import { sync } from 'vuex-router-sync'
import Vue from 'vue'
import App from './ContactsRoot'
import router from './router'
import store from './store'
import logger from './services/logger'
import App from './ContactsRoot.vue'
import router from './router/index.js'
import store from './store/index.js'
import logger from './services/logger.js'
/** GLOBAL COMPONENTS AND DIRECTIVE */
import ClickOutside from 'vue-click-outside'
import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip'
import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'
// Global scss sheets
import '../css/contacts.scss'

View File

@ -24,7 +24,7 @@ import { showError } from '@nextcloud/dialogs'
import { joinCircle } from '../services/circles.ts'
import Circle from '../models/circle.ts'
import CopyToClipboardMixin from './CopyToClipboardMixin'
import CopyToClipboardMixin from './CopyToClipboardMixin.js'
import Member from '../models/member.ts'
export default {

View File

@ -19,7 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { otherContacts } from '../utils/chartUtils'
import { otherContacts } from '../utils/chartUtils.js'
export default {
methods: {

View File

@ -20,8 +20,8 @@
*
*/
import debounce from 'debounce'
import Contact from '../models/contact'
import { setPropertyAlias } from '../services/updateDesignSet'
import Contact from '../models/contact.js'
import { setPropertyAlias } from '../services/updateDesignSet.js'
export default {
props: {

View File

@ -24,8 +24,8 @@ import { v4 as uuid } from 'uuid'
import ICAL from 'ical.js'
import b64toBlob from 'b64-to-blob'
import store from '../store'
import updateDesignSet from '../services/updateDesignSet'
import store from '../store/index.js'
import updateDesignSet from '../services/updateDesignSet.js'
import sanitizeSVG from '@mattkrick/sanitize-svg'
/**

View File

@ -22,7 +22,7 @@
import { MemberLevel, MemberLevels, MemberType, MemberTypes } from './constants'
import Circle from './circle'
import logger from '../services/logger'
import logger from '../services/logger.js'
export default class Member {
_data: any = {}
@ -110,7 +110,7 @@ export default class Member {
/**
* Member level
*
*
*/
get level(): MemberLevel {
return this._data.level
@ -118,7 +118,7 @@ export default class Member {
/**
* Member request status
*
*
*/
get status(): string {
return this._data.status

View File

@ -21,11 +21,11 @@
*/
import { VCardTime } from 'ical.js'
import { loadState } from '@nextcloud/initial-state'
import { otherContacts } from '../utils/chartUtils'
import { otherContacts } from '../utils/chartUtils.js'
import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN'
import ActionToggleYear from '../components/Actions/ActionToggleYear'
import zones from './zones'
import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN.vue'
import ActionToggleYear from '../components/Actions/ActionToggleYear.vue'
import zones from './zones.js'
// Load the default profile (for example, home or work) configured by the user
const defaultProfileState = loadState('contacts', 'defaultProfile', 'HOME')

View File

@ -25,7 +25,7 @@ import Router from 'vue-router'
import { generateUrl } from '@nextcloud/router'
import { ROUTE_CIRCLE, ROUTE_CHART } from '../models/constants.ts'
import Contacts from '../views/Contacts'
import Contacts from '../views/Contacts.vue'
Vue.use(Router)

View File

@ -20,7 +20,7 @@
*
*/
import rfcProps from '../../models/rfcProps'
import rfcProps from '../../models/rfcProps.js'
// https://tools.ietf.org/html/rfc6350#section-6.2.7

View File

@ -20,10 +20,10 @@
*
*/
import badGenderType from './badGenderType'
import duplicateTypes from './duplicateTypes'
import invalidREV from './invalidREV'
import missingFN from './missingFN'
import badGenderType from './badGenderType.js'
import duplicateTypes from './duplicateTypes.js'
import invalidREV from './invalidREV.js'
import missingFN from './missingFN.js'
export default [
badGenderType,

View File

@ -20,8 +20,8 @@
*
*/
import Contact from '../models/contact'
import Store from '../store/index'
import Contact from '../models/contact.js'
import Store from '../store/index.js'
/**
* Parse a vcf data string, add them to the store

View File

@ -20,8 +20,8 @@
*
*/
import Contact from '../models/contact'
import checks from './checks/'
import Contact from '../models/contact.js'
import checks from './checks/index.js'
/**
* @param contact

View File

@ -26,10 +26,10 @@ import { showError } from '@nextcloud/dialogs'
import pLimit from 'p-limit'
import Vue from 'vue'
import Contact, { MinimalContactProperties } from '../models/contact'
import Contact, { MinimalContactProperties } from '../models/contact.js'
import client from '../services/cdav'
import parseVcf from '../services/parseVcf'
import client from '../services/cdav.js'
import parseVcf from '../services/parseVcf.js'
const addressbookModel = {
id: '',

View File

@ -37,10 +37,10 @@ import {
} from '../services/circles.ts'
import Member from '../models/member.ts'
import Circle from '../models/circle.ts'
import logger from '../services/logger'
import logger from '../services/logger.js'
const state = {
/** @type {object.<string>} Circle */
/** @type {Object<string>} Circle */
circles: {},
}

View File

@ -24,8 +24,8 @@ import { showError } from '@nextcloud/dialogs'
import ICAL from 'ical.js'
import Vue from 'vue'
import Contact from '../models/contact'
import validate from '../services/validate'
import Contact from '../models/contact.js'
import validate from '../services/validate.js'
/*
* Currently ical.js does not serialize parameters with multiple values correctly. This is

View File

@ -23,13 +23,13 @@
import Vue from 'vue'
import Vuex, { Store } from 'vuex'
import addressbooks from './addressbooks'
import circles from './circles'
import contacts from './contacts'
import groups from './groups'
import importState from './importState'
import addressbooks from './addressbooks.js'
import circles from './circles.js'
import contacts from './contacts.js'
import groups from './groups.js'
import importState from './importState.js'
import isCirclesEnabled from '../services/isCirclesEnabled'
import isCirclesEnabled from '../services/isCirclesEnabled.js'
Vue.use(Vuex)

View File

@ -20,7 +20,7 @@
*
*/
import camelcase from 'camelcase'
import { isNumber } from './numberUtils'
import { isNumber } from './numberUtils.js'
export const formatObject = function(obj) {
const data = {}

View File

@ -25,7 +25,7 @@
*
* @see https://www.php.net/manual/en/function.urldecode.php
* @param {string} url The url to be decoded
* @returns {string} The decoded url
* @return {string} The decoded url
*/
export function urldecode(url) {
return decodeURIComponent(url.replace(/\+/g, ' '))

View File

@ -24,8 +24,7 @@
<template>
<Content :app-name="appName">
<!-- new-contact-button + navigation + settings -->
<RootNavigation
:contacts-list="contactsList"
<RootNavigation :contacts-list="contactsList"
:loading="loadingContacts || loadingCircles"
:selected-group="selectedGroup"
:selected-contact="selectedContact">
@ -70,27 +69,27 @@
<script>
import { GROUP_ALL_CONTACTS, GROUP_NO_GROUP_CONTACTS, ROUTE_CIRCLE } from '../models/constants.ts'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import Content from '@nextcloud/vue/dist/Components/NcContent'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile'
import Modal from '@nextcloud/vue/dist/Components/NcModal'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
import Content from '@nextcloud/vue/dist/Components/NcContent.js'
import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'
import Modal from '@nextcloud/vue/dist/Components/NcModal.js'
import { showError } from '@nextcloud/dialogs'
import { VCardTime } from 'ical.js'
import CircleContent from '../components/AppContent/CircleContent'
import ChartContent from '../components/AppContent/ChartContent'
import ContactsContent from '../components/AppContent/ContactsContent'
import ContactsPicker from '../components/EntityPicker/ContactsPicker'
import ImportView from './Processing/ImportView'
import RootNavigation from '../components/AppNavigation/RootNavigation'
import IconAdd from 'vue-material-design-icons/Plus'
import CircleContent from '../components/AppContent/CircleContent.vue'
import ChartContent from '../components/AppContent/ChartContent.vue'
import ContactsContent from '../components/AppContent/ContactsContent.vue'
import ContactsPicker from '../components/EntityPicker/ContactsPicker.vue'
import ImportView from './Processing/ImportView.vue'
import RootNavigation from '../components/AppNavigation/RootNavigation.vue'
import IconAdd from 'vue-material-design-icons/Plus.vue'
import Contact from '../models/contact'
import rfcProps from '../models/rfcProps'
import Contact from '../models/contact.js'
import rfcProps from '../models/rfcProps.js'
import client from '../services/cdav'
import isCirclesEnabled from '../services/isCirclesEnabled'
import client from '../services/cdav.js'
import isCirclesEnabled from '../services/isCirclesEnabled.js'
export default {
name: 'Contacts',

View File

@ -37,8 +37,8 @@
</template>
<script>
import ProcessingScreen from '../../components/ProcessingScreen'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import ProcessingScreen from '../../components/ProcessingScreen.vue'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
export default {
name: 'AddToGroupView',

View File

@ -37,8 +37,8 @@
</template>
<script>
import ProcessingScreen from '../../components/ProcessingScreen'
import Button from '@nextcloud/vue/dist/Components/NcButton'
import ProcessingScreen from '../../components/ProcessingScreen.vue'
import Button from '@nextcloud/vue/dist/Components/NcButton.js'
export default {
name: 'ImportView',