From 5873bbbde2db0a90e7813ba740daf9713008e776 Mon Sep 17 00:00:00 2001 From: Caleb Burke Date: Wed, 26 Aug 2026 14:19:23 -0700 Subject: [PATCH 1/3] :art: Breadcrumb changes --- web/src/pages/DashboardPage.vue | 4 ++-- web/src/pages/administration/GroupsPage.vue | 10 +++++++++- .../InformationSharingAgreementPage.vue | 9 +++++++++ web/src/pages/archive-items/ArchiveItemListPage.vue | 10 +++++++++- .../InformationSharingAgreementPage.vue | 9 +++++++++ web/src/pages/users/UsersPage.vue | 10 +++++++++- web/src/use/use-breadcrumbs.ts | 2 +- 7 files changed, 48 insertions(+), 6 deletions(-) diff --git a/web/src/pages/DashboardPage.vue b/web/src/pages/DashboardPage.vue index 20dbdb7c..73ae9a7f 100644 --- a/web/src/pages/DashboardPage.vue +++ b/web/src/pages/DashboardPage.vue @@ -10,8 +10,8 @@

The Vault provides layers of secure storage for Yukon First Nations and Indigenous Governments to share their Traditional Knowledge with the Yukon Government. An - Information Sharing Agreement sets the terms of the sharing, and Traditional Knowledge is - then added under that agreement. + Information Sharing Agreement sets the terms of the sharing, and Traditional Knowledge + is then added under that agreement.

