diff --git a/gateway/package.json b/gateway/package.json
index fe30d0786..dca08c005 100644
--- a/gateway/package.json
+++ b/gateway/package.json
@@ -1,66 +1,69 @@
{
- "name": "sds_gateway",
- "version": "0.0.1",
- "devDependencies": {
- "@babel/core": "^7.29.7",
- "@babel/plugin-transform-runtime": "^7.29.7",
- "@babel/preset-env": "^7.29.7",
- "@biomejs/biome": "^1.9.4",
- "@popperjs/core": "^2.11.8",
- "autoprefixer": "^10.5.0",
- "babel-jest": "^29.7.0",
- "babel-loader": "^9.2.1",
- "bootstrap": "^5.3.8",
- "css-loader": "^6.11.0",
- "fallow": "^2.89.0",
- "jest": "^29.7.0",
- "jest-environment-jsdom": "^29.7.0",
- "mini-css-extract-plugin": "^2.10.2",
- "node-sass-tilde-importer": "^1.0.2",
- "pixrem": "^5.0.0",
- "postcss": "^8.5.15",
- "postcss-loader": "^8.2.1",
- "postcss-preset-env": "^9.6.0",
- "sass": "^1.100.0",
- "sass-loader": "^14.2.1",
- "webpack": "^5.107.2",
- "webpack-bundle-tracker": "^3.2.4",
- "webpack-cli": "^5.1.4",
- "webpack-dev-server": "^5.2.4",
- "webpack-merge": "^5.10.0"
- },
- "dependencies": {
- "@babel/runtime": "^7.29.7"
- },
- "engines": {
- "node": "24"
- },
- "devEngines": {
- "runtime": {
- "name": "node",
- "version": "^24.0",
- "onFail": "download"
- }
- },
- "browserslist": ["last 2 versions"],
- "babel": {
- "presets": ["@babel/preset-env"],
- "plugins": ["@babel/plugin-transform-runtime"]
- },
- "parser": "babel-eslint",
- "parserOptions": {
- "sourceType": "module",
- "allowImportExportEverywhere": true
- },
- "scripts": {
- "dev": "webpack --config webpack/dev.config.js; webpack serve --config webpack/dev.config.js",
- "build": "webpack --config webpack/prod.config.js",
- "test": "jest --config sds_gateway/static/js/tests-config/jest.config.js",
- "test:watch": "jest --config sds_gateway/static/js/tests-config/jest.config.js --watch",
- "test:coverage": "jest --config sds_gateway/static/js/tests-config/jest.config.js --coverage",
- "test:ci": "jest --config sds_gateway/static/js/tests-config/jest.config.js --ci --coverage --watchAll=false",
- "fallow": "fallow --summary",
- "fallow:static-js": "node scripts/fallow-static-js-dead-code.cjs"
- },
- "packageManager": "pnpm@11.5.2"
+ "name": "sds_gateway",
+ "version": "0.0.1",
+ "devDependencies": {
+ "@babel/core": "^7.29.7",
+ "@babel/plugin-transform-runtime": "^7.29.7",
+ "@babel/preset-env": "^7.29.7",
+ "@biomejs/biome": "^1.9.4",
+ "@popperjs/core": "^2.11.8",
+ "autoprefixer": "^10.5.0",
+ "babel-jest": "^29.7.0",
+ "babel-loader": "^9.2.1",
+ "bootstrap": "^5.3.8",
+ "css-loader": "^6.11.0",
+ "fallow": "^2.89.0",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "mini-css-extract-plugin": "^2.10.2",
+ "node-sass-tilde-importer": "^1.0.2",
+ "pixrem": "^5.0.0",
+ "postcss": "^8.5.15",
+ "postcss-loader": "^8.2.1",
+ "postcss-preset-env": "^9.6.0",
+ "sass": "^1.100.0",
+ "sass-loader": "^14.2.1",
+ "webpack": "^5.107.2",
+ "webpack-bundle-tracker": "^3.2.4",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^5.2.4",
+ "webpack-merge": "^5.10.0"
+ },
+ "dependencies": {
+ "@babel/runtime": "^7.29.7"
+ },
+ "engines": {
+ "node": "24"
+ },
+ "devEngines": {
+ "runtime": {
+ "name": "node",
+ "version": "^24.0",
+ "onFail": "download"
+ }
+ },
+ "browserslist": ["last 2 versions"],
+ "babel": {
+ "presets": ["@babel/preset-env"],
+ "plugins": ["@babel/plugin-transform-runtime"]
+ },
+ "parser": "babel-eslint",
+ "parserOptions": {
+ "sourceType": "module",
+ "allowImportExportEverywhere": true
+ },
+ "scripts": {
+ "dev": "webpack --config webpack/dev.config.js; webpack serve --config webpack/dev.config.js",
+ "build": "webpack --config webpack/prod.config.js",
+ "test": "jest --config sds_gateway/static/js/tests-config/jest.config.js",
+ "test:watch": "jest --config sds_gateway/static/js/tests-config/jest.config.js --watch",
+ "test:coverage": "jest --config sds_gateway/static/js/tests-config/jest.config.js --coverage",
+ "test:ci": "jest --config sds_gateway/static/js/tests-config/jest.config.js --ci --coverage --watchAll=false",
+ "fallow": "fallow --summary",
+ "fallow:static-js": "node scripts/fallow-static-js-dead-code.cjs"
+ },
+ "packageManager": "pnpm@11.5.2",
+ "workspaces": [
+ "."
+ ]
}
diff --git a/gateway/sds_gateway/static/js/constants/__tests__/detailsModalConfig.test.js b/gateway/sds_gateway/static/js/constants/__tests__/detailsModalConfig.test.js
index 371afd4c4..88f7fbe37 100644
--- a/gateway/sds_gateway/static/js/constants/__tests__/detailsModalConfig.test.js
+++ b/gateway/sds_gateway/static/js/constants/__tests__/detailsModalConfig.test.js
@@ -67,6 +67,17 @@ describe("detailsModalConfig", () => {
)
})
+ test("capture afterInject wires attachUuidCopyButton on modal", () => {
+ const attachUuidCopyButton = jest.fn()
+ window.DetailsActionManager = { attachUuidCopyButton }
+ window.CaptureDetailsModalBehavior = {
+ afterInject: jest.fn(),
+ }
+ const modal = document.getElementById("asset-details-modal")
+ registry().capture.afterInject({ modal, meta: { uuid: "cap-42" } })
+ expect(attachUuidCopyButton).toHaveBeenCalledWith(modal, "cap-42")
+ })
+
test("dataset afterInject wires uuid copy on modal", () => {
const attachUuidCopyButton = jest.fn()
window.DetailsActionManager = { attachUuidCopyButton }
diff --git a/gateway/sds_gateway/static/js/constants/detailsModalConfig.js b/gateway/sds_gateway/static/js/constants/detailsModalConfig.js
index 88b085a05..bfa0dcef3 100644
--- a/gateway/sds_gateway/static/js/constants/detailsModalConfig.js
+++ b/gateway/sds_gateway/static/js/constants/detailsModalConfig.js
@@ -43,6 +43,12 @@
if (window.CaptureDetailsModalBehavior?.afterInject) {
window.CaptureDetailsModalBehavior.afterInject(ctx)
}
+ if (window.DetailsActionManager?.attachUuidCopyButton) {
+ window.DetailsActionManager.attachUuidCopyButton(
+ ctx.modal,
+ ctx.meta?.uuid,
+ )
+ }
},
loadingTitle: "Loading capture details...",
}
diff --git a/gateway/sds_gateway/templates/users/capture_list.html b/gateway/sds_gateway/templates/users/capture_list.html
index f6b59c243..a94ca4096 100644
--- a/gateway/sds_gateway/templates/users/capture_list.html
+++ b/gateway/sds_gateway/templates/users/capture_list.html
@@ -276,6 +276,7 @@