From 0db4b5e5ed359fe15070e8acc92890ed0c81ff2b Mon Sep 17 00:00:00 2001 From: Cheng Shi Date: Fri, 10 Apr 2026 15:07:31 -0400 Subject: [PATCH 01/10] feat: set a template as default --- package-lock.json | 8 +- package.json | 2 +- public/locales/en/datasetTemplates.json | 6 +- public/locales/es/datasetTemplates.json | 6 +- src/sections/templates/DatasetTemplates.tsx | 38 +++-- .../templates/useSetTemplateAsDefault.ts | 74 +++++++++ .../templates/TemplateMockRepository.ts | 16 ++ .../hooks/useGetTemplatesByCollectionId.ts | 12 +- .../domain/repositories/TemplateRepository.ts | 2 + .../domain/useCases/setTemplateAsDefault.ts | 9 + .../domain/useCases/unsetTemplateAsDefault.ts | 8 + .../TemplateJSDataverseRepository.ts | 12 +- .../templates/DatasetTemplates.spec.tsx | 142 ++++++++++++++++ .../useSetTemplateAsDefault.spec.tsx | 157 ++++++++++++++++++ .../templates/DatasetTemplates.spec.tsx | 134 ++++++++++++++- .../shared/datasets/DatasetHelper.ts | 11 ++ 16 files changed, 617 insertions(+), 20 deletions(-) create mode 100644 src/sections/templates/useSetTemplateAsDefault.ts create mode 100644 src/templates/domain/useCases/setTemplateAsDefault.ts create mode 100644 src/templates/domain/useCases/unsetTemplateAsDefault.ts create mode 100644 tests/component/sections/templates/useSetTemplateAsDefault.spec.tsx diff --git a/package-lock.json b/package-lock.json index fc56c996d..6c2c9cdac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.1.0-alpha.1", + "@iqss/dataverse-client-javascript": "2.1.0-alpha.3", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", @@ -1953,9 +1953,9 @@ } }, "node_modules/@iqss/dataverse-client-javascript": { - "version": "2.1.0-alpha.1", - "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.1.0-alpha.1/01f62a538cb340fa4b2f32da9b61c7d271b642f5", - "integrity": "sha512-UarvBKchCVOAj2CcsdQi8/2g78LoTFDtSBHB4c8MmOjWlerZnO0I+khDE1cW2MbQ3RSiHCeTtBVuvDhnf1dEhw==", + "version": "2.1.0-alpha.3", + "resolved": "https://npm.pkg.github.com/download/@IQSS/dataverse-client-javascript/2.1.0-alpha.3/bde00ce5d4e3eb8b3466d265a85d0454c1bf9310", + "integrity": "sha512-+K8pAHwXnqWcmTjOL8R4flGuTyptYXW2sMxbB8oSopBkmA3/iskJU/vH2DATcnkwxNpVjjsliJLSadMFcACzbA==", "license": "MIT", "dependencies": { "@types/node": "^18.15.11", diff --git a/package.json b/package.json index ba3c24bdf..7e5e6c951 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@faker-js/faker": "7.6.0", - "@iqss/dataverse-client-javascript": "2.1.0-alpha.1", + "@iqss/dataverse-client-javascript": "2.1.0-alpha.3", "@iqss/dataverse-design-system": "*", "@istanbuljs/nyc-config-typescript": "1.0.2", "@tanstack/react-table": "8.9.2", diff --git a/public/locales/en/datasetTemplates.json b/public/locales/en/datasetTemplates.json index 7f70cc561..2c86969ab 100644 --- a/public/locales/en/datasetTemplates.json +++ b/public/locales/en/datasetTemplates.json @@ -45,7 +45,11 @@ "deleteSuccess": "Template deleted.", "deleteError": "Something went wrong deleting the template. Try again later.", "copySuccess": "Template copied.", - "copyError": "Something went wrong copying the template. Try again later." + "copyError": "Something went wrong copying the template. Try again later.", + "setDefaultSuccess": "The template has been selected as the default template for this dataverse.", + "setDefaultError": "Something went wrong setting the template as default. Try again later.", + "unsetDefaultSuccess": "The template has been removed as the default template for this dataverse.", + "unsetDefaultError": "Something went wrong removing the default template. Try again later." }, "copyNamePrefix": "copy {{name}}", "preview": { diff --git a/public/locales/es/datasetTemplates.json b/public/locales/es/datasetTemplates.json index 13bb0c65d..d79b9ed3e 100644 --- a/public/locales/es/datasetTemplates.json +++ b/public/locales/es/datasetTemplates.json @@ -44,7 +44,11 @@ "deleteSuccess": "Plantilla eliminada.", "deleteError": "Algo salió mal al eliminar la plantilla. Inténtelo de nuevo más tarde.", "copySuccess": "Plantilla copiada.", - "copyError": "Algo salió mal al copiar la plantilla. Inténtelo de nuevo más tarde." + "copyError": "Algo salió mal al copiar la plantilla. Inténtelo de nuevo más tarde.", + "setDefaultSuccess": "La plantilla ha sido seleccionada como la plantilla predeterminada para este dataverse.", + "setDefaultError": "Algo salió mal al establecer la plantilla como predeterminada. Inténtelo de nuevo más tarde.", + "unsetDefaultSuccess": "La plantilla ha sido eliminada como la plantilla predeterminada para este dataverse.", + "unsetDefaultError": "Algo salió mal al eliminar la plantilla predeterminada. Inténtelo de nuevo más tarde." }, "copyNamePrefix": "copia {{name}}", "preview": { diff --git a/src/sections/templates/DatasetTemplates.tsx b/src/sections/templates/DatasetTemplates.tsx index b2b232ced..c4ee64b8e 100644 --- a/src/sections/templates/DatasetTemplates.tsx +++ b/src/sections/templates/DatasetTemplates.tsx @@ -34,12 +34,11 @@ import { TemplateRepository } from '@/templates/domain/repositories/TemplateRepo import { useCollection } from '../collection/useCollection' import { useGetTemplatesByCollectionId } from '@/templates/domain/hooks/useGetTemplatesByCollectionId' import { NotFoundPage } from '../not-found-page/NotFoundPage' -import { NotImplementedModal } from '../not-implemented/NotImplementedModal' -import { useNotImplementedModal } from '../not-implemented/NotImplementedModalContext' import { Template } from '@/templates/domain/models/Template' import { ConfirmDeleteTemplateModal } from './confirm-delete-template-modal/ConfirmDeleteTemplateModal' import { TemplatePreviewModal } from './template-preview-modal/TemplatePreviewModal' import { useCopyTemplate } from './useCopyTemplate' +import { useSetTemplateAsDefault } from './useSetTemplateAsDefault' import styles from './DatasetTemplates.module.scss' @@ -59,7 +58,6 @@ export const DatasetTemplates = ({ const { t } = useTranslation('datasetTemplates') const { t: tDataset } = useTranslation('dataset') const navigate = useNavigate() - const { isModalOpen, hideModal, showModal } = useNotImplementedModal() const [sortBy, setSortBy] = useState<'name' | 'created' | 'usage' | null>(null) const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc') const [templateToDelete, setTemplateToDelete] = useState