diff --git a/web/src/pages/administration/GroupsPage.vue b/web/src/pages/administration/GroupsPage.vue index d69026cd..dbeee67e 100644 --- a/web/src/pages/administration/GroupsPage.vue +++ b/web/src/pages/administration/GroupsPage.vue @@ -46,5 +46,13 @@ const filters = computed(() => { const { isSystemAdmin } = useCurrentUser() -useBreadcrumbs("Groups", [ADMIN_CRUMB]) +useBreadcrumbs("Groups", [ + ADMIN_CRUMB, + { + title: "Groups", + to: { + name: "administration/GroupsPage", + }, + }, +]) diff --git a/web/src/pages/administration/information-sharing-agreements/InformationSharingAgreementPage.vue b/web/src/pages/administration/information-sharing-agreements/InformationSharingAgreementPage.vue index d9562210..1683139c 100644 --- a/web/src/pages/administration/information-sharing-agreements/InformationSharingAgreementPage.vue +++ b/web/src/pages/administration/information-sharing-agreements/InformationSharingAgreementPage.vue @@ -115,5 +115,14 @@ useBreadcrumbs(pageTitle, [ name: "administration/InformationSharingAgreementsPage", }, }, + { + title: formatInformationSharingAgreementNumber(informationSharingAgreementIdAsNumber.value), + to: { + name: "administration/information-sharing-agreements/InformationSharingAgreementPage", + params: { + informationSharingAgreementId: props.informationSharingAgreementId, + }, + }, + }, ]) diff --git a/web/src/pages/archive-items/ArchiveItemListPage.vue b/web/src/pages/archive-items/ArchiveItemListPage.vue index b38b7514..f6b72073 100644 --- a/web/src/pages/archive-items/ArchiveItemListPage.vue +++ b/web/src/pages/archive-items/ArchiveItemListPage.vue @@ -142,7 +142,15 @@ const headers = [ { title: "Attachments", value: "archiveItemFileCount" }, ] -useBreadcrumbs("Knowledge Items", [BASE_CRUMB]) +useBreadcrumbs("Knowledge Items", [ + BASE_CRUMB, + { + title: "Knowledge Items", + to: { + name: "archive-items/ArchiveItemListPage", + }, + }, +]) function updatePage(newPage: number) { if (isLoading.value) return diff --git a/web/src/pages/information-sharing-agreements/InformationSharingAgreementPage.vue b/web/src/pages/information-sharing-agreements/InformationSharingAgreementPage.vue index 9b54ac4e..df45a927 100644 --- a/web/src/pages/information-sharing-agreements/InformationSharingAgreementPage.vue +++ b/web/src/pages/information-sharing-agreements/InformationSharingAgreementPage.vue @@ -115,5 +115,14 @@ useBreadcrumbs(pageTitle, [ name: "InformationSharingAgreementsPage", }, }, + { + title: formatInformationSharingAgreementNumber(informationSharingAgreementIdAsNumber.value), + to: { + name: "information-sharing-agreements/InformationSharingAgreementPage", + params: { + informationSharingAgreementId: props.informationSharingAgreementId, + }, + }, + }, ]) diff --git a/web/src/pages/users/UsersPage.vue b/web/src/pages/users/UsersPage.vue index 1171efec..3f4d9fd6 100644 --- a/web/src/pages/users/UsersPage.vue +++ b/web/src/pages/users/UsersPage.vue @@ -59,5 +59,13 @@ const filters = computed(() => { } }) -useBreadcrumbs("Users", [ADMIN_CRUMB]) +useBreadcrumbs("Users", [ + ADMIN_CRUMB, + { + title: "Users", + to: { + name: "users/UsersPage", + }, + }, +]) diff --git a/web/src/use/use-breadcrumbs.ts b/web/src/use/use-breadcrumbs.ts index 2c54b4bf..1fcf7f4b 100644 --- a/web/src/use/use-breadcrumbs.ts +++ b/web/src/use/use-breadcrumbs.ts @@ -10,7 +10,7 @@ export type Breadcrumb = { } export const BASE_CRUMB: Breadcrumb = { - title: "Traditional Knowledge", + title: "Home", disabled: false, to: { name: "DashboardPage", From 82ea1bf69ae6a228bc7c4c5594e201d330a1d0db Mon Sep 17 00:00:00 2001 From: Caleb Burke Date: Wed, 26 Aug 2026 17:37:33 -0700 Subject: [PATCH 2/3] :arrow_up: Upgrade vuetify to 3.13.2 to fix notifications page pagination. VDataIterator only gained support for the items-length prop (manual/server-side pagination) in 3.12.0. On the previously installed 3.11.8, it silently ignored items-length and computed page count from the current page's item count instead of the total, so the notifications list never showed more than one page. package.json's existing ^3.11.8 range already permitted this version. --- web/package-lock.json | 52 +++++-------------------------------------- 1 file changed, 5 insertions(+), 47 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 143e8448..8997d75c 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1235,7 +1235,6 @@ "version": "2.5.6", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -1275,7 +1274,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1296,7 +1294,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1317,7 +1314,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1338,7 +1334,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1359,7 +1354,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1380,7 +1374,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1401,7 +1394,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1422,7 +1414,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1443,7 +1434,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1464,7 +1454,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1485,7 +1474,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1506,7 +1494,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1527,7 +1514,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1545,7 +1531,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -1586,7 +1571,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1600,7 +1584,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1614,7 +1597,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1628,7 +1610,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1642,7 +1623,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1656,7 +1636,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1670,7 +1649,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1684,7 +1662,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1698,7 +1675,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1712,7 +1688,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1726,7 +1701,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1740,7 +1714,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1754,7 +1727,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1768,7 +1740,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1782,7 +1753,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1796,7 +1766,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1810,7 +1779,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1824,7 +1792,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1838,7 +1805,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1852,7 +1818,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1866,7 +1831,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1880,7 +1844,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1894,7 +1857,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1908,7 +1870,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1922,7 +1883,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3012,7 +2972,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, "license": "Apache-2.0", "optional": true, "engines": { @@ -4085,7 +4044,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4105,7 +4064,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -4559,7 +4518,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, "license": "MIT", "optional": true }, @@ -6780,9 +6738,9 @@ } }, "node_modules/vuetify": { - "version": "3.11.8", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.11.8.tgz", - "integrity": "sha512-4iKnntOnLFFklygZjzlVfcHrtLO8+iK4HOhiia6HP2U8v82x+ngaSCgm+epvPrGyCMfCpfuEttqD2qElrr1axw==", + "version": "3.13.2", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.13.2.tgz", + "integrity": "sha512-CuBtJ2/lKo4s6vDmDr/oJ+77oRUb7X8goUhTKZG/qSqBkL5J2EzeBEhaZ57ZSLcYnnViWHObuVjHjRFmVzx55Q==", "license": "MIT", "funding": { "type": "github", From aeab3bde12bb37a4e0b4a018573efdc23bc8543d Mon Sep 17 00:00:00 2001 From: Caleb Burke Date: Wed, 26 Aug 2026 17:37:36 -0700 Subject: [PATCH 3/3] :sparkles: Add EnhancedPagination component for route-query-driven pagination. Pairs with the existing useRouteQueryPagination composable; wires a v-pagination control to a page/perPage model and computes total pages from a totalCount prop. --- .../components/common/EnhancedPagination.vue | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 web/src/components/common/EnhancedPagination.vue diff --git a/web/src/components/common/EnhancedPagination.vue b/web/src/components/common/EnhancedPagination.vue new file mode 100644 index 00000000..a53dbd0e --- /dev/null +++ b/web/src/components/common/EnhancedPagination.vue @@ -0,0 +1,31 @@ + + + + +