diff --git a/package-lock.json b/package-lock.json index 069b85bef..0ee96f2eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3665,7 +3665,7 @@ }, "cdav-library": { "version": "git+https://github.com/nextcloud/cdav-library.git#a9642c7c83db37120f8c74306c7e761f3e78524d", - "from": "git+https://github.com/nextcloud/cdav-library.git#a9642c7c83db37120f8c74306c7e761f3e78524d", + "from": "git+https://github.com/nextcloud/cdav-library.git", "requires": { "core-js": "^3.6.5", "regenerator-runtime": "^0.13.7" @@ -9939,6 +9939,11 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", diff --git a/package.json b/package.json index 23c40633a..8d7f356ed 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "p-queue": "^6.6.1", "qr-image": "^3.2.0", "regenerator-runtime": "^0.13.7", + "string-natural-compare": "^3.0.1", "uuid": "^8.3.0", "vue": "^2.6.12", "vue-click-outside": "^1.1.0", diff --git a/src/views/Contacts.vue b/src/views/Contacts.vue index aedc3b3c4..ff3167bae 100644 --- a/src/views/Contacts.vue +++ b/src/views/Contacts.vue @@ -249,6 +249,7 @@ import { VCardTime } from 'ical.js' import download from 'downloadjs' import moment from 'moment' import pLimit from 'p-limit' +import naturalCompare from 'string-natural-compare' import ContactDetails from '../components/ContactDetails' import ContactsList from '../components/ContactsList' @@ -447,7 +448,7 @@ export default { toString: () => group.name, }) }) - menu.sort() + menu.sort((a, b) => naturalCompare(a.toString(), b.toString(), { caseInsensitive: true })) // Find the Recently Contacted group, delete it from array const recentlyIndex = menu.findIndex(group => group.name === GROUP_RECENTLY_CONTACTED)