From e60de422a252d08cf9118434efdd5b73a77dab62 Mon Sep 17 00:00:00 2001 From: guillermo2519 Date: Mon, 9 Feb 2026 13:42:49 -0600 Subject: [PATCH 1/4] Require explicit type attribute on button elements (#4781) --- .eslintrc.json | 3 +- .../bulk-access/bulk-access.component.html | 4 +- .../epeople-registry.component.html | 8 +-- .../eperson-form/eperson-form.component.html | 2 +- .../members-list/members-list.component.html | 7 ++- .../subgroups-list.component.html | 6 +- .../groups-registry.component.html | 7 ++- .../batch-import-page.component.html | 6 +- .../metadata-import-page.component.html | 4 +- .../ldn-service-form.component.html | 8 +-- .../ldn-services-directory.component.html | 9 +-- .../admin-notify-detail-modal.component.html | 2 +- .../admin-notify-logs-result.component.html | 2 +- .../admin-notify-search-result.component.html | 5 +- .../bitstream-formats.component.html | 2 +- .../metadata-registry.component.html | 2 +- .../metadata-schema.component.html | 2 +- .../filtered-collections.component.html | 4 +- .../filtered-items-export-csv.component.html | 2 +- .../filtered-items.component.html | 20 +++--- .../filters-section.component.html | 4 +- ...vision-order-group-selector.component.html | 4 +- .../bitstream-download-page.component.html | 2 +- .../delete-collection-page.component.html | 4 +- .../collection-metadata.component.html | 6 +- .../collection-source-controls.component.html | 12 ++-- .../collection-source.component.html | 12 ++-- .../edit-item-template-page.component.html | 2 +- .../community-list.component.html | 2 +- .../delete-community-page.component.html | 4 +- ...it-metadata-authority-field.component.html | 6 +- .../dso-edit-metadata-value.component.html | 10 +-- .../dso-edit-metadata.component.html | 14 ++--- .../metadata-field-selector.component.html | 2 + .../external-log-in.component.html | 2 +- .../review-account-info.component.html | 2 +- .../forgot-password-form.component.html | 1 + .../recent-item-list.component.html | 2 +- ...tstream-request-a-copy-page.component.html | 1 + .../upload/upload-bitstream.component.html | 4 +- .../edit-item-page.component.html | 1 + .../item-bitstreams.component.html | 62 +++++++++---------- .../item-edit-bitstream-bundle.component.html | 12 ++-- .../item-delete/item-delete.component.html | 6 +- .../item-move/item-move.component.html | 6 +- .../item-operation.component.html | 4 +- .../item-register-doi-component.html | 4 +- .../edit-relationship-list.component.html | 2 +- .../edit-relationship.component.html | 4 +- .../item-relationships.component.html | 6 +- ...abstract-simple-item-action.component.html | 4 +- .../virtual-metadata.component.html | 2 +- .../full/full-item-page.component.html | 2 +- .../media-viewer-video.component.html | 4 ++ .../orcid-auth/orcid-auth.component.html | 4 +- .../orcid-queue/orcid-queue.component.html | 4 +- .../file-section/file-section.component.html | 4 +- ...etadata-representation-list.component.html | 4 +- .../qa-event-notification.component.html | 2 +- .../related-items.component.html | 4 +- .../item-versions-delete-modal.component.html | 4 +- ...ersions-row-element-version.component.html | 6 +- .../versions/item-versions.component.html | 6 +- ...space-new-external-dropdown.component.html | 2 +- ...ace-new-submission-dropdown.component.html | 2 +- ...ace-qa-events-notifications.component.html | 2 + .../quality-assurance-events.component.html | 30 +++++---- .../quality-assurance-topics.component.html | 1 + .../shared/source-list.component.html | 1 + .../actions/suggestion-actions.component.html | 4 +- .../publication-claim.component.html | 2 +- .../detail/process-detail.component.html | 9 +-- .../parameter-select.component.html | 2 +- .../scripts-select.component.html | 2 +- .../overview/process-overview.component.html | 10 +-- .../process-overview-table.component.html | 2 +- .../profile-claim-item-modal.component.html | 2 +- ...rofile-page-researcher-form.component.html | 6 +- .../profile-page/profile-page.component.html | 2 +- .../register-email-form.component.html | 4 +- .../create-profile.component.html | 1 + .../email-request-copy.component.html | 6 +- src/app/root/root.component.html | 2 +- .../collection-dropdown.component.html | 2 +- .../comcol-role/comcol-role.component.html | 6 +- src/app/shared/disabled-directive.spec.ts | 2 +- .../shared/ds-select/ds-select.component.html | 2 +- ...dit-menu-expandable-section.component.html | 2 +- .../dso-edit-menu-section.component.html | 4 +- .../dso-selector/dso-selector.component.html | 4 +- ...e-community-parent-selector.component.html | 5 +- .../entity-dropdown.component.html | 6 +- .../eperson-group-list.component.html | 2 +- ...namic-lookup-relation-modal.component.html | 4 +- ...-lookup-relation-search-tab.component.html | 4 +- .../vocabulary-treeview.component.html | 6 +- .../impersonate-navbar.component.html | 2 +- .../dso-input-suggestions.component.html | 2 +- .../log-in-external-provider.component.html | 2 +- src/app/shared/log-out/log-out.component.html | 2 +- .../claimed-task-actions.component.html | 2 +- ...-claimed-task-action-rating.component.html | 2 +- ...claimed-task-actions-reject.component.html | 2 +- ...task-action-select-reviewer.component.html | 2 +- .../item/item-actions.component.html | 2 +- .../pool-task-actions.component.html | 2 +- .../workflowitem-actions.component.html | 2 +- .../workspaceitem-actions.component.html | 2 +- ...mportable-list-item-control.component.html | 3 +- .../item-detail-preview.component.html | 2 +- .../collection-select.component.html | 4 +- .../item-select/item-select.component.html | 4 +- .../pagination/pagination.component.html | 6 +- .../resource-policy-entry.component.html | 4 +- .../resource-policies.component.html | 4 +- .../results-back-button.component.html | 2 +- .../scope-selector-modal.component.html | 2 +- .../advanced-search.component.html | 2 +- .../search-export-csv.component.html | 1 + .../search-filter.component.html | 2 +- .../search-range-filter.component.html | 2 +- .../search-filters.component.html | 2 +- .../search-sidebar.component.html | 2 +- src/app/shared/search/search.component.html | 2 +- .../subscription-view.component.html | 4 +- .../truncatable-part.component.html | 1 + .../view-mode-switch.component.html | 4 ++ .../submission-form-collection.component.html | 2 +- ...submission-form-section-add.component.html | 6 +- ...ion-import-external-preview.component.html | 2 +- ...n-import-external-searchbar.component.html | 4 +- ...mission-section-cc-licenses.component.html | 6 +- .../section-coar-notify.component.html | 3 + .../file/section-upload-file.component.html | 4 +- .../suggestions-page.component.html | 2 +- .../system-wide-alert-form.component.html | 4 +- ...nced-workflow-action-rating.component.html | 4 +- ...flow-action-select-reviewer.component.html | 4 +- .../workflow-item-action-page.component.html | 4 +- .../workspaceitems-delete-page.component.html | 4 +- ...e-community-parent-selector.component.html | 2 +- 141 files changed, 336 insertions(+), 291 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 929afa80ab1..413e909ed8a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -294,7 +294,8 @@ // Custom DSpace Angular rules "dspace-angular-html/themed-component-usages": "error", "dspace-angular-html/no-disabled-attribute-on-button": "error", - "@angular-eslint/template/prefer-control-flow": "error" + "@angular-eslint/template/prefer-control-flow": "error", + "@angular-eslint/template/button-has-type": "error" } }, { diff --git a/src/app/access-control/bulk-access/bulk-access.component.html b/src/app/access-control/bulk-access/bulk-access.component.html index d22a8bda43b..b94a342f702 100644 --- a/src/app/access-control/bulk-access/bulk-access.component.html +++ b/src/app/access-control/bulk-access/bulk-access.component.html @@ -7,10 +7,10 @@

{{ 'admin.access-control.bulk-access.title' | translate }}


- -
diff --git a/src/app/access-control/epeople-registry/epeople-registry.component.html b/src/app/access-control/epeople-registry/epeople-registry.component.html index c054a5dd55e..be7d0f27100 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.component.html +++ b/src/app/access-control/epeople-registry/epeople-registry.component.html @@ -5,7 +5,7 @@

{{labelPrefix + 'head' | translate}}

-
-
@@ -69,13 +69,13 @@

{{messagePrefix + '.headMembers' | translate}}

@if (epersonDTO.ableToDelete) { -
-
@@ -129,7 +130,7 @@

{{'service.overview.create.modal' | translate }}

- +
@@ -104,7 +104,7 @@

{{'admin.reports.items.head' | transl
- +
@@ -115,12 +115,12 @@

{{'admin.reports.items.head' | transl
- +
- +
@@ -142,7 +142,7 @@

{{'admin.reports.items.head' | transl
{{ 'metadata-export-filtered-items.columns.warning' | translate }}
} - + @@ -193,8 +193,8 @@

{{'admin.reports.items.head' | transl {{'admin.reports.commons.page' | translate}} {{ currentPage + 1 }} {{'admin.reports.commons.of' | translate}} {{ pageCount() }}
- - + +
diff --git a/src/app/admin/admin-reports/filters-section/filters-section.component.html b/src/app/admin/admin-reports/filters-section/filters-section.component.html index 88e4335506d..e03c38092b9 100644 --- a/src/app/admin/admin-reports/filters-section/filters-section.component.html +++ b/src/app/admin/admin-reports/filters-section/filters-section.component.html @@ -2,9 +2,9 @@     - +   - +     diff --git a/src/app/admin/admin-workflow-page/admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component.html b/src/app/admin/admin-workflow-page/admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component.html index 150411ec40f..28f0d620b98 100644 --- a/src/app/admin/admin-workflow-page/admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component.html +++ b/src/app/admin/admin-workflow-page/admin-workflow-search-results/actions/workspace-item/supervision-order-group-selector/supervision-order-group-selector.component.html @@ -34,11 +34,11 @@
diff --git a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.html b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.html index 8075bc3b035..1cce0a042e3 100644 --- a/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.html +++ b/src/app/item-page/edit-item-page/item-bitstreams/item-edit-bitstream-bundle/item-edit-bitstream-bundle.component.html @@ -36,7 +36,7 @@
- @@ -105,18 +105,18 @@ [attr.data-test]="'download-button' | dsBrowserOnly"> - - - @@ -85,10 +85,10 @@
- - diff --git a/src/app/item-page/edit-item-page/item-move/item-move.component.html b/src/app/item-page/edit-item-page/item-move/item-move.component.html index e2cd2d88af0..918856adb33 100644 --- a/src/app/item-page/edit-item-page/item-move/item-move.component.html +++ b/src/app/item-page/edit-item-page/item-move/item-move.component.html @@ -37,10 +37,10 @@

{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle
- - -
diff --git a/src/app/item-page/edit-item-page/item-operation/item-operation.component.html b/src/app/item-page/edit-item-page/item-operation/item-operation.component.html index 4948bb282cc..279556e34ce 100644 --- a/src/app/item-page/edit-item-page/item-operation/item-operation.component.html +++ b/src/app/item-page/edit-item-page/item-operation/item-operation.component.html @@ -6,14 +6,14 @@
@if (operation.authorized) { - } @if (!operation.authorized) { - diff --git a/src/app/item-page/edit-item-page/item-register-doi/item-register-doi-component.html b/src/app/item-page/edit-item-page/item-register-doi/item-register-doi-component.html index 2b08842e6d8..3e5c5273817 100644 --- a/src/app/item-page/edit-item-page/item-register-doi/item-register-doi-component.html +++ b/src/app/item-page/edit-item-page/item-register-doi/item-register-doi-component.html @@ -16,9 +16,9 @@

{{headerMessage | translate: {id: item.handle} }}

}
- -
diff --git a/src/app/item-page/edit-item-page/item-relationships/edit-relationship-list/edit-relationship-list.component.html b/src/app/item-page/edit-item-page/item-relationships/edit-relationship-list/edit-relationship-list.component.html index 4f0de1a789d..014715e12e3 100644 --- a/src/app/item-page/edit-item-page/item-relationships/edit-relationship-list/edit-relationship-list.component.html +++ b/src/app/item-page/edit-item-page/item-relationships/edit-relationship-list/edit-relationship-list.component.html @@ -1,6 +1,6 @@

{{relationshipMessageKey$ | async | translate}} - diff --git a/src/app/item-page/edit-item-page/item-relationships/edit-relationship/edit-relationship.component.html b/src/app/item-page/edit-item-page/item-relationships/edit-relationship/edit-relationship.component.html index 68539d8dc61..a5b8ac2f775 100644 --- a/src/app/item-page/edit-item-page/item-relationships/edit-relationship/edit-relationship.component.html +++ b/src/app/item-page/edit-item-page/item-relationships/edit-relationship/edit-relationship.component.html @@ -10,12 +10,12 @@

- - } @if (isReinstatable$ | async) { - } - -
diff --git a/src/app/item-page/edit-item-page/virtual-metadata/virtual-metadata.component.html b/src/app/item-page/edit-item-page/virtual-metadata/virtual-metadata.component.html index e1fc018ace3..a978d25be6c 100644 --- a/src/app/item-page/edit-item-page/virtual-metadata/virtual-metadata.component.html +++ b/src/app/item-page/edit-item-page/virtual-metadata/virtual-metadata.component.html @@ -30,7 +30,7 @@
}
- diff --git a/src/app/item-page/full/full-item-page.component.html b/src/app/item-page/full/full-item-page.component.html index c6c7d90bf47..f159666ede2 100644 --- a/src/app/item-page/full/full-item-page.component.html +++ b/src/app/item-page/full/full-item-page.component.html @@ -40,7 +40,7 @@ @if (fromSubmissionObject) {
-
diff --git a/src/app/item-page/media-viewer/media-viewer-video/media-viewer-video.component.html b/src/app/item-page/media-viewer/media-viewer-video/media-viewer-video.component.html index d9ddcbf6d99..7c292d5afaa 100644 --- a/src/app/item-page/media-viewer/media-viewer-video/media-viewer-video.component.html +++ b/src/app/item-page/media-viewer/media-viewer-video/media-viewer-video.component.html @@ -19,6 +19,7 @@ @if (medias?.length > 1) {

- @@ -188,7 +188,7 @@

{{'person.orcid.registry.auth' | translate}}

- diff --git a/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.html b/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.html index 014f995ae0c..6a6aacb047e 100644 --- a/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.html +++ b/src/app/item-page/orcid-page/orcid-queue/orcid-queue.component.html @@ -37,12 +37,12 @@

{{ 'person.orcid.registry.queue' | translate }}

- - +
} @if (isLastPage && currentPage !== 1) {
- +
}
diff --git a/src/app/item-page/simple/metadata-representation-list/metadata-representation-list.component.html b/src/app/item-page/simple/metadata-representation-list/metadata-representation-list.component.html index 058dd96952b..982a6f9ca7a 100644 --- a/src/app/item-page/simple/metadata-representation-list/metadata-representation-list.component.html +++ b/src/app/item-page/simple/metadata-representation-list/metadata-representation-list.component.html @@ -13,13 +13,13 @@
@if ((objects.length * incrementBy) < total) {
-
} @if (objects.length > 1) {
-
} diff --git a/src/app/item-page/simple/qa-event-notification/qa-event-notification.component.html b/src/app/item-page/simple/qa-event-notification/qa-event-notification.component.html index afdb53b81d9..38457b80ef5 100644 --- a/src/app/item-page/simple/qa-event-notification/qa-event-notification.component.html +++ b/src/app/item-page/simple/qa-event-notification/qa-event-notification.component.html @@ -12,7 +12,7 @@
{{'item.qa-event-notification.check.notification-info' | translate : {num: source.totalEvents } }}
-
} @if (objects.length > 1) {
-
} diff --git a/src/app/item-page/versions/item-versions-delete-modal/item-versions-delete-modal.component.html b/src/app/item-page/versions/item-versions-delete-modal/item-versions-delete-modal.component.html index b65883775b9..25b934e826a 100644 --- a/src/app/item-page/versions/item-versions-delete-modal/item-versions-delete-modal.component.html +++ b/src/app/item-page/versions/item-versions-delete-modal/item-versions-delete-modal.component.html @@ -7,12 +7,12 @@

{{ "item.version.delete.modal.text" | translate : {version: versionNumber} }}

@if (isThisBeingEdited(versionDTO.version)) { - - } @else { - diff --git a/src/app/my-dspace-page/my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component.html b/src/app/my-dspace-page/my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component.html index f2deb49c9fb..8dc6cb76c37 100644 --- a/src/app/my-dspace-page/my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component.html +++ b/src/app/my-dspace-page/my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component.html @@ -1,3 +1,4 @@ + @if ((sources$ | async)?.length > 0) { @for (source of sources$ | async; track source) { @if (source.totalEvents > 0) { @@ -17,6 +18,7 @@ {{ "mydspace.qa-event-notification.check.notification-info" | translate : { num: source.totalEvents } }}
} - @if ((isAdmin$ | async)) { - } @if ((isAdmin$ | async) === false) { - - @@ -318,11 +322,11 @@

{{'quality-assurance.event.sure' | t

diff --git a/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html b/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html index e75cf05c5a2..adb004b9f6a 100644 --- a/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html +++ b/src/themes/custom/app/shared/dso-selector/modal-wrappers/create-community-parent-selector/create-community-parent-selector.component.html @@ -4,7 +4,7 @@ } From f256603e5538def8f21e3903fc8919047905fc11 Mon Sep 17 00:00:00 2001 From: guillermo2519 Date: Mon, 16 Feb 2026 18:23:48 -0600 Subject: [PATCH 4/4] Enable tests for buttons with explicit type